diff --git a/module/common/view/m.footer.html.php b/module/common/view/m.footer.html.php new file mode 100755 index 0000000000..1cc3c00528 --- /dev/null +++ b/module/common/view/m.footer.html.php @@ -0,0 +1,16 @@ + +getExtViewFile(__FILE__)){include $extView; return helper::cd();}?> + + + + + diff --git a/module/common/view/m.footer.lite.html.php b/module/common/view/m.footer.lite.html.php new file mode 100755 index 0000000000..6d3f53fa89 --- /dev/null +++ b/module/common/view/m.footer.lite.html.php @@ -0,0 +1,8 @@ + +getExtViewFile(__FILE__)){include $extView; return helper::cd();}?> + + + + diff --git a/module/common/view/m.header.html.php b/module/common/view/m.header.html.php new file mode 100755 index 0000000000..35fb47b83a --- /dev/null +++ b/module/common/view/m.header.html.php @@ -0,0 +1,11 @@ +getExtViewFile(__FILE__)){include $extView; return helper::cd();} +include 'm.header.lite.html.php'; +?> + +
+
+
+
+ +
diff --git a/module/common/view/m.header.lite.html.php b/module/common/view/m.header.lite.html.php new file mode 100755 index 0000000000..fa088fb559 --- /dev/null +++ b/module/common/view/m.header.lite.html.php @@ -0,0 +1,36 @@ +getExtViewFile(__FILE__)){include $extView; return helper::cd();}?> +app->getWebRoot(); +$jsRoot = $webRoot . "js/"; +$themeRoot = $webRoot . "theme/"; +$defaultTheme = $webRoot . 'theme/default/'; +$langTheme = $themeRoot . 'lang/' . $app->getClientLang() . '.css'; +$clientTheme = $this->app->getClientTheme(); +?> + + + + + + 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'); + ?> + + +
diff --git a/www/js/m.my.full.js b/www/js/m.my.full.js new file mode 100644 index 0000000000..17597a19fe --- /dev/null +++ b/www/js/m.my.full.js @@ -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($("")); + } + else + { + $("#productID").append($("")); + } +} + +/** + * 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($("")); + } + else + { + $("#projectID").append($("")); + } +} + +/** + * 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(' * '); + } +} + +/** + * 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('') +} + +/** + * 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=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=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}); + }); +}); diff --git a/www/theme/default/m.style.css b/www/theme/default/m.style.css new file mode 100644 index 0000000000..a5e74fc897 --- /dev/null +++ b/www/theme/default/m.style.css @@ -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 +* @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;}