Merge branch 'master' into 'fixbug'

# Conflicts:
#   module/weekly/model.php
This commit is contained in:
王怡栋
2022-06-24 05:35:50 +00:00
78 changed files with 332 additions and 216 deletions
+2 -2
View File
@@ -73,11 +73,11 @@ class api extends control
if($libs) $this->lang->modulePageNav = $this->generateLibsDropMenu($libs, $libID, $release);
$this->setMenu($libID, $moduleID);
if($apiID == 0) $this->lang->TRActions = '<a class="btn btn-link querybox-toggle" id="bysearchTab"><i class="icon icon-search muted"></i> ' . $this->lang->api->search . '</a>' . $this->lang->TRActions;
$this->lang->TRActions = '<a class="btn btn-link querybox-toggle" id="bysearchTab"><i class="icon icon-search muted"></i> ' . $this->lang->api->search . '</a>' . $this->lang->TRActions;
/* Build the search form. */
$queryID = $param == 'bySearch' ? (int)$queryID : 0;
$actionURL = $this->createLink('api', 'index', "libID=$libID&moduleID=$moduleID&apiID=$apiID&version=$version&release=$release&appendLib=$appendLib&queryID=myQueryID&param=bySearch");
$actionURL = $this->createLink('api', 'index', "libID=$libID&moduleID=0&apiID=0&version=0&release=0&appendLib=0&queryID=myQueryID&param=bySearch");
$this->api->buildSearchForm($lib,$queryID, $actionURL);
if($param == 'bySearch')
+2 -2
View File
@@ -90,8 +90,8 @@ $lang->block->remove = 'Entfernen';
$lang->block->refresh = 'Aktualisieren';
$lang->block->nbsp = '';
$lang->block->hidden = 'Verstecken';
$lang->block->dynamicInfo = "<span class='timeline-tag'>%s</span> <span class='timeline-text'>%s <em>%s</em> %s <a href='%s'>%s</a></span>";
$lang->block->noLinkDynamic = "<span class='timeline-tag'>%s</span> <span class='timeline-text' title='%s'>%s <em>%s</em> %s %s</span>";
$lang->block->dynamicInfo = "<span class='timeline-tag'>%s</span> <span class='timeline-text'>%s<em class='label-action'>%s</em>%s<a href='%s' title='%s'>%s</a></span>";
$lang->block->noLinkDynamic = "<span class='timeline-tag'>%s</span> <span class='timeline-text' title='%s'>%s<em class='label-action'>%s</em>%s<span class='label-name'>%s</span></span>";
$lang->block->cannotPlaceInLeft = 'Kann den Block nicht auf der linken Seite platzieren.';
$lang->block->cannotPlaceInRight = 'Kann den Block nicht auf der rechten Seite platzieren.';
+2 -2
View File
@@ -90,8 +90,8 @@ $lang->block->remove = 'Remove';
$lang->block->refresh = 'Refresh';
$lang->block->nbsp = ' ';
$lang->block->hidden = 'Hide';
$lang->block->dynamicInfo = "<span class='timeline-tag'>%s</span> <span class='timeline-text'>%s <span class='label-action'>%s</span> %s <a href='%s' title='%s'>%s</a></span>";
$lang->block->noLinkDynamic = "<span class='timeline-tag'>%s</span> <span class='timeline-text' title='%s'>%s <span class='label-action'>%s</span> %s <span class='label-name'>%s</span></span>";
$lang->block->dynamicInfo = "<span class='timeline-tag'>%s</span> <span class='timeline-text'>%s<em class='label-action'>%s</em>%s<a href='%s' title='%s'>%s</a></span>";
$lang->block->noLinkDynamic = "<span class='timeline-tag'>%s</span> <span class='timeline-text' title='%s'>%s<em class='label-action'>%s</em>%s<span class='label-name'>%s</span></span>";
$lang->block->cannotPlaceInLeft = 'Cannot place the block at left side.';
$lang->block->cannotPlaceInRight = 'Cannot place the block at right side.';
+2 -2
View File
@@ -90,8 +90,8 @@ $lang->block->remove = 'Supprimer';
$lang->block->refresh = 'Rafraichir';
$lang->block->nbsp = ' ';
$lang->block->hidden = 'Masquer';
$lang->block->dynamicInfo = "<span class='timeline-tag'>%s</span> <span class='timeline-text'>%s <em>%s</em> %s <a href='%s' title='%s'>%s</a></span>";
$lang->block->noLinkDynamic = "<span class='timeline-tag'>%s</span> <span class='timeline-text' title='%s'>%s <em>%s</em> %s %s</span>";
$lang->block->dynamicInfo = "<span class='timeline-tag'>%s</span> <span class='timeline-text'>%s<em class='label-action'>%s</em>%s<a href='%s' title='%s'>%s</a></span>";
$lang->block->noLinkDynamic = "<span class='timeline-tag'>%s</span> <span class='timeline-text' title='%s'>%s<em class='label-action'>%s</em>%s<span class='label-name'>%s</span></span>";
$lang->block->cannotPlaceInLeft = 'Impossible de placer le bloc à gauche.';
$lang->block->cannotPlaceInRight = 'Impossible de placer le bloc à droite.';
+2 -2
View File
@@ -90,8 +90,8 @@ $lang->block->remove = '移除';
$lang->block->refresh = '刷新';
$lang->block->nbsp = '';
$lang->block->hidden = '隐藏';
$lang->block->dynamicInfo = "<span class='timeline-tag'>%s</span> <span class='timeline-text'>%s <span class='label-action'>%s</span> %s <a href='%s' title='%s'>%s</a></span>";
$lang->block->noLinkDynamic = "<span class='timeline-tag'>%s</span> <span class='timeline-text' title='%s'>%s <span class='label-action'>%s</span> %s <span class='label-name'>%s</span></span>";
$lang->block->dynamicInfo = "<span class='timeline-tag'>%s</span> <span class='timeline-text'>%s<em class='label-action'>%s</em>%s<a href='%s' title='%s'>%s</a></span>";
$lang->block->noLinkDynamic = "<span class='timeline-tag'>%s</span> <span class='timeline-text' title='%s'>%s<em class='label-action'>%s</em>%s<span class='label-name'>%s</span></span>";
$lang->block->cannotPlaceInLeft = '此区块无法放置在左侧。';
$lang->block->cannotPlaceInRight = '此区块无法放置在右侧。';
+7 -3
View File
@@ -4,9 +4,13 @@
<style>
.block-dynamic .timeline > li .timeline-text {max-width: 600px; display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-height: 20px;}
.block-dynamic .panel-body {padding-top: 0;}
.block-dynamic .label-action {margin-left: 12px;}
.block-dynamic .label-action + a,
.block-dynamic .label-name {color: #838A9D;}
.timeline>li:before {left: -26px;}
.timeline>li+li:after {left: -23px;}
.timeline-text {margin-left: -18px;}
.block-dynamic .label-action {padding: 0 6px;}
.block-dynamic .label-action + a {padding-left: 6px;}
.timeline>li.active:before {left: -30px;}
.timeline>li>div:after {left: -27px;}
</style>
<div class='panel-body scrollbar-hover'>
<ul class="timeline timeline-tag-left no-margin">
+10 -3
View File
@@ -2,10 +2,17 @@
<div class='empty-tip'><?php echo $lang->block->emptyTip;?></div>
<?php else:?>
<style>
.timeline > li .timeline-text {display: block; overflow: hidden; text-overflow: ellipsis; max-height: 20px; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; }
.timeline > li .timeline-text {display: block; overflow: hidden; text-overflow: ellipsis; max-height: 20px; -webkit-line-clamp: 1; -webkit-box-orient: vertical; }
.panel-body {padding-top: 0;}
.block-projectdynamic .label-action {margin-left: 12px;}
.block-projectdynamic .label-action + a {color: #838A9D;}
.timeline>li:before {left: -26px;}
.timeline>li+li:after {left: -23px;}
.timeline-text {margin-left: -18px;}
.block-projectdynamic .label-action {padding: 0 6px;}
.block-projectdynamic .label-action + a {padding-left: 6px;}
.timeline>li.active:before {left: -30px;}
.timeline>li>div:after {left: -27px;}
.timeline .timeline-text {display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
</style>
<div class='panel-body scrollbar-hover'>
<ul class="timeline timeline-tag-left no-margin">
@@ -61,11 +61,11 @@ html[lang="en"] .product-info .type-info {color: #A6AAB8; text-align: center; po
.block-statistic .project-info .col-xs-5 {padding-left: 0;}
.block-statistic .data {width: 40%; text-align: left; padding: 10px 0px; font-size: 14px; font-weight: 700;}
.block-statistic .dataTitle {width: 60%; text-align: left; padding: 10px 0px; font-size: 14px;}
.block-statistic .dataTitle {width: 60%; text-align: right; padding: 10px 0px; font-size: 14px;}
.block-statistic .executionName {padding: 2px 10px; font-size: 14px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}
.block-statistic .lastIteration {padding-top: 6px;}
.block-statistic .progress-text-left {margin-right: 90px}
.block-statistic .progress-text-left .progress-text {padding-top: 2px; font-size: 14px; padding-right:5px; left: -50px;}
.block-statistic .progress-text-left .progress-text {padding-top: 2px; font-size: 14px; padding-right:5px; left: -45px;}
.status-count {margin: auto;}
.status-count tr:first-child td:last-child {color: #000; font-weight: bold;}
@@ -86,26 +86,6 @@ html[lang="en"] .product-info .type-info {color: #A6AAB8; text-align: center; po
.block-statistic .col-12 .waterfall-title .col {padding-right: 0px; padding-left: 0px;}
.forty-percent {width: 40%;}
.block-statistic .statistic-title{font-weight: 700; line-height: 1.1; color: inherit; font-size: 14px; margin-top: 10px; margin-bottom: 10px; width: 60%; text-align: left; padding: 0px;}
.block-statistic .statistic-title>div{width: 40%; margin-left: 64%; padding: 0px 10px; text-align: left;}
.block-statistic .dataTitle>div {width: 40%; text-align: left; font-size: 14px; padding: 0px 10px; margin-left: 64%; text-align-last: justify;}
.block-statistic.block-sm .statistic-title>div {width: 94%; margin-left: 10%;}
.block-statistic.block-sm .dataTitle>div {width: 94%; margin-left: 10%;}
[lang^='en'] .block-statistic .statistic-title>div {width: 62%; margin-left: 42%;}
[lang^='en'] .block-statistic .dataTitle>div {width: 62%; margin-left: 42%;}
[lang^='en'] .block-statistic.block-sm .statistic-title>div {width: 94%; margin-left: 10%;}
[lang^='en'] .block-statistic.block-sm .dataTitle>div {width: 94%; margin-left: 10%;}
@media screen and (max-width: 1366px){.block-statistic .statistic-title>div {width: 74%; margin-left: 30%;}}
@media screen and (max-width: 1366px){.block-statistic .dataTitle>div {width: 74%; margin-left: 30%;}}
@media screen and (max-width: 1366px){[lang^='en'] .block-statistic .statistic-title>div {width: 70%; margin-left: 34%;}}
@media screen and (max-width: 1366px){[lang^='en'] .block-statistic .dataTitle>div {width: 70%; margin-left: 34%;}}
@media screen and (max-width: 1366px){.block-statistic.block-sm .statistic-title>div {width: 102%; margin-left: 2%;}}
@media screen and (max-width: 1366px){.block-statistic.block-sm .dataTitle>div {width: 102%; margin-left: 2%;}}
</style>
<script>
<?php $blockNavId = 'nav-' . uniqid(); ?>
@@ -157,57 +137,48 @@ $(function()
<?php if($project->model == 'scrum' or $project->model == 'kanban'):?>
<div class='table-row'>
<div class="col-4 text-center">
<div><h4><?php echo $lang->block->story;?></h4></div>
<div>
<div class="col statistic-title"><div><?php echo $lang->block->story;?></div></div>
<div class="col data"></div>
<div class="col dataTitle"><?php echo $lang->project->allStories . ":";?></div>
<div class="col data"><?php echo $project->allStories;?></div>
</div>
<div>
<div class="col dataTitle"><div><?php echo $lang->project->allStories;?></div></div>
<div class="col data"><?php echo ":" . $project->allStories;?></div>
<div class="col dataTitle"><?php echo $lang->project->doneStories . ":";?></div>
<div class="col data"><?php echo $project->doneStories;?></div>
</div>
<div>
<div class="col dataTitle"><div><?php echo $lang->project->doneStories;?></div></div>
<div class="col data"><?php echo ":" . $project->doneStories;?></div>
</div>
<div>
<div class="col dataTitle"><div><?php echo $lang->project->surplus;?></div></div>
<div class="col data"><?php echo ":" . $project->leftStories;?></div>
<div class="col dataTitle"><?php echo $lang->project->surplus . ":";?></div>
<div class="col data"><?php echo $project->leftStories;?></div>
</div>
</div>
<div class="col-4 text-center">
<div><h4><?php echo $lang->block->investment;?></h4></div>
<div>
<div class="col statistic-title"><div><?php echo $lang->block->investment;?></div></div>
<div class="col data"></div>
<div class="col dataTitle"><?php echo $lang->block->totalPeople . ":";?></div>
<div class="col data"><?php echo $project->teamCount;?></div>
</div>
<div>
<div class="col dataTitle"><div><?php echo $lang->block->totalPeople;?></div></div>
<div class="col data"><?php echo ":" . $project->teamCount;?></div>
<div class="col dataTitle"><?php echo $lang->block->estimate . ":";?></div>
<div class="col data"><?php echo $project->estimate;?></div>
</div>
<div>
<div class="col dataTitle"><div><?php echo $lang->block->estimate;?></div></div>
<div class="col data"><?php echo ":" . $project->estimate;?></div>
</div>
<div>
<div class="col dataTitle"><div><?php echo $lang->block->consumedHours;?></div></div>
<div class="col data"><?php echo ":" . $project->consumed;?></div>
<div class="col dataTitle"><?php echo $lang->block->consumedHours . ":";?></div>
<div class="col data"><?php echo $project->consumed;?></div>
</div>
</div>
<div class="col-4 text-center">
<div><h4><?php echo $lang->bug->common;?></h4></div>
<div>
<div class="col statistic-title"><div><?php echo $lang->block->common;?></div></div>
<div class="col data"></div>
<div class="col dataTitle"><?php echo $lang->block->totalBug . ":";?></div>
<div class="col data"><?php echo $project->allBugs;?></div>
</div>
<div>
<div class="col dataTitle"><div><?php echo $lang->block->totalBug;?></div></div>
<div class="col data"><?php echo ":" . $project->allBugs;?></div>
<div class="col dataTitle"><?php echo $lang->bug->statusList['resolved'] . ":";?></div>
<div class="col data"><?php echo $project->doneBugs;?></div>
</div>
<div>
<div class="col dataTitle"><div><?php echo $lang->bug->statusList['resolved'];?></div></div>
<div class="col data"><?php echo ":" . $project->doneBugs;?></div>
</div>
<div>
<div class="col dataTitle"><div><?php echo $lang->bug->unResolved;?></div></div>
<div class="col data"><?php echo ":" . $project->leftBugs;?></div>
<div class="col dataTitle"><?php echo $lang->bug->unResolved . ":";?></div>
<div class="col data"><?php echo $project->leftBugs;?></div>
</div>
</div>
</div>
+1 -1
View File
@@ -22,7 +22,7 @@ if(!$selfCall) die(include('./todolist.html.php'));
.block-todoes .todoes > li {position: relative; padding: 5px 10px 5px 35px; list-style: none; white-space:nowrap; overflow: auto; overflow-x:hidden;}
.block-todoes .todoes > li:hover {background-color: #e9f2fb;}
.block-todoes .todo-title {padding: 0px;}
.titleBox {max-width: 700px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: block;}
.titleBox {max-width: 730px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: block;}
.block-todoes .todo-pri {margin: 0 5px;}
.block-todoes .todo-time {display: inline-block; padding: 0 5px; font-size: 12px; color: #8e939a; width: 95px; min-width: 95px;}
.block-todoes .todo-check {position: absolute; top: 5px; left: 10px; display: block; width: 20px; height: 20px; font-size: 20px; color: transparent; cursor: pointer; background: #fff; border: 2px solid #eee; border-radius: 50%;}
+7 -7
View File
@@ -12,20 +12,20 @@
?>
<style>
.block-welcome .col-left {width: 25%;}
.block-welcome .col-left > h4 {margin: 5px 0;line-height: 30px;}
.block-welcome .col-left .timeline {margin: 10px 0 0;font-size: 12px;}
.block-welcome .col-right > h4 small {display: inline-block;margin-right: 8px;font-size: 14px;}
.block-welcome .col-left > h4 {margin: 5px 0; line-height: 30px;}
.block-welcome .col-left .timeline {margin: 10px 0 0; font-size: 12px;}
.block-welcome .col-right > h4 small {display: inline-block;margin-right: 8px; font-size: 14px;}
.block-welcome .col-right .tiles {padding: 10px 0 0 16px;}
.block-welcome .col-right .tile {width: 33%;}
.block-welcome .panel-body {padding-top: 15px;}
.block-welcome .user-notification-icon {position: relative;display: inline-block;margin-left: 5px;}
.block-welcome .user-notification-icon .label-badge {position: absolute;top: 1px;right: -8px;min-width: 16px;padding: 2px;font-size: 12px;font-weight: normal;}
.block-welcome .user-notification-icon {position: relative; display: inline-block; margin-left: 5px;}
.block-welcome .user-notification-icon .label-badge {position: absolute;top: 1px; right: -8px; min-width: 16px; padding: 2px; font-size: 12px; font-weight: normal;}
.block-welcome.block-sm .col-right {padding: 0;}
.block-welcome.block-sm .col-right .tiles {border-left: none; padding-left: 0}
.block-welcome.block-sm .tile-title {font-size: 12px; margin: 0 -10px;}
.block-welcome .progress-group{margin-top: 42px;}
.block-welcome .progress-group{margin-top: 25px;}
.block-welcome .progress{margin-top: 10px; width: 85%;}
.block-welcome .user-welcome{margin-top: 28px !important;}
.block-welcome .user-welcome{margin-top: 10px !important;}
.block-welcome .col-right{border-left: 1px solid #e5e8ec;}
.block-welcome.block-sm .col-right {border: none;}
.block-welcome .left-today{margin-left: 36px;}
+1
View File
@@ -690,6 +690,7 @@ class bugModel extends model
->setDefault('deadline', '0000-00-00')
->setDefault('resolvedDate', '0000-00-00 00:00:00')
->setDefault('lastEditedBy', $this->app->user->account)
->setDefault('mailto', '')
->add('lastEditedDate', $now)
->setIF(strpos($this->config->bug->edit->requiredFields, 'deadline') !== false, 'deadline', $this->post->deadline)
->join('openedBuild', ',')
+9 -9
View File
@@ -1,5 +1,5 @@
<?php if($extView = $this->getExtViewFile(__FILE__)){include $extView; return helper::cd();}?>
<?php
<?php
if($extView = $this->getExtViewFile(__FILE__)){include $extView; return helper::cd();}
$clientLang = $app->getClientLang();
$webRoot = $this->app->getWebRoot();
$jsRoot = $webRoot . "js/";
@@ -81,13 +81,13 @@ $xuanExtFile = $extensionRoot . 'xuan/common/ext/view/header.xuanxuan.html.hook.
if(file_exists($xuanExtFile)) include $xuanExtFile;
?>
</head>
<?php $singleClass = $this->app->getViewType() == 'xhtml' ? 'allow-self-open' : '';?>
<?php if(isset($pageBodyClass)) $singleClass = $singleClass . ' ' . $pageBodyClass; ?>
<?php if($this->moduleName == 'index' && $this->methodName == 'index'): ?>
<body class='menu-<?php echo $this->cookie->hideMenu ? 'hide' : 'show'; ?> <?php echo $singleClass;?>'>
<?php else: ?>
<body class='<?php echo $singleClass;?>'>
<?php endif; ?>
<?php
$bodyClass = $this->app->getViewType() == 'xhtml' ? 'allow-self-open' : '';
if(isset($pageBodyClass)) $bodyClass = $bodyClass . ' ' . $pageBodyClass;
if($this->moduleName == 'index' && $this->methodName == 'index') $bodyClass .= ' menu-' . ($this->cookie->hideMenu ? 'hide' : 'show');
if(strpos($_SERVER['HTTP_USER_AGENT'], 'xuanxuan') !== false) $bodyClass .= ' xxc-embed';
?>
<body class='<?php echo $bodyClass; ?>'>
<?php if($this->app->getViewType() == 'xhtml'):?>
<style>
.main-actions-holder {display: none !important;}
+8 -3
View File
@@ -22,6 +22,11 @@
.c-user, .c-order {width: 96px !important; overflow: unset;}
.c-date {width: 200px;}
.dynamic .label-action {margin-left: 12px;}
.dynamic .label-name,
.dynamic .label-name a {color: #838A9D;}
.timeline>li:before {left: -26px;}
.timeline>li+li:after {left: -23px;}
.timeline-text {margin-left: -18px;}
.label-action {padding: 0 4px;}
.label-id {margin-left: 4px;}
.timeline>li.active:before {left: -30px;}
.timeline>li>div:after {left: -27px;}
.timeline .timeline-text {display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
+1 -1
View File
@@ -70,7 +70,7 @@
<span class="timeline-tag"><?php echo $action->time?></span>
<span class="timeline-text">
<?php echo zget($accountPairs, $action->actor);?>
<span class='label-action'><?php echo ' ' . $action->actionLabel;?></span>
<span class='label-action'><?php echo $action->actionLabel;?></span>
<?php if($action->action != 'login' and $action->action != 'logout'):?>
<span class="text"><?php echo $action->objectLabel;?></span>
<?php if($action->objectID):?>
+7 -5
View File
@@ -139,6 +139,10 @@ class custom extends control
elseif($module == 'story' and $field == 'review')
{
$data = fixer::input('post')
->setDefault('forceReview', '')
->setDefault('forceNotReview', '')
->setDefault('forceReviewRoles', '')
->setDefault('forceNotReviewRoles', '')
->setDefault('forceReviewDepts', '')
->setDefault('forceNotReviewDepts', '')
->join('forceReview', ',')
@@ -160,16 +164,14 @@ class custom extends control
}
elseif($module == 'story' and $field == 'reviewRules')
{
$data = fixer::input('post')->join('superReviewers', ',')->get();
$data = fixer::input('post')->setDefault('superReviewers', '')->join('superReviewers', ',')->get();
$this->loadModel('setting')->setItems("system.$module@{$this->config->vision}", $data);
}
elseif($module == 'testcase' and $field == 'review')
{
$review = fixer::input('post')->get();
if($review->needReview) $data = fixer::input('post')->join('forceNotReview', ',')->remove('forceReview')->get();
if(!$review->needReview) $data = fixer::input('post')->join('forceReview', ',')->remove('forceNotReview')->get();
if(!isset($data->forceReview)) $data->forceReview = '';
if(!isset($data->forceNotReview)) $data->forceNotReview = '';
if($review->needReview) $data = fixer::input('post')->setDefault('forceNotReview', '')->join('forceNotReview', ',')->remove('forceReview')->get();
if(!$review->needReview) $data = fixer::input('post')->setDefault('forceReview', '')->join('forceReview', ',')->remove('forceNotReview')->get();
$this->loadModel('setting')->setItems("system.$module", $data);
$reviewCase = isset($review->reviewCase) ? $review->reviewCase : 0;
+15 -9
View File
@@ -482,7 +482,6 @@ class doc extends control
$this->view->doc = $doc;
$this->view->moduleOptionMenu = $this->tree->getOptionMenu($libID, 'doc', $startModuleID = 0);
$this->view->type = $type;
$this->view->lib = $lib;
$this->view->libs = $this->doc->getLibs('all', $extra = 'withObject|noBook', $libID, $objectID);
$this->view->groups = $this->loadModel('group')->getPairs();
$this->view->users = $this->user->getPairs('noletter|noclosed|nodeleted', $doc->users);
@@ -845,6 +844,7 @@ class doc extends control
$users = $this->user->getPairs('noletter|noempty|noclosed');
$selectedUser = $docID ? $doc->users : $doclib->users;
$selectedGroup = $docID ? $doc->groups : $doclib->groups;
$dropDirection = "data-drop-direction='top'";
if($control == 'group')
{
@@ -855,10 +855,10 @@ class doc extends control
{
if(strpos($doclib->groups, (string)$groupID) === false) unset($groups[$groupID]);
}
return print(html::select('groups[]', $groups, $selectedGroup, "class='form-control chosen' multiple"));
return print(html::select('groups[]', $groups, $selectedGroup, "class='form-control picker-select' multiple $dropDirection"));
}
if($doclib->acl == 'open') return print(html::select('groups[]', $groups, $selectedGroup, "class='form-control chosen' multiple"));
if($doclib->acl == 'default') return print(html::select('groups[]', $groups, $selectedGroup, "class='form-control chosen' multiple"));
if($doclib->acl == 'open') return print(html::select('groups[]', $groups, $selectedGroup, "class='form-control picker-select' multiple $dropDirection"));
if($doclib->acl == 'default') return print(html::select('groups[]', $groups, $selectedGroup, "class='form-control picker-select' multiple $dropDirection"));
if($doclib->acl == 'private') echo 'private';
return false;
}
@@ -872,10 +872,10 @@ class doc extends control
if($doclib->acl == 'custom')
{
return print(html::select('users[]', $users, $selectedUser, "multiple class='form-control'"));
return print(html::select('users[]', $users, $selectedUser, "multiple class='form-control picker-select' $dropDirection"));
}
if($doclib->acl == 'open') return print(html::select('users[]', $users, $selectedUser, "multiple class='form-control'"));
if($doclib->acl == 'default') return print(html::select('users[]', $users, $selectedUser, "multiple class='form-control'"));
if($doclib->acl == 'open') return print(html::select('users[]', $users, $selectedUser, "multiple class='form-control picker-select' $dropDirection"));
if($doclib->acl == 'default') return print(html::select('users[]', $users, $selectedUser, "multiple class='form-control picker-select' $dropDirection"));
if($doclib->acl == 'private') echo 'private';
return false;
}
@@ -904,10 +904,12 @@ class doc extends control
* @param int $recTotal
* @param int $recPerPage
* @param int $pageID
* @param string $searchTitle
*
* @access public
* @return void
*/
public function showFiles($type, $objectID, $viewType = '', $orderBy = 't1.id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
public function showFiles($type, $objectID, $viewType = '', $orderBy = 't1.id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1, $searchTitle = '')
{
if(empty($viewType)) $viewType = !empty($_COOKIE['docFilesViewType']) ? $this->cookie->docFilesViewType : 'card';
setcookie('docFilesViewType', $viewType, $this->config->cookieLife, $this->config->webRoot, '', false, true);
@@ -923,8 +925,12 @@ class doc extends control
$table = $this->config->objectTables[$type];
$object = $this->dao->select('id,name,status')->from($table)->where('id')->eq($objectID)->fetch();
if(!empty($_POST)) $searchTitle = $this->post->title;
if(empty($_POST) and !empty($searchTitle)) $this->post->title = $searchTitle;
$this->lang->TRActions = $this->doc->buildCollectButton4Doc();
$this->lang->TRActions .= $this->doc->buildBrowseSwitch($type, $objectID, $viewType);
$this->lang->TRActions .= $this->doc->buildBrowseSwitch($type, $objectID, $viewType, $orderBy, $recTotal, $recPerPage, $pageID, $searchTitle);
if($this->app->tab == 'doc') $this->app->rawMethod = $type;
/* Load pager. */
$this->app->loadClass('pager', $static = true);
+2 -9
View File
@@ -119,7 +119,7 @@ function loadWhitelist(libID)
{
$('#groups').replaceWith(groups);
$('#groups_chosen').remove();
$('#groups').chosen();
$('#groups').picker();
}
});
@@ -140,14 +140,7 @@ function loadWhitelist(libID)
$('#users').replaceWith(users);
$('#users_chosen').remove();
$('#whiteListBox .picker').remove();
if($('#users option').length < maxCount)
{
$('#users').chosen();
}
else
{
$('#users').picker();
}
$('#users').picker();
}
});
}
+2 -9
View File
@@ -143,7 +143,7 @@ function loadWhitelist(libID)
{
$('#groups').replaceWith(groups);
$('#groups_chosen').remove();
$('#groups').chosen();
$('#groups').picker();
}
});
@@ -164,14 +164,7 @@ function loadWhitelist(libID)
$('#users').replaceWith(users);
$('#users_chosen').remove();
$('#whiteListBox .picker').remove();
if($('#users option').length < maxCount)
{
$('#users').chosen();
}
else
{
$('#users').picker();
}
$('#users').picker();
}
});
}
+13 -6
View File
@@ -808,6 +808,7 @@ class docModel extends model
->setDefault('groups', '')
->setDefault('product', 0)
->setDefault('execution', 0)
->setDefault('mailto', '')
->add('editedBy', $this->app->user->account)
->add('editedDate', $now)
->cleanInt('module')
@@ -2214,17 +2215,23 @@ class docModel extends model
/**
* Build browse switch button.
*
* @param int $type
* @param int $objectID
* @param int $viewType
* @param int $type
* @param int $objectID
* @param int $viewType
* @param string $orderBy
* @param int $recTotal
* @param int $recPerPage
* @param int $pageID
* @param string $searchTitle
*
* @access public
* @return void
*/
public function buildBrowseSwitch($type, $objectID, $viewType)
public function buildBrowseSwitch($type, $objectID, $viewType, $orderBy = 't1.id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1, $searchTitle = '')
{
$html = "<div class='btn-group'>";
$html .= html::a(inlink('showFiles', "type=$type&objectID=$objectID&viewType=card"), "<i class='icon icon-cards-view'></i>", '', "title={$this->lang->doc->browseTypeList['grid']} class='btn btn-icon" . ($viewType != 'list' ? ' text-primary' : '') . "' data-app='{$this->app->tab}'");
$html .= html::a(inlink('showFiles', "type=$type&objectID=$objectID&viewType=list"), "<i class='icon icon-bars'></i>", '', "title={$this->lang->doc->browseTypeList['list']} class='btn btn-icon" . ($viewType == 'list' ? ' text-primary' : '') . "' data-app='{$this->app->tab}'");
$html .= html::a(inlink('showFiles', "type=$type&objectID=$objectID&viewType=card&orderBy=$orderBy&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID&searchTitle=$searchTitle"), "<i class='icon icon-cards-view'></i>", '', "title={$this->lang->doc->browseTypeList['grid']} class='btn btn-icon" . ($viewType != 'list' ? ' text-primary' : '') . "' data-app='{$this->app->tab}'");
$html .= html::a(inlink('showFiles', "type=$type&objectID=$objectID&viewType=list&orderBy=$orderBy&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID&searchTitle=$searchTitle"), "<i class='icon icon-bars'></i>", '', "title={$this->lang->doc->browseTypeList['list']} class='btn btn-icon" . ($viewType == 'list' ? ' text-primary' : '') . "' data-app='{$this->app->tab}'");
$html .= "</div>";
return $html;
+3 -3
View File
@@ -99,7 +99,7 @@ $("a[href^='###']").click(function()
<td colspan="2">
<div class="input-group">
<?php
echo html::select('mailto[]', $users, '', "multiple class='form-control picker-select' data-dropDirection='top'");
echo html::select('mailto[]', $users, '', "multiple class='form-control picker-select' data-drop-direction='top'");
echo $this->fetch('my', 'buildContactLists');
?>
</div>
@@ -118,11 +118,11 @@ $("a[href^='###']").click(function()
<td colspan='2'>
<div class='input-group'>
<span class='input-group-addon groups-addon'><?php echo $lang->doclib->group?></span>
<?php echo html::select('groups[]', $groups, '', "class='form-control picker-select' multiple data-dropDirection='top'")?>
<?php echo html::select('groups[]', $groups, '', "class='form-control picker-select' multiple data-drop-direction='top'")?>
</div>
<div class='input-group'>
<span class='input-group-addon'><?php echo $lang->doclib->user?></span>
<?php echo html::select('users[]', $users, '', "class='form-control picker-select' multiple data-dropDirection='top'")?>
<?php echo html::select('users[]', $users, '', "class='form-control picker-select' multiple data-drop-direction='top'")?>
</div>
</td>
</tr>
+5 -6
View File
@@ -74,7 +74,7 @@
<td colspan="2">
<div class="input-group">
<?php
echo html::select('mailto[]', $users, $doc->mailto, "multiple class='form-control picker-select'");
echo html::select('mailto[]', $users, $doc->mailto, "multiple class='form-control picker-select' data-drop-direction='top'");
echo $this->fetch('my', 'buildContactLists');
?>
</div>
@@ -83,9 +83,8 @@
<tr>
<th><?php echo $lang->doclib->control;?></th>
<td colspan='2'>
<?php $acl = $lib->acl == 'default' ? 'open' : $lib->acl;?>
<?php echo html::radio('acl', $lang->doc->aclList, $acl, "onchange='toggleAcl(this.value, \"doc\")'")?>
<span class='text-info' id='noticeAcl'><?php echo $lang->doc->noticeAcl['doc'][$acl];?></span>
<?php echo html::radio('acl', $lang->doc->aclList, $doc->acl, "onchange='toggleAcl(this.value, \"doc\")'")?>
<span class='text-info' id='noticeAcl'><?php echo $lang->doc->noticeAcl['doc'][$doc->acl];?></span>
</td>
</tr>
<tr id='whiteListBox' class='hidden'>
@@ -93,11 +92,11 @@
<td colspan='2'>
<div class='input-group w-p100'>
<span class='input-group-addon groups-addon'><?php echo $lang->doclib->group?></span>
<?php echo html::select('groups[]', $groups, $doc->groups, "class='form-control picker-select' multiple")?>
<?php echo html::select('groups[]', $groups, $doc->groups, "class='form-control picker-select' multiple data-drop-direction='top'")?>
</div>
<div class='input-group w-p100'>
<span class='input-group-addon'><?php echo $lang->doclib->user?></span>
<?php echo html::select('users[]', $users, $doc->users, "class='form-control picker-select' multiple")?>
<?php echo html::select('users[]', $users, $doc->users, "class='form-control picker-select' multiple data-drop-direction='top'")?>
</div>
</td>
</tr>
+8 -2
View File
@@ -20,5 +20,11 @@
.dynamic.collapsed .timeline > li + li {display: none;}
.dynamic.collapsed .dynamic-btn > .icon:before {content: '\f0d8';}
.dynamic .label-action {margin-left: 12px;}
.dynamic .label-id + a {color: #838A9D;}
.timeline>li:before {left: -26px;}
.timeline>li+li:after {left: -23px;}
.timeline-text {margin-left: -18px;}
.label-action {padding: 0 4px;}
.label-id {margin-left: 4px;}
.timeline>li.active:before {left: -30px;}
.timeline>li>div:after {left: -27px;}
.timeline .timeline-text {display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
+4
View File
@@ -57,8 +57,12 @@ details .btn-comment.pull-right {right: 30px;}
#itemContent .label-task, #taskTree .item-task > a > .label-type {border-color: #7d8599; color: #7d8599;}
.taskID {border-color: rgba(131, 138, 157, 0.25);}
.storyID {border-color: rgba(131, 138, 157, 0.25);}
.title {color: #838A9D;}
.btn-toolbar .btn-icon {min-width: 56px;}
.status-doing {border-color: rgba(255, 93, 93, 0.25)!important;}
.status-pause {border-color: rgba(255, 152, 0, 0.25)!important;}
.status-done {border-color: rgba(67, 160, 71, 0.25)!important;}
.status-changed {border-color: rgba(255, 93, 93, 0.25)!important;}
.status-draft {border-color: rgba(165, 102, 184, 0.25)!important;}
.label-id {line-height: 18px !important;}
+8 -2
View File
@@ -11,5 +11,11 @@
.block-dynamic .panel-body {height: 230px; overflow: auto; position: relative;}
.block-team div.col-xs-6 {white-space: nowrap; overflow: hidden;}
.block-dynamic .label-action {margin-left: 12px;}
.block-dynamic .label-action + a {color: #838A9D;}
.timeline>li:before {left: -26px;}
.timeline>li+li:after {left: -23px;}
.timeline-text {margin-left: -18px;}
.block-dynamic .label-action {padding: 0 6px;}
.block-dynamic .label-action + a {padding-left: 6px;}
.timeline>li.active:before {left: -30px;}
.timeline>li>div:after {left: -27px;}
.timeline .timeline-text {display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
+1 -1
View File
@@ -1274,7 +1274,7 @@ function handleSortCards(event)
orders.splice(orders.indexOf(fromID), 1);
orders.splice(orders.indexOf(toID) + (event.insert === 'before' ? 0 : 1), 0, fromID);
var url = createLink('kanban', 'sortCard', 'kanbanID=' + executionID + '&laneID=' + newLaneID + '&columnID=' + newColID + '&cards=' + orders.join(','));
var url = createLink('kanban', 'sortCard', 'kanbanID=' + executionID + '&laneID=' + newLaneID + '&columnID=' + newColID + '&cards=' + orders.join(',') + '&cardID=' + toID);
$.getJSON(url, function(response)
{
if(response.result === 'fail')
+1 -1
View File
@@ -1109,7 +1109,7 @@ function handleSortCards(event)
orders.splice(orders.indexOf(fromID), 1);
orders.splice(orders.indexOf(toID) + (event.insert === 'before' ? 0 : 1), 0, fromID);
var url = createLink('kanban', 'sortCard', 'kanbanID=' + executionID + '&laneID=' + newLaneID + '&columnID=' + newColID + '&cards=' + orders.join(','));
var url = createLink('kanban', 'sortCard', 'kanbanID=' + executionID + '&laneID=' + newLaneID + '&columnID=' + newColID + '&cards=' + orders.join(',') + '&cardID=' + toID);
$.getJSON(url, function(response)
{
if(response.result === 'fail')
+1 -1
View File
@@ -84,7 +84,7 @@
<span class="timeline-tag"><?php echo $action->time?></span>
<span class="timeline-text">
<?php echo zget($accountPairs, $action->actor);?>
<span class='label-action'><?php echo ' ' . $action->actionLabel;?></span>
<span class='label-action'><?php echo $action->actionLabel;?></span>
<span class="text"><?php echo $action->objectLabel;?></span>
<span class="label label-id"><?php echo $action->objectID;?></span>
<?php if($action->objectName) echo html::a($action->objectLink, $action->objectName);?>
+1 -1
View File
@@ -65,7 +65,7 @@
<td title="<?php echo $task->left . ' ' . $lang->execution->workHour;?>"><?php echo $task->left . ' ' . $lang->execution->workHourUnit;?></td>
<td class=<?php if(isset($task->delay)) echo 'delayed';?>><?php if(substr($task->deadline, 0, 4) > 0) echo $task->deadline;?></td>
<td><span class='status-task status-<?php echo $task->status;?>'><?php echo $this->processStatus('task', $task);?></span></td>
<td class='text-left text-ellipsis' title="<?php echo $task->storyTitle;?>">
<td class='text-left text-ellipsis' title="<?php echo $task->storyTitle;?>">
<?php
if($task->storyID)
{
@@ -14,6 +14,7 @@
#showAverage {margin: 0;}
.chosen-container-single .chosen-single div b {top: 8px !important;}
.chosen-container .chosen-drop {bottom: auto !important;}
.pull-left {margin: 24px 0px;}
</style>
<?php include '../../common/view/header.html.php';?>
<?php js::set('executionID', $executionID);?>
+5 -4
View File
@@ -1,11 +1,12 @@
<?php if(isset($pageCSS)) css::internal($pageCSS);?>
<div class="detail">
<h2 class="detail-title"><span class="label-id"><?php echo $story->id?></span> <span class="label label-story"><?php echo $lang->story->common?></span> <span class="title"><?php echo $story->title;?></span></h2>
<h2 class="detail-title"><span class="label-id storyID"><?php echo $story->id?></span> <span class="label status-story status-<?php echo $story->status?>"><?php echo $this->processStatus('story', $story);?></span> <span class="title"><?php echo $story->title;?></span></h2>
<div class="detail-content article-content">
<div class="infos">
<span class="status-story status-draft"><span class="label label-dot"></span> <?php echo $this->processStatus('story', $story);?></span>
<span><?php echo $lang->story->stage;?> <?php echo $lang->story->stageList[$story->stage];?></span>
<span><?php echo $lang->story->estimate;?> <?php echo $story->estimate;?></span>
<span><span class="title"><?php echo $lang->story->stage;?></span> <span><?php echo $lang->story->stageList[$story->stage];?></span></span>
</div>
<div class="infos">
<span><span class="title"><?php echo $lang->story->estimate;?></span> <span><?php echo $story->estimate;?></span></span>
</div>
<div class="btn-toolbar">
<?php
+1 -1
View File
@@ -53,7 +53,7 @@
<ul class="timeline timeline-tag-left no-margin">
<?php foreach($dynamics as $action):?>
<li <?php if($action->major) echo "class='active'";?>>
<div class='text-ellipsis'>
<div>
<span class="timeline-tag"><?php echo $action->date;?></span>
<span class="timeline-text"><?php echo zget($users, $action->actor) . ' ' . "<span class='label-action'>{$action->actionLabel}</span>" . $action->objectLabel . ' ' . html::a($action->objectLink, $action->objectName, '', "title='$action->objectName'");?></span>
</div>
-1
View File
@@ -1 +0,0 @@
td .addon-align {padding: 0px 18px;}
@@ -0,0 +1,3 @@
.addon-program{padding: 0px 16px;}
.addon-project{padding: 0px 20px;}
.addon-product{padding: 0px 18px;}
@@ -0,0 +1 @@
.addon-project, .addon-product, .addon-execution{padding: 0px 18px;}
+11 -2
View File
@@ -42,14 +42,23 @@ function addItem(obj)
$newRow.removeClass('highlight');
}, 1600);
})
if($("table tr").size() > 6)
{
$('.btn-delete').removeClass('hidden');
}
}
function deleteItem(obj)
{
if($("table tr").size() < 7) return false;
var currentClass = $(obj).closest('tr').attr('class');
$(obj).closest('table').find('tr.' + currentClass).remove();
if($("table tr").size() <= 6)
{
$('.btn-delete').addClass('hidden');
return false;
}
}
function resetProgramName(obj)
+23 -21
View File
@@ -28,7 +28,7 @@
<th class='text-center w-300px'><?php echo $lang->group->inside;?></th>
<th class='text-center'><?php echo $lang->group->object;?></th>
<th class='w-70px'><?php echo $lang->group->allCheck . " <span data-toggle='tooltip' class='text-help' title='{$lang->group->allTips}' ><i class='icon-help'></i></sapn>";?></th>
<th class='w-100px'></th>
<th class='w-100px text-center'><?php echo $lang->actions;?></th>
</tr>
<?php if($config->systemMode == 'new'):?>
<?php if($projectAdmins):?>
@@ -40,23 +40,24 @@
<td>
<div class='input-group'>
<?php $disabled = $group->programs == 'all' ? "disabled='disabled'" : '';?>
<span class='input-group-addon'> <?php echo $lang->group->manageProgram;?></span>
<span class='input-group-addon addon-program'> <?php echo $lang->group->manageProgram;?></span>
<?php echo html::select("program[$group->group][]", $programs, $group->programs == 'all' ? '' : $group->programs, "class='form-control picker-select' multiple $disabled");?>
</div>
</td>
<td>
<?php echo html::checkbox("programAll[$group->group]", array(1 => ''), $group->programs == 'all' ? 1 : '', "onchange=toggleDisabled(this);");?>
</td>
<td rowspan='4'>
<td rowspan='4' class='text-center'>
<button type="button" class="btn btn-link btn-icon btn-add" onclick="addItem(this)"><i class="icon icon-plus"></i></button>
<button type="button" class="btn btn-link btn-icon btn-delete" onclick="deleteItem(this)"><i class="icon icon-close"></i></button>
<?php $hidden = count($projectAdmins) == 1 ? 'hidden' : ''?>
<button type="button" class="btn btn-link btn-icon btn-delete <?php echo $hidden;?>" onclick="deleteItem(this)"><i class="icon icon-close"></i></button>
</td>
</tr>
<tr class="line<?php echo $group->group;?>">
<td>
<div class='input-group'>
<?php $disabled = $group->projects == 'all' ? "disabled='disabled'" : '';?>
<span class='input-group-addon addon-align'> <?php echo $lang->group->manageProject;?></span>
<span class='input-group-addon addon-project'> <?php echo $lang->group->manageProject;?></span>
<?php echo html::select("project[$group->group][]", $projects, $group->projects == 'all' ? '' : $group->projects, "class='form-control picker-select' multiple $disabled");?>
</div>
</td>
@@ -68,7 +69,7 @@
<td>
<div class='input-group'>
<?php $disabled = $group->products == 'all' ? "disabled='disabled'" : '';?>
<span class='input-group-addon addon-align'> <?php echo $lang->group->manageProduct;?></span>
<span class='input-group-addon addon-product'> <?php echo $lang->group->manageProduct;?></span>
<?php echo html::select("product[$group->group][]", $products, $group->products == 'all' ? '' : $group->products, "class='form-control picker-select' multiple $disabled");?>
</div>
</td>
@@ -80,7 +81,7 @@
<td>
<div class='input-group'>
<?php $disabled = $group->executions == 'all' ? "disabled='disabled'" : '';?>
<span class='input-group-addon addon-align'> <?php echo $lang->group->manageExecution;?></span>
<span class='input-group-addon addon-execution'> <?php echo $lang->group->manageExecution;?></span>
<?php echo html::select("execution[$group->group][]", $executions, $group->executions == 'all' ? '' : $group->executions, "class='form-control picker-select' multiple $disabled");?>
</div>
</td>
@@ -96,22 +97,22 @@
</td>
<td>
<div class='input-group'>
<span class='input-group-addon'> <?php echo $lang->group->manageProgram;?></span>
<span class='input-group-addon addon-program'> <?php echo $lang->group->manageProgram;?></span>
<?php echo html::select('program[1][]', $programs, '', "class='form-control picker-select' multiple");?>
</div>
</td>
<td>
<?php echo html::checkbox('programAll[1]', array(1 => ''), '', "onchange=toggleDisabled(this);");?>
</td>
<td rowspan='4'>
<td rowspan='4' class='text-center'>
<button type="button" class="btn btn-link btn-icon btn-add" onclick="addItem(this)"><i class="icon icon-plus"></i></button>
<button type="button" class="btn btn-link btn-icon btn-delete" onclick="deleteItem(this)"><i class="icon icon-close"></i></button>
<button type="button" class="btn btn-link btn-icon btn-delete hidden" onclick="deleteItem(this)"><i class="icon icon-close"></i></button>
</td>
</tr>
<tr class='line1'>
<td>
<div class='input-group'>
<span class='input-group-addon addon-align'> <?php echo $lang->group->manageProject;?></span>
<span class='input-group-addon addon-project'> <?php echo $lang->group->manageProject;?></span>
<?php echo html::select('project[1][]', $projects, '', "class='form-control picker-select' multiple");?>
</div>
</td>
@@ -122,7 +123,7 @@
<tr class='line1'>
<td>
<div class='input-group'>
<span class='input-group-addon addon-align'> <?php echo $lang->group->manageProduct;?></span>
<span class='input-group-addon addon-product'> <?php echo $lang->group->manageProduct;?></span>
<?php echo html::select('product[1][]', $products, '', "class='form-control picker-select' multiple");?>
</div>
</td>
@@ -133,7 +134,7 @@
<tr class='line1'>
<td>
<div class='input-group'>
<span class='input-group-addon addon-align'> <?php echo $lang->group->manageExecution;?></span>
<span class='input-group-addon addon-execution'> <?php echo $lang->group->manageExecution;?></span>
<?php echo html::select('execution[1][]', $executions, '', "class='form-control picker-select' multiple");?>
</div>
</td>
@@ -152,23 +153,24 @@
<td>
<div class='input-group'>
<?php $disabled = $group->products == 'all' ? "disabled='disabled'" : '';?>
<span class='input-group-addon addon-align'> <?php echo $lang->group->manageProduct;?></span>
<span class='input-group-addon addon-product'> <?php echo $lang->group->manageProduct;?></span>
<?php echo html::select("product[$group->group][]", $products, $group->products == 'all' ? '' : $group->products, "class='form-control picker-select' multiple $disabled");?>
</div>
</td>
<td>
<?php echo html::checkbox("productAll[$group->group]", array(1 => ''), $group->products == 'all' ? 1 : '', "onchange=toggleDisabled(this);");?>
</td>
<td rowspan='2'>
<td rowspan='2' class='text-center'>
<button type="button" class="btn btn-link btn-icon btn-add" onclick="addItem(this)"><i class="icon icon-plus"></i></button>
<button type="button" class="btn btn-link btn-icon btn-delete" onclick="deleteItem(this)"><i class="icon icon-close"></i></button>
<?php $hidden = count($projectAdmins) == 1 ? 'hidden' : '';?>
<button type="button" class="btn btn-link btn-icon btn-delete <?php echo $hidden;?>" onclick="deleteItem(this)"><i class="icon icon-close"></i></button>
</td>
</tr>
<tr class="line<?php echo $group->group;?>">
<td>
<div class='input-group'>
<?php $disabled = $group->executions == 'all' ? "disabled='disabled'" : '';?>
<span class='input-group-addon addon-align'> <?php echo $lang->group->manageExecution;?></span>
<span class='input-group-addon addon-execution'> <?php echo $lang->group->manageExecution;?></span>
<?php echo html::select("execution[$group->group][]", $executions, $group->executions == 'all' ? '' : $group->executions, "class='form-control picker-select' multiple $disabled");?>
</div>
</td>
@@ -184,22 +186,22 @@
</td>
<td>
<div class='input-group'>
<span class='input-group-addon addon-align'> <?php echo $lang->group->manageProduct;?></span>
<span class='input-group-addon addon-product'> <?php echo $lang->group->manageProduct;?></span>
<?php echo html::select('product[1][]', $products, '', "class='form-control picker-select' multiple");?>
</div>
</td>
<td>
<?php echo html::checkbox('productAll[1]', array(1 => ''), '', "onchange=toggleDisabled(this);");?>
</td>
<td rowspan='2'>
<td rowspan='2' class='text-center'>
<button type="button" class="btn btn-link btn-icon btn-add" onclick="addItem(this)"><i class="icon icon-plus"></i></button>
<button type="button" class="btn btn-link btn-icon btn-delete" onclick="deleteItem(this)"><i class="icon icon-close"></i></button>
<button type="button" class="btn btn-link btn-icon btn-delete hidden" onclick="deleteItem(this)"><i class="icon icon-close"></i></button>
</td>
</tr>
<tr class='line1'>
<td>
<div class='input-group'>
<span class='input-group-addon addon-align'> <?php echo $lang->group->manageExecution;?></span>
<span class='input-group-addon addon-execution'> <?php echo $lang->group->manageExecution;?></span>
<?php echo html::select('execution[1][]', $executions, '', "class='form-control picker-select' multiple");?>
</div>
</td>
+2
View File
@@ -45,6 +45,7 @@ js::set('showFeatures', $showFeatures);
#searchbox .dropdown-menu.show-quick-go.with-active {min-height: 180px;}
<?php endif;?>
</style>
<?php if(strpos($_SERVER['HTTP_USER_AGENT'], 'xuanxuan') === false):?>
<div id='menu'>
<nav id='menuNav'>
<ul class='nav nav-default' id='menuMainNav'>
@@ -77,6 +78,7 @@ js::set('showFeatures', $showFeatures);
</ul>
</div>
</div>
<?php endif;?>
<div id='apps'>
</div>
<div id='appsBar'>
+8 -1
View File
@@ -1299,13 +1299,20 @@ class kanban extends control
* @param int $laneID
* @param int $columnID
* @param string $cards
* @param int $cardID
* @access public
* @return void
*/
public function sortCard($kanbanID, $laneID, $columnID, $cards = '')
public function sortCard($kanbanID, $laneID, $columnID, $cards = '', $cardID = 0)
{
if(empty($cards)) return;
if($cardID)
{
$fromCell = $this->dao->select('cards, lane, column')->from(TABLE_KANBANCELL)->where('cards')->like("%,$cardID,%")->fetch();
if($fromCell->lane != $laneID or $fromCell->column != $columnID) return;
}
$this->dao->update(TABLE_KANBANCELL)->set('cards')->eq(",$cards,")->where('kanban')->eq($kanbanID)->andWhere('lane')->eq($laneID)->andWhere('`column`')->eq($columnID)->exec();
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
+1 -2
View File
@@ -886,7 +886,6 @@ function finishCard(cardID, kanbanID, regionID)
*/
function updateRegion(regionID, regionData)
{
console.log('> updateRegion', {regionID, regionData});
if(typeof(regionData) == 'undefined') regionData = [];
if(!regionID) return false;
@@ -1307,7 +1306,7 @@ function handleSortCards(event)
orders.splice(orders.indexOf(fromID), 1);
orders.splice(orders.indexOf(toID) + (event.insert === 'before' ? 0 : 1), 0, fromID);
var url = createLink('kanban', 'sortCard', 'kanbanID=' + kanbanID + '&laneID=' + newLaneID + '&columnID=' + newColID + '&cards=' + orders.join(','));
var url = createLink('kanban', 'sortCard', 'kanbanID=' + kanbanID + '&laneID=' + newLaneID + '&columnID=' + newColID + '&cards=' + orders.join(',') + '&cardID=' + fromID);
$.getJSON(url, function(response)
{
if(response.result === 'fail')
+4
View File
@@ -1857,6 +1857,8 @@ class kanbanModel extends model
$space = fixer::input('post')
->setDefault('lastEditedBy', $this->app->user->account)
->setDefault('lastEditedDate', helper::now())
->setDefault('whitelist', '')
->setDefault('team', '')
->join('whitelist', ',')
->join('team', ',')
->trim('name')
@@ -2126,6 +2128,8 @@ class kanbanModel extends model
->setDefault('lastEditedBy', $account)
->setDefault('lastEditedDate', helper::now())
->setDefault('displayCards', 0)
->setDefault('whitelist', '')
->setDefault('team', '')
->setIF($this->post->import == 'off', 'object', '')
->setIF($this->post->heightType == 'auto', 'displayCards', 0)
->join('whitelist', ',')
-1
View File
@@ -1,5 +1,4 @@
#repoList .tree li {padding: 0 0 0 10px;}
#repoList .tree li > a {padding: 5px;}
#repoList .hide-in-search .hidden {display: block !important; visibility: inherit !important;}
#dropMenuRepo > div.table-row > div > div > ul > li > div {padding-left: 20px;}
#repoList li > a.selected {color: #e9f2fb; background-color: #16a8f8; line-height: 20px; border-radius: 5px;}
+8 -3
View File
@@ -19,6 +19,11 @@
.dynamic.collapsed .timeline > li + li {display: none;}
.dynamic.collapsed .dynamic-btn > .icon:before {content: '\f0d8';}
.dynamic .label-action {margin-left: 12px;}
.dynamic .label-name,
.dynamic .label-name a {color: #838A9D;}
.timeline>li:before {left: -26px;}
.timeline>li+li:after {left: -23px;}
.timeline-text {margin-left: -18px;}
.label-action {padding: 0 4px;}
.label-id {margin-left: 4px;}
.timeline>li.active:before {left: -30px;}
.timeline>li>div:after {left: -27px;}
.timeline .timeline-text {display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
+2 -2
View File
@@ -54,9 +54,9 @@
<span class="timeline-tag"><?php echo $action->time?></span>
<span class="timeline-text">
<?php echo $app->user->realname;?>
<span class='label-action'><?php echo ' ' . $action->actionLabel;?></span>
<span class='label-action'><?php echo $action->actionLabel;?></span>
<?php if($action->action != 'login' and $action->action != 'logout'):?>
<span><?php echo $action->objectLabel;?></span>
<?php echo $action->objectLabel;?>
<?php if($action->objectID):?>
<span class="label label-id"><?php echo $action->objectID;?></span>
<?php endif;?>
+8 -2
View File
@@ -3,5 +3,11 @@
.block-release .panel-body > .btn.pull-right {position: absolute; right: 20px; bottom: 20px;}
.release-line li .title {overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
.block-dynamic .label-action {margin-left: 12px;}
.block-dynamic .label-action + a {color: #838A9D;}
.timeline>li:before {left: -26px;}
.timeline>li+li:after {left: -23px;}
.timeline-text {margin-left: -18px;}
.block-dynamic .label-action {padding: 0 6px;}
.block-dynamic .label-action + a {padding-left: 6px;}
.timeline>li.active:before {left: -30px;}
.timeline>li>div:after {left: -27px;}
.timeline .timeline-text {display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
+8 -2
View File
@@ -20,5 +20,11 @@
.dynamic.collapsed .timeline > li + li {display: none;}
.dynamic.collapsed .dynamic-btn > .icon:before {content: '\f0d8';}
.dynamic .label-action {margin-left: 12px;}
.dynamic .label-id + a {color: #838A9D;}
.timeline>li:before {left: -26px;}
.timeline>li+li:after {left: -23px;}
.timeline-text {margin-left: -18px;}
.label-action {padding: 0 4px;}
.label-id {margin-left: 4px;}
.timeline>li.active:before {left: -30px;}
.timeline>li>div:after {left: -27px;}
.timeline .timeline-text {display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
+2 -1
View File
@@ -753,7 +753,8 @@ class productModel extends model
->add('id', $productID)
->callFunc('name', 'trim')
->setDefault('line', 0)
->setIF(!isset($_POST['whitelist']), 'whitelist', '')
->setDefault('whitelist', '')
->setDefault('reviewer', '')
->join('whitelist', ',')
->join('reviewer', ',')
->stripTags($this->config->product->editor->edit['id'], $this->config->allowedTags)
+2 -2
View File
@@ -73,7 +73,7 @@
</tr>
<tr>
<th><?php echo $lang->product->reviewer;?></th>
<td><?php echo html::select('reviewer[]', $users, '', "class='form-control chosen' multiple");?></td>
<td><?php echo html::select('reviewer[]', $users, '', "class='form-control picker-select' multiple");?></td>
</tr>
<tr>
<th><?php echo $lang->product->type;?></th>
@@ -107,7 +107,7 @@
<th><?php echo $lang->whitelist;?></th>
<td colspan='1'>
<div class='input-group'>
<?php echo html::select('whitelist[]', $users, '', 'class="form-control chosen" multiple');?>
<?php echo html::select('whitelist[]', $users, '', 'class="form-control picker-select" multiple');?>
<?php echo $this->fetch('my', 'buildContactLists', "dropdownName=whitelist");?>
</div>
</td>
+1 -1
View File
@@ -61,7 +61,7 @@
<ul class="timeline timeline-tag-left no-margin">
<?php foreach($dynamics as $action):?>
<li <?php if($action->major) echo "class='active'";?>>
<div class='text-ellipsis'>
<div>
<span class="timeline-tag"><?php echo $action->date;?></span>
<span class="timeline-text"><?php echo zget($users, $action->actor) . ' ' . "<span class='label-action'>{$action->actionLabel}</span>" . $action->objectLabel . ' ' . html::a($action->objectLink, $action->objectName);?></span>
</div>
+1 -1
View File
@@ -83,7 +83,7 @@
<span class="timeline-tag"><?php echo $action->time?></span>
<span class="timeline-text">
<?php echo zget($accountPairs, $action->actor);?>
<span class='label-action'><?php echo ' ' . $action->actionLabel;?></span>
<span class='label-action'><?php echo $action->actionLabel;?></span>
<span class="text"><?php echo $action->objectLabel;?></span>
<span class="label label-id"><?php echo $action->objectID;?></span>
<?php if($action->objectName) echo html::a($action->objectLink, $action->objectName);?>
+1
View File
@@ -1,4 +1,5 @@
#mainMenu .pull-left .checkbox-primary {display: inline-block; margin-left: 10px;}
#projectsSummary {padding-left: 10px;}
.main-table tbody>tr>td:first-child, .main-table thead>tr>th:first-child {padding-left: 8px;}
.table tbody>tr>td .dropdown {display: inline-block; line-height: 1;}
tbody.sortable > tr > td.sort-handler .table-nest-toggle:before {cursor: pointer !important;}
+23
View File
@@ -28,6 +28,21 @@ $(function()
$('.table-footer #checkAll').prop('checked', false);
$('#programForm').removeClass('has-row-checked');
}
var summary = checkedProjects.replace('%s', checkedLength);
var statistic = "<div id='projectsSummary' class='table-statistic'>" + summary + "</div>";
if(checkedLength > 0)
{
$('#programSummary').addClass('hidden');
$('#projectsSummary').remove();
$('.editCheckbox').after(statistic);
}
else
{
$('#programSummary').removeClass('hidden');
$('#projectsSummary').addClass('hidden');
}
});
$(document).on('click', ".table-footer #checkAll", function()
@@ -36,11 +51,19 @@ $(function()
{
$(":checkbox[name^='projectIdList']").prop('checked', true);
$('#programForm').addClass('has-row-checked');
var checkedLength = $(":checkbox[name^='projectIdList']:checked").length;
var summary = checkedProjects.replace('%s', checkedLength);
var statistic = "<div id='projectsSummary' class='table-statistic'>" + summary + "</div>";
$('#programSummary').addClass('hidden');
$('#projectsSummary').remove();
$('.editCheckbox').after(statistic);
}
else
{
$(":checkbox[name^='projectIdList']").prop('checked', false);
$('#programForm').removeClass('has-row-checked');
$('#programSummary').removeClass('hidden');
$('#projectsSummary').addClass('hidden');
}
});
});
+1
View File
@@ -111,6 +111,7 @@ $lang->program->unlinkStakeholder = 'Unlink Stakeholder';
$lang->program->readjustTime = 'Change the program begin&end date.';
$lang->program->accessDenied = 'You have no access to the program.';
$lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.';
$lang->program->checkedProjects = 'Seleted %s items';
$lang->program->endList[31] = 'One month';
$lang->program->endList[93] = 'Trimester';
+1
View File
@@ -111,6 +111,7 @@ $lang->program->unlinkStakeholder = 'Do you want to remove the Stakeholder?';
$lang->program->readjustTime = 'Change the program begin&end date.';
$lang->program->accessDenied = 'You have no access to the program.';
$lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.';
$lang->program->checkedProjects = 'Seleted %s items';
$lang->program->endList[31] = 'One month';
$lang->program->endList[93] = 'Trimester';
+1
View File
@@ -111,6 +111,7 @@ $lang->program->unlinkStakeholder = 'Unlink Stakeholder';
$lang->program->readjustTime = 'Change the program begin&end date.';
$lang->program->accessDenied = 'You have no access to the program.';
$lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.';
$lang->program->checkedProjects = "Pour s électionner l'élément% s";
$lang->program->endList[31] = 'One month';
$lang->program->endList[93] = 'Trimester';
+1
View File
@@ -111,6 +111,7 @@ $lang->program->unlinkStakeholder = '您确定要移除干系人吗?';
$lang->program->readjustTime = '重新调整项目集起止时间';
$lang->program->accessDenied = '你无权访问该项目集';
$lang->program->beyondParentBudget = '已超出所属项目集的剩余预算';
$lang->program->checkedProjects = '已选择%s项';
$lang->program->endList[31] = '一个月';
$lang->program->endList[93] = '三个月';
+2 -1
View File
@@ -16,8 +16,9 @@
<?php js::set('edit', $lang->edit);?>
<?php js::set('selectAll', $lang->selectAll);?>
<?php js::set('hasProject', $hasProject);?>
<?php js::set('checkedProjects', $lang->program->checkedProjects);?>
<?php if($programType == 'bygrid'):?>
<style> #mainMenu{padding-left: 10px; padding-right: 10px;} </style>
<style>#mainMenu{padding-left: 10px; padding-right: 10px;}</style>
<?php endif;?>
<div id='mainMenu' class='clearfix'>
<div class="btn-toolBar pull-left">
+1 -1
View File
@@ -99,7 +99,7 @@
</tbody>
</table>
<div class='table-footer <?php if($status == 'bySearch') echo 'hide';?>'>
<div class="table-statistic">&nbsp;<?php echo $summary;?></div>
<div id="programSummary" class="table-statistic">&nbsp;<?php echo $summary;?></div>
<?php if($status != 'bySearch') $pager->show('right', 'pagerjs');?>
</div>
</form>
+8 -2
View File
@@ -20,5 +20,11 @@
.dynamic.collapsed .timeline > li + li {display: none;}
.dynamic.collapsed .dynamic-btn > .icon:before {content: '\f0d8';}
.dynamic .label-action {margin-left: 12px;}
.dynamic .label-id + a {color: #838A9D;}
.timeline>li:before {left: -26px;}
.timeline>li+li:after {left: -23px;}
.timeline-text {margin-left: -18px;}
.label-action {padding: 0 4px;}
.label-id {margin-left: 4px;}
.timeline>li.active:before {left: -30px;}
.timeline>li>div:after {left: -27px;}
.timeline .timeline-text {display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
+8 -2
View File
@@ -2,5 +2,11 @@
.block-team div.col-xs-6 {white-space: nowrap; overflow: hidden;}
.cell .detail .row-grid {display: block;}
.block-dynamic .label-action {margin-left: 12px;}
.block-dynamic .label-action + a {color: #838A9D;}
.timeline>li:before {left: -26px;}
.timeline>li+li:after {left: -23px;}
.timeline-text {margin-left: -18px;}
.block-dynamic .label-action {padding: 0 6px;}
.block-dynamic .label-action + a {padding-left: 6px;}
.timeline>li.active:before {left: -30px;}
.timeline>li>div:after {left: -27px;}
.timeline .timeline-text {display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
+1 -1
View File
@@ -27,7 +27,7 @@
<ul class="timeline timeline-tag-left no-margin">
<?php foreach($dynamics as $action):?>
<li <?php if($action->major) echo "class='active'";?>>
<div class='text-ellipsis'>
<div>
<span class="timeline-tag"><?php echo $action->date;?></span>
<span class="timeline-text"><?php echo zget($users, $action->actor) . ' ' . "<span class='label-action'>{$action->actionLabel}</span>" . $action->objectLabel . ' ' . html::a($action->objectLink, $action->objectName, '', "title='$action->objectName'");?></span>
</div>
+1
View File
@@ -114,6 +114,7 @@ class projectreleaseModel extends model
$release = fixer::input('post')->stripTags($this->config->release->editor->edit['id'], $this->config->allowedTags)
->add('branch', (int)$branch)
->setDefault('mailto', '')
->join('mailto', ',')
->setIF(!$this->post->marker, 'marker', 0)
->cleanInt('product')
+1
View File
@@ -248,6 +248,7 @@ class releaseModel extends model
$release = fixer::input('post')->stripTags($this->config->release->editor->edit['id'], $this->config->allowedTags)
->add('id', $releaseID)
->add('branch', (int)$branch)
->setDefault('mailto', '')
->join('mailto', ',')
->setIF(!$this->post->marker, 'marker', 0)
->cleanInt('product')
+1 -1
View File
@@ -3,7 +3,7 @@
#sidebar>.sidebar-toggle>.icon {right: -2px; left: auto;}
.main-row {width: 99%;}
.btn-toolbar > .last-sync-time {display: inline-block; float: left; margin-right: 10px;}
.btn-toolbar .page-title {line-height: 28px;}
.btn-toolbar .page-title {line-height: 32px;}
.dropdown-menu > li.selected > a:after {content: '';}
.pull-left li > a.selected {color: #e9f2fb; background-color: #16a8f8;}
.pull-left li > a {line-height: 20px; border-radius: 5px;}
-1
View File
@@ -194,7 +194,6 @@ h3 {font-size: 16px;}
/* Style for repo select. */
#repoList .tree li {padding: 0 0 0 15px;}
#repoList .tree li > a {padding: 5px;}
#repoList .hide-in-search .hidden {display: block !important; visibility: inherit !important;}
#dropMenuRepo > div.table-row > div > div > ul > li > div {padding-left: 10px;}
#repoList li > a.selected {color: #e9f2fb; background-color: #16a8f8; line-height: 20px; border-radius: 5px;}
+2
View File
@@ -772,6 +772,8 @@ class storyModel extends model
->cleanFloat('estimate')
->setDefault('assignedDate', $oldStory->assignedDate)
->setDefault('lastEditedBy', $this->app->user->account)
->setDefault('reviewedBy', '')
->setDefault('mailto', '')
->add('id', $storyID)
->add('lastEditedDate', $now)
->setDefault('plan,notifyEmail', '')
+1
View File
@@ -928,6 +928,7 @@ class taskModel extends model
->add('id', $taskID)
->setDefault('story, estimate, left, consumed', 0)
->setDefault('realStarted', '0000-00-00 00:00:00')
->setDefault('mailto', '')
->setIF(is_numeric($this->post->estimate), 'estimate', (float)$this->post->estimate)
->setIF(is_numeric($this->post->consumed), 'consumed', (float)$this->post->consumed)
->setIF(is_numeric($this->post->left), 'left', (float)$this->post->left)
+1
View File
@@ -766,6 +766,7 @@ class testcaseModel extends model
->setDefault('lastEditedBy', $this->app->user->account)
->add('lastEditedDate', $now)
->setDefault('story,branch', 0)
->setDefault('stage', '')
->join('stage', ',')
->join('linkCase', ',')
->setForce('status', $status)
+11 -1
View File
@@ -186,7 +186,17 @@
<?php
$class = isonlybody() ? 'showinonlybody' : 'iframe';
$param = $this->app->tab == 'project' ? "&version=0&projectID={$this->session->project}" : '';
if(isset($case->storyTitle)) echo html::a($this->createLink('story', 'view', "storyID=$case->story" . $param, '', true), "#$case->story:$case->storyTitle", '', "class=$class data-width='80%'");
if(isset($case->storyTitle))
{
if(common::hasPriv('story', 'view'))
{
echo html::a($this->createLink('story', 'view', "storyID=$case->story" . $param, '', true), "#$case->story:$case->storyTitle", '', "class=$class data-width='80%'");
}
else
{
echo "#$case->story:$case->storyTitle";
}
}
if($case->story and $case->storyStatus == 'active' and $case->latestStoryVersion > $case->storyVersion)
{
echo "(<span class='warning'>{$lang->story->changed}</span> ";
+2
View File
@@ -736,6 +736,8 @@ class testtaskModel extends model
$oldTask = $this->dao->select("*")->from(TABLE_TESTTASK)->where('id')->eq((int)$taskID)->fetch();
$task = fixer::input('post')
->add('id', $taskID)
->setDefault('type', '')
->setDefault('mailto', '')
->stripTags($this->config->testtask->editor->edit['id'], $this->config->allowedTags)
->join('mailto', ',')
->join('type', ',')
+3 -3
View File
@@ -1123,7 +1123,7 @@ class user extends control
/**
* Reset password.
*
* @param string $code
* @param string $code
* @access public
* @return void
*/
@@ -1134,7 +1134,7 @@ class user extends control
if($user)
{
$resetToken = json_decode($user->resetToken);
if($resetToken->endTime >= time()) $expired = false;
if($resetToken->endTime >= time()) $expired = false;
}
if(!empty($_POST))
@@ -1165,7 +1165,7 @@ class user extends control
$this->view->expired = $expired;
$this->view->user = empty($user) ? '' : $user;
$this->display();
$this->display();
}
/**
+8 -2
View File
@@ -19,5 +19,11 @@
.dynamic.collapsed .timeline > li + li {display: none;}
.dynamic.collapsed .dynamic-btn > .icon:before {content: '\f0d8';}
.dynamic .label-action {margin-left: 12px;}
.dynamic .label-name a {color: #838A9D;}
.timeline>li:before {left: -26px;}
.timeline>li+li:after {left: -23px;}
.timeline-text {margin-left: -18px;}
.label-action {padding: 0 4px;}
.label-id {margin-left: 4px;}
.timeline>li.active:before {left: -30px;}
.timeline>li>div:after {left: -27px;}
.timeline .timeline-text {display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
+1 -1
View File
@@ -97,7 +97,7 @@
<td align='left'>
<div class='input-group'>
<?php
echo html::input("password[$i]", '', "class='form-control' onkeyup='toggleCheck(this, $i)'");
echo html::input("password[$i]", '', "class='form-control' onkeyup='toggleCheck(this, $i)' oninput=\"this.value = this.value.replace(/[\u4e00-\u9fa5]/g, '');\"");
echo "<span class='input-group-addon passwordStrength'></span>";
if($i != 1) echo "<span class='input-group-addon passwordBox'><input type='checkbox' name='ditto[$i]' id='ditto$i' " . ($i > 1 ? "checked" : '') . " /> {$lang->user->ditto}</span>";
?>
+1 -1
View File
@@ -52,7 +52,7 @@
<span class="timeline-tag"><?php echo $action->time?></span>
<span class="timeline-text">
<?php echo zget($users, $action->actor);?>
<span class='label-action'><?php echo ' ' . $action->actionLabel;?></span>
<span class='label-action'><?php echo $action->actionLabel;?></span>
<span><?php echo $action->objectLabel;?></span>
<span class="label label-id"><?php echo $action->objectID;?></span>
<?php if($action->objectName) echo "<sapn class='label-name'>" . html::a($action->objectLink, $action->objectName) . '</span>';?>