project = new stdclass(); $config->project->editor = new stdclass(); $config->project->editor->create = array('id' => 'desc', 'tools' => 'simpleTools'); $config->project->editor->edit = array('id' => 'desc', 'tools' => 'simpleTools'); $config->project->editor->close = array('id' => 'comment', 'tools' => 'simpleTools'); $config->project->editor->suspend = array('id' => 'comment', 'tools' => 'simpleTools'); $config->project->editor->start = array('id' => 'comment', 'tools' => 'simpleTools'); $config->project->editor->activate = array('id' => 'comment', 'tools' => 'simpleTools'); $config->project->editor->view = array('id' => 'lastComment', 'tools' => 'simpleTools'); $config->project->list = new stdclass(); $config->project->list->exportFields = 'id,name,code,status,hasProduct,PM,storyPoints,storyCount,executionCount,budget,teamCount,invested,begin,end,realBegan,realEnd,estimate,consumed,progress'; if($config->systemMode == 'ALM' && helper::hasFeature('program')) $config->project->list->exportFields = substr_replace($config->project->list->exportFields, ',parent', 2, 0); $config->project->list->customCreateFields = 'budget,acl,auth'; $config->project->create = new stdclass(); $config->project->edit = new stdclass(); $config->project->batchedit = new stdclass(); $config->project->create->requiredFields = 'name,begin,end,workflowGroup'; $config->project->edit->requiredFields = 'name,begin,end,workflowGroup'; $config->project->start = new stdclass(); $config->project->start->requiredFields = 'realBegan'; $config->project->close = new stdclass(); $config->project->close->requiredFields = 'realEnd'; $config->project->sortFields = new stdclass(); $config->project->sortFields->id = 'id'; $config->project->sortFields->begin = 'begin'; $config->project->sortFields->end = 'end'; $config->project->sortFields->status = 'status'; $config->project->sortFields->budget = 'budget'; $config->project->labelClass['scrum'] = 'secondary-outline'; $config->project->labelClass['waterfall'] = 'secondary-outline'; $config->project->labelClass['kanban'] = 'secondary-outline'; $config->project->labelClass['agileplus'] = 'secondary-outline'; $config->project->labelClass['waterfallplus'] = 'secondary-outline'; $config->project->multiple['project'] = ',qa,devops,review,doc,build,release,dynamic,settings,'; $config->project->multiple['execution'] = ',task,kanban,burn,view,story,CFD,'; $config->project->checkList = new stdclass(); $config->project->checkList->scrum = array('bug', 'execution', 'build', 'doc', 'release', 'testtask', 'case'); $config->project->checkList->waterfall = array('execution', 'design', 'doc', 'bug', 'case', 'build', 'release', 'testtask'); $config->project->checkList->kanban = array('execution', 'build'); $config->project->checkList->agileplus = $config->project->checkList->scrum; $config->project->checkList->waterfallplus = $config->project->checkList->waterfall; $config->project->checkList->ipd = $config->project->checkList->waterfall; $config->project->maxCheckList = new stdclass(); $config->project->maxCheckList->scrum = array('bug', 'execution', 'build', 'doc', 'release', 'testtask', 'case', 'issue', 'risk', 'meeting'); $config->project->maxCheckList->waterfall = array('execution', 'design', 'doc', 'bug', 'case', 'build', 'release', 'testtask', 'review', 'build', 'researchplan', 'issue', 'risk', 'opportunity', 'auditplan', 'gapanalysis', 'meeting'); $config->project->maxCheckList->kanban = array('execution', 'build'); $config->project->maxCheckList->agileplus = $config->project->maxCheckList->scrum; $config->project->maxCheckList->waterfallplus = $config->project->maxCheckList->waterfall; $config->project->maxCheckList->ipd = $config->project->maxCheckList->waterfall; $config->project->scrumList = array('scrum', 'agileplus'); $config->project->waterfallList = array('waterfall', 'waterfallplus', 'ipd'); $config->project->search['module'] = 'project'; $config->project->search['fields']['name'] = $lang->project->name; $config->project->search['fields']['code'] = $lang->project->code; $config->project->search['fields']['id'] = $lang->project->id; $config->project->search['fields']['model'] = $lang->project->model; $config->project->search['fields']['hasProduct'] = $lang->project->type; $config->project->search['fields']['parent'] = $lang->project->parent; $config->project->search['fields']['status'] = $lang->project->status; $config->project->search['fields']['desc'] = $lang->project->desc; $config->project->search['fields']['PM'] = $lang->project->PM; $config->project->search['fields']['openedDate'] = $lang->project->openedDate; $config->project->search['fields']['begin'] = $lang->project->begin; $config->project->search['fields']['end'] = $lang->project->end; $config->project->search['fields']['realBegan'] = $lang->project->realBeganAB; $config->project->search['fields']['realEnd'] = $lang->project->realEndAB; $config->project->search['fields']['openedBy'] = $lang->project->openedBy; $config->project->search['fields']['closedBy'] = $lang->project->closedBy; $config->project->search['fields']['lastEditedDate'] = $lang->project->lastEditedDate; $config->project->search['fields']['closedDate'] = $lang->project->closedDate; $config->project->search['params']['name'] = array('operator' => 'include', 'control' => 'input' , 'values' => ''); $config->project->search['params']['code'] = array('operator' => '=' , 'control' => 'input' , 'values' => ''); $config->project->search['params']['id'] = array('operator' => '=' , 'control' => 'input' , 'values' => ''); $config->project->search['params']['model'] = array('operator' => '=' , 'control' => 'select', 'values' => $lang->project->modelList); $config->project->search['params']['hasProduct'] = array('operator' => '=' , 'control' => 'select', 'values' => $lang->project->projectTypeList); $config->project->search['params']['parent'] = array('operator' => '=' , 'control' => 'select', 'values' => ''); $config->project->search['params']['status'] = array('operator' => '=' , 'control' => 'select', 'values' => $lang->project->statusList); $config->project->search['params']['desc'] = array('operator' => 'include', 'control' => 'input' , 'values' => ''); $config->project->search['params']['PM'] = array('operator' => '=' , 'control' => 'select', 'values' => 'users'); $config->project->search['params']['openedDate'] = array('operator' => '=' , 'control' => 'date', 'values' => ''); $config->project->search['params']['begin'] = array('operator' => '=' , 'control' => 'date', 'values' => ''); $config->project->search['params']['end'] = array('operator' => '=' , 'control' => 'date', 'values' => ''); $config->project->search['params']['realBegan'] = array('operator' => '=' , 'control' => 'date', 'values' => ''); $config->project->search['params']['realEnd'] = array('operator' => '=' , 'control' => 'date', 'values' => ''); $config->project->search['params']['openedBy'] = array('operator' => '=' , 'control' => 'select', 'values' => 'users'); $config->project->search['params']['closedBy'] = array('operator' => '=' , 'control' => 'select', 'values' => 'users'); $config->project->search['params']['lastEditedDate'] = array('operator' => '=' , 'control' => 'date', 'values' => ''); $config->project->search['params']['closedDate'] = array('operator' => '=' , 'control' => 'date', 'values' => ''); $config->project->noSprintPriv['project'] = array('edit', 'group', 'createGroup', 'managePriv', 'manageMembers', 'manageGroupMember', 'copyGroup', 'editGroup', 'start', 'suspend', 'close', 'activate', 'delete', 'view', 'whitelist', 'addWhitelist', 'unbindWhitelist', 'manageProducts', 'dynamic', 'bug', 'testcase', 'testtask', 'testreport', 'team', 'unlinkMember', 'workflowGroup', 'deliverable', 'deliverableChecklist', 'approval', 'viewDeliverable', 'createDeliverable', 'deleteDeliverable', 'executionreport'); $config->project->noSprintPriv['execution'] = array('task', 'grouptask', 'importplanstories', 'importBug', 'story', 'burn', 'computeBurn', 'fixFirst', 'burnData', 'linkStory', 'unlinkStory', 'batchUnlinkStory', 'taskKanban', 'printKanban', 'tree', 'treeTask', 'treeStory', 'storyKanban', 'storySort', 'storyEstimate', 'setKanban', 'storyView', 'calendar', 'effortCalendar', 'effort', 'taskEffort', 'computeTaskEffort', 'deleterelation', 'createrelation', 'editrelation', 'batcheditrelation', 'batchdeleterelation', 'relation', 'gantt', 'ganttsetting', 'ganttEdit', 'importtask', 'executionkanban', 'kanban'); $config->project->noSprintPriv['story'] = array('create', 'batchCreate', 'edit', 'export', 'delete', 'view', 'change', 'review', 'batchReview', 'recall', 'close', 'batchClose', 'batchChangePlan', 'batchChangeStage', 'assignTo', 'batchAssignTo', 'activate', 'zeroCase', 'batchEdit', 'batchClose', 'import', 'showImport', 'exportTemplate', 'importToLib', 'batchImportToLib', 'relation', 'browse', 'batchToTask', 'tasks', 'bugs', 'cases', 'submitReview', 'batchChangeBranch', 'processStoryChange', 'relieved', 'createBranch', 'unlinkBranch', 'batchToTask'); $config->project->noSprintPriv['bug'] = array('create', 'confirm', 'view', 'edit', 'assignTo', 'batchAssignTo', 'resolve', 'activate', 'close', 'export', 'confirmStoryChange', 'delete', 'linkBugs', 'import', 'showImport', 'exportTemplate', 'createBranch', 'unlinkBranch', 'report', 'batchClose'); $config->project->noSprintPriv['testcase'] = array('groupCase', 'create', 'batchCreate', 'createBug', 'view', 'edit', 'delete', 'export', 'confirmChange', 'confirmStoryChange', 'batchEdit', 'batchDelete', 'linkCases', 'bugs', 'review', 'batchReview', 'batchConfirmStoryChange', 'importFromLib', 'batchChangeType', 'exportTemplate', 'import', 'showImport', 'confirmLibcaseChange', 'ignoreLibcaseChange', 'submit', 'zeroCase', 'batchChangeScene', 'importToLib', 'importXmind', 'exportXmind', 'exportFreeMind', 'batchChangeBranch', 'automation', 'showScript', 'createScene', 'editScene', 'deleteScene'); $config->project->noSprintPriv['testtask'] = array('create', 'cases', 'groupCase', 'edit', 'delete', 'batchAssign', 'linkcase', 'unlinkcase', 'runcase', 'results', 'batchUnlinkCases', 'report', 'batchRun', 'runDeployCase', 'deployCaseResults', 'view', 'start', 'activate', 'block', 'close', 'assignCase'); $config->project->noSprintPriv['doc'] = array('createLib', 'editLib', 'deleteLib', 'create', 'edit', 'view', 'delete', 'deleteFile', 'collect', 'projectSpace', 'showFiles', 'addCatalog', 'editCatalog', 'deleteCatalog', 'displaySetting', 'diff', 'importToPracticeLib', 'importToComponentLib', 'moveLib', 'moveDoc', 'batchMoveDoc', 'sortDoclib', 'sortCatalog', 'sortDoc', 'addChapter', 'editChapter', 'sortChapter', 'deleteChapter', 'project2export', 'exportFiles'); $config->project->noSprintPriv['repo'] = array('create', 'showSyncCommit', 'browse', 'view', 'diff', 'log', 'revision', 'blame', 'download', 'apiGetRepoByUrl', 'review', 'addBug', 'editBug', 'deleteBug', 'addComment', 'editComment', 'deleteComment'); $config->project->noSprintPriv['testreport'] = array('create', 'view', 'delete', 'edit', 'export'); $config->project->noSprintPriv['auditplan'] = array('browse', 'create', 'edit', 'view', 'batchCreate', 'batchEdit', 'batchCheck', 'check', 'nc', 'result', 'assignTo', 'delete'); $config->project->noSprintPriv['nc'] = array('browse', 'create', 'edit', 'view', 'close', 'assignTo', 'resolve', 'activate', 'export', 'delete'); $config->project->noSprintPriv['review'] = array('browse', 'view', 'submitDeliverable', 'submitBaseline', 'submitIpd', 'submitProjectchange', 'create', 'submit', 'edit', 'recall', 'assess', 'report', 'exportReport'); $config->project->noSprintPriv['productplan'] = array(); $config->project->noSprintPriv['projectplan'] = array(); $config->project->noSprintPriv['projectstory'] = array(); $config->project->noSprintPriv['build'] = array(); $config->project->includedPriv = $config->project->noSprintPriv; $config->project->includedPriv['project'][] = 'execution'; $config->project->includedPriv['execution'] = array('task', 'create', 'view', 'dynamic', 'updateOrder', 'all', 'doc', 'effortCalendar', 'create', 'edit', 'batchedit', 'batchchangestatus', 'start', 'activate', 'putoff', 'suspend', 'close', 'manageProducts', 'delete', 'export', 'whitelist', 'addWhitelist', 'unbindWhitelist', 'deliverable', 'gantt', 'ganttsetting', 'importtask', 'importplanstories', 'importBug', 'team', 'manageMembers', 'unlinkMember', 'taskKanban', 'printKanban', 'executionkanban', 'kanban', 'setKanban', 'grouptask', 'burn', 'computeBurn', 'fixFirst', 'linkStory', 'unlinkStory', 'batchUnlinkStory', 'storySort', 'storyEstimate', 'effort', 'testcase', 'bug', 'testtask', 'testreport', 'relation', 'createrelation', 'editrelation', 'batcheditrelation', 'deleterelation', 'batchdeleterelation', 'build', 'story', 'storyKanban', 'storyView', 'tree', 'treeTask', 'treeStory', 'taskEffort', 'computeTaskEffort', 'calendar'); $config->project->includedPriv['story'] = array('create', 'batchCreate', 'edit', 'delete', 'view', 'change', 'review', 'recall', 'close', 'batchChangeStage', 'batchEdit', 'batchClose', 'assignTo', 'activate', 'zeroCase', 'importToLib', 'batchImportToLib', 'tasks', 'bugs', 'cases', 'submitReview', 'batchChangeBranch', 'processStoryChange', 'relieved', 'createBranch', 'unlinkBranch', 'batchToTask'); $config->project->includedPriv['requirement'] = array('create', 'batchCreate', 'edit', 'delete', 'view', 'change', 'review', 'recall', 'close', 'assignTo', 'activate', 'processStoryChange', 'submitReview'); $config->project->includedPriv['epic'] = array('create', 'batchCreate', 'edit', 'delete', 'view', 'change', 'review', 'recall', 'close', 'assignTo', 'activate', 'processStoryChange', 'submitReview'); $config->project->includedPriv['repo'] = array('create', 'showSyncCommit', 'browse', 'browseBranch', 'browseTag', 'view', 'diff', 'log', 'revision', 'blame', 'download', 'apiGetRepoByUrl', 'review', 'addBug', 'deleteBug', 'addComment', 'editComment', 'deleteComment'); $config->project->includedPriv['mr'] = array('browse'); $config->project->includedPriv['report'] = array('projectSummary'); if($config->edition != 'max') $config->project->includedPriv['stakeholder'] = array('browse', 'create', 'batchCreate', 'edit', 'delete', 'view', 'communicate', 'expect', 'expectation', 'deleteExpect', 'createExpect', 'editExpect', 'viewExpect', 'userIssue'); unset($config->project->includedPriv['projectstory']); unset($config->project->includedPriv['build']); $config->project->projectPriv = $config->project->noSprintPriv; $config->project->projectPriv['project'][] = 'execution'; $config->project->projectPriv['task'] = array('create'); $config->project->projectPriv['story'] = array('create', 'batchCreate', 'edit', 'delete', 'view', 'change', 'review', 'recall', 'close', 'batchChangeStage', 'batchEdit', 'batchClose', 'assignTo', 'activate', 'zeroCase', 'importToLib', 'batchImportToLib'); $config->project->projectPriv['requirement'] = array('create', 'batchCreate', 'edit', 'delete', 'view', 'change', 'review', 'recall', 'close', 'assignTo', 'activate'); $config->project->projectPriv['epic'] = array('create', 'batchCreate', 'edit', 'delete', 'view', 'change', 'review', 'recall', 'close', 'assignTo', 'activate'); $config->project->projectPriv['bug'] = array('create', 'confirm', 'view', 'edit', 'assignTo', 'batchAssignTo', 'resolve', 'activate', 'close', 'export', 'confirmStoryChange', 'delete', 'linkBugs', 'import', 'showImport', 'exportTemplate', 'createBranch', 'unlinkBranch', 'batchClose'); $config->project->projectPriv['testcase'] = array('groupCase', 'create', 'batchCreate', 'createBug', 'view', 'edit', 'delete', 'export', 'confirmChange', 'confirmStoryChange', 'batchEdit', 'batchDelete', 'linkCases', 'bugs', 'review', 'batchReview', 'batchConfirmStoryChange', 'importFromLib', 'batchChangeType', 'exportTemplate', 'import', 'showImport', 'confirmLibcaseChange', 'ignoreLibcaseChange', 'submit', 'zeroCase', 'batchChangeScene', 'importToLib', 'importXmind', 'exportXmind', 'exportFreeMind'); $config->project->projectPriv['testtask'] = array('create', 'cases', 'groupCase', 'edit', 'delete', 'batchAssign', 'linkcase', 'unlinkcase', 'runcase', 'results', 'batchUnlinkCases', 'report', 'batchRun', 'runDeployCase', 'deployCaseResults', 'view', 'start', 'activate', 'block', 'close', 'assignCase'); $config->project->projectPriv['doc'] = array('createLib', 'editLib', 'deleteLib', 'create', 'edit', 'view', 'delete', 'deleteFile', 'collect', 'projectSpace', 'showFiles', 'addCatalog', 'editCatalog', 'deleteCatalog', 'displaySetting', 'diff', 'importToPracticeLib', 'importToComponentLib', 'moveLib', 'moveDoc', 'batchMoveDoc', 'sortDoclib', 'sortCatalog', 'sortDoc', 'addChapter', 'editChapter', 'sortChapter', 'deleteChapter', 'project2export', 'exportFiles'); $config->project->projectPriv['repo'] = array('create', 'showSyncCommit', 'browse', 'browseBranch', 'browseTag', 'view', 'diff', 'log', 'revision', 'blame', 'download', 'apiGetRepoByUrl', 'review', 'addBug', 'deleteBug', 'addComment', 'editComment', 'deleteComment'); $config->project->projectPriv['mr'] = array('browse'); $config->project->projectPriv['execution'] = array('start', 'edit', 'close', 'delete'); $config->project->projectPriv['report'] = array('projectSummary'); $config->project->projectPriv['build'] = array(); if($config->edition != 'max') $config->project->projectPriv['stakeholder'] = array('browse', 'create', 'batchCreate', 'edit', 'delete', 'view', 'communicate', 'expect', 'expectation', 'deleteExpect', 'createExpect', 'editExpect', 'viewExpect', 'userIssue'); unset($config->project->includedPriv['projectstory']); unset($config->project->includedPriv['build']); $config->project->noProductPriv['productplan'] = array('linkStory', 'unlinkStory', 'batchUnlinkStory', 'linkBug', 'unlinkBug', 'batchUnlinkBug', 'batchEdit', 'start', 'finish', 'close', 'activate', 'batchChangeStatus', 'delete'); $config->project->noProductPriv['projectplan'] = array('browse', 'create', 'edit', 'view'); $config->project->browseTable = new stdClass(); $config->project->browseTable->cols = array(); $config->project->browseTable->cols['name']['name'] = 'name'; $config->project->browseTable->cols['name']['title'] = $lang->project->name; $config->project->browseTable->cols['name']['fixed'] = 'left'; $config->project->browseTable->cols['name']['width'] = 408; $config->project->browseTable->cols['name']['sortType'] = true; $config->project->browseTable->cols['name']['link'] = helper::createLink('project', 'index', 'projectID={id}'); $config->project->browseTable->cols['PM']['name'] = 'PM'; $config->project->browseTable->cols['PM']['title'] = $lang->project->PM; $config->project->browseTable->cols['PM']['minWidth'] = 104; $config->project->browseTable->cols['PM']['type'] = 'avatarBtn'; $config->project->browseTable->cols['PM']['flex'] = 1; $config->project->browseTable->cols['PM']['border'] = 'right'; $config->project->browseTable->cols['storyCount']['name'] = 'storyCount'; $config->project->browseTable->cols['storyCount']['title'] = $lang->project->storyCount; $config->project->browseTable->cols['storyCount']['minWidth'] = 94; $config->project->browseTable->cols['storyCount']['sortType'] = true; $config->project->browseTable->cols['storyCount']['type'] = 'format'; $config->project->browseTable->cols['storyCount']['align'] = 'right'; $config->project->browseTable->cols['executionCount']['name'] = 'executionCount'; $config->project->browseTable->cols['executionCount']['title'] = $lang->project->executionCount; $config->project->browseTable->cols['executionCount']['minWidth'] = 94; $config->project->browseTable->cols['executionCount']['sortType'] = true; $config->project->browseTable->cols['executionCount']['type'] = 'format'; $config->project->browseTable->cols['executionCount']['border'] = 'right'; $config->project->browseTable->cols['executionCount']['align'] = 'center'; $config->project->browseTable->cols['invested']['name'] = 'invested'; $config->project->browseTable->cols['invested']['title'] = $lang->project->invested; $config->project->browseTable->cols['invested']['minWidth'] = 94; $config->project->browseTable->cols['invested']['sortType'] = true; $config->project->browseTable->cols['invested']['type'] = 'format'; $config->project->browseTable->cols['invested']['border'] = 'right'; $config->project->browseTable->cols['invested']['align'] = 'center'; $config->project->browseTable->cols['begin']['name'] = 'begin'; $config->project->browseTable->cols['begin']['title'] = $lang->project->begin; $config->project->browseTable->cols['begin']['width'] = 96; $config->project->browseTable->cols['begin']['sortType'] = true; $config->project->browseTable->cols['end']['name'] = 'end'; $config->project->browseTable->cols['end']['title'] = $lang->project->end; $config->project->browseTable->cols['end']['width'] = 96; $config->project->browseTable->cols['end']['sortType'] = true; $config->project->browseTable->cols['progress']['name'] = 'progress'; $config->project->browseTable->cols['progress']['title'] = $lang->project->progress; $config->project->browseTable->cols['progress']['width'] = 92; $config->project->browseTable->cols['progress']['type'] = 'circleProgress'; $config->project->browseTable->cols['progress']['sortType'] = true; $config->project->browseTable->cols['actions']['name'] = 'actions'; $config->project->browseTable->cols['actions']['title'] = $lang->actions; $config->project->browseTable->cols['actions']['fixed'] = 'right'; $config->project->browseTable->cols['actions']['width'] = 160; $config->project->browseTable->cols['actions']['type'] = 'actions'; $config->project->browseTable->cols['actions']['actionsMap'] = array( 'start' => array('icon'=> 'icon-start', 'hint'=> $lang->project->start), 'close' => array('icon'=> 'icon-off', 'hint'=> $lang->project->close, 'data-toggle' => 'modal', 'url' => helper::createLink('project', 'close', 'projectID={id}')), 'pause' => array('icon'=> 'icon-pause', 'text'=> $lang->project->suspend), 'active' => array('icon'=> 'icon-magic', 'text'=> $lang->project->activate), 'edit' => array('icon'=> 'icon-edit', 'hint'=> $lang->project->edit), 'group' => array('icon'=> 'icon-group', 'hint'=> $lang->project->teamMember), 'perm' => array('icon'=> 'icon-lock', 'hint'=> $lang->project->group), 'delete' => array('icon'=> 'icon-trash', 'hint'=> $lang->delete, 'text' => $lang->delete), 'other' => array('type'=> 'dropdown', 'hint'=> $lang->project->other, 'caret' => true), 'link' => array('icon'=> 'icon-link', 'text'=> $lang->project->manageProducts, 'name' => 'link'), 'more' => array('icon'=> 'icon-ellipsis-v', 'hint'=> $lang->more, 'type' => 'dropdown', 'caret' => false), 'whitelist' => array('icon'=> 'icon-shield-check', 'text'=> $lang->project->whitelist, 'name' => 'whitelist') ); $config->project->linkMap = new stdclass(); $config->project->linkMap->project = array(); $config->project->linkMap->project['execution'] = array('', '', 'status=all&projectID=%s', ''); $config->project->linkMap->project['bug'] = array('', '', 'projectID=%s', ''); $config->project->linkMap->project['testcase'] = array('', '', 'projectID=%s', ''); $config->project->linkMap->project['testtask'] = array('', '', 'projectID=%s', ''); $config->project->linkMap->project['testreport'] = array('', '', 'projectID=%s', ''); $config->project->linkMap->project['build'] = array('', '', 'projectID=%s', ''); $config->project->linkMap->project['view'] = array('', '', 'projectID=%s', ''); $config->project->linkMap->project['dynamic'] = array('', '', 'projectID=%s', ''); $config->project->linkMap->project['manageproducts'] = array('', '', 'projectID=%s', ''); $config->project->linkMap->project['team'] = array('', '', 'projectID=%s', ''); $config->project->linkMap->project['managemembers'] = array('', '', 'projectID=%s', ''); $config->project->linkMap->project['whitelist'] = array('', '', 'projectID=%s', ''); $config->project->linkMap->project['addwhitelist'] = array('', '', 'projectID=%s', ''); $config->project->linkMap->project['group'] = array('', '', 'projectID=%s', ''); $config->project->linkMap->project['managePriv'] = array('project', 'group', 'projectID=%s', ''); $config->project->linkMap->product = array(); $config->project->linkMap->product['showerrornone'] = array('projectstory', 'story', 'projectID=%s', ''); $config->project->linkMap->projectstory = array(); $config->project->linkMap->projectstory['story'] = array('', '', 'projectID=%s&productID=0&branch=0&browseType=¶m=0&storyType={extra}', ''); $config->project->linkMap->projectstory['linkstory'] = array('', '', 'projectID=%s', ''); $config->project->linkMap->projectstory['track'] = array('projectstory', 'story', 'projectID=%s', ''); $config->project->linkMap->bug = array(); $config->project->linkMap->bug['create'] = array('project', 'bug', 'projectID=%s', ''); $config->project->linkMap->bug['edit'] = array('project', 'bug', 'projectID=%s', ''); $config->project->linkMap->story = array(); $config->project->linkMap->story['change'] = array('projectstory', 'story', 'projectID=%s', ''); $config->project->linkMap->story['create'] = array('projectstory', 'story', 'projectID=%s', ''); $config->project->linkMap->story['zerocase'] = array('project', 'testcase', 'projectID=%s', ''); $config->project->linkMap->testcase = array(); $config->project->linkMap->testcase[''] = array('project', 'testcase', 'projectID=%s', ''); $config->project->linkMap->testtask = array(); $config->project->linkMap->testtask['browseunits'] = array('project', 'testcase', 'projectID=%s', ''); $config->project->linkMap->testtask[''] = array('project', 'testtask', 'projectID=%s', ''); $config->project->linkMap->testreport = array(); $config->project->linkMap->testreport[''] = array('project', 'testreport', 'projectID=%s', ''); $config->project->linkMap->repo = array(); $config->project->linkMap->repo[''] = array('repo', 'browse', 'repoID=&branchID=&objectID=%s', '#app=project'); $config->project->linkMap->doc = array(); $config->project->linkMap->doc[''] = array('doc', 'projectSpace', 'objectID=%s', '#app=project'); $config->project->linkMap->build = array(); $config->project->linkMap->build['create'] = array('', '', 'executionID=&productID=&projectID=%s', '#app=project'); $config->project->linkMap->projectrelease = array(); $config->project->linkMap->projectrelease['create'] = array('', '', 'projectID=%s', ''); $config->project->linkMap->projectrelease[''] = array('projectrelease', 'browse', 'projectID=%s', ''); $config->project->linkMap->stakeholder = array(); $config->project->linkMap->stakeholder['create'] = array('', '', 'projectID=%s', ''); $config->project->linkMap->stakeholder[''] = array('stakeholder', 'browse', 'projectID=%s', ''); $config->project->linkMap->issue = array(); $config->project->linkMap->issue[''] = array('issue', 'browse', 'projectID=%s', ''); $config->project->linkMap->risk = array(); $config->project->linkMap->risk['create'] = array('', '', 'projectID=%s', '#app=project'); $config->project->linkMap->risk[''] = array('risk', 'browse', 'projectID=%s', ''); $config->project->linkMap->meeting = array(); $config->project->linkMap->meeting['create'] = array('', '', 'projectID=%s', '#app=project'); $config->project->linkMap->meeting[''] = array('meeting', 'browse', 'projectID=%s', ''); $config->project->linkMap->report = array(); $config->project->linkMap->report['projectsummary'] = array('', '', 'projectID=%s', '#app=project'); $config->project->linkMap->report[''] = array('issue', 'browse', 'projectID=%s', ''); $config->project->linkMap->measrecord = array(); $config->project->linkMap->measrecord['projectsummary'] = array('', '', 'projectID=%s', '#app=project'); $config->project->linkMap->measrecord[''] = array('issue', 'browse', 'projectID=%s', ''); $config->project->linkMap->reviewissue = array(); $config->project->linkMap->reviewissue[''] = array('reviewissue', 'issue', 'projectID=%s', ''); $config->project->linkMap->cm = array(); $config->project->linkMap->cm['report'] = array('project', 'index', 'projectID=%s', ''); $config->project->linkMap->weekly = array(); $config->project->linkMap->weekly['index'] = array('weekly', 'browse', 'projectID=%s', ''); $config->project->linkMap->milestone = array(); $config->project->linkMap->milestone['index'] = array('weekly', 'browse', 'projectID=%s', ''); $config->project->linkMap->workestimation = array(); $config->project->linkMap->workestimation['index'] = array('workestimation', 'index', 'projectID=%s', ''); $config->project->linkMap->durationestimation = array(); $config->project->linkMap->durationestimation['index'] = array('durationestimation', 'index', 'projectID=%s', ''); $config->project->linkMap->budget = array(); $config->project->linkMap->budget['summary'] = array('budget', 'summary', 'projectID=%s', ''); $config->project->linkMap->programplan = array(); $config->project->linkMap->programplan[''] = array('project', 'execution', 'type=all&projectID=%s', ''); $config->project->linkMap->auditplan = array(); $config->project->linkMap->auditplan[''] = array('project', 'index', 'projectID=%s', ''); $config->project->budget = new stdclass(); $config->project->budget->precision = 2; $config->project->budget->tenThousand = 10000; $config->project->budget->oneHundredMillion = 100000000; $config->project->team = new stdclass(); $config->project->team->actionList['unlink']['icon'] = 'unlink'; $config->project->team->actionList['unlink']['hint'] = $lang->project->unlinkMember; $config->project->team->actionList['unlink']['url'] = 'javascript:deleteMember("{root}", "{account}", "{userID}")'; $config->project->actionList = array(); $config->project->actionList['start']['icon'] = 'play'; $config->project->actionList['start']['hint'] = $lang->project->start; $config->project->actionList['start']['url'] = helper::createLink('project', 'start', 'projectID={id}'); $config->project->actionList['start']['data-toggle'] = 'modal'; $config->project->actionList['close']['icon'] = 'off'; $config->project->actionList['close']['hint'] = $lang->project->close; $config->project->actionList['close']['url'] = helper::createLink('project', 'close', 'projectID={id}'); $config->project->actionList['close']['data-toggle'] = 'modal'; $config->project->actionList['close']['data-size'] = '60rem'; $config->project->actionList['activate']['icon'] = 'magic'; $config->project->actionList['activate']['hint'] = $lang->project->activate; $config->project->actionList['activate']['url'] = helper::createLink('project', 'activate', 'projectID={id}'); $config->project->actionList['activate']['data-toggle'] = 'modal'; $config->project->actionList['edit']['icon'] = 'edit'; $config->project->actionList['edit']['hint'] = $lang->project->edit; $config->project->actionList['edit']['url'] = array('module' => 'project', 'method' => 'edit', 'params' => 'projectID={id}'); $config->project->actionList['suspend']['icon'] = 'pause'; $config->project->actionList['suspend']['hint'] = $lang->project->suspend; $config->project->actionList['suspend']['url'] = helper::createLink('project', 'suspend', 'projectID={id}'); $config->project->actionList['suspend']['data-toggle'] = 'modal'; $config->project->actionList['group']['icon'] = 'group'; $config->project->actionList['group']['hint'] = $lang->project->team; $config->project->actionList['group']['url'] = array('module' => 'project', 'method' => 'team', 'params' => 'projectID={id}'); $config->project->actionList['perm']['icon'] = 'lock'; $config->project->actionList['perm']['hint'] = $lang->project->group; $config->project->actionList['perm']['url'] = array('module' => 'project', 'method' => 'group', 'params' => 'projectID={id}'); $config->project->actionList['link']['icon'] = 'link'; $config->project->actionList['link']['hint'] = $lang->project->manageProducts; $config->project->actionList['link']['url'] = array('module' => 'project', 'method' => 'manageProducts', 'params' => 'projectID={id}'); $config->project->actionList['whitelist']['icon'] = 'shield-check'; $config->project->actionList['whitelist']['hint'] = $lang->project->whitelist; $config->project->actionList['whitelist']['url'] = array('module' => 'project', 'method' => 'whitelist', 'params' => 'projectID={id}'); $config->project->actionList['delete']['icon'] = 'trash'; $config->project->actionList['delete']['hint'] = $lang->project->delete; $config->project->actionList['delete']['url'] = 'javascript:confirmDelete("{id}", "{name}")'; $config->project->actions = new stdclass(); $config->project->actions->view = array(); $config->project->actions->view['mainActions'] = array('start', 'activate', 'suspend', 'close'); $config->project->actions->view['suffixActions'] = array('edit', 'delete'); $config->project->statusLabelList['wait'] = 'wait lighter'; $config->project->statusLabelList['doing'] = 'doing primary-pale'; $config->project->statusLabelList['suspended'] = 'suspended gray text-white'; $config->project->statusLabelList['closed'] = 'closed success-pale'; $config->project->statusLabelList['delay'] = 'delay danger-pale'; $config->project->categoryStages['waterfall'] = array('request', 'design', 'dev', 'qa', 'release', 'review'); $config->project->categoryStages['IPD'] = array('concept', 'plan', 'develop', 'qualify', 'launch'); $config->project->categoryStages['TPD'] = array('concept', 'plan', 'develop', 'qualify'); $config->project->categoryStages['CBB'] = array('concept', 'plan', 'develop', 'qualify'); $config->project->categoryStages['CPD'] = array('plan', 'develop', 'qualify', 'launch'); if(!helper::hasFeature('program')) unset($config->project->search['fields']['parent']);