Merge branch 'master' of git@github.com:easysoft/zentaopms

This commit is contained in:
wwccss
2014-04-29 17:12:59 +08:00
46 changed files with 276 additions and 227 deletions
+2 -2
View File
@@ -815,11 +815,11 @@ EOT;
* @access public
* @return void
*/
static public function closeModal($window = 'self')
static public function closeModal($window = 'self', $location)
{
$js = self::start();
$js .= "if($window.location.href == self.location.href){ $window.window.close();}";
$js .= "else{ $window.$.cookie('selfClose', 1);$window.$.closeModal();}";
$js .= "else{ $window.$.cookie('selfClose', 1);$window.$.closeModal(null, '$location');}";
$js .= self::end();
return $js;
}
-1
View File
@@ -3,4 +3,3 @@
.tree .closed, .tree .closed a{color:#003366; text-decoration:none;}
.confirm0 {color:gray; font-size:9px}
.confirm1 {color:green; font-size:9px}
tfoot .f-left {color:#141414;}
+1
View File
@@ -87,6 +87,7 @@ $lang->bug->activate = 'Activate';
$lang->bug->reportChart = 'Report';
$lang->bug->export = 'Export data';
$lang->bug->delete = 'Delete Bug';
$lang->bug->deleted = 'Deleted';
$lang->bug->saveTemplate = 'Save template';
$lang->bug->deleteTemplate = 'Delete template';
$lang->bug->customFields = 'Custom';
+29 -24
View File
@@ -18,30 +18,6 @@ js::set('moduleID', $moduleID);
js::set('customed', $customed);
?>
<div id='featurebar'>
<div class='actions'>
<div class='btn-group'>
<div class='btn-group'>
<button type='button' class='btn btn-default dropdown-toggle' data-toggle='dropdown'>
<i class='icon-download-alt'></i> <?php echo $lang->export ?>
<span class='caret'></span>
</button>
<ul class='dropdown-menu' id='exportActionMenu'>
<?php
$misc = common::hasPriv('bug', 'export') ? "class='export'" : "class=disabled";
$link = common::hasPriv('bug', 'export') ? $this->createLink('bug', 'export', "productID=$productID&orderBy=$orderBy") : '#';
echo "<li>" . html::a($link, $lang->bug->export, '', $misc) . "</li>";
?>
</ul>
</div>
<?php
common::printIcon('bug', 'report', "productID=$productID&browseType=$browseType&moduleID=$moduleID");
common::printIcon('bug', 'customFields', '', '', 'button', '', '', 'iframe', true);
echo "</div><div class='btn-group'>";
common::printIcon('bug', 'batchCreate', "productID=$productID&projectID=0&moduleID=$moduleID");
common::printIcon('bug', 'create', "productID=$productID&extra=moduleID=$moduleID");
echo '</div>';
?>
</div>
<ul class='nav'>
<?php
echo "<li id='allTab'>" . html::a($this->createLink('bug', 'browse', "productid=$productID&browseType=all&param=0&orderBy=$orderBy&recTotal=0&recPerPage=200"), $lang->bug->allBugs) . "</li>";
@@ -57,6 +33,35 @@ js::set('customed', $customed);
echo "<li id='bysearchTab'><a href='#'><i class='icon-search icon'></i>&nbsp;{$lang->bug->byQuery}</a></li> ";
?>
</ul>
<div class='actions'>
<div class='btn-group'>
<div class='btn-group'>
<button type='button' class='btn btn-default dropdown-toggle' data-toggle='dropdown'>
<i class='icon-download-alt'></i> <?php echo $lang->export ?>
<span class='caret'></span>
</button>
<ul class='dropdown-menu' id='exportActionMenu'>
<?php
$misc = common::hasPriv('bug', 'export') ? "class='export'" : "class=disabled";
$link = common::hasPriv('bug', 'export') ? $this->createLink('bug', 'export', "productID=$productID&orderBy=$orderBy") : '#';
echo "<li>" . html::a($link, $lang->bug->export, '', $misc) . "</li>";
?>
</ul>
</div>
<div class='btn-group'>
<?php
common::printIcon('bug', 'report', "productID=$productID&browseType=$browseType&moduleID=$moduleID");
common::printIcon('bug', 'customFields', '', '', 'button', '', '', 'iframe', true);
?>
</div>
</div>
<div class='btn-group'>
<?php
common::printIcon('bug', 'batchCreate', "productID=$productID&projectID=0&moduleID=$moduleID");
common::printIcon('bug', 'create', "productID=$productID&extra=moduleID=$moduleID");
?>
</div>
</div>
<div id='querybox' class='<?php if($browseType =='bysearch') echo 'show';?>'></div>
</div>
+1
View File
@@ -13,6 +13,7 @@ $lang->build->common = 'Build';
$lang->build->create = "Create";
$lang->build->edit = "Edit";
$lang->build->delete = "Delete";
$lang->build->deleted = "Deleted";
$lang->build->view = "Info";
$lang->build->ajaxGetProductBuilds = 'API:Product builds';
$lang->build->ajaxGetProjectBuilds = 'API:Project builds';
+4
View File
@@ -123,7 +123,11 @@ $lang->exportFileTypeList['html'] = 'html';
$lang->exportTypeList['all'] = 'All records';
$lang->exportTypeList['selected'] = 'Only checked';
/* Language. */
$lang->lang = 'Language';
/* Themes. */
$lang->theme = 'Theme';
$lang->themes['default'] = 'Default';
$lang->themes['green'] = 'Green';
$lang->themes['red'] = 'Red';
+2 -2
View File
@@ -153,8 +153,8 @@ $lang->my->menu->testtask = array('link' => '测试|my|testtask|', 'subMod
$lang->my->menu->story = array('link' => '需求|my|story|', 'subModule' => 'story');
$lang->my->menu->myProject = '项目|my|project|';
$lang->my->menu->dynamic = '动态|my|dynamic|';
$lang->my->menu->profile = array('link' => '档案|my|profile|onlybody=yes', 'alias' => 'editprofile');
$lang->my->menu->changePassword = '密码|my|changepassword|onlybody=yes';
$lang->my->menu->profile = array('link' => '档案|my|profile', 'alias' => 'editprofile');
$lang->my->menu->changePassword = '密码|my|changepassword';
$lang->todo = new stdclass();
$lang->todo->menu = $lang->my->menu;
+1 -3
View File
@@ -1,4 +1,2 @@
#titlebar {height: 67px\0}
#titlebar #querybox {margin-top: -14px; position: relative\0; top: -18px\0;}
#titlebar > .heading {display: none}
#titlebar {display: none}
form {position:relative}
+1 -1
View File
@@ -18,8 +18,8 @@ js::set('confirmDelete', $lang->user->confirmDelete);
?>
<div id='titlebar'>
<div class='heading'><?php echo html::icon($lang->icons['company']);?> <?php echo $lang->company->browse;?></div>
<div id='querybox' class='show'><?php echo $searchForm?></div>
</div>
<div id='querybox' class='show'><?php echo $searchForm?></div>
<div class='side'>
<a class='side-handle' data-id='companyTree'><i class='icon-caret-left'></i></a>
<div class='side-body'>
+1
View File
@@ -30,6 +30,7 @@ $lang->doc->addedDate = 'Added date';
$lang->doc->editedBy = 'Edited by';
$lang->doc->editedDate = 'Edited date';
$lang->doc->basicInfo = 'Basic Info';
$lang->doc->deleted = 'Deleted';
$lang->doc->moduleDoc = 'By module';
$lang->doc->searchDoc = 'By search';
+1 -1
View File
@@ -48,7 +48,7 @@ function switchEncode(fileType)
<strong><?php echo $lang->export;?></strong>
</div>
</div>
<form class='form-condensed' method='post' target='hiddenwin' onsubmit='setDownloading();' style='padding: 80px 15%'>
<form class='form-condensed' method='post' target='hiddenwin' onsubmit='setDownloading();' style='padding: 40px 5%'>
<table class='w-p100'>
<tr>
<td>
+2
View File
@@ -107,6 +107,7 @@ class group extends control
{
$this->group->copy($groupID);
if(dao::isError()) die(js::error(dao::getError()));
if(isonlybody()) die(js::closeModal('parent.parent', 'this'));
die(js::locate($this->createLink('group', 'browse'), 'parent'));
}
@@ -198,6 +199,7 @@ class group extends control
if(!empty($_POST))
{
$this->group->updateUser($groupID);
if(isonlybody()) die(js::closeModal('parent.parent', 'this'));
die(js::locate($this->createLink('group', 'browse'), 'parent'));
}
$group = $this->group->getById($groupID);
+4 -1
View File
@@ -37,6 +37,7 @@ EOT;
$lang->install->newReleased= "<strong class='red'>Notice</strong>:There is a new version <strong class='red'>%s</strong>, released on %s。";
$lang->install->choice = 'You can ';
$lang->install->or = 'or';
$lang->install->checking = 'System checking';
$lang->install->ok = 'OK(√)';
$lang->install->fail = 'Failed(×)';
@@ -127,7 +128,9 @@ $lang->install->groupList['TOP']['desc'] = 'for top manager';
$lang->install->groupList['OTHERS']['name'] = 'Others';
$lang->install->groupList['OTHERS']['desc'] = 'for others';
$lang->install->success = "Success installed";
$lang->install->success = "Success installed";
$lang->install->login = 'Sign into ZentaoPMS';
$lang->install->register = 'Register Zentao community website';
$lang->install->joinZentao = <<<EOT
You have installed ZentaoPMS %s successfully. <strong class='red'>Please remove install.php in time</strong>。Now you can <a href='index.php'>login ZenTaoPMS</a>, create groups and grant priviledges.
+3 -3
View File
@@ -128,9 +128,9 @@ $lang->install->groupList['TOP']['desc'] = '高层管理';
$lang->install->groupList['OTHERS']['name'] = '其他';
$lang->install->groupList['OTHERS']['desc'] = '其他';
$lang->install->success = "安装成功";
$lang->install->login = '登录禅道管理系统';
$lang->install->regist = '禅道社区注册';
$lang->install->success = "安装成功";
$lang->install->login = '登录禅道管理系统';
$lang->install->register = '禅道社区注册';
$lang->install->joinZentao = <<<EOT
<p>您已经成功安装禅道管理系统%s,<strong class='text-danger'>请及时删除install.php</strong>。现在您可以直接 <a class='alert-link' href="index.php">登录禅道管理系统</a>,设置用户及分组!</p>
+5
View File
@@ -20,6 +20,11 @@ $lang->misc->zentao->labels['support'] = 'Support';
$lang->misc->zentao->labels['cowin'] = 'Help us';
$lang->misc->zentao->labels['service'] = 'Services';
$lang->misc->zentao->icons['about'] = 'group';
$lang->misc->zentao->icons['support'] = 'question-sign';
$lang->misc->zentao->icons['cowin'] = 'hand-right';
$lang->misc->zentao->icons['service'] = 'heart';
$lang->misc->zentao->about['proversion'] = 'Try pro version free!';
$lang->misc->zentao->about['official'] = "Official site";
$lang->misc->zentao->about['changelog'] = "Change log";
+1 -1
View File
@@ -1,7 +1,7 @@
.panel-block {height: 208px;overflow: auto; padding: 0}
.panel-block.dynamic {height: 435px;}
.panel-block .panel-heading {padding: 6px 10px; margin: 0;}
.panel-block .panel-actions {line-height: 36px; margin-right: -2px;}
.panel-block .panel-actions.pull-right {line-height: 36px; margin-right: -2px; margin-right: 5px!important\0}
.panel > .table > thead > tr > th, .panel > form > .table > thead > tr > th {background: #f1f1f1!important}
.panel-block td, .panel-block th {padding: 6px 6px 5px;}
.panel-block.dynamic td {padding: 5px 6px 5px; overflow: hidden;}
+3 -2
View File
@@ -1,5 +1,6 @@
$(function()
{
$('#submenuprofile').modalTrigger({width:600, type:'iframe'});
$('#submenuchangePassword').modalTrigger({width:500, type:'iframe'});
var sp = $('#submenuprofile'), scp = $('#submenuchangePassword');
sp.attr('href', sp.attr('href') + '?onlybody=yes').modalTrigger({width:600, type:'iframe'});
scp.attr('href', scp.attr('href') + '?onlybody=yes').modalTrigger({width:500, type:'iframe'});
});
+2
View File
@@ -39,7 +39,9 @@ $lang->my->home->productHome = 'Product home';
$lang->my->home->createProject = "create a project?";
$lang->my->home->createProduct = "create a product?";
$lang->my->home->help = "<a href='http://www.zentao.net/help-read-79236.html' target='_blank'>Help Book</a>";
$lang->my->home->noProductsTip = "There is no product.";
$lang->my->form = new stdclass();
$lang->my->form->lblBasic = 'Basic info';
$lang->my->form->lblContact = 'Contact info';
$lang->my->form->lblAccount = 'Account info';
+1 -1
View File
@@ -15,7 +15,7 @@
<div id='titlebar'>
<div class='heading'><?php echo html::icon($lang->icons['user']);?> <?php echo $lang->my->profile;?></div>
<div class='actions'>
<?php echo html::a($this->createLink('my', 'editprofile', '', '', true), $lang->user->editProfile, '', "class='btn btn-primary'");?>
<?php echo html::a($this->createLink('my', 'editprofile'), $lang->user->editProfile, '', "class='btn btn-primary'");?>
</div>
</div>
<table class='table table-borderless table-data'>
+1
View File
@@ -19,6 +19,7 @@ $lang->product->batchEdit = "Batch Edit";
$lang->product->create = "Create";
$lang->product->read = "Info";
$lang->product->delete = "Delete";
$lang->product->deleted = "Deleted";
$lang->product->close = "Close";
$lang->product->select = '--select product--';
$lang->product->mine = 'I charge : ';
-1
View File
@@ -25,7 +25,6 @@ $lang->product->select = '--请选择产品--';
$lang->product->mine = '我负责:';
$lang->product->other = '其他:';
$lang->product->closed = '已关闭&raquo;';
$lang->product->deleted = '已删除';
$lang->product->basicInfo = '基本信息';
$lang->product->otherInfo = '其他信息';
+13
View File
@@ -21,6 +21,8 @@ $lang->project->name = 'Name';
$lang->project->code = 'Code';
$lang->project->begin = 'Begin';
$lang->project->end = 'End';
$lang->project->dateRange = 'Range';
$lang->project->to = 'To';
$lang->project->days = 'Workdays';
$lang->project->day = 'day';
$lang->project->status = 'Status';
@@ -33,6 +35,7 @@ $lang->project->closedBy = 'Closed by';
$lang->project->closedDate = 'Closed date';
$lang->project->canceledBy = 'Canceled by';
$lang->project->canceledDate = 'Canceled date';
$lang->project->owner = 'Owner';
$lang->project->PO = 'Product owner';
$lang->project->PM = 'Project manager';
$lang->project->QD = 'Quality director';
@@ -55,6 +58,7 @@ $lang->project->all = 'All';
$lang->project->typeDesc = 'No burndown and story in OPS';
$lang->project->mine = 'I charge : ';
$lang->project->other = 'Other : ';
$lang->project->deleted = 'Deleted';
$lang->project->start = 'Start';
$lang->project->activate = 'Activate';
@@ -178,7 +182,16 @@ $lang->project->whyNoStories = "There no active stories to added to this proj
$lang->project->doneProjects = 'Done';
$lang->project->unDoneProjects = 'Undone';
$lang->project->copyTeam = 'Copy a team';
$lang->project->copyFromTeam = 'Copy form team: <strong>%s</strong>';
$lang->project->noMatched = 'No matched project including "%s"';
$lang->project->copyTitle = 'Choose A Project To Copy';
$lang->project->copyTeamTitle = 'Choose A Team To Copy';
$lang->project->copyNoProject = 'No Project To Copy';
$lang->project->copyFromProject = 'Copy from: <strong>%s</strong>';
$lang->project->reCopy = 'recopy';
$lang->project->cancelCopy = 'cancel copy';
$lang->project->byPeriod = 'By period';
$lang->project->byUser = 'By user';
/* Confirm. */
$lang->project->confirmDelete = 'Are you sure to delete project [%s]?';
+2 -3
View File
@@ -35,7 +35,7 @@ $lang->project->closedBy = '由谁关闭';
$lang->project->closedDate = '关闭日期';
$lang->project->canceledBy = '由谁取消';
$lang->project->canceledDate = '取消日期';
$lang->project->Person = '负责人';
$lang->project->owner = '负责人';
$lang->project->PO = '产品负责人';
$lang->project->PM = '项目负责人';
$lang->project->QD = '测试负责人';
@@ -191,6 +191,7 @@ $lang->project->copyFromProject = '复制自项目: <strong>%s</strong>';
$lang->project->reCopy = '重新复制';
$lang->project->cancelCopy = '取消复制';
$lang->project->byPeriod = '按时间段';
$lang->project->byUser = '按用户';
/* 交互提示。*/
$lang->project->confirmDelete = '您确定删除项目[%s]吗?';
@@ -231,5 +232,3 @@ $lang->project->selectGroup->suspended = '(已挂起)';
$lang->project->selectGroup->done = '(已结束)';
$lang->project->projectTasks = '项目';
$lang->project->byUser = '按用户';
+1 -2
View File
@@ -12,7 +12,6 @@
<?php include '../../common/view/header.html.php';?>
<?php include '../../common/view/sparkline.html.php';?>
<div id='featurebar'>
<div class='heading'><?php echo html::icon($lang->icons['project']) . ' ' . $lang->project->allProject;?> </div>
<div class='actions'>
<?php echo html::a($this->createLink('project', 'create'), "<i class='icon-plus'></i> " . $lang->project->create,'', "class='btn'") ?>
</div>
@@ -71,7 +70,7 @@
<td colspan='10'>
<div class='table-actions clearfix'>
<?php echo "<div class='btn-group'>" . html::selectButton() . '</div>';?>
<?php echo html::submitButton(html::icon($lang->icons['edit']) . ' ' . $lang->project->batchEdit);?>
<?php echo html::submitButton($lang->project->batchEdit);?>
</div>
</td>
</tr>
+1
View File
@@ -13,6 +13,7 @@ $lang->release->common = 'Release';
$lang->release->create = "Create";
$lang->release->edit = "Edit";
$lang->release->delete = "Delete";
$lang->release->deleted = 'Deleted';
$lang->release->view = "Info";
$lang->release->browse = "Browse";
+16 -11
View File
@@ -14,10 +14,11 @@
<?php include '../../common/view/datepicker.html.php';?>
<style>
#bysearchTab {transition: all .3s cubic-bezier(.175, .885, .32, 1);}
#bysearchTab.active {background: #fff; padding: 2px 10px 3px; border: 1px solid #ddd; border-bottom: none}
#bysearchTab.active {background: #fff; padding: 2px 10px 3px; padding-bottom: 2px\0; border: 1px solid #ddd; border-bottom: none}
#bysearchTab.active:hover {background: #ddd}
#bysearchTab.active > a:after {font-size: 14px; font-family: ZenIcon; content: ' \e6e2'; color: #808080}
#featurebar .nav {z-index: 999; position: relative;}
#querybox form{padding-right: 40px;}
#querybox .form-control {padding: 2px; padding: 6px 2px\0;}
@-moz-document url-prefix() {#querybox .form-control {padding: 6px 2px;}}
#querybox .table {border: none}
@@ -34,14 +35,18 @@
#selectPeriod > .dropdown-header {background: #f1f1f1; display: block; text-align: center; padding: 4px 0; line-height: 20px; margin-bottom: 5px; font-size: 14px; border-radius: 2px; color: #333; font-size: 12px}
#selectPeriod li > a {padding: 4px 15px; border-radius: 2px}
#searchlite, #searchmore {color: #4d90fe; width: 30px; padding: 0 5px}
#moreOrLite {position: absolute; right: 0; top: 0; bottom: 0}
#searchlite, #searchmore {color: #4d90fe; width: 50px; padding: 0 5px; line-height: 70px; text-align: center;}
#searchlite {line-height: 127px}
#searchform.showmore #searchmore, #searchform #searchlite {display: none;}
#searchform.showmore #searchlite, #searchform #searchmore {display: inline-block;}
#searchmore > i, #searchlite > i {font-size: 28px;}
#searchmore:hover, #searchlite:hover {color: #145CCD;}
#searchmore:hover, #searchlite:hover {color: #145CCD; background: #e5e5e5}
.bootbox-prompt .modal-dialog {width: 500px; margin-top: 10%;}
#groupAndOr {display: inline-block;}
.outer > #querybox {margin: -20px -20px 20px; border-top: none; border-bottom: 1px solid #ddd}
</style>
<script language='Javascript'>
var dtOptions =
@@ -266,10 +271,10 @@ foreach($fieldParams as $fieldName => $param)
?>
</div>
<form method='post' action='<?php echo $this->createLink('search', 'buildQuery');?>' target='hiddenwin' id='searchform' class='form-condensed'>
<table class='table table-condensed table-form'>
<table class='table table-condensed table-form' style='max-width: 1200px; margin: 0 auto'>
<tr>
<td>
<table class='table active-disabled w-400px pull-right'>
<td class='w-400px'>
<table class='table active-disabled'>
<?php
$formSessionName = $module . 'Form';
$formSession = $this->session->$formSessionName;
@@ -376,13 +381,13 @@ foreach($fieldParams as $fieldName => $param)
?>
</div>
</td>
<th class='text-right'>
<a id="searchmore" href="javascript:showmore()"><i class="icon-double-angle-down icon-2x"></i></a>
<a id="searchlite" href="javascript:showlite()"><i class="icon-double-angle-up icon-2x"></i></a>
<?php echo html::hidden('formType', 'lite');?>
</th>
</tr>
</table>
<div id='moreOrLite'>
<a id="searchmore" href="javascript:showmore()"><i class="icon-double-angle-down icon-2x"></i></a>
<a id="searchlite" href="javascript:showlite()"><i class="icon-double-angle-up icon-2x"></i></a>
<?php echo html::hidden('formType', 'lite');?>
</div>
</form>
<script language='Javascript'>
<?php if(isset($formSession['formType'])) echo "show{$formSession['formType']}()";?>
+1
View File
@@ -160,6 +160,7 @@ $lang->story->lblReview = 'Review';
$lang->story->lblActivate = 'Activate';
$lang->story->lblClose = 'Close';
$lang->story->checkAffection = 'Check Affection';
$lang->story->affectedProjects = 'Affected projects';
$lang->story->affectedBugs = 'Affected bugs';
$lang->story->affectedCases = 'Affected cases';
+62 -66
View File
@@ -11,76 +11,72 @@
*/
?>
<?php include './header.html.php';?>
<?php include '../../common/view/datepicker.html.php';?>
<script language='Javascript'>
var assignedTo = '<?php $story->lastEditedBy ? print($story->lastEditedBy) : print($story->openedBy);?>';
</script>
<div id='titlebar'>
<div class='heading'>
<span class='prefix'><?php echo html::icon($lang->icons['story']);?> <strong><?php echo $story->id;?></strong></span>
<strong><?php echo html::a($this->createLink('story', 'view', "storyID=$story->id"), $story->title);?></strong>
<small><?php echo html::icon($lang->icons['review']) . ' ' . $lang->story->review;?></small>
</div>
</div>
<div class='row'>
<div class='col-md-8'>
<div class='main'>
<form method='post' target='hiddenwin' class='form-condensed'>
<table class='table table-form'>
<tr>
<th class='w-80px'><?php echo $lang->story->reviewedDate;?></th>
<td class='w-p25-f'><?php echo html::input('reviewedDate', helper::today(), 'class=form-control');?></td><td></td>
</tr>
<tr>
<th><?php echo $lang->story->reviewResult;?></th>
<td><?php echo html::select('result', $lang->story->reviewResultList, '', 'class=form-control onchange="switchShow(this.value)"');?></td><td></td>
</tr>
<tr id='rejectedReasonBox' class='hidden'>
<th><?php echo $lang->story->rejectedReason;?></th>
<td><?php echo html::select('closedReason', $lang->story->reasonList, '', 'class=form-control onchange="setStory(this.value)"');?></td><td></td>
</tr>
<tr id='duplicateStoryBox' class='hidden'>
<th><?php echo $lang->story->duplicateStory;?></th>
<td><?php echo html::input('duplicateStory', '', 'class=form-control');?></td><td></td>
</tr>
<tr id='childStoriesBox' class='hidden'>
<th><?php echo $lang->story->childStories;?></th>
<td><?php echo html::input('childStories', '', 'class=form-control');?></td><td></td>
</tr>
<?php if($story->status == 'changed' or ($story->status == 'draft' and $story->version > 1)):?>
<tr id='preVersionBox' class='hidden'>
<th><?php echo $lang->story->preVersion;?></th>
<td colspan='2'><?php echo html::radio('preVersion', array_combine(range($story->version - 1, 1), range($story->version - 1, 1)), $story->version - 1);?></td>
</tr>
<?php endif;?>
<tr>
<th><?php echo $lang->story->assignedTo;?></th>
<td><?php echo html::select('assignedTo', $users, $story->lastEditedBy ? $story->lastEditedBy : $story->openedBy, 'class=form-control');?></td><td></td>
</tr>
<tr>
<th><?php echo $lang->story->reviewedBy;?></th>
<td colspan='2'><?php echo html::select('reviewedBy[]', $users, $app->user->account, "class='form-control' multiple data-placeholder='{$lang->story->chosen->reviewedBy}'");?></td>
</tr>
<tr>
<th><?php echo $lang->story->comment;?></th>
<td colspan='2'><?php echo html::textarea('comment', '', "rows='8' class='form-control'");?></td>
</tr>
<tr>
<th><?php echo $lang->story->checkAffection;?></th>
<td colspan='2'><?php include './affected.html.php';?></td>
</tr>
<tr>
<td></td>
<td colspan='2'>
<?php echo html::submitButton();?>
<?php echo html::linkButton($lang->goback, $app->session->storyList ? $app->session->storyList : inlink('view', "storyID=$story->id"));?>
</td>
</tr>
</table>
</form>
<div class='container'>
<div id='titlebar'>
<div class='heading'>
<span class='prefix'><?php echo html::icon($lang->icons['story']);?> <strong><?php echo $story->id;?></strong></span>
<strong><?php echo html::a($this->createLink('story', 'view', "storyID=$story->id"), $story->title);?></strong>
<small><?php echo html::icon($lang->icons['review']) . ' ' . $lang->story->review;?></small>
</div>
</div>
<div class='col-md-4'>
<div class='main main-side'><?php include '../../common/view/action.html.php';?></div>
</div>
<form method='post' target='hiddenwin' class='form-condensed'>
<table class='table table-form'>
<tr>
<th class='w-80px'><?php echo $lang->story->reviewedDate;?></th>
<td class='w-p25-f'><?php echo html::input('reviewedDate', helper::today(), "class='form-control form-date'");?></td><td></td>
</tr>
<tr>
<th><?php echo $lang->story->reviewResult;?></th>
<td><?php echo html::select('result', $lang->story->reviewResultList, '', 'class=form-control onchange="switchShow(this.value)"');?></td><td></td>
</tr>
<tr id='rejectedReasonBox' class='hidden'>
<th><?php echo $lang->story->rejectedReason;?></th>
<td><?php echo html::select('closedReason', $lang->story->reasonList, '', 'class=form-control onchange="setStory(this.value)"');?></td><td></td>
</tr>
<tr id='duplicateStoryBox' class='hidden'>
<th><?php echo $lang->story->duplicateStory;?></th>
<td><?php echo html::input('duplicateStory', '', 'class=form-control');?></td><td></td>
</tr>
<tr id='childStoriesBox' class='hidden'>
<th><?php echo $lang->story->childStories;?></th>
<td><?php echo html::input('childStories', '', 'class=form-control');?></td><td></td>
</tr>
<?php if($story->status == 'changed' or ($story->status == 'draft' and $story->version > 1)):?>
<tr id='preVersionBox' class='hidden'>
<th><?php echo $lang->story->preVersion;?></th>
<td colspan='2'><?php echo html::radio('preVersion', array_combine(range($story->version - 1, 1), range($story->version - 1, 1)), $story->version - 1);?></td>
</tr>
<?php endif;?>
<tr>
<th><?php echo $lang->story->assignedTo;?></th>
<td><?php echo html::select('assignedTo', $users, $story->lastEditedBy ? $story->lastEditedBy : $story->openedBy, 'class=form-control');?></td><td></td>
</tr>
<tr>
<th><?php echo $lang->story->reviewedBy;?></th>
<td colspan='2'><?php echo html::select('reviewedBy[]', $users, $app->user->account, "class='form-control' multiple data-placeholder='{$lang->story->chosen->reviewedBy}'");?></td>
</tr>
<tr>
<th><?php echo $lang->story->comment;?></th>
<td colspan='2'><?php echo html::textarea('comment', '', "rows='8' class='form-control'");?></td>
</tr>
<tr>
<th><?php echo $lang->story->checkAffection;?></th>
<td colspan='2'><?php include './affected.html.php';?></td>
</tr>
<tr>
<td></td>
<td colspan='2'>
<?php echo html::submitButton();?>
<?php echo html::linkButton($lang->goback, $app->session->storyList ? $app->session->storyList : inlink('view', "storyID=$story->id"));?>
</td>
</tr>
</table>
</form>
<hr class='small'>
<div class='main'><?php include '../../common/view/action.html.php';?></div>
</div>
<?php include '../../common/view/footer.html.php';?>
+3
View File
@@ -1 +1,4 @@
.chosen-container-single .chosen-drop {min-width: 300px; border-top: 1px solid #ddd!important}
.input-group {display: block; padding-right: 29px; max-width: 100%;}
.input-group > .chosen-container {display: block; width: 100%;}
.input-group-btn {display: block; position: absolute; right: 0; width: 29px; top: 0}
+1
View File
@@ -16,6 +16,7 @@ $lang->task->batchEdit = "Batch edit";
$lang->task->import = "Import undone";
$lang->task->edit = "Update";
$lang->task->delete = "Delete";
$lang->task->deleted = "Deleted";
$lang->task->view = "Info";
$lang->task->logEfforts = "Log working hours";
$lang->task->record = "Estimate";
+3 -3
View File
@@ -24,11 +24,11 @@
<thead>
<tr class='text-center'>
<th class='w-30px'><?php echo $lang->idAB;?></th>
<th class='w-200px'><?php echo $lang->task->module?></th>
<th class='w-150px'><?php echo $lang->task->module?></th>
<th><?php echo $lang->task->story;?></th>
<th><?php echo $lang->task->name;?> <span class='required'></span></th>
<th class='w-70px'><?php echo $lang->typeAB;?> <span class='required'></span></th>
<th class='w-80px'><?php echo $lang->task->assignedTo;?></th>
<th class='w-80px'><?php echo $lang->typeAB;?> <span class='required'></span></th>
<th class='w-90px'><?php echo $lang->task->assignedTo;?></th>
<th class='w-50px'><?php echo $lang->task->estimateAB;?></th>
<th class='w-p20'><?php echo $lang->task->desc;?></th>
<th class='w-70px'><?php echo $lang->task->pri;?></th>
+1
View File
@@ -0,0 +1 @@
.table table td,.outer .table table tbody > tr:last-child td {padding: 2px 0 2px 5px!important; border: none!important;}
+1
View File
@@ -60,6 +60,7 @@ $lang->testcase->view = "Info";
$lang->testcase->edit = "Edit";
$lang->testcase->batchEdit = "Batch edit";
$lang->testcase->delete = "Delete";
$lang->testcase->deleted = "Deleted";
$lang->testcase->browse = "Browse";
$lang->testcase->import = "Import";
$lang->testcase->importID = "Linenum";
+43 -34
View File
@@ -2,28 +2,33 @@
<style>
.affix {position:fixed; top:0px; width:95.6%;z-index:10000;}
</style>
<form target='hiddenwin' method='post'>
<table class='table-1'>
<tr class='colhead'>
<th><?php echo $lang->testcase->id?></th>
<th><?php echo $lang->testcase->title?></th>
<th><?php echo $lang->testcase->module?></th>
<th><?php echo $lang->testcase->story?></th>
<th><?php echo $lang->testcase->pri?></th>
<th><?php echo $lang->testcase->type?></th>
<th><?php echo $lang->testcase->status?></th>
<th><?php echo $lang->testcase->frequency?></th>
<th><?php echo $lang->testcase->stage?></th>
<th><?php echo $lang->testcase->precondition?></th>
<th><?php echo $lang->testcase->steps?>
<table class='table-1'>
<tr>
<th><?php echo $lang->testcase->stepDesc?></th>
<th><?php echo $lang->testcase->stepExpect?></th>
</tr>
</table>
</th>
</tr>
<form target='hiddenwin' method='post' class='form-condensed'>
<table class='table active-disabled'>
<thead>
<tr>
<th class='w-80px'><?php echo $lang->testcase->id?></th>
<th><?php echo $lang->testcase->title?></th>
<th class='w-90px'><?php echo $lang->testcase->module?></th>
<th class='w-100px'><?php echo $lang->testcase->story?></th>
<th class='w-70px'><?php echo $lang->testcase->pri?></th>
<th><?php echo $lang->testcase->type?></th>
<th><?php echo $lang->testcase->status?></th>
<th><?php echo $lang->testcase->frequency?></th>
<th><?php echo $lang->testcase->stage?></th>
<th><?php echo $lang->testcase->precondition?></th>
<th class='pd-0'>
<table class='w-p100 table-borderless'>
<tr>
<th colspan='2'><?php echo $lang->testcase->steps?></th>
</tr>
<tr>
<th><?php echo $lang->testcase->stepDesc?></th>
<th><?php echo $lang->testcase->stepExpect?></th>
</tr>
</table>
</th>
</tr>
</thead>
<?php foreach($caseData as $key => $case):?>
<tr valign='top' align='center'>
<td>
@@ -40,21 +45,21 @@
?>
</td>
<td><?php echo html::input("title[$key]", $case->title, "class='form-control' style='margin-top:2px'")?></td>
<td><?php echo html::select("module[$key]", $modules, isset($case->module) ? $case->module : (!empty($case->id) ? $cases[$case->id]->module : ''), "class='select-2'")?></td>
<td><?php echo html::select("story[$key]", $stories, isset($case->story) ? $case->story : (!empty($case->id) ? $cases[$case->id]->story : ''), "class='select-2'")?></td>
<td><?php echo html::select("pri[$key]", $lang->testcase->priList, isset($case->pri) ? $case->pri : (!empty($case->id) ? $cases[$case->id]->pri : ''))?></td>
<td><?php echo html::select("type[$key]", $lang->testcase->typeList, $case->type)?></td>
<td><?php echo html::select("status[$key]", $lang->testcase->statusList, isset($case->status) ? $case->status : '')?></td>
<td><?php echo html::input("frequency[$key]", isset($case->frequency) ? $case->frequency : 1, "size='2'")?></td>
<td><?php echo html::select("stage[$key][]", $lang->testcase->stageList, isset($case->stage) ? $case->stage : '', "multiple='multiple'")?></td>
<td><?php echo html::textarea("precondition[$key]", isset($case->precondition) ? $case->precondition : "", "style='margin-top:2px; height:65px;'")?></td>
<td><?php echo html::select("module[$key]", $modules, isset($case->module) ? $case->module : (!empty($case->id) ? $cases[$case->id]->module : ''), "class='form-control'")?></td>
<td><?php echo html::select("story[$key]", $stories, isset($case->story) ? $case->story : (!empty($case->id) ? $cases[$case->id]->story : ''), "class='form-control'")?></td>
<td><?php echo html::select("pri[$key]", $lang->testcase->priList, isset($case->pri) ? $case->pri : (!empty($case->id) ? $cases[$case->id]->pri : ''), "class='form-control'")?></td>
<td><?php echo html::select("type[$key]", $lang->testcase->typeList, $case->type, "class='form-control'")?></td>
<td><?php echo html::select("status[$key]", $lang->testcase->statusList, isset($case->status) ? $case->status : '', "class='form-control'")?></td>
<td><?php echo html::input("frequency[$key]", isset($case->frequency) ? $case->frequency : 1, "class='form-control'")?></td>
<td><?php echo html::select("stage[$key][]", $lang->testcase->stageList, isset($case->stage) ? $case->stage : '', "multiple='multiple' class='form-control' style='height:auto'")?></td>
<td><?php echo html::textarea("precondition[$key]", isset($case->precondition) ? $case->precondition : "", "class='form-control'")?></td>
<td>
<?php if(isset($stepData[$key]['desc'])):?>
<table class='table-1'>
<table class='w-p100 bd-0'>
<?php foreach($stepData[$key]['desc'] as $id => $desc):?>
<tr>
<td><?php echo html::textarea("desc[$key][$id]", $desc)?></td>
<td><?php echo html::textarea("expect[$key][$id]", isset($stepData[$key]['expect'][$id]) ? $stepData[$key]['expect'][$id] : '')?></td>
<td><?php echo html::textarea("desc[$key][$id]", $desc, "class='form-control'")?></td>
<td><?php echo html::textarea("expect[$key][$id]", isset($stepData[$key]['expect'][$id]) ? $stepData[$key]['expect'][$id] : '', "class='form-control'")?></td>
</tr>
<?php endforeach;?>
</table>
@@ -63,8 +68,12 @@
</tr>
<?php unset($caseData[$key]);?>
<?php endforeach;?>
<tfoot>
<tr>
<td colspan='11' class='text-center'><?php echo html::submitButton() . ' &nbsp; ' . html::backButton()?></td>
</tr>
</tfoot>
</table>
<p><?php echo html::submitButton() . html::backButton()?></p>
</form>
<script>
$(function(){affix('.colhead')})
+1
View File
@@ -0,0 +1 @@
.table > caption {border:1px solid #ddd; border-bottom: none;}
+1
View File
@@ -12,6 +12,7 @@
$lang->testtask->index = "Index";
$lang->testtask->create = "Create";
$lang->testtask->delete = "Delete";
$lang->testtask->deleted = "Deleted";
$lang->testtask->view = "Info";
$lang->testtask->edit = "Edit";
$lang->testtask->browse = "Testtask browse";
+34 -31
View File
@@ -9,37 +9,40 @@
* @version $Id: en.php 5053 2013-07-06 08:17:37Z wyd621@gmail.com $
* @link http://www.zentao.net
*/
$lang->user->common = 'User';
$lang->user->id = 'ID';
$lang->user->company = 'Company';
$lang->user->dept = 'Department';
$lang->user->account = 'Account';
$lang->user->password = 'Password';
$lang->user->password2 = 'Repeat password';
$lang->user->role = 'Role';
$lang->user->group = 'Group';
$lang->user->realname = 'Fullname';
$lang->user->nickname = 'Nickname';
$lang->user->commiter = 'Commit account';
$lang->user->avatar = 'Avatar';
$lang->user->birthyear = 'Birth year';
$lang->user->gender = 'Gender';
$lang->user->email = 'Email';
$lang->user->skype = 'Skype';
$lang->user->qq = 'QQ';
$lang->user->yahoo = 'Yahoo!';
$lang->user->gtalk = 'GTalk';
$lang->user->wangwang = 'Wangwang';
$lang->user->mobile = 'Mobile';
$lang->user->phone = 'Phone';
$lang->user->address = 'Address';
$lang->user->zipcode = 'Zipcode';
$lang->user->join = 'Join date';
$lang->user->visits = 'Visits';
$lang->user->ip = 'Last IP';
$lang->user->last = 'Last login';
$lang->user->status = 'Status';
$lang->user->ditto = 'Ditto';
$lang->user->common = 'User';
$lang->user->id = 'ID';
$lang->user->company = 'Company';
$lang->user->dept = 'Department';
$lang->user->account = 'Account';
$lang->user->password = 'Password';
$lang->user->password2 = 'Repeat password';
$lang->user->role = 'Role';
$lang->user->group = 'Group';
$lang->user->realname = 'Fullname';
$lang->user->nickname = 'Nickname';
$lang->user->commiter = 'Commit account';
$lang->user->avatar = 'Avatar';
$lang->user->birthyear = 'Birth year';
$lang->user->gender = 'Gender';
$lang->user->email = 'Email';
$lang->user->basicInfo = 'Basic info';
$lang->user->accountInfo = 'Account info';
$lang->user->contactInfo = 'Contact info';
$lang->user->skype = 'Skype';
$lang->user->qq = 'QQ';
$lang->user->yahoo = 'Yahoo!';
$lang->user->gtalk = 'GTalk';
$lang->user->wangwang = 'Wangwang';
$lang->user->mobile = 'Mobile';
$lang->user->phone = 'Phone';
$lang->user->address = 'Address';
$lang->user->zipcode = 'Zipcode';
$lang->user->join = 'Join date';
$lang->user->visits = 'Visits';
$lang->user->ip = 'Last IP';
$lang->user->last = 'Last login';
$lang->user->status = 'Status';
$lang->user->ditto = 'Ditto';
$lang->user->index = "Index";
$lang->user->view = "Info";
+1 -1
View File
@@ -630,7 +630,7 @@ class userModel extends model
}
else
{
$locked = date('Y-m-d H:i:s', mktime());
$locked = date('Y-m-d H:i:s', time());
$failTimes = 0;
}
$this->dao->update(TABLE_USER)->set('fails')->eq($failTimes)->set('locked')->eq($locked)->where('account')->eq($account)->exec();
+3
View File
@@ -60,6 +60,9 @@ $lang->webapp->targetList['popup'] = 'Popup';
$lang->webapp->targetList['iframe'] = 'Iframe';
$lang->webapp->targetList['blank'] = 'New Window';
$lang->webapp->width = 'Width';
$lang->webapp->height = 'Height';
$lang->webapp->sizeList[''] = "";
$lang->webapp->sizeList['1024x600'] = "1024 x 600";
$lang->webapp->sizeList['900x600'] = "900 x 600";
+10 -23
View File
@@ -965,9 +965,17 @@ function setModal()
}
$ajaxModal = $('#ajaxModal');
$.extend({'closeModal':function(callback)
$.extend({'closeModal':function(callback, location)
{
$ajaxModal.on('hidden.bs.modal', callback);
$ajaxModal.on('hidden.bs.modal', function()
{
if(location)
{
if(location == 'this') window.location.reload();
else window.location = location;
}
callback();
});
$ajaxModal.modal('hide');
}});
@@ -1056,25 +1064,6 @@ function condensedForm()
});
}
/**
* Update data to the target element synchronous.
*
* @access public
* @return void
*/
function setSyncTrigger()
{
$("[data-sync-target]").on('input propertychange', function()
{
var $this = $(this);
var val = $this.prop('tagName') == 'INPUT' ? $this.val() : $this.html();
var target = $($this.attr('data-sync-target'));
if(target.prop('tagName') == 'INPUT') target.val(val);
else target.html(val);
});
}
/* Ping the server every some minutes to keep the session. */
needPing = true;
@@ -1099,8 +1088,6 @@ $(document).ready(function()
toggleSearch();
toggleTreeBox();
setSyncTrigger();
hideClearDataLink();
$(window).resize(saveWindowSize); // When window resized, call it again.
+1 -2
View File
File diff suppressed because one or more lines are too long
+7 -3
View File
@@ -162,7 +162,7 @@ i[class^="icon-"].disabled,i[class*=" icon-"].disabled,i[class^="icon-"].disable
.fail, [class$="-fail"] {color:red}
/* tabs */
.nav-tabs > li > a {padding: 5px 10px; color: #333; line-height: 20px;}
.nav-tabs > li > a {padding: 5px 10px; color: #333; line-height: 20px; max-height: 32px}
.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus {color: #333; font-weight: bold; line-height: 20px}
.tab-content {border: 1px solid #ddd; border-top: 0; padding: 10px 10px}
.tab-pane > h6 {margin-top: 0; margin-bottom: 3px;}
@@ -174,6 +174,9 @@ fieldset.collapsed {border: none}
fieldset > legend {width: auto; margin: 0 0 0 -5px; font-size: 13px; font-weight: bold; border-bottom: none; padding: 0 5px}
fieldset > .form-group {margin-bottom: 0;}
/* placeholder */
.placeholder {color: #999}
/* === Views === */
/* Table form */
.table-form > tbody > tr > th {text-align:right;vertical-align:middle; border-bottom:none}
@@ -363,7 +366,7 @@ body {font-size: 13px; color:#141414;padding-bottom: 40px;}
#qrcodePopover.popover.top .arrow {left: inherit; right: 10px}
/* Feature bar. */
#featurebar {margin: -20px -20px 20px; padding: 8px 10px 7px; font-size: 14px; background: #F8FAFE; border-bottom: 1px solid #ddd; line-height: 30px; min-height: 46px;}
#featurebar {margin: -20px -20px 20px; padding: 8px 10px 7px; font-size: 14px; background: #F8FAFE; border-bottom: 1px solid #ddd; line-height: 30px; min-height: 46px; min-height: 30px\0}
#featurebar .heading {float: left; padding: 0 5px; color: #666}
#featurebar .heading:after {content: "\e6e1"; font-family: ZenIcon; font-size: 14px; color: #999; display: inline-block; margin-left: 5px;}
#featurebar .heading > i {color: #808080}
@@ -453,7 +456,8 @@ body {font-size: 13px; color:#141414;padding-bottom: 40px;}
.outer .table tbody td > a:visited, #crumbs > a:visited, .side > a:visited {color: #551A8B}
/* Querybox */
#querybox {margin: 35px -10px -7px; background-color: #fff; height: 0; transition: all 1s; border-top: 1px solid #ddd; position: relative; z-index: 199; overflow: hidden; display: none; padding: 10px}
#querybox {margin: 35px -10px -7px; background-color: #fff; height: 0; transition: all 1s; border-top: 1px solid #ddd; position: relative; z-index: 199; overflow: hidden; display: none;}
#querybox form {padding: 10px}
#querybox.show {display: block; height: auto}
#titlebar #querybox {margin: 5px -20px -10px}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long