* Improve project module.
This commit is contained in:
@@ -122,7 +122,7 @@ $lang->common->common = '公有模块';
|
||||
/* 主导航菜单。*/
|
||||
$lang->mainNav = new stdclass();
|
||||
$lang->mainNav->my = '<i class="icon icon-menu-my"></i> 地盘|my|index|';
|
||||
$lang->mainNav->program = '<i class="icon icon-menu-project"></i> 项目集|program|pgmindex|';
|
||||
$lang->mainNav->program = '<i class="icon icon-stack"></i> 项目集|program|pgmindex|';
|
||||
$lang->mainNav->product = '<i class="icon icon-menu-project"></i> 产品|product|productlist|';
|
||||
$lang->mainNav->project = '<i class="icon icon-menu-doc"></i> 项目|program|prjbrowse|';
|
||||
$lang->mainNav->system = '<i class="icon icon-menu-users"></i> 组织|custom|estimate|';
|
||||
|
||||
@@ -532,7 +532,7 @@ class commonModel extends model
|
||||
}
|
||||
|
||||
echo '<li><hr></li>';
|
||||
echo '<li><span><i class="icon icon-menu-doc"></i>' . $lang->recent . '</span></li>';
|
||||
echo '<li><span><i class="icon icon-menu-doc"></i> ' . $lang->recent . '</span></li>';
|
||||
echo '<li>' . html::a(helper::createLink('project', 'view', 'project=1'), 'zentao001') . '</li>';
|
||||
echo '<li>' . html::a(helper::createLink('project', 'view', 'project=1'), 'zentao001') . '</li>';
|
||||
echo '<li>' . html::a(helper::createLink('project', 'view', 'project=1'), 'zentao001') . '</li>';
|
||||
|
||||
@@ -71,6 +71,7 @@ class company extends control
|
||||
|
||||
/* Get users. */
|
||||
$users = $this->company->getUsers($browseType, $type, $queryID, $deptID, $sort, $pager);
|
||||
|
||||
/* Remove passwd. */
|
||||
foreach($users as $user) unset($user->password);
|
||||
|
||||
|
||||
@@ -96,7 +96,7 @@ class program extends control
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a program.
|
||||
* Create a project.
|
||||
*
|
||||
* @param string $template
|
||||
* @param int $parentProgramID
|
||||
@@ -498,7 +498,7 @@ class program extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function start($projectID)
|
||||
public function PRJStart($projectID)
|
||||
{
|
||||
$project = $this->project->getByID($projectID);
|
||||
$projectID = $project->id;
|
||||
@@ -549,13 +549,13 @@ class program extends control
|
||||
}
|
||||
|
||||
/**
|
||||
* Suspend a program.
|
||||
* Suspend a project.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function suspend($projectID)
|
||||
public function PRJSuspend($projectID)
|
||||
{
|
||||
$project = $this->project->getByID($projectID);
|
||||
|
||||
@@ -624,13 +624,13 @@ class program extends control
|
||||
}
|
||||
|
||||
/**
|
||||
* Close a program.
|
||||
* Close a project.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function close($projectID)
|
||||
public function PRJClose($projectID)
|
||||
{
|
||||
$project = $this->project->getByID($projectID);
|
||||
|
||||
@@ -787,19 +787,64 @@ class program extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function PRJBrowse($programID = 0, $browseType = 'all', $param = 0, $orderBy = 'order_desc', $recTotal = 0, $recPerPage = 15, $pageID = 1)
|
||||
public function PRJBrowse($programID = 0, $browseType = 'doing', $param = 0, $orderBy = 'order_desc', $recTotal = 0, $recPerPage = 15, $pageID = 1)
|
||||
{
|
||||
$this->lang->navGroup->program = 'project';
|
||||
|
||||
/* Load pager and get tasks. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = new pager($recTotal, $recPerPage, $pageID);
|
||||
|
||||
$this->view->projectStats = array();
|
||||
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
|
||||
$moduleStatus = $this->loadModel('setting')->getItem('owner=' . $this->app->user->account . '&module=program&key=PRJModuleStatus');
|
||||
$projectStats = $this->program->getPRJList($programID, $browseType, $queryID, $orderBy, $pager, $moduleStatus);
|
||||
|
||||
$this->view->title = $this->lang->program->PRJBrowse;
|
||||
$this->view->position[] = $this->lang->program->PRJBrowse;
|
||||
|
||||
$this->view->projectStats = $projectStats;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->programID = $programID;
|
||||
$this->view->program = $this->program->getPRJByID($programID);
|
||||
$this->view->PRJTree = $this->program->getPRJTreeMenu(0, array('programmodel', 'createPRJManageLink'));
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter|pofirst|nodeleted');
|
||||
$this->view->browseType = $browseType;
|
||||
$this->view->param = $param;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->stack = '';
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set module display mode.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setPRJModule()
|
||||
{
|
||||
$this->loadModel('setting');
|
||||
if($_POST)
|
||||
{
|
||||
$PRJModuleStatus = $this->post->PRJModuleStatus;
|
||||
$this->setting->setItem($this->app->user->account . '.program.PRJModuleStatus', $PRJModuleStatus);
|
||||
die(js::reload('parent.parent'));
|
||||
}
|
||||
|
||||
$status = $this->setting->getItem('owner=' . $this->app->user->account . '&module=program&key=PRJModuleStatus');
|
||||
$this->view->status = empty($status) ? '0' : $status;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a project.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param varchar $confirm
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function PRJDelete($projectID, $confirm = 'no')
|
||||
{
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
.side-col .detail-content{padding-left: 10px; margin-top: 0px}
|
||||
.tree li.has-list.open:before {border-left: none;}
|
||||
#projectTree li {padding: 0 0 0 8px;}
|
||||
#projectTree li.has-list {padding-left: 20px;}
|
||||
#projectTree li > a {display: block; padding: 5px 0; border-radius: 2px; padding-left: 6px; height: 30px;}
|
||||
#projectTree li > a > span {display: inline-block;}
|
||||
#projectTree li > a > span + span {margin-left: 8px;}
|
||||
#projectTree li.selected > a {background-color: #E8F3FC;}
|
||||
#projectTree li.selected > a > span.title {color: #006AF1;}
|
||||
#projectTree .label-id {border-color: #cbd0db; color: #7d8599}
|
||||
#projectTree .label.label-type {background: #fff; border: 1px solid #7d8599; color:#7d8599}
|
||||
|
||||
#projectTree li > a > span.title {color: #3C4353; white-space: nowrap; max-width: 60%; overflow: hidden; text-overflow: ellipsis; vertical-align: middle;}
|
||||
#projectTree li > a > span.user {color: #838a9d;}
|
||||
#projectTree li > a > span.user > .icon-person {font-size: 14px; position: relative; top: -1px; color: #a6aab8}
|
||||
|
||||
#projectTree li > .list-toggle {transform: rotate(0deg); width: 16px; height: 16px; border: 4px solid #a6aab8; border-radius: 2px; top: 7px;}
|
||||
#projectTree li > .list-toggle:before {content: ' '; display: block; position: absolute; border: 1px solid #a6aab8; top: 2px; left: -3px; right: -3px; bottom: 2px; min-width: 0; transition: all .2s;}
|
||||
#projectTree li > .list-toggle:hover:before,
|
||||
#projectTree li > .list-toggle:hover {border-color: #006AF1;}
|
||||
#projectTree li.open > .list-toggle {width: 12px; height: 12px; top: 9px; background-color: #a6aab8; border-width: 3px; left: 3px;}
|
||||
#projectTree li.open > .list-toggle:before {border: none; height: 2px; width: 6px; left: 0; top: 2px; background: #fff;}
|
||||
#projectTree li.open > .list-toggle:hover {background: #006AF1;}
|
||||
|
||||
#projectTree ul > li:after {display: block; position: absolute; content: ' '; border-top: 2px solid #cbd0db; top: 14px; left: -12px; z-index: 1; width: 10px;}
|
||||
#projectTree ul > li:before,
|
||||
#projectTree ul > li.has-list:before {background: none; content: ' '; display: block; position: absolute; width: auto; height: auto; border: none; border-left: 2px solid #cbd0db; top: -13px; bottom: 12px; left: -12px;}
|
||||
#projectTree ul > li:last-child:before {bottom: auto; height: 29px;}
|
||||
#projectTree ul > li:first-child:before {top: -9px;}
|
||||
#projectTree ul > li.has-list:first-child:before {top: -13px;}
|
||||
#projectTree ul > li.tree-single-item:before {height: 23px;}
|
||||
#projectTree ul > li.has-list:after {width: 14px;}
|
||||
#projectTree ul > li.item-meas a.selected{color: #0c64eb;}
|
||||
.side-col {padding-right: 20px; width: 18%}
|
||||
#sidebar>.cell {width: 100%;}
|
||||
+69
-69
@@ -1,41 +1,41 @@
|
||||
<?php
|
||||
/* Actions. */
|
||||
$lang->program->index = 'Program';
|
||||
$lang->program->create = 'Create Program';
|
||||
$lang->program->createGuide = 'Select Template';
|
||||
$lang->program->edit = 'Edit';
|
||||
$lang->program->browse = 'Programs';
|
||||
$lang->program->all = 'All';
|
||||
$lang->program->start = 'Start';
|
||||
$lang->program->finish = 'Finish';
|
||||
$lang->program->suspend = 'Suspend';
|
||||
$lang->program->delete = 'Delete';
|
||||
$lang->program->close = 'Close';
|
||||
$lang->program->activate = 'Activate';
|
||||
$lang->program->group = 'Privilege Group';
|
||||
$lang->program->createGroup = 'Create Group';
|
||||
$lang->program->editGroup = 'Edit Group';
|
||||
$lang->program->copyGroup = 'Copy Group';
|
||||
$lang->program->manageView = 'Manage View';
|
||||
$lang->program->managePriv = 'Manage Privilege';
|
||||
$lang->program->manageMembers = 'Manage Team';
|
||||
$lang->program->export = 'Export';
|
||||
$lang->program->manageGroupMember = 'Manage Group';
|
||||
$lang->program->index = 'Program';
|
||||
$lang->program->PRJCreate = 'Create Program';
|
||||
$lang->program->PRJCreateGuide = 'Select Template';
|
||||
$lang->program->PRJEdit = 'Edit';
|
||||
$lang->program->PRJBrowse = 'Programs';
|
||||
$lang->program->PRJAll = 'All';
|
||||
$lang->program->PRJStart = 'Start';
|
||||
$lang->program->PRJFinish = 'Finish';
|
||||
$lang->program->PRJSuspend = 'Suspend';
|
||||
$lang->program->PRJDelete = 'Delete';
|
||||
$lang->program->PRJClose = 'Close';
|
||||
$lang->program->PRJActivate = 'Activate';
|
||||
$lang->program->PRJGroup = 'Privilege Group';
|
||||
$lang->program->PRJCreateGroup = 'Create Group';
|
||||
$lang->program->PRJEditGroup = 'Edit Group';
|
||||
$lang->program->PRJCopyGroup = 'Copy Group';
|
||||
$lang->program->PRJManageView = 'Manage View';
|
||||
$lang->program->PRJManagePriv = 'Manage Privilege';
|
||||
$lang->program->PRJManageMembers = 'Manage Team';
|
||||
$lang->program->PRJExport = 'Export';
|
||||
$lang->program->PRJManageGroupMember = 'Manage Group';
|
||||
|
||||
/* Fields. */
|
||||
$lang->program->common = 'Program';
|
||||
$lang->program->PRJCommon = 'Program';
|
||||
$lang->program->stage = 'Stage';
|
||||
$lang->program->name = 'Name';
|
||||
$lang->program->template = 'Template';
|
||||
$lang->program->category = 'Category';
|
||||
$lang->program->desc = 'Description';
|
||||
$lang->program->code = 'Code';
|
||||
$lang->program->copy = 'Copy';
|
||||
$lang->program->PRJName = 'Name';
|
||||
$lang->program->PRJTemplate = 'Template';
|
||||
$lang->program->PRJCategory = 'Category';
|
||||
$lang->program->PRJDesc = 'Description';
|
||||
$lang->program->PRJCode = 'Code';
|
||||
$lang->program->PRJCopy = 'Copy';
|
||||
$lang->program->begin = 'Begin';
|
||||
$lang->program->end = 'End';
|
||||
$lang->program->status = 'Status';
|
||||
$lang->program->PM = 'Manager';
|
||||
$lang->program->budget = 'Budget';
|
||||
$lang->program->PRJStatus = 'Status';
|
||||
$lang->program->PRJPM = 'Manager';
|
||||
$lang->program->PRJBudget = 'Budget';
|
||||
$lang->program->dateRange = 'Duration';
|
||||
$lang->program->to = ' to ';
|
||||
$lang->program->realEnd = 'Actual End';
|
||||
@@ -46,26 +46,26 @@ $lang->program->mine = 'My';
|
||||
$lang->program->setPlanduration = 'Set Duration';
|
||||
$lang->program->privway = 'Access Control';
|
||||
$lang->program->durationEstimation = 'Estimated Workload';
|
||||
$lang->program->progress = 'Program Progress';
|
||||
$lang->program->PRJProgress = 'Program Progress';
|
||||
$lang->program->teamCount = 'Man';
|
||||
$lang->program->leftStories = 'Left Stories';
|
||||
$lang->program->leftTasks = 'Left Tasks';
|
||||
$lang->program->leftBugs = 'Left Bugs';
|
||||
$lang->program->children = 'Child Project';
|
||||
$lang->program->parent = 'Parent Project';
|
||||
$lang->program->PRJChildren = 'Child Project';
|
||||
$lang->program->PRJParent = 'Parent Project';
|
||||
$lang->program->allStories = 'All Stories';
|
||||
$lang->program->doneStories = 'Finished Stories';
|
||||
$lang->program->leftStories = 'Left Stories';
|
||||
$lang->program->allInput = 'Total Input';
|
||||
$lang->program->weekly = 'Program Weekly';
|
||||
$lang->program->PRJAllInput = 'Total Input';
|
||||
$lang->program->PRJWeekly = 'Program Weekly';
|
||||
$lang->program->pv = 'PV';
|
||||
$lang->program->ev = 'EV';
|
||||
$lang->program->sv = 'SV%';
|
||||
$lang->program->ac = 'AC';
|
||||
$lang->program->cv = 'CV%';
|
||||
$lang->program->pm = 'PM';
|
||||
$lang->program->teamCount = 'Team';
|
||||
$lang->program->longTime = 'Long-Term Project';
|
||||
$lang->program->PRJPm = 'PM';
|
||||
$lang->program->PRJTeamCount = 'Team';
|
||||
$lang->program->PRJLongTime = 'Long-Term Project';
|
||||
|
||||
$lang->program->unitList[''] = '';
|
||||
$lang->program->unitList['yuan'] = 'Yuan';
|
||||
@@ -83,40 +83,40 @@ $lang->program->featureBar['wait'] = 'Waiting';
|
||||
$lang->program->featureBar['suspended'] = 'Suspended';
|
||||
$lang->program->featureBar['closed'] = 'Closed';
|
||||
|
||||
$lang->program->aclList['open'] = "Default (Users who can visit {$lang->projectCommon} can access it)";
|
||||
$lang->program->aclList['private'] = 'Private (For team members only)';
|
||||
$lang->program->aclList['custom'] = 'Custom (Team members and the whitelist users can access it)';
|
||||
$lang->program->PRJAclList['open'] = "Default (Users who can visit {$lang->projectCommon} can access it)";
|
||||
$lang->program->PRJAclList['private'] = 'Private (For team members only)';
|
||||
$lang->program->PRJAclList['custom'] = 'Custom (Team members and the whitelist users can access it)';
|
||||
|
||||
$lang->program->privwayList['extend'] = 'Inherit ( program privilege and company privilege)';
|
||||
$lang->program->privwayList['reset'] = 'Reset (program privilege only)';
|
||||
$lang->program->PRJPrivwayList['extend'] = 'Inherit ( program privilege and company privilege)';
|
||||
$lang->program->PRJPrivwayList['reset'] = 'Reset (program privilege only)';
|
||||
|
||||
$lang->program->statusList['wait'] = 'Wait';
|
||||
$lang->program->statusList['doing'] = 'Doing';
|
||||
$lang->program->statusList['suspended'] = 'Suspended';
|
||||
$lang->program->statusList['closed'] = 'Closed';
|
||||
|
||||
$lang->program->noProgram = 'No program';
|
||||
$lang->program->accessDenied = 'Access denied to this program';
|
||||
$lang->program->chooseProgramType = 'Select management type';
|
||||
$lang->program->nextStep = 'Next step';
|
||||
$lang->program->hoursUnit = '%s hours';
|
||||
$lang->program->membersUnit = '%s men';
|
||||
$lang->program->lastIteration = 'Recent iterations';
|
||||
$lang->program->ongoingStage = 'Ongoing stage';
|
||||
$lang->program->scrum = 'Scrum';
|
||||
$lang->program->scrumTitle = 'Scrum ALM';
|
||||
$lang->program->waterfall = 'CMMI';
|
||||
$lang->program->waterfallTitle = 'CMMI Management';
|
||||
$lang->program->cannotCreateChild = 'The project has contents, so you cannot add a child project. You can create a parent project for this one and then add a child project for the parent project.';
|
||||
$lang->program->hasChildren = 'This project has a child project, so it cannot be deleted.';
|
||||
$lang->program->confirmDelete = 'Do you want to delete this project?';
|
||||
$lang->program->emptyPM = 'No manager';
|
||||
$lang->program->cannotChangeToCat = "The project has contents, so you cannot it to a parent project.";
|
||||
$lang->program->cannotCancelCat = "There are child projects of this project. You cannot cancel the parent project mark.";
|
||||
$lang->program->parentBeginEnd = "The begin and end date of the parent project: %s ~ %s";
|
||||
$lang->program->parentBudget = "The budget of the parent project: %s";
|
||||
$lang->program->beginLetterParent = "The begin date of the parent project: %s. It cannot be < the begin date of its parent project.";
|
||||
$lang->program->endGreaterParent = "The end date of the parent project: %s. It cannot be > the end date of its parent project.";
|
||||
$lang->program->beginGreateChild = "The earliest begin date of a child project: %s. The begin date of its parent project cannot be > the earliest begin date of a child project.";
|
||||
$lang->program->endLetterChild = "The latest end date of a child project: %s. The end date of its parent project cannot be < the latest end date of child project.";
|
||||
$lang->program->childLongTime = "There are long-term projects in the child project, and the parent project should also be a long-term project.";
|
||||
$lang->program->PRJNoProgram = 'No program';
|
||||
$lang->program->PRJAccessDenied = 'Access denied to this program';
|
||||
$lang->program->PRJChooseProgramType = 'Select management type';
|
||||
$lang->program->nextStep = 'Next step';
|
||||
$lang->program->hoursUnit = '%s hours';
|
||||
$lang->program->membersUnit = '%s men';
|
||||
$lang->program->lastIteration = 'Recent iterations';
|
||||
$lang->program->ongoingStage = 'Ongoing stage';
|
||||
$lang->program->scrum = 'Scrum';
|
||||
$lang->program->scrumTitle = 'Scrum ALM';
|
||||
$lang->program->waterfall = 'CMMI';
|
||||
$lang->program->waterfallTitle = 'CMMI Management';
|
||||
$lang->program->PRJCannotCreateChild = 'The project has contents, so you cannot add a child project. You can create a parent project for this one and then add a child project for the parent project.';
|
||||
$lang->program->PRJHasChildren = 'This project has a child project, so it cannot be deleted.';
|
||||
$lang->program->PRJConfirmDelete = 'Do you want to delete this project?';
|
||||
$lang->program->emptyPM = 'No manager';
|
||||
$lang->program->PRJCannotChangeToCat = "The project has contents, so you cannot it to a parent project.";
|
||||
$lang->program->PRJCannotCancelCat = "There are child projects of this project. You cannot cancel the parent project mark.";
|
||||
$lang->program->PRJParentBeginEnd = "The begin and end date of the parent project: %s ~ %s";
|
||||
$lang->program->PRJParentBudget = "The budget of the parent project: %s";
|
||||
$lang->program->PRJBeginLetterParent = "The begin date of the parent project: %s. It cannot be < the begin date of its parent project.";
|
||||
$lang->program->PRJEndGreaterParent = "The end date of the parent project: %s. It cannot be > the end date of its parent project.";
|
||||
$lang->program->PRJBeginGreateChild = "The earliest begin date of a child project: %s. The begin date of its parent project cannot be > the earliest begin date of a child project.";
|
||||
$lang->program->PRJEndLetterChild = "The latest end date of a child project: %s. The end date of its parent project cannot be < the latest end date of child project.";
|
||||
$lang->program->PRJChildLongTime = "There are long-term projects in the child project, and the parent project should also be a long-term project.";
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
<?php
|
||||
/* Actions. */
|
||||
$lang->program->index = '仪表盘';
|
||||
$lang->program->PRJCreate = '创建项目';
|
||||
$lang->program->PRJCreateGuide = '选择项目模板';
|
||||
$lang->program->PRJEdit = '编辑项目';
|
||||
$lang->program->PRJBatchEdit = '批量编辑';
|
||||
$lang->program->PRJBrowse = '项目列表';
|
||||
$lang->program->PRJAll = '所有项目';
|
||||
$lang->program->PRJStart = '启动项目';
|
||||
@@ -20,6 +22,10 @@ $lang->program->PRJManagePriv = '维护权限';
|
||||
$lang->program->PRJManageMembers = '项目团队';
|
||||
$lang->program->PRJExport = '导出';
|
||||
$lang->program->PRJManageGroupMember = '维护分组用户';
|
||||
$lang->program->PGMList = '项目集';
|
||||
$lang->program->PGMCreate = '创建项目集';
|
||||
$lang->program->PRJModuleSetting = '模块设置';
|
||||
$lang->program->PRJModuleOpen = '列表页是否显示模块名';
|
||||
|
||||
/* Fields. */
|
||||
$lang->program->common = '项目';
|
||||
@@ -120,6 +126,36 @@ $lang->program->beginGreateChild = "子项目的最小开始日期:%s,父
|
||||
$lang->program->endLetterChild = "子项目的最大完成日期:%s,父项目的完成日期不能小于子项目的最大完成日期";
|
||||
$lang->program->childLongTime = "子项目中有长期项目,父项目也应该是长期项目";
|
||||
|
||||
$lang->program->PRJModuleStatus['0'] = '不显示';
|
||||
$lang->program->PRJModuleStatus['base'] = '只显示一级模块';
|
||||
$lang->program->PRJModuleStatus['end'] = '只显示最后一级模块';
|
||||
|
||||
$lang->program->PRJNoProgram = '暂时没有项目';
|
||||
$lang->program->PRJAccessDenied = '您无权访问该项目!';
|
||||
$lang->program->PRJChooseProgramType = '选择项目管理方式';
|
||||
$lang->program->nextStep = '下一步';
|
||||
$lang->program->hoursUnit = '%s工时';
|
||||
$lang->program->membersUnit = '%s人';
|
||||
$lang->program->lastIteration = '近期迭代';
|
||||
$lang->program->ongoingStage = '进行中的阶段';
|
||||
$lang->program->scrum = 'Scrum';
|
||||
$lang->program->scrumTitle = '敏捷开发全流程项目管理';
|
||||
$lang->program->waterfall = '瀑布';
|
||||
$lang->program->waterfallTitle = '瀑布式项目管理';
|
||||
$lang->program->PRJCannotCreateChild = '该项目已经有实际的内容,无法直接添加子项目。您可以为当前项目创建一个父项目,然后在新的父项目下面添加子项目。';
|
||||
$lang->program->PRJHasChildren = '该项目有子项目存在,不能删除。';
|
||||
$lang->program->PRJConfirmDelete = "您确定删除项目[%s]吗?";
|
||||
$lang->program->emptyPM = '暂无';
|
||||
$lang->program->PRJCannotChangeToCat = "该项目已经有实际的内容,无法修改为父项目";
|
||||
$lang->program->PRJCannotCancelCat = "该项目下已经有子项目,无法取消父项目标记";
|
||||
$lang->program->PRJParentBeginEnd = "父项目起止时间:%s ~ %s";
|
||||
$lang->program->PRJParentBudget = "父项目预算:%s";
|
||||
$lang->program->PRJBeginLetterParent = "父项目的开始日期:%s,开始日期不能小于父项目的开始日期";
|
||||
$lang->program->PRJEndGreaterParent = "父项目的完成日期:%s,完成日期不能大于父项目的完成日期";
|
||||
$lang->program->PRJBeginGreateChild = "子项目的最小开始日期:%s,父项目的开始日期不能大于子项目的最小开始日期";
|
||||
$lang->program->PRJEndLetterChild = "子项目的最大完成日期:%s,父项目的完成日期不能小于子项目的最大完成日期";
|
||||
$lang->program->PRJChildLongTime = "子项目中有长期项目,父项目也应该是长期项目";
|
||||
|
||||
/* Actions. */
|
||||
$lang->program->PGMIndex = '仪表盘';
|
||||
$lang->program->PGMCreate = '添加项目集';
|
||||
|
||||
@@ -658,6 +658,12 @@ class programModel extends model
|
||||
if($action == 'pgmsuspend') return $program->status == 'wait' or $program->status == 'doing';
|
||||
if($action == 'pgmactivate') return $program->status == 'done';
|
||||
|
||||
if($action == 'prjstart') return $program->status == 'wait' or $program->status == 'suspended';
|
||||
if($action == 'prjfinish') return $program->status == 'wait' or $program->status == 'doing';
|
||||
if($action == 'prjclose') return $program->status != 'closed';
|
||||
if($action == 'prjsuspend') return $program->status == 'wait' or $program->status == 'doing';
|
||||
if($action == 'prjactivate') return $program->status == 'done';
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -809,4 +815,151 @@ class programModel extends model
|
||||
|
||||
return !dao::isError();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get project list data.
|
||||
*
|
||||
* @param int $programID
|
||||
* @param string $browseType
|
||||
* @param string $queryID
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @param int $moduleStatus
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function getPRJList($programID = 0, $browseType = 'all', $queryID = 0, $orderBy = 'id_desc', $pager = null, $moduleStatus = 0)
|
||||
{
|
||||
$projectList = $this->dao->select('*')->from(TABLE_PROJECT)
|
||||
->where('type')->eq('project')
|
||||
->beginIF($browseType != 'all')->andWhere('status')->eq($browseType)->fi()
|
||||
->beginIF($programID)->andWhere('program')->eq($programID)->fi()
|
||||
->andWhere('deleted')->eq('0')
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchAll('id');
|
||||
|
||||
/* Determine whether the program name is displayed. */
|
||||
if($moduleStatus)
|
||||
{
|
||||
$programList = array();
|
||||
foreach($projectList as $id => $project)
|
||||
{
|
||||
$path = explode(',', $project->path);
|
||||
$path = array_filter($path);
|
||||
array_pop($path);
|
||||
$programID = $moduleStatus == 'base' ? current($path) : end($path);
|
||||
if(empty($path) || $programID == $id) continue;
|
||||
|
||||
$program = isset($programList[$programID]) ? $programList[$programID] : $this->getPRJParams($programID);
|
||||
$programList[$programID] = $program;
|
||||
|
||||
$projectList[$id]->name = $program->name . '/' . $projectList[$id]->name;
|
||||
}
|
||||
}
|
||||
return $projectList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a project by id.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getPRJByID($projectID)
|
||||
{
|
||||
return $this->dao->findById($projectID)->from(TABLE_PROJECT)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get project name.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getPRJParams($projectID = 0)
|
||||
{
|
||||
return $this->dao->select('id,name')->from(TABLE_PROJECT)->where('id')->eq($projectID)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the query.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function buildPRJMenuQuery($projectID)
|
||||
{
|
||||
$rootProject = $this->getPRJByID($projectID);
|
||||
if(!$rootProject)
|
||||
{
|
||||
$rootProject = new stdclass();
|
||||
$rootProject->path = '';
|
||||
}
|
||||
|
||||
return $this->dao->select('*')->from(TABLE_PROJECT)
|
||||
->beginIF($projectID > 0)->where('path')->like($rootProject->path . '%')->fi()
|
||||
->orderBy('grade desc, `order`')
|
||||
->get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the treemenu of project.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param string $userFunc
|
||||
* @param int $param
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getPRJTreeMenu($projectID = 0, $userFunc, $param = 0)
|
||||
{
|
||||
$projectMenu = array();
|
||||
$stmt = $this->dbh->query($this->buildPRJMenuQuery($projectID));
|
||||
while($project = $stmt->fetch())
|
||||
{
|
||||
$linkHtml = call_user_func($userFunc, $project, $param);
|
||||
|
||||
if(isset($projectMenu[$project->id]) and !empty($projectMenu[$project->id]))
|
||||
{
|
||||
if(!isset($projectMenu[$project->parent])) $projectMenu[$project->parent] = '';
|
||||
$projectMenu[$project->parent] .= "<li>$linkHtml";
|
||||
$projectMenu[$project->parent] .= "<ul>".$projectMenu[$project->id]."</ul>\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
if(isset($projectMenu[$project->parent]) and !empty($projectMenu[$project->parent]))
|
||||
{
|
||||
$projectMenu[$project->parent] .= "<li>$linkHtml\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$projectMenu[$project->parent] = "<li>$linkHtml\n";
|
||||
}
|
||||
}
|
||||
$projectMenu[$project->parent] .= "</li>\n";
|
||||
}
|
||||
|
||||
krsort($projectMenu);
|
||||
$projectMenu = array_pop($projectMenu);
|
||||
$lastMenu = "<ul class='tree' data-ride='tree' id='projectTree' data-name='tree-project'>{$projectMenu}</ul>\n";
|
||||
return $lastMenu;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the manage link.
|
||||
*
|
||||
* @param int $project
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function createPRJManageLink($project)
|
||||
{
|
||||
$link = $project->type == 'program' ? helper::createLink('program', 'PRJbrowse', "programID={$project->id}") : helper::createLink('project', 'browse', "projectID={$project->id}");
|
||||
$icon = $project->type == 'program' ? '<i class="icon icon-stack"></i> ' : '<i class="icon icon-menu-doc"></i> ';
|
||||
return html::a($link, $icon . $project->name, '_self', "id=project{$project->id} title='{$project->name}' class='text-ellipsis'");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,122 +10,94 @@
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/sortable.html.php';?>
|
||||
<?php
|
||||
js::set('projectID', $programID);
|
||||
js::set('browseType', $browseType);
|
||||
?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div id="sidebarHeader">
|
||||
<div class="title">
|
||||
<?php echo empty($program) ? $lang->project->stack : $program->name;?>
|
||||
<?php if($programID) echo html::a(inLink('productlist', 'programID=0'), "<i class='icon icon-sm icon-close'></i>", '', 'class="text-muted"');?>
|
||||
<?php echo empty($program) ? $lang->program->PGMList : $program->name;?>
|
||||
<?php if($programID) echo html::a(inLink('PRJBrowse', 'programID=0'), "<i class='icon icon-sm icon-close'></i>", '', 'class="text-muted"');?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php foreach($lang->project->featureBar['all'] as $key => $label):?>
|
||||
<?php echo html::a(inlink("all", "programID=$programID&browseType=$browseType&orderBy=$orderBy"), "<span class='text'>{$label}</span>", '', "class='btn btn-link' id='{$key}Tab'");?>
|
||||
<div class="btn-toolBar pull-left">
|
||||
<?php foreach($lang->program->featureBar as $key => $label):?>
|
||||
<?php $active = $browseType == $key ? 'btn-active-text' : '';?>
|
||||
<?php $label = "<span class='text'>$label</span>";?>
|
||||
<?php if($browseType == $key) $label .= " <span class='label label-light label-badge'>{$pager->recTotal}</span>";?>
|
||||
<?php echo html::a(inlink('PRJBrowse', "programID=$programID&browseType=$key"), $label, '', "class='btn btn-link $active'");?>
|
||||
<?php endforeach;?>
|
||||
<a id="bysearchTab" class="btn btn-link querybox-toggle"><i class="icon icon-search muted"></i> <?php echo $lang->user->search;?></a>
|
||||
<?php echo html::checkbox('mine', array('1' => $lang->program->mine), '', $this->cookie->mine ? 'checked=checked' : '');?>
|
||||
</div>
|
||||
<div class="btn-toolbar pull-right">
|
||||
<?php common::printLink('', '', "", '<i class="icon icon-plus"></i>' . $lang->project->create, '', 'class="btn btn-primary"');?>
|
||||
<?php common::printLink('program', 'PRJCreate', "programID=$programID", '<i class="icon icon-plus"></i>' . $lang->program->PRJCreate, '', 'class="btn btn-primary"');?>
|
||||
</div>
|
||||
</div>
|
||||
<div id='mainContent' class="main-row fade">
|
||||
<div id="sidebar" class="side-col">
|
||||
<div class="sidebar-toggle"><i class="icon icon-angle-left"></i></div>
|
||||
<div class="cell">
|
||||
<?php echo $stack;?>
|
||||
<?php echo $PRJTree;?>
|
||||
<div class="text-center">
|
||||
<?php common::printLink('program', 'create', '', $lang->project->createstack, '', 'class="btn btn-info btn-wide"');?>
|
||||
<?php common::printLink('program', 'setPRJModule', '', $lang->program->PRJModuleSetting, '', "class='btn btn-info btn-wide iframe'", true, true);?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main-col">
|
||||
<div id="queryBox" class="cell" data-module="projectlist"></div>
|
||||
<?php $canOrder = (common::hasPriv('project', 'updateOrder') and strpos($orderBy, 'order') !== false)?>
|
||||
<?php $canBatchEdit = common::hasPriv('project', 'batchEdit'); ?>
|
||||
<form class='main-table' id='projectsForm' method='post' action='<?php echo inLink('batchEdit', "programID=$programID");?>' data-ride='table'>
|
||||
<table class='table has-sort-head table-fixed' id='projectList'>
|
||||
<?php $vars = "programID=$programID&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}";?>
|
||||
<?php $vars = "programID=$programID&browseType=$browseType¶m=$param&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}";?>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='c-id'>
|
||||
<?php if($canBatchEdit):?>
|
||||
<div class="checkbox-primary check-all" title="<?php echo $lang->selectAll?>">
|
||||
<label></label>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?>
|
||||
</th>
|
||||
<th><?php common::printOrderLink('name', $orderBy, $vars, $lang->project->name);?></th>
|
||||
<th class='w-150px'><?php common::printOrderLink('code', $orderBy, $vars, $lang->project->code);?></th>
|
||||
<th class='thWidth'><?php common::printOrderLink('PM', $orderBy, $vars, $lang->project->PM);?></th>
|
||||
<th class='w-90px'><?php common::printOrderLink('end', $orderBy, $vars, $lang->project->end);?></th>
|
||||
<th class='w-90px'><?php common::printOrderLink('status', $orderBy, $vars, $lang->project->status);?></th>
|
||||
<th class='w-70px'><?php echo $lang->project->totalEstimate;?></th>
|
||||
<th class='w-70px'><?php echo $lang->project->totalConsumed;?></th>
|
||||
<th class='w-70px'><?php echo $lang->project->totalLeft;?></th>
|
||||
<th class='w-150px'><?php echo $lang->project->progress;?></th>
|
||||
<th class='w-100px'><?php echo $lang->project->burn;?></th>
|
||||
<?php if($canOrder):?>
|
||||
<th class='w-60px sort-default'><?php common::printOrderLink('order', $orderBy, $vars, $lang->project->orderAB);?></th>
|
||||
<?php endif;?>
|
||||
<th class='c-id'><?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th class='w-100px'><?php common::printOrderLink('code', $orderBy, $vars, $lang->program->PRJCode);?></th>
|
||||
<th><?php common::printOrderLink('name', $orderBy, $vars, $lang->program->PRJName);?></th>
|
||||
<th class='w-90px'><?php common::printOrderLink('status', $orderBy, $vars, $lang->program->PRJStatus);?></th>
|
||||
<th class='w-120px'><?php echo $lang->program->begin;?></th>
|
||||
<th class='w-120px'><?php echo $lang->program->end;?></th>
|
||||
<th class='w-80px'><?php echo $lang->program->PRJBudget;?></th>
|
||||
<th class='w-80px'><?php echo $lang->program->PRJPM;?></th>
|
||||
<th class='w-200px'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class='sortable' id='projectTableList'>
|
||||
<tbody>
|
||||
<?php foreach($projectStats as $project):?>
|
||||
<tr data-id='<?php echo $project->id ?>' data-order='<?php echo $project->order ?>'>
|
||||
<td class='c-id'>
|
||||
<?php if($canBatchEdit):?>
|
||||
<div class="checkbox-primary">
|
||||
<input type='checkbox' name='projectIDList[<?php echo $project->id;?>]' value='<?php echo $project->id;?>' />
|
||||
<label></label>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php printf('%03d', $project->id);?>
|
||||
</td>
|
||||
<td class='text-left' title='<?php echo $project->name?>'>
|
||||
<?php
|
||||
if(isset($project->delay)) echo "<span class='label label-danger label-badge'>{$lang->project->delayed}</span> ";
|
||||
echo html::a($this->createLink('project', 'view', 'project=' . $project->id), $project->name);
|
||||
?>
|
||||
</td>
|
||||
<tr>
|
||||
<td><?php printf('%03d', $project->id);?></td>
|
||||
<td class='text-left' title="<?php echo $project->code;?>"><?php echo $project->code;?></td>
|
||||
<td><?php echo zget($users, $project->PM);?></td>
|
||||
<td class='text-left' title='<?php echo $project->name?>'>
|
||||
<?php echo html::a($this->createLink('project', 'view', 'project=' . $project->id), $project->name);?>
|
||||
</td>
|
||||
<td><?php echo zget($lang->program->statusList, $project->status);?></td>
|
||||
<td><?php echo $project->begin;?></td>
|
||||
<td><?php echo $project->end;?></td>
|
||||
<?php $projectStatus = $this->processStatus('project', $project);?>
|
||||
<td class='c-status' title='<?php echo $projectStatus;?>'>
|
||||
<span class="status-project status-<?php echo $project->status?>"><?php echo $projectStatus;?></span>
|
||||
<td><?php echo $project->budget;?></td>
|
||||
<td><?php echo zget($users, $project->PM);?></td>
|
||||
<td class='text-center c-actions'>
|
||||
<?php common::printIcon('program', 'PRJGroup', "programID=$project->id", $project, 'list', 'group');?>
|
||||
<?php common::printIcon('program', 'PRJManageMembers', "programID=$project->id", $project, 'list', 'persons');?>
|
||||
<?php common::printIcon('program', 'PRJStart', "programID=$project->id", $project, 'list', 'start', '', 'iframe', true);?>
|
||||
<?php common::printIcon('program', 'PRJActivate', "programID=$project->id", $project, 'list', 'magic', '', 'iframe', true);?>
|
||||
<?php common::printIcon('program', 'PRJSuspend', "programID=$project->id", $project, 'list', 'pause', '', 'iframe', true);?>
|
||||
<?php common::printIcon('program', 'PRJClose', "programID=$project->id", $project, 'list', 'off', '', 'iframe', true);?>
|
||||
<?php if(common::hasPriv('program', 'PRJEdit')) echo html::a($this->createLink("program", "edit", "programID=$project->id"), "<i class='icon-edit'></i>", '', "class='btn' title='{$lang->edit}'");?>
|
||||
</td>
|
||||
<td><?php echo $project->hours->totalEstimate;?></td>
|
||||
<td><?php echo $project->hours->totalConsumed;?></td>
|
||||
<td><?php echo $project->hours->totalLeft;?></td>
|
||||
<td class="c-progress">
|
||||
<div class="progress progress-text-left">
|
||||
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="<?php echo $project->hours->progress;?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $project->hours->progress;?>%">
|
||||
<span class="progress-text"><?php echo $project->hours->progress;?>%</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td id='spark-<?php echo $project->id?>' class='sparkline text-left no-padding' values='<?php echo join(',', $project->burns);?>'></td>
|
||||
<?php if($canOrder):?>
|
||||
<td class='sort-handler'><i class="icon icon-move"></i></td>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php if($projectStats):?>
|
||||
<div class='table-footer'>
|
||||
<?php if($canBatchEdit):?>
|
||||
<div class="checkbox-primary check-all"><label><?php echo $lang->selectAll?></label></div>
|
||||
<div class="table-actions btn-toolbar"><?php echo html::submitButton($lang->project->batchEdit, '', 'btn');?></div>
|
||||
<?php endif;?>
|
||||
<?php if(!$canOrder and common::hasPriv('project', 'updateOrder')) echo html::a(inlink('all', "status=$status&projectID=$projectID&order=order_desc&productID=$productID&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}"), $lang->project->updateOrder, '', "class='btn'");?>
|
||||
<?php $pager->show('right', 'pagerjs');?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$("#<?php echo $browseType;?>Tab").addClass('btn-active-text');</script>
|
||||
<?php js::set('orderBy', $orderBy)?>
|
||||
<script>
|
||||
$('#project<?php echo $programID;?>').addClass('active');
|
||||
$(".tree .active").parent('li').addClass('active');
|
||||
</script>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -37,40 +37,40 @@
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='center-block'>
|
||||
<div class='main-header'>
|
||||
<h2><?php echo $lang->program->create;?></h2>
|
||||
<h2><?php echo $lang->program->PRJCreate;?></h2>
|
||||
<div class="pull-right btn-toolbar">
|
||||
<button type='button' class='btn btn-link' data-toggle='modal' data-target='#copyProjectModal'><?php echo html::icon($lang->icons['copy'], 'muted') . ' ' . $lang->program->copy;?></button>
|
||||
<button type='button' class='btn btn-link' data-toggle='modal' data-target='#copyProjectModal'><?php echo html::icon($lang->icons['copy'], 'muted') . ' ' . $lang->program->PRJCopy;?></button>
|
||||
</div>
|
||||
</div>
|
||||
<form class='form-indicator main-form form-ajax' method='post' target='hiddenwin' id='dataform'>
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<th class='w-120px'><?php echo $lang->program->template;?></th>
|
||||
<th class='w-120px'><?php echo $lang->program->PRJTemplate;?></th>
|
||||
<td><?php echo zget($lang->program->templateList, $template, '');?></td><td></td><td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->program->name;?></th>
|
||||
<th><?php echo $lang->program->PRJName;?></th>
|
||||
<td class="col-main"><?php echo html::input('name', $name, "class='form-control' required");?></td>
|
||||
<td>
|
||||
<div class="checkbox-primary">
|
||||
<input type="checkbox" name="isCat" value="1" id="isCat">
|
||||
<label for="isCat"><?php echo $lang->program->parent;?></label>
|
||||
<label for="isCat"><?php echo $lang->program->PRJParent;?></label>
|
||||
</div>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->program->code;?></th>
|
||||
<th><?php echo $lang->program->PRJCode;?></th>
|
||||
<td><?php echo html::input('code', $code, "class='form-control' required");?></td><td></td><td></td>
|
||||
</tr>
|
||||
<?php if($template == 'waterfall'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->program->category;?></th>
|
||||
<th><?php echo $lang->program->PRJCategory;?></th>
|
||||
<td><?php echo html::select('category', $lang->program->categoryList, '', "class='form-control'");?></td><td></td><td></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th><?php echo $lang->program->PM;?></th>
|
||||
<th><?php echo $lang->program->PRJPM;?></th>
|
||||
<td><?php echo html::select('PM', $pmUsers, '', "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
/**
|
||||
* The setprjmodule file of program module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author chunsheng wang <chunsheng@cnezsoft.com>
|
||||
* @package program
|
||||
* @version $Id: setprjmodule.html.php 935 2010-07-06 07:49:24Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title"><i class="icon-cog"></i><?php echo $lang->program->PRJModuleSetting;?></h4>
|
||||
</div>
|
||||
<div class="modal-body" style="max-height: 564px; overflow: visible;">
|
||||
<form class="form-condensed" method="post" target="hiddenwin">
|
||||
<table class="table table-form">
|
||||
<tbody><tr>
|
||||
<td class="w-150px"><?php echo $lang->program->PRJModuleOpen;?></td>
|
||||
<td><?php echo html::radio('PRJModuleStatus', $lang->program->PRJModuleStatus, $status);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" class="text-center"><?php echo html::submitButton();?></td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</form>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -72,8 +72,6 @@ $lang->project->effort = '日志';
|
||||
$lang->project->relatedMember = '相关成员';
|
||||
$lang->project->watermark = '由禅道导出';
|
||||
$lang->project->viewByUser = '按用户查看';
|
||||
$lang->project->stack = '项目集';
|
||||
$lang->project->createstack = '创建项目集';
|
||||
|
||||
$lang->project->start = "开始";
|
||||
$lang->project->activate = "激活";
|
||||
|
||||
@@ -45,7 +45,12 @@ a.showMoreImage:hover {opacity: 1;}
|
||||
.color-darkblue:focus{background:rgb(0,0,139)}
|
||||
.margin-l-50px{margin-left:50px;}
|
||||
|
||||
#menu{width: 96px}
|
||||
#menuNav>.nav>li>span{padding: 8px; line-height: 20px; cursor: pointer; color: #fff;}
|
||||
#morePRJ{display:none; max-height: 420px; position: fixed; bottom: 0; left: 100px; z-index: 999; background: white; padding: 20px 10px; height: 420px; margin-bottom: 35px;}
|
||||
#morePRJ .list-group{height: 400px; min-width: 150px; max-width:200px;}
|
||||
#mainMenu .pull-left .checkbox-primary {display: inline-block; margin-left: 10px;}
|
||||
#mainMenu .pull-right > .btn-group + .btn {margin-left: 10px;}
|
||||
#mainMenu .pull-right > .btn-group > .btn-icon {background: transparent;}
|
||||
#mainMenu .pull-right > .btn-group > .btn-icon:hover {background: #fff;}
|
||||
|
||||
#menu {width: 96px;}
|
||||
#menuNav> .nav > li > span {padding: 8px; line-height: 20px; cursor: pointer; color: #fff; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; -khtml-user-select: none; user-select:none;}
|
||||
#morePRJ {display:none; max-height: 420px; position: fixed; bottom: 0; left: 100px; z-index: 999; background: white; padding: 20px 10px; height: 420px; margin-bottom: 35px;}
|
||||
#morePRJ > .list-group {height: 400px; min-width: 150px; max-width:200px;}
|
||||
|
||||
Reference in New Issue
Block a user