* Refact task page of project.
This commit is contained in:
@@ -3,6 +3,7 @@ $lang->branch->common = '分支';
|
||||
$lang->branch->manage = '分支管理';
|
||||
$lang->branch->sort = '排序';
|
||||
$lang->branch->delete = '分支刪除';
|
||||
$lang->branch->add = '添加';
|
||||
|
||||
$lang->branch->manageTitle = '%s管理';
|
||||
$lang->branch->all = '所有';
|
||||
|
||||
@@ -59,9 +59,11 @@ $lang->history = '歷史記錄';
|
||||
$lang->attatch = '附件';
|
||||
$lang->reverse = '切換順序';
|
||||
$lang->switchDisplay = '切換顯示';
|
||||
$lang->expand = '展開全部';
|
||||
$lang->collapse = '收起';
|
||||
$lang->addFiles = '上傳了附件 ';
|
||||
$lang->files = '附件 ';
|
||||
$lang->pasteText = '粘貼文本 ';
|
||||
$lang->pasteText = '多項錄入';
|
||||
$lang->uploadImages = '多圖上傳 ';
|
||||
$lang->timeout = '連接超時,請檢查網絡環境,或重試!';
|
||||
$lang->repairTable = '資料庫表可能損壞,請用phpmyadmin或myisamchk檢查修復。';
|
||||
@@ -74,6 +76,7 @@ $lang->tutorial = '新手教程';
|
||||
$lang->changeLog = '修改日誌';
|
||||
$lang->manual = '手冊';
|
||||
$lang->customMenu = '自定義導航';
|
||||
$lang->customField = '自定義表單項';
|
||||
$lang->tutorialConfirm = '檢測到你尚未退出新手教程模式,是否現在退出?';
|
||||
|
||||
$lang->preShortcutKey = '[快捷鍵:←]';
|
||||
@@ -191,15 +194,15 @@ $lang->product = new stdclass();
|
||||
$lang->product->menu = new stdclass();
|
||||
|
||||
$lang->product->menu->story = array('link' => '需求|product|browse|productID=%s', 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->menu->dynamic = '動態|product|dynamic|productID=%s';
|
||||
$lang->product->menu->plan = array('link' => '計劃|productplan|browse|productID=%s', 'subModule' => 'productplan');
|
||||
$lang->product->menu->release = array('link' => '發佈|release|browse|productID=%s', 'subModule' => 'release');
|
||||
$lang->product->menu->roadmap = '路線圖|product|roadmap|productID=%s';
|
||||
$lang->product->menu->project = "{$lang->projectCommon}|product|project|status=all&productID=%s";
|
||||
$lang->product->menu->doc = array('link' => '文檔|doc|objectLibs|type=product&objectID=%s&from=product', 'subModule' => 'doc');
|
||||
$lang->product->menu->dynamic = '動態|product|dynamic|productID=%s';
|
||||
$lang->product->menu->roadmap = '路線圖|product|roadmap|productID=%s';
|
||||
$lang->product->menu->branch = '@branch@|branch|manage|productID=%s';
|
||||
$lang->product->menu->module = '模組|tree|browse|productID=%s&view=story';
|
||||
$lang->product->menu->view = array('link' => '概況|product|view|productID=%s', 'alias' => 'edit');
|
||||
$lang->product->menu->project = "{$lang->projectCommon}|product|project|status=all&productID=%s";
|
||||
|
||||
$lang->story = new stdclass();
|
||||
$lang->productplan = new stdclass();
|
||||
|
||||
+12
-12
@@ -18,7 +18,7 @@ $lang->file->edit = '重命名';
|
||||
$lang->file->inputFileName = '請輸入附件名稱';
|
||||
$lang->file->delete = '刪除附件';
|
||||
$lang->file->label = '標題:';
|
||||
$lang->file->maxUploadSize = "<span class='red'>%s</span>";
|
||||
$lang->file->maxUploadSize = "(不超過%s)";
|
||||
$lang->file->applyTemplate = "應用模板";
|
||||
$lang->file->tplTitle = "模板名稱";
|
||||
$lang->file->setPublic = "設置公共模板";
|
||||
@@ -39,15 +39,15 @@ $lang->file->addedDate = '添加時間';
|
||||
$lang->file->downloads = '下載次數';
|
||||
$lang->file->extra = '備註';
|
||||
|
||||
$lang->file->dragFile = '請拖拽檔案到此處';
|
||||
$lang->file->errorNotExists = "<span class='red'>檔案夾 '%s' 不存在</span>";
|
||||
$lang->file->errorCanNotWrite = "<span class='red'>檔案夾 '%s' 不可寫,請改變檔案夾的權限。在linux中輸入指令:sudo chmod -R 777 %s</span>";
|
||||
$lang->file->confirmDelete = " 您確定刪除該附件嗎?";
|
||||
$lang->file->errorFileSize = " 檔案大小已經超過限制,可能不能成功上傳!";
|
||||
$lang->file->errorFileUpload = " 檔案上傳失敗,檔案大小可能超出限制";
|
||||
$lang->file->errorFileFormate = " 檔案上傳失敗,檔案格式不在規定範圍內";
|
||||
$lang->file->errorFileMove = " 檔案上傳失敗,移動檔案時出錯";
|
||||
$lang->file->dangerFile = " 您選擇的檔案存在安全風險,系統將不予上傳。";
|
||||
$lang->file->errorSuffix = '壓縮包格式錯誤,只能上傳zip壓縮包!';
|
||||
$lang->file->errorExtract = '解壓縮失敗!可能檔案已經損壞,或壓縮包裡含有非法上傳檔案。';
|
||||
$lang->file->dragFile = '請拖拽檔案到此處';
|
||||
$lang->file->errorNotExists = "<span class='red'>檔案夾 '%s' 不存在</span>";
|
||||
$lang->file->errorCanNotWrite = "<span class='red'>檔案夾 '%s' 不可寫,請改變檔案夾的權限。在linux中輸入指令:sudo chmod -R 777 %s</span>";
|
||||
$lang->file->confirmDelete = " 您確定刪除該附件嗎?";
|
||||
$lang->file->errorFileSize = " 檔案大小已經超過%s,可能不能成功上傳!";
|
||||
$lang->file->errorFileUpload = " 檔案上傳失敗,檔案大小可能超出限制";
|
||||
$lang->file->errorFileFormate = " 檔案上傳失敗,檔案格式不在規定範圍內";
|
||||
$lang->file->errorFileMove = " 檔案上傳失敗,移動檔案時出錯";
|
||||
$lang->file->dangerFile = " 您選擇的檔案存在安全風險,系統將不予上傳。";
|
||||
$lang->file->errorSuffix = '壓縮包格式錯誤,只能上傳zip壓縮包!';
|
||||
$lang->file->errorExtract = '解壓縮失敗!可能檔案已經損壞,或壓縮包裡含有非法上傳檔案。';
|
||||
$lang->file->uploadImagesExplain = '註:請上傳"jpg, jpeg, gif, png"格式的圖片,程序會以檔案名作為標題,以圖片作為內容。';
|
||||
|
||||
@@ -56,20 +56,26 @@ $lang->product->confirmDelete = " 您確定刪除該{$lang->productCommon}嗎
|
||||
$lang->product->errorNoProduct = "還沒有創建{$lang->productCommon}!";
|
||||
$lang->product->accessDenied = "您無權訪問該{$lang->productCommon}";
|
||||
|
||||
$lang->product->id = "編號";
|
||||
$lang->product->name = "{$lang->productCommon}名稱";
|
||||
$lang->product->code = "{$lang->productCommon}代號";
|
||||
$lang->product->line = '產品綫';
|
||||
$lang->product->order = '排序';
|
||||
$lang->product->type = "{$lang->productCommon}類型";
|
||||
$lang->product->status = '狀態';
|
||||
$lang->product->desc = "{$lang->productCommon}描述";
|
||||
$lang->product->PO = "{$lang->productCommon}負責人";
|
||||
$lang->product->QD = '測試負責人';
|
||||
$lang->product->RD = '發佈負責人';
|
||||
$lang->product->acl = '訪問控制';
|
||||
$lang->product->whitelist = '分組白名單';
|
||||
$lang->product->branch = '所屬%s';
|
||||
$lang->product->id = "編號";
|
||||
$lang->product->name = "{$lang->productCommon}名稱";
|
||||
$lang->product->code = "{$lang->productCommon}代號";
|
||||
$lang->product->line = '產品綫';
|
||||
$lang->product->order = '排序';
|
||||
$lang->product->type = "{$lang->productCommon}類型";
|
||||
$lang->product->status = '狀態';
|
||||
$lang->product->desc = "{$lang->productCommon}描述";
|
||||
$lang->product->manager = '負責人';
|
||||
$lang->product->PO = "{$lang->productCommon}負責人";
|
||||
$lang->product->QD = '測試負責人';
|
||||
$lang->product->RD = '發佈負責人';
|
||||
$lang->product->acl = '訪問控制';
|
||||
$lang->product->whitelist = '分組白名單';
|
||||
$lang->product->branch = '所屬%s';
|
||||
$lang->product->qa = '測試';
|
||||
$lang->product->release = '發佈';
|
||||
$lang->product->latestDynamic = "最新動態";
|
||||
$lang->product->iteration = "版本迭代";
|
||||
$lang->product->iterationInfo = "迭代 %s 次";
|
||||
|
||||
$lang->product->searchStory = '搜索';
|
||||
$lang->product->assignedToMe = '指給我';
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
<input type='checkbox' name='planIDList[<?php echo $plan->id;?>]' value='<?php echo $plan->id;?>' />
|
||||
<label></label>
|
||||
<?php endif;?>
|
||||
<?php echo $plan->id?>
|
||||
<?php echo $plan->id;?>
|
||||
</div>
|
||||
</td>
|
||||
<td class='text-left' title="<?php echo $plan->title?>"><?php echo html::a(inlink('view', "id=$plan->id"), $plan->title);?></td>
|
||||
|
||||
@@ -278,8 +278,8 @@ $lang->printKanban->taskStatus = 'Status';
|
||||
$lang->printKanban->typeList['all'] = 'All';
|
||||
$lang->printKanban->typeList['increment'] = 'Increment';
|
||||
|
||||
$lang->project->featureBar['task']['unclosed'] = $lang->project->unclosed;
|
||||
$lang->project->featureBar['task']['all'] = $lang->project->allTasks;
|
||||
$lang->project->featureBar['task']['unclosed'] = $lang->project->unclosed;
|
||||
$lang->project->featureBar['task']['assignedtome'] = $lang->project->assignedToMe;
|
||||
$lang->project->featureBar['task']['myinvolved'] = $lang->project->myInvolved;
|
||||
$lang->project->featureBar['task']['delayed'] = 'Delayed';
|
||||
|
||||
@@ -171,7 +171,7 @@ $lang->project->groupFilter['pri']['noset'] = '未设置';
|
||||
$lang->project->groupFilter['assignedTo']['undone'] = '未完成';
|
||||
$lang->project->groupFilter['assignedTo']['all'] = $lang->project->all;
|
||||
|
||||
$lang->project->byQuery = '搜索';
|
||||
$lang->project->byQuery = '搜索';
|
||||
|
||||
/* 查询条件列表。*/
|
||||
$lang->project->allProject = "所有{$lang->projectCommon}";
|
||||
@@ -278,8 +278,8 @@ $lang->printKanban->taskStatus = '状态';
|
||||
$lang->printKanban->typeList['all'] = '全部';
|
||||
$lang->printKanban->typeList['increment'] = '增量';
|
||||
|
||||
$lang->project->featureBar['task']['unclosed'] = $lang->project->unclosed;
|
||||
$lang->project->featureBar['task']['all'] = $lang->project->allTasks;
|
||||
$lang->project->featureBar['task']['unclosed'] = $lang->project->unclosed;
|
||||
$lang->project->featureBar['task']['assignedtome'] = $lang->project->assignedToMe;
|
||||
$lang->project->featureBar['task']['myinvolved'] = $lang->project->myInvolved;
|
||||
$lang->project->featureBar['task']['delayed'] = '已延期';
|
||||
|
||||
@@ -171,7 +171,7 @@ $lang->project->groupFilter['pri']['noset'] = '未設置';
|
||||
$lang->project->groupFilter['assignedTo']['undone'] = '未完成';
|
||||
$lang->project->groupFilter['assignedTo']['all'] = $lang->project->all;
|
||||
|
||||
$lang->project->byQuery = '搜索';
|
||||
$lang->project->byQuery = '搜索';
|
||||
|
||||
/* 查詢條件列表。*/
|
||||
$lang->project->allProject = "所有{$lang->projectCommon}";
|
||||
@@ -278,8 +278,8 @@ $lang->printKanban->taskStatus = '狀態';
|
||||
$lang->printKanban->typeList['all'] = '全部';
|
||||
$lang->printKanban->typeList['increment'] = '增量';
|
||||
|
||||
$lang->project->featureBar['task']['unclosed'] = $lang->project->unclosed;
|
||||
$lang->project->featureBar['task']['all'] = $lang->project->allTasks;
|
||||
$lang->project->featureBar['task']['unclosed'] = $lang->project->unclosed;
|
||||
$lang->project->featureBar['task']['assignedtome'] = $lang->project->assignedToMe;
|
||||
$lang->project->featureBar['task']['myinvolved'] = $lang->project->myInvolved;
|
||||
$lang->project->featureBar['task']['delayed'] = '已延期';
|
||||
|
||||
@@ -20,8 +20,6 @@ js::set('productID', $productID);
|
||||
js::set('projectID', $projectID);
|
||||
js::set('browseType', $browseType);
|
||||
?>
|
||||
|
||||
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div id="sidebarHeader">
|
||||
<?php echo html::commonButton('<i class="icon icon-caret-left"></i>', '', 'btn btn-icon btn-sm btn-info sidebar-toggle');?>
|
||||
@@ -32,16 +30,14 @@ js::set('browseType', $browseType);
|
||||
$product = $this->product->getById($productID);
|
||||
$removeLink = $browseType == 'byproduct' ? inlink('task', "projectID=$projectID&browseType=$status¶m=0&orderBy=$orderBy&recTotal=0&recPerPage={$pager->recPerPage}") : 'javascript:removeCookieByKey("productBrowseParam")';
|
||||
echo $product->name;
|
||||
echo html::a($removeLink, "<span class='close'>×</span>", '', "class='text-muted'");
|
||||
echo html::a($removeLink, "<i class='icon icon-remove'></i>", '', "class='text-muted'");
|
||||
echo html::a($removeLink, "<i class='icon icon-sm icon-close'></i>", '', "class='text-muted'");
|
||||
}
|
||||
elseif(!empty($moduleID))
|
||||
{
|
||||
$module = $this->tree->getById($moduleID);
|
||||
$removeLink = $browseType == 'bymodule' ? inlink('task', "projectID=$projectID&browseType=$status¶m=0&orderBy=$orderBy&recTotal=0&recPerPage={$pager->recPerPage}") : 'javascript:removeCookieByKey("moduleBrowseParam")';
|
||||
echo $module->name;
|
||||
echo html::a($removeLink, "<span class='close'>×</span>", '', "class='text-muted'");
|
||||
echo html::a($removeLink, "<i class='icon icon-remove'></i>", '', "class='text-muted'");
|
||||
echo html::a($removeLink, "<i class='icon icon-sm icon-close'></i>", '', "class='text-muted'");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -65,7 +61,10 @@ js::set('browseType', $browseType);
|
||||
}
|
||||
elseif($menuType != 'status')
|
||||
{
|
||||
echo html::a(inlink('task', "project=$projectID&type=$menuType"), $menuItem->text, '', "id='{$menuType}Tab' class='btn btn-link'");
|
||||
$label = "<span class='text'>{$menuItem->text}</span>";
|
||||
$label .= $menuType == $browseType ? "<span class='label label-light label-badge'>{$pager->recTotal}</span>" : '';
|
||||
$active = $menuType == $browseType ? 'btn-active-text' : '';
|
||||
echo html::a(inlink('task', "project=$projectID&type=$menuType"), $label, '', "id='{$menuType}' class='btn btn-link $active'");
|
||||
}
|
||||
elseif($menuType == 'status')
|
||||
{
|
||||
@@ -85,12 +84,12 @@ js::set('browseType', $browseType);
|
||||
}
|
||||
}
|
||||
|
||||
echo common::printLink('project', 'kanban', "projectID=$projectID", $lang->project->kanban, '', "id='kanbanTab' class='btn btn-link'");
|
||||
common::printLink('project', 'kanban', "projectID=$projectID", $lang->project->kanban, '', "id='kanbanTab' class='btn btn-link'");
|
||||
if($project->type == 'sprint' or $project->type == 'waterfall')
|
||||
{
|
||||
common::printLink('project', 'burn', "project=$projectID", $lang->project->burn, '', "id='burnTab' class='btn btn-link'");
|
||||
}
|
||||
echo common::printLink('project', 'tree', "projectID=$projectID", $lang->project->tree, '', "id='treeTab' class='btn btn-link'");
|
||||
common::printLink('project', 'tree', "projectID=$projectID", $lang->project->tree, '', "id='treeTab' class='btn btn-link'");
|
||||
echo "<div class='btn-group'>";
|
||||
$groupBy = isset($groupBy) ? $groupBy : '';
|
||||
$current = zget($lang->project->groups, isset($groupBy) ? $groupBy : '', '');
|
||||
@@ -141,17 +140,13 @@ js::set('browseType', $browseType);
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class='btn-group'>
|
||||
<div class='btn-group' id='createActionMenu'>
|
||||
<?php
|
||||
$link = $this->createLink('task', 'batchCreate', "project=$projectID" . (isset($moduleID) ? "&storyID=&moduleID=$moduleID" : ''));
|
||||
if(common::hasPriv('task', 'batchCreate')) echo html::a($link, "<i class='icon icon-plus'></i> {$lang->task->batchCreate}", '', "class='btn btn btn-secondary'");
|
||||
<?php
|
||||
$link = $this->createLink('task', 'batchCreate', "project=$projectID" . (isset($moduleID) ? "&storyID=&moduleID=$moduleID" : ''));
|
||||
if(common::hasPriv('task', 'batchCreate')) echo html::a($link, "<i class='icon icon-plus'></i> {$lang->task->batchCreate}", '', "class='btn btn btn-secondary'");
|
||||
|
||||
$link = $this->createLink('task', 'create', "project=$projectID" . (isset($moduleID) ? "&storyID=&moduleID=$moduleID" : ''));
|
||||
if(common::hasPriv('task', 'create')) echo html::a($link, "<i class='icon icon-plus'></i> {$lang->task->create}", '', "class='btn btn-primary'");
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
$link = $this->createLink('task', 'create', "project=$projectID" . (isset($moduleID) ? "&storyID=&moduleID=$moduleID" : ''));
|
||||
if(common::hasPriv('task', 'create')) echo html::a($link, "<i class='icon icon-plus'></i> {$lang->task->create}", '', "class='btn btn-primary'");
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<div id="mainContent" class="main-row">
|
||||
@@ -207,7 +202,7 @@ js::set('browseType', $browseType);
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($tasks as $task):?>
|
||||
<tr class='text-center' data-id='<?php echo $task->id;?>' data-status='<?php echo $task->status?>' data-estimate='<?php echo $task->estimate?>' data-consumed='<?php echo $task->consumed?>' data-left='<?php echo $task->left?>'>
|
||||
<tr data-id='<?php echo $task->id;?>' data-status='<?php echo $task->status?>' data-estimate='<?php echo $task->estimate?>' data-consumed='<?php echo $task->consumed?>' data-left='<?php echo $task->left?>'>
|
||||
<?php foreach($customFields as $field) $this->task->printCell($field, $task, $users, $browseType, $branchGroups, $modulePairs, $useDatatable ? 'datatable' : 'table');?>
|
||||
</tr>
|
||||
<?php if(!empty($task->children)):?>
|
||||
|
||||
@@ -193,5 +193,5 @@ $config->story->datatable->fieldList['caseCount']['name'] = $lang->story->ca
|
||||
|
||||
$config->story->datatable->fieldList['actions']['title'] = 'actions';
|
||||
$config->story->datatable->fieldList['actions']['fixed'] = 'right';
|
||||
$config->story->datatable->fieldList['actions']['width'] = '160';
|
||||
$config->story->datatable->fieldList['actions']['width'] = '156';
|
||||
$config->story->datatable->fieldList['actions']['required'] = 'yes';
|
||||
|
||||
@@ -23,6 +23,7 @@ $lang->story->batchClose = '批量關閉';
|
||||
$lang->story->activate = '激活';
|
||||
$lang->story->delete = "刪除";
|
||||
$lang->story->view = "需求詳情";
|
||||
$lang->story->setting = "設置";
|
||||
$lang->story->tasks = "相關任務";
|
||||
$lang->story->bugs = "相關Bug";
|
||||
$lang->story->cases = "相關用例";
|
||||
|
||||
@@ -55,7 +55,7 @@ if($config->global->flow == 'onlyTask')
|
||||
}
|
||||
|
||||
$config->task->datatable = new stdclass();
|
||||
$config->task->datatable->defaultField = array('id', 'pri', 'name', 'status', 'deadline', 'openedDate', 'assignedTo', 'finishedBy', 'estimate', 'consumed', 'left', 'actions');
|
||||
$config->task->datatable->defaultField = array('id', 'pri', 'name', 'status', 'assignedTo', 'finishedBy', 'estimate', 'consumed', 'left', 'progress', 'deadline', 'actions');
|
||||
|
||||
$config->task->datatable->fieldList['id']['title'] = 'idAB';
|
||||
$config->task->datatable->fieldList['id']['fixed'] = 'left';
|
||||
@@ -79,27 +79,27 @@ $config->task->datatable->fieldList['type']['required'] = 'no';
|
||||
|
||||
$config->task->datatable->fieldList['status']['title'] = 'statusAB';
|
||||
$config->task->datatable->fieldList['status']['fixed'] = 'no';
|
||||
$config->task->datatable->fieldList['status']['width'] = '60';
|
||||
$config->task->datatable->fieldList['status']['width'] = '70';
|
||||
$config->task->datatable->fieldList['status']['required'] = 'no';
|
||||
|
||||
$config->task->datatable->fieldList['estimate']['title'] = 'estimateAB';
|
||||
$config->task->datatable->fieldList['estimate']['fixed'] = 'no';
|
||||
$config->task->datatable->fieldList['estimate']['width'] = '57';
|
||||
$config->task->datatable->fieldList['estimate']['width'] = '70';
|
||||
$config->task->datatable->fieldList['estimate']['required'] = 'no';
|
||||
|
||||
$config->task->datatable->fieldList['consumed']['title'] = 'consumedAB';
|
||||
$config->task->datatable->fieldList['consumed']['fixed'] = 'no';
|
||||
$config->task->datatable->fieldList['consumed']['width'] = '50';
|
||||
$config->task->datatable->fieldList['consumed']['width'] = '70';
|
||||
$config->task->datatable->fieldList['consumed']['required'] = 'no';
|
||||
|
||||
$config->task->datatable->fieldList['left']['title'] = 'leftAB';
|
||||
$config->task->datatable->fieldList['left']['fixed'] = 'no';
|
||||
$config->task->datatable->fieldList['left']['width'] = '40';
|
||||
$config->task->datatable->fieldList['left']['width'] = '70';
|
||||
$config->task->datatable->fieldList['left']['required'] = 'no';
|
||||
|
||||
$config->task->datatable->fieldList['progress']['title'] = 'progress';
|
||||
$config->task->datatable->fieldList['progress']['fixed'] = 'no';
|
||||
$config->task->datatable->fieldList['progress']['width'] = '40';
|
||||
$config->task->datatable->fieldList['progress']['width'] = '70';
|
||||
$config->task->datatable->fieldList['progress']['required'] = 'no';
|
||||
$config->task->datatable->fieldList['progress']['sort'] = 'no';
|
||||
|
||||
@@ -130,7 +130,7 @@ $config->task->datatable->fieldList['realStarted']['required'] = 'no';
|
||||
|
||||
$config->task->datatable->fieldList['assignedTo']['title'] = 'assignedTo';
|
||||
$config->task->datatable->fieldList['assignedTo']['fixed'] = 'no';
|
||||
$config->task->datatable->fieldList['assignedTo']['width'] = '80';
|
||||
$config->task->datatable->fieldList['assignedTo']['width'] = '120';
|
||||
$config->task->datatable->fieldList['assignedTo']['required'] = 'no';
|
||||
|
||||
$config->task->datatable->fieldList['assignedDate']['title'] = 'assignedDate';
|
||||
@@ -197,5 +197,5 @@ $config->task->datatable->fieldList['lastEditedDate']['required'] = 'no';
|
||||
|
||||
$config->task->datatable->fieldList['actions']['title'] = 'actions';
|
||||
$config->task->datatable->fieldList['actions']['fixed'] = 'right';
|
||||
$config->task->datatable->fieldList['actions']['width'] = '180';
|
||||
$config->task->datatable->fieldList['actions']['width'] = '156';
|
||||
$config->task->datatable->fieldList['actions']['required'] = 'yes';
|
||||
|
||||
@@ -53,9 +53,9 @@ $lang->task->type = '任务类型';
|
||||
$lang->task->pri = '优先级';
|
||||
$lang->task->mailto = '抄送给';
|
||||
$lang->task->estimate = '最初预计';
|
||||
$lang->task->estimateAB = '预';
|
||||
$lang->task->estimateAB = '预计';
|
||||
$lang->task->left = '预计剩余';
|
||||
$lang->task->leftAB = '剩';
|
||||
$lang->task->leftAB = '剩余';
|
||||
$lang->task->consumed = '总消耗';
|
||||
$lang->task->consumedAB = '消耗';
|
||||
$lang->task->hour = '小时';
|
||||
|
||||
@@ -53,9 +53,9 @@ $lang->task->type = '任務類型';
|
||||
$lang->task->pri = '優先順序';
|
||||
$lang->task->mailto = '抄送給';
|
||||
$lang->task->estimate = '最初預計';
|
||||
$lang->task->estimateAB = '預';
|
||||
$lang->task->estimateAB = '預計';
|
||||
$lang->task->left = '預計剩餘';
|
||||
$lang->task->leftAB = '剩';
|
||||
$lang->task->leftAB = '剩餘';
|
||||
$lang->task->consumed = '總消耗';
|
||||
$lang->task->consumedAB = '消耗';
|
||||
$lang->task->hour = '小時';
|
||||
|
||||
+34
-13
@@ -2073,18 +2073,30 @@ class taskModel extends model
|
||||
*/
|
||||
public function printCell($col, $task, $users, $browseType, $branchGroups, $modulePairs = array(), $mode = 'datatable', $child = false)
|
||||
{
|
||||
$canBatchEdit = common::hasPriv('task', 'batchEdit', !empty($task) ? $task : null);
|
||||
$canBatchClose = (common::hasPriv('task', 'batchClose', !empty($task) ? $task : null) && strtolower($browseType) != 'closedBy');
|
||||
$canBatchCancel = common::hasPriv('task', 'batchCancel', !empty($task) ? $task : null);
|
||||
$canBatchChangeModule = common::hasPriv('task', 'batchChangeModule', !empty($task) ? $task : null);
|
||||
$canBatchAssignTo = common::hasPriv('task', 'batchAssignTo', !empty($task) ? $task : null);
|
||||
|
||||
$canBatchAction = $canBatchEdit or $canBatchClose or $canBatchCancel or $canBatchChangeModule or $canBatchAssignTo;
|
||||
|
||||
$canView = common::hasPriv('task', 'view');
|
||||
$taskLink = helper::createLink('task', 'view', "taskID=$task->id");
|
||||
$account = $this->app->user->account;
|
||||
$id = $col->id;
|
||||
if($col->show)
|
||||
{
|
||||
$class = '';
|
||||
$class = "c-{$id}";
|
||||
if($id == 'status') $class .= ' task-' . $task->status;
|
||||
if($id == 'id') $class .= ' cell-id';
|
||||
if($id == 'name') $class .= ' text-left';
|
||||
if($id == 'deadline' and isset($task->delay)) $class .= ' delayed';
|
||||
if($id == 'assignedTo' && $task->assignedTo == $account) $class .= ' red';
|
||||
if($id == 'assignedTo')
|
||||
{
|
||||
$class .= ' c-actions';
|
||||
if($task->assignedTo == $account) $class .= ' red';
|
||||
}
|
||||
|
||||
$title = '';
|
||||
if($id == 'name') $title = " title='{$task->name}'";
|
||||
@@ -2094,12 +2106,14 @@ class taskModel extends model
|
||||
switch($id)
|
||||
{
|
||||
case 'id':
|
||||
if($mode == 'table') echo "<input type='checkbox' name='taskIDList[{$task->id}]' value='{$task->id}'/> ";
|
||||
echo $canView ? html::a($taskLink, sprintf('%03d', $task->id)) : sprintf('%03d', $task->id);
|
||||
echo "<div class='checkbox-primary'>";
|
||||
if($mode == 'table' && $canBatchAction) echo "<input type='checkbox' name='taskIDList[{$task->id}]' value='{$task->id}'/><label></label>";
|
||||
echo sprintf('%03d', $task->id);
|
||||
echo '</div>';
|
||||
break;
|
||||
case 'pri':
|
||||
echo "<span class='pri" . zget($this->lang->task->priList, $task->pri) . "'>";
|
||||
echo $task->pri == '0' ? '' : zget($this->lang->task->priList, $task->pri);
|
||||
echo "<span class='label-pri label-pri-" . $task->pri . "'>";
|
||||
echo zget($this->lang->task->priList, $task->pri, $task->pri);
|
||||
echo "</span>";
|
||||
break;
|
||||
case 'name':
|
||||
@@ -2146,6 +2160,7 @@ class taskModel extends model
|
||||
echo $task->realStarted;
|
||||
break;
|
||||
case 'assignedTo':
|
||||
common::printIcon('task', 'assignTo', "projectID=$task->project&taskID=$task->id", $task, 'list', '', '', 'iframe', true);
|
||||
echo zget($users, $task->assignedTo);
|
||||
break;
|
||||
case 'assignedDate':
|
||||
@@ -2201,16 +2216,22 @@ class taskModel extends model
|
||||
echo substr($task->lastEditedDate, 5, 11);
|
||||
break;
|
||||
case 'actions':
|
||||
common::printIcon('task', 'assignTo', "projectID=$task->project&taskID=$task->id", $task, 'list', '', '', 'iframe', true);
|
||||
common::printIcon('task', 'start', "taskID=$task->id", $task, 'list', '', '', 'iframe', true);
|
||||
|
||||
if($browseType == 'needconfirm')
|
||||
if($task->storyStatus == 'changed' or $browseType == 'needconfirm')
|
||||
{
|
||||
$this->lang->task->confirmStoryChange = $this->lang->confirm;
|
||||
common::printIcon('task', 'confirmStoryChange', "taskid=$task->id", '', 'list', '', 'hiddenwin');
|
||||
common::printIcon('task', 'confirmStoryChange', "taskid=$task->id", '', 'list', '', 'hiddenwin', 'btn-wide');
|
||||
break;
|
||||
}
|
||||
common::printIcon('task', 'finish', "taskID=$task->id", $task, 'list', '', '', 'iframe', true);
|
||||
if($task->status == 'finished') common::printIcon('task', 'close', "taskID=$task->id", $task, 'list', '', '', 'iframe', true);
|
||||
|
||||
echo "<div class='more'>";
|
||||
if($task->status == 'wait') common::printIcon('task', 'finish', "taskID=$task->id", $task, 'list', '', '', 'iframe', true);
|
||||
echo "</div>";
|
||||
|
||||
if($task->status == 'wait') common::printIcon('task', 'start', "taskID=$task->id", $task, 'list', '', '', 'iframe', true);
|
||||
if($task->status == 'pause') common::printIcon('task', 'restart', "taskID=$task->id", $task, 'list', '', '', 'iframe', true);
|
||||
if($task->status == 'done' or $task->status == 'cancel' or $task->status == 'closed') common::printIcon('task', 'close', "taskID=$task->id", $task, 'list', '', '', 'iframe', true);
|
||||
if($task->status == 'doing') common::printIcon('task', 'finish', "taskID=$task->id", $task, 'list', '', '', 'iframe', true);
|
||||
|
||||
common::printIcon('task', 'recordEstimate', "taskID=$task->id", $task, 'list', 'time', '', 'iframe', true);
|
||||
common::printIcon('task', 'edit', "taskID=$task->id", $task, 'list');
|
||||
if(empty($task->team) or empty($task->children))
|
||||
|
||||
Reference in New Issue
Block a user