+ finish task #1391.

This commit is contained in:
wangyidong
2013-06-18 08:44:23 +00:00
parent b6903c51a5
commit 73366cc2fd
6 changed files with 1080 additions and 0 deletions
+16
View File
@@ -0,0 +1,16 @@
</div>
<?php if($extView = $this->getExtViewFile(__FILE__)){include $extView; return helper::cd();}?>
<iframe frameborder='0' name='hiddenwin' id='hiddenwin' scrolling='no' class='<?php print($config->debug ? 'debugwin' : 'hidden');?>'></iframe>
</div>
<?php $onlybody = zget($_GET, 'onlybody', 'no');
js::set('onlybody', $onlybody); // set the onlybody var.
if(isset($pageJS)) js::execute($pageJS); // load the js for current page.
/* Load hook files for current page. */
$extPath = dirname(dirname(dirname(realpath($viewFile)))) . '/common/ext/view/';
$extHookRule = $extPath . 'm.footer.*.hook.php';
$extHookFiles = glob($extHookRule);
if($extHookFiles) foreach($extHookFiles as $extHookFile) include $extHookFile;
?>
</body>
</html>
+8
View File
@@ -0,0 +1,8 @@
</div>
<?php if($extView = $this->getExtViewFile(__FILE__)){include $extView; return helper::cd();}?>
<iframe frameborder='0' name='hiddenwin' id='hiddenwin' scrolling='no' class='hidden'></iframe>
<script laguage='Javascript'>
<?php if(isset($pageJS)) echo $pageJS;?>
</script>
</body>
</html>
+11
View File
@@ -0,0 +1,11 @@
<?php
if($extView = $this->getExtViewFile(__FILE__)){include $extView; return helper::cd();}
include 'm.header.lite.html.php';
?>
<?php if(empty($_GET['onlybody']) or $_GET['onlybody'] != 'yes'):?>
<div data-role="header">
<div data-role="navbar">
</div>
</div>
<?php endif;?>
<div data-role="content">
+36
View File
@@ -0,0 +1,36 @@
<?php if($extView = $this->getExtViewFile(__FILE__)){include $extView; return helper::cd();}?>
<?php
$webRoot = $this->app->getWebRoot();
$jsRoot = $webRoot . "js/";
$themeRoot = $webRoot . "theme/";
$defaultTheme = $webRoot . 'theme/default/';
$langTheme = $themeRoot . 'lang/' . $app->getClientLang() . '.css';
$clientTheme = $this->app->getClientTheme();
?>
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<?php
echo html::title($title . ' - ' . $lang->zentaoPMS);
js::exportConfigVars();
if($config->debug)
{
js::import($jsRoot . 'jquery/mobile/jquery-1.10.1.min.js', $config->version);
js::import($jsRoot . 'm.my.full.js', $config->version);
js::import($jsRoot . 'jquery/mobile/jquery.mobile.min.js', $config->version);
css::import($defaultTheme . 'jquery.mobile.css', $config->version);
css::import($defaultTheme . 'm.style.css', $config->version);
css::import($langTheme, $config->version);
}
if(isset($pageCss)) css::internal($pageCss);
echo html::icon($webRoot . 'favicon.ico');
?>
</head>
<body>
<div data-role="page">
+614
View File
@@ -0,0 +1,614 @@
/**
* Create link.
*
* @param string $moduleName
* @param string $methodName
* @param string $vars
* @param string $viewType
* @access public
* @return string
*/
function createLink(moduleName, methodName, vars, viewType, isOnlyBody)
{
if(!viewType) viewType = config.defaultView;
if(!isOnlyBody) isOnlyBody = false;
if(vars)
{
vars = vars.split('&');
for(i = 0; i < vars.length; i ++) vars[i] = vars[i].split('=');
}
if(config.requestType == 'PATH_INFO')
{
link = config.webRoot + moduleName + config.requestFix + methodName;
if(vars)
{
if(config.pathType == "full")
{
for(i = 0; i < vars.length; i ++) link += config.requestFix + vars[i][0] + config.requestFix + vars[i][1];
}
else
{
for(i = 0; i < vars.length; i ++) link += config.requestFix + vars[i][1];
}
}
link += '.' + viewType;
}
else
{
link = config.router + '?' + config.moduleVar + '=' + moduleName + '&' + config.methodVar + '=' + methodName + '&' + config.viewVar + '=' + viewType;
if(vars) for(i = 0; i < vars.length; i ++) link += '&' + vars[i][0] + '=' + vars[i][1];
}
/* if page has onlybody param then add this param in all link. the param hide header and footer. */
if(onlybody == 'yes' || isOnlyBody)
{
var onlybody = config.requestType == 'PATH_INFO' ? "?onlybody=yes" : '&onlybody=yes';
link = link + onlybody;
}
return link;
}
/**
* Set the product switcher
*
* @access public
* @return void
*/
function setProductSwitcher()
{
productMode = $.cookie('productMode');
if(!productMode) productMode = 'noclosed';
if(productMode == 'all')
{
$("#productID").append($("<option value='noclosed' id='switcher'>" + config.lblHideClosed + "</option>"));
}
else
{
$("#productID").append($("<option value='all' id='switcher'>" + config.lblShowAll + "</option>"));
}
}
/**
* Search product in drop menu.
*
* @param string $keywords
* @param int $productID
* @param string $module
* @param string $method
* @param mix $extra
* @access public
* @return void
*/
function searchProduct(keywords, $productID, module, method, extra)
{
if(keywords == '')
{
showProductMenu = 0;
showDropMenu(productID, module, method, extra)
}
else
{
$.get(createLink('product', 'searchProduct', "keywords=" + keywords + "&module=" + module + "&method=" + method + "&extra=" + extra), function(data){ $('#searchResult').html(data);});
}
}
/**
* Save the id of the product last visited.
*
* @access public
* @return void
*/
function saveProduct()
{
if($('#productID')) $.cookie('lastProduct', $('#productID').val(), {expires:config.cookieLife, path:config.webRoot});
}
/**
* Set project switcher
*
* @access public
* @return void
*/
function setProjectSwitcher()
{
projectMode = $.cookie('projectMode');
if(!projectMode) projectMode = 'noclosed';
if(projectMode == 'all')
{
$("#projectID").append($("<option value='noclosed' id='switcher'>" + config.lblHideClosed + "</option>"));
}
else
{
$("#projectID").append($("<option value='all' id='switcher'>" + config.lblShowAll + "</option>"));
}
}
/**
* Swtich project.
*
* @param int $projectID
* @param string $module
* @param string $method
* @access public
* @return void
*/
function switchProject(projectID, module, method, extra)
{
/* The projec id is a string, use it as the project model. */
if(isNaN(projectID))
{
$.cookie('projectMode', projectID, {expires:config.cookieLife, path:config.webRoot});
projectID = 0;
}
/* Process task and build modules. */
if(module == 'task' && (method == 'view' || method == 'edit' || method == 'batchedit'))
{
module = 'project';
method = 'task';
}
if(module == 'build' && method == 'edit')
{
module = 'project';
method = 'build';
}
if(module == 'project' && method == 'create') return;
link = createLink(module, method, 'projectID=' + projectID);
if(extra != '') link = createLink(module, method, 'projectID=' + projectID + '&type=' + extra);
location.href = link;
}
/**
* Save the id of the project last visited.
*
* @access public
* @return void
*/
function saveProject()
{
if($('#projectID')) $.cookie('lastProject', $('#projectID').val(), {expires:config.cookieLife, path:config.webRoot});
}
/**
* Set the ping url.
*
* @access public
* @return void
*/
function setPing()
{
$('#hiddenwin').attr('src', createLink('misc', 'ping'));
}
/**
* Set required fields, add star class to them.
*
* @access public
* @return void
*/
function setRequiredFields()
{
if(!config.requiredFields) return false;
requiredFields = config.requiredFields.split(',');
for(i = 0; i < requiredFields.length; i++)
{
$('#' + requiredFields[i]).after('<span class="star"> * </span>');
}
}
/**
* Set paceholder
*
* @access public
* @return void
*/
function setPlaceholder()
{
if(typeof(holders) != "undefined")
{
for(var key in holders)
{
$("#"+key).attr('placeholder', holders[key]);
}
}
}
/**
* Set language.
*
* @access public
* @return void
*/
function selectLang(lang)
{
$.cookie('lang', lang, {expires:config.cookieLife, path:config.webRoot});
location.href = removeAnchor(location.href);
}
/**
* Remove anchor from the url.
*
* @param string $url
* @access public
* @return string
*/
function removeAnchor(url)
{
pos = url.indexOf('#');
if(pos > 0) return url.substring(0, pos);
return url;
}
/**
* Get the window size and save to cookie.
*
* @access public
* @return void
*/
function saveWindowSize()
{
width = $(window).width();
height = $(window).height();
$.cookie('windowWidth', width)
$.cookie('windowHeight', height)
}
/**
* Disable the submit button when submit form.
*
* @access public
* @return void
*/
function setForm()
{
var formClicked = false;
$('form').submit(function()
{
submitObj = $(this).find(':submit');
if($(submitObj).size() == 1)
{
submitLabel = $(submitObj).attr('value');
$(submitObj).attr('disabled', 'disabled');
$(submitObj).attr('value', config.submitting);
$(submitObj).addClass('button-d');
formClicked = true;
}
});
$("body").click(function()
{
if(formClicked)
{
$(submitObj).removeAttr('disabled');
$(submitObj).attr('value', submitLabel);
$(submitObj).removeClass('button-d');
}
formClicked = false;
});
}
/**
* Set the max with of image.
*
* @access public
* @return void
*/
function setImageSize(image, maxWidth)
{
/* If not set maxWidth, set it auto. */
if(!maxWidth)
{
bodyWidth = $('body').width();
maxWidth = bodyWidth - 450; // The side bar's width is 336, and add some margins.
}
$('.content img').each(function()
{
if($(this).width() > maxWidth) $(this).attr('width', maxWidth);
});
$(image).wrap('<a href="' + $(image).attr('src') + '" target="_blank"></a>')
}
/**
* Set mailto list from a contact list..
*
* @param string $mailto
* @param int $contactListID
* @access public
* @return void
*/
function setMailto(mailto, contactListID)
{
if(!contactListID) return;
link = createLink('user', 'ajaxGetContactUsers', 'listID=' + contactListID);
$.get(link, function(users)
{
$('#' + mailto).val(users);
});
}
/**
* Set comment.
*
* @access public
* @return void
*/
function setComment()
{
$('#commentBox').toggle();
$('.ke-container').css('width', '100%');
setTimeout(function() { $('#commentBox textarea').focus(); }, 50);
}
/**
* Auto checked the checkbox of a row.
*
* @access public
* @return void
*/
function autoCheck()
{
$('.tablesorter tr :checkbox').click(function()
{
if($(this).attr('checked'))
{
$(this).attr('checked', false);
}
else
{
$(this).attr('checked', true);
}
return;
});
$('.tablesorter tr').click(function()
{
if(document.activeElement.type != 'select-one' && document.activeElement.type != 'text')
{
if($(this).find(':checkbox').attr('checked'))
{
$(this).find(':checkbox').attr('checked', false);
}
else
{
$(this).find(':checkbox').attr('checked', true);
}
}
});
}
/**
* Toogle the search form.
*
* @access public
* @return void
*/
function toggleSearch()
{
$("#bysearchTab").toggle
(
function()
{
if(browseType == 'bymodule')
{
$('#treebox').addClass('hidden');
$('.divider').addClass('hidden');
$('#bymoduleTab').removeClass('active');
}
else
{
$('#' + browseType + 'Tab').removeClass('active');
}
$('#bysearchTab').addClass('active');
ajaxGetSearchForm();
$('#querybox').removeClass('hidden');
},
function()
{
if(browseType == 'bymodule')
{
$('#treebox').removeClass('hidden');
$('.divider').removeClass('hidden');
$('#bymoduleTab').addClass('active');
}
else
{
$('#' + browseType +'Tab').addClass('active');
}
$('#bysearchTab').removeClass('active');
$('#querybox').addClass('hidden');
}
);
}
/**
* Ajax get search form
*
* @access public
* @return void
*/
function ajaxGetSearchForm()
{
if($('#querybox').html() == '')
{
$.get(createLink('search', 'buildForm'), function(data){
$('#querybox').html(data);
});
}
}
/**
* Hide the link of clearData.
*
* @access public
* @return void
*/
function hideClearDataLink()
{
if(typeof showDemoUsers == 'undefined' || !showDemoUsers) $('#submenuclearData').addClass('hidden');
}
/**
* add one option of a select to another select.
*
* @param string $SelectID
* @param string $TargetID
* @access public
* @return void
*/
function addItem(SelectID,TargetID)
{
ItemList = document.getElementById(SelectID);
Target = document.getElementById(TargetID);
for(var x = 0; x < ItemList.length; x++)
{
var opt = ItemList.options[x];
if (opt.selected)
{
flag = true;
for (var y=0;y<Target.length;y++)
{
var myopt = Target.options[y];
if (myopt.value == opt.value)
{
flag = false;
}
}
if(flag)
{
Target.options[Target.options.length] = new Option(opt.text, opt.value, 0, 0);
}
}
}
}
/**
* Remove one selected option from a select.
*
* @param string $SelectID
* @access public
* @return void
*/
function delItem(SelectID)
{
ItemList = document.getElementById(SelectID);
for(var x=ItemList.length-1;x>=0;x--)
{
var opt = ItemList.options[x];
if (opt.selected)
{
ItemList.options[x] = null;
}
}
}
/**
* move one selected option up from a select.
*
* @param string $SelectID
* @access public
* @return void
*/
function upItem(SelectID)
{
ItemList = document.getElementById(SelectID);
for(var x=1;x<ItemList.length;x++)
{
var opt = ItemList.options[x];
if(opt.selected)
{
tmpUpValue = ItemList.options[x-1].value;
tmpUpText = ItemList.options[x-1].text;
ItemList.options[x-1].value = opt.value;
ItemList.options[x-1].text = opt.text;
ItemList.options[x].value = tmpUpValue;
ItemList.options[x].text = tmpUpText;
ItemList.options[x-1].selected = true;
ItemList.options[x].selected = false;
break;
}
}
}
/**
* move one selected option down from a select.
*
* @param string $SelectID
* @access public
* @return void
*/
function downItem(SelectID)
{
ItemList = document.getElementById(SelectID);
for(var x=0;x<ItemList.length;x++)
{
var opt = ItemList.options[x];
if(opt.selected)
{
tmpUpValue = ItemList.options[x+1].value;
tmpUpText = ItemList.options[x+1].text;
ItemList.options[x+1].value = opt.value;
ItemList.options[x+1].text = opt.text;
ItemList.options[x].value = tmpUpValue;
ItemList.options[x].text = tmpUpText;
ItemList.options[x+1].selected = true;
ItemList.options[x].selected = false;
break;
}
}
}
/**
* select all items of a select.
*
* @param string $SelectID
* @access public
* @return void
*/
function selectItem(SelectID)
{
ItemList = document.getElementById(SelectID);
for(var x=ItemList.length-1;x>=0;x--)
{
var opt = ItemList.options[x];
opt.selected = true;
}
}
/* Ping the server every some minutes to keep the session. */
needPing = true;
/* When body's ready, execute these. */
$(document).ready(function()
{
setForm();
setRequiredFields();
setPlaceholder();
setProductSwitcher();
setProjectSwitcher();
saveProduct();
saveProject();
autoCheck();
toggleSearch();
hideClearDataLink();
if(needPing) setTimeout('setPing()', 1000 * 60); // After 5 minutes, begin ping.
$('.export').bind('click', function()
{
var checkeds = '';
$(':checkbox').each(function(){
if($(this).attr('checked'))
{
var checkedVal = parseInt($(this).val());
if(checkedVal != 0) checkeds = checkeds + checkedVal + ',';
}
})
if(checkeds != '') checkeds = checkeds.substring(0, checkeds.length - 1);
$.cookie('checkedItem', checkeds, {expires:config.cookieLife, path:config.webRoot});
});
});
+395
View File
@@ -0,0 +1,395 @@
/**
* The css file of ZenTaoPMS.
*
* @copyright Copyright 2009-2013 QingDao Nature Easy Soft Network Technology Co,LTD (www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package front
* @version $Id: style.css 1454 2009-10-23 01:45:26Z wwccss $
* @link http://www.zentao.net
*/
/*-----------------------BASE SETTING----------------------------*/
.f-left {float:left; padding-left: 5px}
.f-right {float:right; padding-right:5px}
.c-none {clear:none;}
.c-left {clear:left;}
.c-right {clear:right;}
.c-both {clear:both;}
.a-center {text-align: center;}
.a-right {text-align: right;}
.a-left {text-align: left;}
.half-left {float:left; width:48%; text-align:left; clear:left}
.half-right {float:right; width:48%; text-align:right; clear:right}
.hidden {display:none}
.block {display:block}
.inline {display:inline}
.margin-zero {margin: 0}
.margin-10px {margin: 10px}
.margin-15px {margin: 15px}
.margin-20px {margin: 20px}
.padding-zero{padding: 0}
.padding-10px{padding: 10px}
.padding-5px {padding: 5px}
.mt-10px {margin-top: 10px}
.mr-10px {margin-right: 10px}
.mb-10px {margin-bottom: 10px}
.ml-10px {margin-left: 10px}
.mt-zero {margin-top: 0}
.mr-zero {margin-right: 0}
.mb-zero {margin-bottom: 0}
.ml-zero {margin-left: 0}
.pt-10px {padding-top: 10px}
.pr-10px {padding-right: 10px}
.pb-10px {padding-bottom:10px}
.pl-10px {padding-left: 10px}
.ph-10px {padding-left:10px; padding-right:10px}
.pv-10px {padding-top: 10px; padding-bottom:10px}
.f-12px {font-size:12px}
.f-14px {font-size:14px}
.f-16px {font-size:16px}
/*-----------------------FORM SETTING----------------------------*/
.text-1 {width: 90%}
.text-2 {width: 120px}
.text-3 {width: 240px}
.text-4 {width: 360px}
.text-5 {width: 480px}
.select-1 {width: 90%}
.select-2 {width: 125px}
.select-3 {width: 245px}
.select-4 {width: 360px}
.select-5 {width: 480px}
.area-1{width: 90%;}
.area-2{width: 120px}
.area-3{width: 240px}
.area-4{width: 360px}
.area-5{width: 480px}
/*-----------------------TABLE SETTING----------------------------*/
.caption-tr {caption-side:top; text-align:right; border:none; background:none;}
.caption-tl {caption-side:top; text-align:left; border:none; background:none;}
.table-1 {width:100%; margin-bottom:10px}
.table-2 {width:240px;margin-bottom:10px}
.table-3 {width:360px;margin-bottom:10px}
.table-4 {width:480px;margin-bottom:10px}
.table-5 {width:600px;margin-bottom:10px}
.table-6 {width:800px;margin-bottom:10px}
.table-1 tr, .table-2 tr, .table-3 tr, .table-4 tr, .table-5 tr {padding:4px 3px}
.table-1 td, .table-2 td, .table-3 td, .table-4 td, .table-5 td {padding:4px 3px}
.table-1 th, .table-2 th, .table-3 th, .table-4 th, .table-5 th {padding:4px 3px}
.colhead td {text-align:center; background-color:#efefef;}
.colhead th {text-align:center; background-color:#efefef; font-size:12px; font-weight:bold; border-bottom:1px solid #e4e4e4; height:24px;}
.colhead a {text-decoration:none; display:block;}
.colhead th a{color:#333; font-size:12px;}
.colhead th a:hover{color:#F30;}
.rowhead {font-weight:bold; text-align:right; width:100px; border:none}
.side .rowhead {width:20%}
.fixed {table-layout:fixed}
.nobr {overflow:hidden; white-space:nowrap;}
.fixed th, .fixed td {overflow:hidden; white-space:nowrap;}
.nofixed th, .nofixed td {overflow:visible; white-space:normal}
.odd {background:#fff;}
.even {background:#f9f9f9;}
.hoover {background:#d0dee3;}
.clicked {background:#fce6a2;}
/*-----------------------HEIGHT SETTING--------------------------*/
.h-5px {height:5px}
.h-10px {height:10px}
.h-20px {height:20px}
.h-30px {height:30px}
.h-35px {height:35px}
.h-40px {height:40px}
.h-45px {height:45px}
.h-50px {height:50px}
.h-60px {height:60px}
.h-70px {height:70px}
.h-80px {height:80px}
.h-100px {height:100px}
.h-120px {height:120px}
.h-130px {height:130px}
.h-140px {height:140px}
.h-150px {height:150px}
.h-200px {height:200px}
/*-----------------------WIDTH SETTING--------------------------*/
.w-p5 {width: 5%}
.w-p10 {width: 10%}
.w-p15 {width: 15%}
.w-p20 {width: 20%}
.w-p25 {width: 25%}
.w-p30 {width: 30%}
.w-p35 {width: 35%}
.w-p40 {width: 40%}
.w-p45 {width: 45%}
.w-p50 {width: 50%}
.w-p55 {width: 55%}
.w-p60 {width: 60%}
.w-p65 {width: 65%}
.w-p70 {width: 70%}
.w-p75 {width: 75%}
.w-p80 {width: 80%}
.w-p85 {width: 85%}
.w-p90 {width: 90%}
.w-p100{width: 100%}
.w-p98 {width: 98%}
.w-p99 {width: 99%}
.w-20px {width:20px}
.w-30px {width:30px}
.w-35px {width:35px}
.w-40px {width:40px}
.w-45px {width:45px}
.w-50px {width:50px}
.w-60px {width:60px}
.w-70px {width:70px}
.w-80px {width:80px}
.w-100px {width:100px}
.w-120px {width:120px}
.w-130px {width:130px}
.w-140px {width:140px}
.w-150px {width:150px}
.w-160px {width:160px}
.w-200px {width:200px}
.w-id {width:55px;}
.w-pri {width:30px;}
.w-severity {width:40px;}
.w-hour {width:40px;}
.w-date {width:70px;}
.w-user {width:60px;}
.w-status {width:50px}
.w-type {width:80px}
.w-resolution{width:60px}
/*-----------------------BORDER SETTING--------------------------*/
.bd-1px {border:1px solid}
.bt-1px {border-top:1px solid}
.bl-1px {border-left:1px solid}
.bb-1px {border-bottom:1px solid}
.br-1px {border-right:1px solid}
.bd-none {border:none}
.bd-green {border-color:#58CB64}
.bd-yellow {border-color:#F4BF20}
.bd-blue {border-color:#64B7D7}
.bd-gray {border-color:#bcbcbc;}
/*-----------------------BACKGROUND SETTING----------------------------*/
.bg-green {background-color:#DDF1D8;}
.bg-blue {background-color:#DEEEF4}
.bg-yellow {background-color:#FBF5C6;}
.bg-gray {background-color:#efefef;}
.bg-white {background-color:white;}
/*-----------------------COLOR SETTING----------------------------*/
.red {color:red;}
.blue {color:blue}
.yellow {color:yellow;}
.gray {color:gray;}
.green {color:green;}
.star {color:red; font-size:18px; font-weight:bold;}
.warning {background:yellow; color:red; font-weight:bold}
/*-----------------------SPECIAL PART SETTING--------------------*/
/* Header. */
#header{padding:2px 15px 0 15px; background:#003366; border-bottom:1px solid #e4e4e4;}
.actionlink{font-size:14px; font-weight:bold; padding-top:8px}
.actionlink span{padding:5px 3px}
/* Pager. */
.pager {margin-bottom:0}
/*-----------------------OTHERS SETTINGS --------------------*/
.done {color:#078F0E;}
.wait {color:#888;}
.doing {color:#F30;}
.delayed {background:#e84e0f; color:white;}
.pass {color:#078F0E;}
.blocked {background:yellow;}
.fail {color:red}
.hand {cursor:pointer}
.strong {font-weight:bold}
.deleted {text-decoration:line-through}
.linkbox a {display:block}
.owner {background:#e4e4e4; font-size:smaller}
.notice { background-color:#ffffcc; border:1px solid #ffcc00; padding:15px 25px;}
.button-create{}
/*-----------------------ICONS --------------------*/
.icon-search {padding-left:16px; background:url(images/main/zt-icons.png) -123px -83px; border:0px;}
.icon-arrow {padding-left:10px; background:url(images/main/zt-icons.png) -102px -443px;}
/* Common icons. */
#featurebar .f-right .icon-goback {padding:0px 9px}
.pri1 {background:url(images/main/zt-icons.png) -1px -143px; text-indent:-9999px; display:block; width:17px; margin:0 auto;}
.pri2 {background:url(images/main/zt-icons.png) -21px -143px; text-indent:-9999px; display:block; width:17px; margin:0 auto;}
.pri3 {background:url(images/main/zt-icons.png) -41px -143px; text-indent:-9999px; display:block; width:17px; margin:0 auto;}
.pri4 {background:url(images/main/zt-icons.png) -61px -143px; text-indent:-9999px; display:block; width:17px; margin:0 auto;}
.pri5 {background:url(images/main/zt-icons.png) -81px -143px; text-indent:-9999px; display:block; width:17px; margin:0 auto;}
.pri6 {background:url(images/main/zt-icons.png) -101px -143px; text-indent:-9999px; display:block; width:17px; margin:0 auto;}
.icon-goback {padding:2px 8px; background:url(images/main/zt-icons.png) 0px -42px;}
.icon-pre {padding:2px 8px; background:url(images/main/zt-icons.png) -20px -42px;}
.icon-next {padding:2px 8px; background:url(images/main/zt-icons.png) -40px -42px;}
#searchicon {padding:2px 8px; background:url(images/main/zt-icons.png) -102px -80px; margin-left:10px;}
#searchmore {padding:2px 8px; background:url(images/main/zt-icons.png) -62px -80px no-repeat; margin-right:10px;}
#searchlite {padding:2px 8px; background:url(images/main/zt-icons.png) -82px -80px no-repeat; margin-right:10px}
.icon-add {border:none; width:16px; padding:2px 8px; background:url(images/main/zt-icons.png) -120px -3px no-repeat;}
.icon-delete {border:none; width:16px; padding:2px 8px; background:url(images/main/zt-icons.png) -100px -3px no-repeat;}
.icon-add:hover, .icon-delete:hover {cursor:pointer}
.icon-allProducts, .icon-allProjects {padding:2px 10px 2px 8px; background:url(images/main/zt-icons.png) 0px -161px;}
.icon-green-common-edit {padding:2px 8px; background:url(images/main/zt-icons.png) 0px 0px no-repeat;}
.icon-green-common-comment {padding:2px 8px; background:url(images/main/zt-icons.png) -20px 0px no-repeat;}
.icon-green-common-copy {padding:2px 8px; background:url(images/main/zt-icons.png) -40px 0px no-repeat;}
.icon-green-common-delete {padding:2px 8px; background:url(images/main/zt-icons.png) -60px 0px no-repeat;}
.icon-gray-common-delete {padding:2px 8px; background:url(images/main/zt-icons.png) -60px -22px no-repeat;}
#featurebar .f-right .icon-green-common-report {padding:2px 10px; background:url(images/main/zt-icons.png) -40px -82px no-repeat;}
#featurebar .f-right .icon-green-common-export, .icon-green-common-export {padding:2px 8px; background:url(images/main/zt-icons.png) -20px -82px;}
#featurebar .f-right .icon-green-todo-create, .icon-green-productplan-create, .icon-green-release-create,#featurebar .f-right .icon-green-doc-create, .icon-green-doc-create, .icon-green-build-create {padding:2px 8px; background:url(images/main/zt-icons.png) 0px -202px;}
.icon-green-group-create {padding:2px 8px; background:url(images/main/zt-icons.png) 0px -202px;}
/* Todo icons. */
.icon-green-todo-finish {padding:1px 8px; background:url(images/main/zt-icons.png) -80px -242px;}
/* Story icons. */
.icon-green-story-toStory {padding:2px 8px; background:url(images/main/zt-icons.png) 0px -202px;}
.icon-green-story-change {padding:2px 8px; background:url(images/main/zt-icons.png) -40px -200px;}
.icon-gray-story-change {padding:2px 8px; background:url(images/main/zt-icons.png) -40px -220px;}
.icon-green-story-review {padding:2px 8px; background:url(images/main/zt-icons.png) -60px -201px;}
.icon-gray-story-review {padding:2px 8px; background:url(images/main/zt-icons.png) -60px -221px;}
.icon-green-story-close {padding:2px 8px; background:url(images/main/zt-icons.png) -80px -201px;}
.icon-gray-story-close {padding:2px 8px; background:url(images/main/zt-icons.png) -80px -221px;}
.icon-green-story-activate {padding:2px 8px; background:url(images/main/zt-icons.png) -100px -201px;}
.icon-green-story-createCase {padding:2px 8px; background:url(images/main/zt-icons.png) -120px -201px;}
.icon-gray-story-createCase {padding:2px 8px; background:url(images/main/zt-icons.png) -120px -221px;}
.icon-green-project-unlinkStory {padding:2px 5px 2px 10px; background:url(images/main/zt-icons.png) -60px 0px;}
.icon-green-productplan-unlinkStory {padding:2px 5px 2px 10px; background:url(images/main/zt-icons.png) -60px 0px;}
.icon-green-project-linkStory, .icon-green-productplan-linkStory {padding:2px 3px 2px 10px; background:url(images/main/zt-icons.png) -161px -201px;}
#featurebar .f-right .icon-green-story-create, .icon-green-story-create {padding:2px 7px 2px 10px; background:url(images/main/zt-icons.png) 0px -202px;}
#featurebar .f-right .icon-green-story-batchCreate {padding:2px 7px 2px 10px; background:url(images/main/zt-icons.png) -20px -202px;}
/* Task icons. */
.icon-green-task-confirmStoryChange {padding:2px 8px; background:url(images/main/zt-icons.png) -60px -201px;}
.icon-green-task-assignTo {padding:2px 8px; background:url(images/main/zt-icons.png) -40px -242px;}
.icon-gray-task-assignTo {padding:2px 8px; background:url(images/main/zt-icons.png) -40px -262px;}
.icon-green-task-start {padding:2px 8px; background:url(images/main/zt-icons.png) -61px -242px;}
.icon-gray-task-start {padding:2px 8px; background:url(images/main/zt-icons.png) -61px -262px;}
.icon-green-task-finish {padding:2px 8px; background:url(images/main/zt-icons.png) -80px -242px;}
.icon-gray-task-finish {padding:2px 8px; background:url(images/main/zt-icons.png) -80px -262px;}
.icon-green-task-activate {padding:2px 8px; background:url(images/main/zt-icons.png) -120px -241px;}
.icon-gray-task-activate {padding:2px 8px; background:url(images/main/zt-icons.png) -120px -262px;}
.icon-green-task-cancel {padding:2px 8px; background:url(images/main/zt-icons.png) -141px -242px;}
.icon-green-task-close {padding:2px 8px; background:url(images/main/zt-icons.png) -100px -241px;}
.icon-gray-task-close {padding:2px 8px; background:url(images/main/zt-icons.png) -100px -261px;}
.icon-green-task-editEstimate {padding:2px 8px; background:url(images/main/zt-icons.png) 0px 0px no-repeat;}
.icon-green-task-deleteEstimate {padding:2px 8px; background:url(images/main/zt-icons.png) -60px 0px no-repeat;}
#featurebar .f-right .icon-green-task-create, .icon-green-task-create {padding:2px 7px 2px 10px; background:url(images/main/zt-icons.png) 0px -242px;}
#featurebar .f-right .icon-green-task-batchCreate, .icon-green-task-batchCreate {padding:2px 7px 2px 10px; background:url(images/main/zt-icons.png) -20px -242px;}
/* Bug icons. */
.severity1 {width:17px; margin:0px auto; display:block; background:url(images/main/zt-icons.png) 0px -383px; text-indent:-9999px;}
.severity2 {width:17px; margin:0px auto; display:block; background:url(images/main/zt-icons.png) -19px -383px; text-indent:-9999px;}
.severity3 {width:17px; margin:0px auto; display:block; background:url(images/main/zt-icons.png) -40px -383px; text-indent:-9999px;}
.severity4 {width:17px; margin:0px auto; display:block; background:url(images/main/zt-icons.png) -60px -383px; text-indent:-9999px;}
.severity5 {width:17px; margin:0px auto; display:block; background:url(images/main/zt-icons.png) -80px -383px; text-indent:-9999px;}
.severity6 {width:17px; margin:0px auto; display:block; background:url(images/main/zt-icons.png) -100px -383px; text-indent:-9999px;}
.icon-green-bug-confirmStoryChange {padding:2px 8px; background:url(images/main/zt-icons.png) -40px -282px;}
.icon-green-bug-confirmBug {padding:2px 8px; background:url(images/main/zt-icons.png) -40px -282px;}
.icon-gray-bug-confirmBug {padding:2px 8px; background:url(images/main/zt-icons.png) -40px -302px;}
.icon-green-bug-assignTo {padding:2px 8px; background:url(images/main/zt-icons.png) -40px -242px;}
.icon-green-bug-createBug {padding:2px 8px; background:url(images/main/zt-icons.png) 0px -282px;}
.icon-gray-bug-createBug {padding:2px 8px; background:url(images/main/zt-icons.png) 0px -302px;}
.icon-green-bug-resolve {padding:2px 8px; background:url(images/main/zt-icons.png) -60px -281px;}
.icon-gray-bug-resolve {padding:2px 8px; background:url(images/main/zt-icons.png) -60px -301px;}
.icon-green-bug-close {padding:2px 8px; background:url(images/main/zt-icons.png) -80px -281px;}
.icon-gray-bug-close {padding:2px 8px; background:url(images/main/zt-icons.png) -80px -301px;}
.icon-green-bug-activate {padding:2px 8px; background:url(images/main/zt-icons.png) -120px -241px;}
.icon-gray-bug-activate {padding:2px 8px; background:url(images/main/zt-icons.png) -120px -261px;}
#featurebar .f-right .icon-green-bug-create, caption .f-right .icon-green-bug-create {padding:2px 8px; background:url(images/main/zt-icons.png) 0px -202px;}
#featurebar .f-right .icon-green-bug-customFields {padding:2px 8px; background:url(images/main/zt-icons.png) -141px -282px;}
/* Case icons. */
.icon-green-testcase-createCase {padding:1px 7px 1px 10px; background:url(images/main/zt-icons.png) -80px -322px;}
.icon-gray-testcase-createCase {padding:1px 7px 1px 10px; background:url(images/main/zt-icons.png) -80px -322px;}
.icon-green-testcase-confirmStoryChange {padding:2px 8px; background:url(images/main/zt-icons.png) -40px -282px;}
.icon-green-testtask-runCase {padding:1px 7px 1px 10px; background:url(images/main/zt-icons.png) -40px -322px;}
.icon-green-testtask-results {padding:1px 7px 1px 10px; background:url(images/main/zt-icons.png) -60px -322px;}
.icon-green-testtask-unlinkCase {padding:2px 5px 2px 10px; background:url(images/main/zt-icons.png) -60px 0px;}
#featurebar .f-right .icon-green-testcase-create {padding:2px 8px; background:url(images/main/zt-icons.png) 0px -320px;}
#featurebar .f-right .icon-green-testcase-batchCreate {padding:2px 8px; background:url(images/main/zt-icons.png) -20px -320px;}
.link-button {padding:7px 0px 7px 0px; margin-left:-1px; }
.link-button:hover {background:RGB(200, 200, 200)}
.link-button a{color:black; font-weight:normal; font-size:14px;}
.link-button a:hover {color:RGB(234, 0, 0);}
/* Testtask icons. */
.icon-green-testtask-create {padding:2px 8px; background:url(images/main/zt-icons.png) 0px -202px;}
.icon-green-testtask-cases {padding:1px 7px 1px 10px; background:url(images/main/zt-icons.png) -80px -322px;}
#featurebar .f-right .icon-green-testtask-linkCase, .icon-green-testtask-linkCase {padding:2px 4px 2px 10px; background:url(images/main/zt-icons.png) -160px -201px;}
/* Effort icons. */
.icon-green-effort-createForObject {padding:2px 8px; background:url(images/main/zt-icons.png) -80px -2px;}
/* Record icons. */
.icon-green-task-recordEstimate {padding:2px 8px; background:url(images/main/zt-icons.png) -80px -2px;}
.icon-gray-task-recordEstimate {padding:2px 8px; background:url(images/main/zt-icons.png) -80px -22px;}
/* Todo icons. */
#featurebar .f-right .icon-green-todo-batchCreate {padding:2px 8px; background:url(images/main/zt-icons.png) -20px -202px;}
.log-asc {padding:2px 6px; background:url(images/main/zt-icons.png) -2px -422px;}
.log-desc {padding:2px 6px; background:url(images/main/zt-icons.png) -22px -422px;}
.change-hide {padding:2px 6px; background:url(images/main/zt-icons.png) -42px -422px; border:0px;}
.change-show {padding:2px 6px; background:url(images/main/zt-icons.png) -62px -422px; border:0px;}
.diff-all {padding:2px 6px; background:url(images/main/zt-icons.png) -81px -422px; border:0px}
.diff-short {padding:2px 6px; background:url(images/main/zt-icons.png) -101px -422px; border:0px}
/* Webapp icons. */
.icon-webapp-create {padding:2px 10px 2px 10px; background:url(images/main/zt-icons.png) 3px -242px no-repeat;}
.icon-webapp-manage {padding:2px 10px 2px 10px; background:url(images/main/zt-icons.png) 3px -482px no-repeat;}
.icon-webapp-obtain {padding:2px 10px 2px 10px; background:url(images/main/zt-icons.png) -19px -482px no-repeat;}