Merge branch 'master' of http://gitlab.zcorp.cc/easycorp/zentaopms
This commit is contained in:
@@ -149,6 +149,7 @@ define('TABLE_TASKSPEC', '`' . $config->db->prefix . 'taskspec`');
|
||||
define('TABLE_TEAM', '`' . $config->db->prefix . 'team`');
|
||||
define('TABLE_PROJECTPRODUCT','`' . $config->db->prefix . 'projectproduct`');
|
||||
define('TABLE_PROJECTSTORY', '`' . $config->db->prefix . 'projectstory`');
|
||||
define('TABLE_PROJECTCASE', '`' . $config->db->prefix . 'projectcase`');
|
||||
define('TABLE_TASKESTIMATE', '`' . $config->db->prefix . 'taskestimate`');
|
||||
define('TABLE_EFFORT', '`' . $config->db->prefix . 'effort`');
|
||||
define('TABLE_BURN', '`' . $config->db->prefix . 'burn`');
|
||||
|
||||
+10
-1
@@ -47,7 +47,6 @@ ALTER TABLE `zt_testreport` ADD `project` mediumint(8) unsigned NOT NULL AFTER `
|
||||
ALTER TABLE `zt_testsuite` ADD `project` mediumint(8) unsigned NOT NULL AFTER `id`;
|
||||
ALTER TABLE `zt_build` ADD `project` mediumint(8) unsigned NOT NULL AFTER `id`;
|
||||
ALTER TABLE `zt_release` ADD `project` mediumint(8) unsigned NOT NULL AFTER `id`;
|
||||
ALTER TABLE `zt_expect` ADD `project` mediumint(8) unsigned NOT NULL AFTER `id`;
|
||||
|
||||
ALTER TABLE `zt_product` ADD `bind` enum('0','1') NOT NULL DEFAULT '0' AFTER `code`;
|
||||
ALTER TABLE `zt_product` ADD `program` mediumint(8) unsigned NOT NULL AFTER `id`;
|
||||
@@ -115,6 +114,16 @@ CREATE TABLE IF NOT EXISTS `zt_projectspec` (
|
||||
UNIQUE KEY `project` (`project`,`version`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
-- DROP TABLE IF EXISTS `zt_projectcase`;
|
||||
CREATE TABLE `zt_projectcase` (
|
||||
`project` mediumint(8) unsigned NOT NULL DEFAULT '0',
|
||||
`product` mediumint(8) unsigned NOT NULL DEFAULT '0',
|
||||
`case` mediumint(8) unsigned NOT NULL DEFAULT '0',
|
||||
`version` smallint(6) NOT NULL DEFAULT '1',
|
||||
`order` smallint(6) unsigned NOT NULL,
|
||||
UNIQUE KEY `project` (`project`,`case`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
ALTER TABLE `zt_task` ADD `design` mediumint(8) unsigned NOT NULL AFTER `module`;
|
||||
ALTER TABLE `zt_task` ADD `version` smallint(6) NOT NULL AFTER `desc`;
|
||||
ALTER TABLE `zt_task` ADD `activatedDate` date NOT NULL AFTER `lastEditedDate`;
|
||||
|
||||
@@ -701,6 +701,15 @@ CREATE TABLE IF NOT EXISTS `zt_projectstory` (
|
||||
`order` smallint(6) unsigned NOT NULL,
|
||||
UNIQUE KEY `project` (`project`,`story`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_projectcase`;
|
||||
CREATE TABLE `zt_projectcase` (
|
||||
`project` mediumint(8) unsigned NOT NULL DEFAULT '0',
|
||||
`product` mediumint(8) unsigned NOT NULL DEFAULT '0',
|
||||
`case` mediumint(8) unsigned NOT NULL DEFAULT '0',
|
||||
`version` smallint(6) NOT NULL DEFAULT '1',
|
||||
`order` smallint(6) unsigned NOT NULL,
|
||||
UNIQUE KEY `project` (`project`,`case`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_release`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_release` (
|
||||
`id` mediumint(8) unsigned NOT NULL auto_increment,
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<div class="panel-body table-row">
|
||||
<div class="col-4 text-middle text-center">
|
||||
<div class="tile">
|
||||
<div class="tile-title"><?php echo $lang->execution->allProject;?></div>
|
||||
<div class="tile-title"><?php echo $lang->execution->allExecutions;?></div>
|
||||
<div class="tile-amount"><?php echo $total;?></div>
|
||||
<a class="btn btn-primary btn-circle btn-icon-right btn-sm" href="<?php echo $this->createLink('execution', 'all', 'type=all');?>"><?php echo $lang->execution->viewAll;?> <span class="label label-badge label-icon"><i class="icon icon-arrow-right"></i></span></a>
|
||||
</div>
|
||||
|
||||
@@ -618,8 +618,8 @@ class bug extends control
|
||||
/* Judge bug exits or not. */
|
||||
$bug = $this->bug->getById($bugID, true);
|
||||
if(!$bug) die(js::error($this->lang->notFound) . js::locate('back'));
|
||||
$this->session->PRJ = $bug->project;
|
||||
$this->view->products = $this->products = $this->product->getProductPairsByProject($this->session->PRJ);
|
||||
if($bug->project) $this->session->PRJ = $bug->project;
|
||||
$this->view->products = $this->products = $this->product->getProductPairsByProject($this->session->PRJ);
|
||||
|
||||
$this->bug->checkBugExecutionPriv($bug);
|
||||
|
||||
|
||||
@@ -172,6 +172,8 @@ else
|
||||
$lang->project->menu->browse = array('link' => "$lang->executionCommon|project|browse|");
|
||||
}
|
||||
|
||||
$lang->project->dividerMenu = ',execution,programplan,doc,dynamic,';
|
||||
|
||||
$lang->program->viewMenu = new stdclass();
|
||||
$lang->program->viewMenu->product = array('link' => 'Product|program|product|program=%s', 'alias' => 'view');
|
||||
$lang->program->viewMenu->project = array('link' => "Project|program|project|program=%s");
|
||||
@@ -491,7 +493,7 @@ $lang->report->menu = new stdclass();
|
||||
|
||||
$lang->report->menu->annual = array('link' => 'Annual Summary|report|annualData|year=&dept=&userID=' . (isset($_SESSION['user']) ? zget($_SESSION['user'], 'id', 0) : 0), 'target' => '_blank');
|
||||
$lang->report->menu->product = array('link' => $lang->productCommon . '|report|productsummary');
|
||||
$lang->report->menu->execution = array('link' => $lang->executionCommon . '|report|executiondeviation');
|
||||
$lang->report->menu->execution = array('link' => 'Execution|report|executiondeviation');
|
||||
$lang->report->menu->test = array('link' => 'Test|report|bugcreate', 'alias' => 'bugassign');
|
||||
$lang->report->menu->staff = array('link' => 'Unternehmen|report|workload');
|
||||
|
||||
|
||||
@@ -222,9 +222,10 @@ $lang->productplan->menu = $lang->product->menu;
|
||||
/* System menu. */
|
||||
$lang->system = new stdclass();
|
||||
$lang->system->menu = new stdclass();
|
||||
$lang->system->menu->company = array('link' => 'User|company|browse|', 'subModule' => ',user,dept,group,', 'alias' => ',dynamic,view,');
|
||||
$lang->system->menu->team = array('link' => 'Team|my|team|');
|
||||
$lang->system->menu->team = array('link' => 'Team|my|team|', 'subModule' => 'user');
|
||||
$lang->system->menu->calendar = array('link' => 'Calendar|my|calendar|', 'subModule' => 'todo', 'alias' => 'todo');
|
||||
$lang->system->menu->dynamic = 'Dynamic|company|dynamic|';
|
||||
$lang->system->menu->view = array('link' => 'Company|company|view');
|
||||
|
||||
$lang->measurement = new stdclass();
|
||||
$lang->measurement->menu = new stdclass();
|
||||
@@ -493,7 +494,7 @@ $lang->report->menu = new stdclass();
|
||||
|
||||
$lang->report->menu->annual = array('link' => 'Annual Summary|report|annualData|year=&dept=&userID=' . (isset($_SESSION['user']) ? zget($_SESSION['user'], 'id', 0) : 0), 'target' => '_blank');
|
||||
$lang->report->menu->product = array('link' => $lang->productCommon . '|report|productsummary');
|
||||
$lang->report->menu->execution = array('link' => $lang->executionCommon . '|report|executiondeviation');
|
||||
$lang->report->menu->execution = array('link' => 'Execution|report|executiondeviation');
|
||||
$lang->report->menu->test = array('link' => 'Request|report|bugcreate', 'alias' => 'bugassign');
|
||||
$lang->report->menu->staff = array('link' => 'Company|report|workload');
|
||||
|
||||
@@ -520,6 +521,7 @@ $lang->company->menu->browseGroup = array('link' => 'Group|group|browse', 'subMo
|
||||
$lang->admin = new stdclass();
|
||||
$lang->admin->menu = new stdclass();
|
||||
$lang->admin->menu->index = array('link' => 'Home|admin|index', 'alias' => 'register,certifytemail,certifyztmobile,ztcompany');
|
||||
$lang->admin->menu->company = array('link' => 'User|company|browse|', 'subModule' => ',user,dept,group,');
|
||||
$lang->admin->menu->model = array('link' => 'Model|custom|browsestoryconcept|', 'subModule' => 'holiday');
|
||||
$lang->admin->menu->custom = array('link' => 'Custom|custom|index', 'subModule' => 'custom');
|
||||
$lang->admin->menu->extension = array('link' => 'Extension|extension|browse', 'subModule' => 'extension');
|
||||
@@ -531,6 +533,10 @@ $lang->subject = new stdclass();
|
||||
$lang->subject->menu = new stdclass();
|
||||
$lang->subject->menu->storyConcept = array('link' => 'Story Concpet|custom|browsestoryconcept|');
|
||||
|
||||
$lang->dept->menu = $lang->company->menu;
|
||||
$lang->group->menu = $lang->company->menu;
|
||||
$lang->user->menu = $lang->company->menu;
|
||||
|
||||
$lang->admin->subMenu = new stdclass();
|
||||
$lang->admin->subMenu->message = new stdclass();
|
||||
$lang->admin->subMenu->message->mail = array('link' => 'Mail|mail|index', 'subModule' => 'mail');
|
||||
@@ -612,7 +618,6 @@ $lang->menugroup->job = 'ci';
|
||||
/* Nav group.*/
|
||||
$lang->navGroup = new stdclass();
|
||||
$lang->navGroup->my = 'my';
|
||||
$lang->navGroup->todo = 'my';
|
||||
$lang->navGroup->effort = 'my';
|
||||
$lang->navGroup->score = 'my';
|
||||
|
||||
@@ -663,6 +668,8 @@ $lang->navGroup->build = 'execution';
|
||||
$lang->navGroup->sqlbuilder = 'system';
|
||||
$lang->navGroup->auditcl = 'system';
|
||||
$lang->navGroup->cmcl = 'system';
|
||||
$lang->navGroup->todo = 'system';
|
||||
$lang->navGroup->ldap = 'system';
|
||||
$lang->navGroup->process = 'system';
|
||||
$lang->navGroup->activity = 'system';
|
||||
$lang->navGroup->zoutput = 'system';
|
||||
@@ -681,17 +688,18 @@ $lang->navGroup->lieu = 'attend';
|
||||
$lang->navGroup->admin = 'admin';
|
||||
$lang->navGroup->company = 'admin';
|
||||
$lang->navGroup->dept = 'admin';
|
||||
$lang->navGroup->ldap = 'admin';
|
||||
$lang->navGroup->user = 'admin';
|
||||
$lang->navGroup->group = 'admin';
|
||||
$lang->navGroup->dept = 'admin';
|
||||
$lang->navGroup->webhook = 'admin';
|
||||
$lang->navGroup->sms = 'admin';
|
||||
$lang->navGroup->message = 'admin';
|
||||
$lang->navGroup->user = 'admin';
|
||||
$lang->navGroup->custom = 'admin';
|
||||
$lang->navGroup->cron = 'admin';
|
||||
$lang->navGroup->backup = 'admin';
|
||||
$lang->navGroup->mail = 'admin';
|
||||
$lang->navGroup->dev = 'admin';
|
||||
$lang->navGroup->entry = 'admin';
|
||||
$lang->navGroup->extension = 'admin';
|
||||
$lang->navGroup->action = 'admin';
|
||||
$lang->navGroup->search = 'admin';
|
||||
|
||||
@@ -172,6 +172,8 @@ else
|
||||
$lang->project->menu->browse = array('link' => "$lang->executionCommon|project|browse|");
|
||||
}
|
||||
|
||||
$lang->project->dividerMenu = ',execution,programplan,doc,dynamic,';
|
||||
|
||||
$lang->program->viewMenu = new stdclass();
|
||||
$lang->program->viewMenu->product = array('link' => 'Product|program|product|program=%s', 'alias' => 'view');
|
||||
$lang->program->viewMenu->project = array('link' => "Project|program|project|program=%s");
|
||||
@@ -491,7 +493,7 @@ $lang->report->menu = new stdclass();
|
||||
|
||||
$lang->report->menu->annual = array('link' => 'Annual Summary|report|annualData|year=&dept=&userID=' . (isset($_SESSION['user']) ? zget($_SESSION['user'], 'id', 0) : 0), 'target' => '_blank');
|
||||
$lang->report->menu->product = array('link' => $lang->productCommon . '|report|productsummary');
|
||||
$lang->report->menu->execution = array('link' => $lang->executionCommon . '|report|executiondeviation');
|
||||
$lang->report->menu->execution = array('link' => 'Execution|report|executiondeviation');
|
||||
$lang->report->menu->test = array('link' => 'Recette|report|bugcreate', 'alias' => 'bugassign');
|
||||
$lang->report->menu->staff = array('link' => 'Entreprise|report|workload');
|
||||
|
||||
|
||||
@@ -154,10 +154,11 @@ $lang->system->menuOrder[15] = 'calendar';
|
||||
|
||||
/* admin menu order. */
|
||||
$lang->admin->menuOrder[5] = 'index';
|
||||
$lang->admin->menuOrder[10] = 'model';
|
||||
$lang->admin->menuOrder[15] = 'custom';
|
||||
$lang->admin->menuOrder[20] = 'message';
|
||||
$lang->admin->menuOrder[25] = 'extension';
|
||||
$lang->admin->menuOrder[10] = 'company';
|
||||
$lang->admin->menuOrder[15] = 'model';
|
||||
$lang->admin->menuOrder[20] = 'custom';
|
||||
$lang->admin->menuOrder[25] = 'message';
|
||||
$lang->admin->menuOrder[30] = 'extension';
|
||||
$lang->admin->menuOrder[35] = 'dev';
|
||||
$lang->admin->menuOrder[40] = 'system';
|
||||
|
||||
|
||||
@@ -172,6 +172,8 @@ else
|
||||
$lang->project->menu->browse = array('link' => "$lang->executionCommon|project|browse|");
|
||||
}
|
||||
|
||||
$lang->project->dividerMenu = ',execution,programplan,doc,dynamic,';
|
||||
|
||||
$lang->program->viewMenu = new stdclass();
|
||||
$lang->program->viewMenu->product = array('link' => 'Product|program|product|program=%s', 'alias' => 'view');
|
||||
$lang->program->viewMenu->project = array('link' => "Project|program|project|program=%s");
|
||||
@@ -491,7 +493,7 @@ $lang->report->menu = new stdclass();
|
||||
|
||||
$lang->report->menu->annual = array('link' => 'Tóm tắt năm|report|annualData|year=&dept=&userID=' . (isset($_SESSION['user']) ? zget($_SESSION['user'], 'id', 0) : 0), 'target' => '_blank');
|
||||
$lang->report->menu->product = array('link' => $lang->productCommon . '|report|productsummary');
|
||||
$lang->report->menu->execution = array('link' => $lang->executionCommon . '|report|executiondeviation');
|
||||
$lang->report->menu->execution = array('link' => 'Execution|report|executiondeviation');
|
||||
$lang->report->menu->test = array('link' => 'Yêu cầu|report|bugcreate', 'alias' => 'bugassign');
|
||||
$lang->report->menu->staff = array('link' => 'Doanh nghiệp|report|workload');
|
||||
|
||||
|
||||
@@ -149,7 +149,7 @@ $lang->mainNav->qa = '<i class="icon icon-test"></i> 测试|qa|index|';
|
||||
$lang->mainNav->repo = '<i class="icon icon-code1"></i> 代码|repo|browse|';
|
||||
$lang->mainNav->doc = '<i class="icon icon-doc"></i> 文档|doc|index|';
|
||||
$lang->mainNav->report = "<i class='icon icon-statistic'></i> 统计|report|productSummary|";
|
||||
$lang->mainNav->system = '<i class="icon icon-group"></i> 组织|company|browse|';
|
||||
$lang->mainNav->system = '<i class="icon icon-group"></i> 组织|my|team|';
|
||||
$lang->mainNav->admin = '<i class="icon icon-cog-outline"></i> 后台|admin|index|';
|
||||
if($config->systemMode == 'new') $lang->mainNav->program = "<i class='icon icon-program'></i> 项目集|$programModule|$programMethod|";
|
||||
|
||||
@@ -172,7 +172,7 @@ else
|
||||
$lang->project->menu->browse = array('link' => "$lang->executionCommon|project|browse|");
|
||||
}
|
||||
|
||||
$lang->project->dividerMenu = ',execution,programplan,doc,other,';
|
||||
$lang->project->dividerMenu = ',execution,programplan,doc,dynamic,';
|
||||
|
||||
$lang->program->viewMenu = new stdclass();
|
||||
$lang->program->viewMenu->product = array('link' => '产品|program|product|program=%s', 'alias' => 'view');
|
||||
@@ -222,9 +222,10 @@ $lang->productplan->menu = $lang->product->menu;
|
||||
/* System menu. */
|
||||
$lang->system = new stdclass();
|
||||
$lang->system->menu = new stdclass();
|
||||
$lang->system->menu->company = array('link' => '人员|company|browse|', 'subModule' => ',user,dept,group,', 'alias' => ',dynamic,view,');
|
||||
$lang->system->menu->team = array('link' => '团队|my|team|');
|
||||
$lang->system->menu->team = array('link' => '团队|my|team|', 'subModule' => 'user');
|
||||
$lang->system->menu->calendar = array('link' => '日程|my|calendar|', 'subModule' => 'todo', 'alias' => 'todo');
|
||||
$lang->system->menu->dynamic = '动态|company|dynamic|';
|
||||
$lang->system->menu->view = array('link' => '公司|company|view');
|
||||
|
||||
$lang->measurement = new stdclass();
|
||||
$lang->measurement->menu = new stdclass();
|
||||
@@ -496,7 +497,7 @@ $lang->report->menu = new stdclass();
|
||||
|
||||
$lang->report->menu->annual = array('link' => '年度总结|report|annualData|year=&dept=&userID=' . (isset($_SESSION['user']) ? zget($_SESSION['user'], 'id', 0) : 0), 'target' => '_blank');
|
||||
$lang->report->menu->product = array('link' => $lang->productCommon . '|report|productsummary');
|
||||
$lang->report->menu->execution = array('link' => $lang->executionCommon . '|report|executiondeviation');
|
||||
$lang->report->menu->execution = array('link' => '执行|report|executiondeviation');
|
||||
$lang->report->menu->test = array('link' => '测试|report|bugcreate', 'alias' => 'bugassign');
|
||||
$lang->report->menu->staff = array('link' => '组织|report|workload');
|
||||
|
||||
@@ -518,13 +519,12 @@ $lang->company->menu = new stdclass();
|
||||
$lang->company->menu->browseUser = array('link' => '用户|company|browse', 'subModule' => ',user,');
|
||||
$lang->company->menu->dept = array('link' => '部门|dept|browse', 'subModule' => 'dept');
|
||||
$lang->company->menu->browseGroup = array('link' => '权限|group|browse', 'subModule' => 'group');
|
||||
$lang->company->menu->dynamic = '动态|company|dynamic|';
|
||||
$lang->company->menu->view = array('link' => '公司|company|view');
|
||||
|
||||
/* 后台管理菜单设置。*/
|
||||
$lang->admin = new stdclass();
|
||||
$lang->admin->menu = new stdclass();
|
||||
$lang->admin->menu->index = array('link' => '首页|admin|index', 'alias' => 'register,certifytemail,certifyztmobile,ztcompany');
|
||||
$lang->admin->menu->company = array('link' => '人员|company|browse|', 'subModule' => ',user,dept,group,');
|
||||
$lang->admin->menu->model = array('link' => '模型|custom|browsestoryconcept|', 'subModule' => 'holiday');
|
||||
$lang->admin->menu->custom = array('link' => '自定义|custom|index', 'subModule' => 'custom');
|
||||
$lang->admin->menu->extension = array('link' => '插件|extension|browse', 'subModule' => 'extension');
|
||||
@@ -536,9 +536,9 @@ $lang->subject = new stdclass();
|
||||
$lang->subject->menu = new stdclass();
|
||||
$lang->subject->menu->storyConcept = array('link' => '需求概念|custom|browsestoryconcept|');
|
||||
|
||||
$lang->dept->menu = $lang->company->menu;
|
||||
$lang->group->menu = $lang->company->menu;
|
||||
$lang->user->menu = $lang->company->menu;
|
||||
$lang->dept->menu = $lang->company->menu;
|
||||
$lang->group->menu = $lang->company->menu;
|
||||
$lang->user->menu = $lang->company->menu;
|
||||
|
||||
$lang->admin->subMenu = new stdclass();
|
||||
$lang->admin->subMenu->message = new stdclass();
|
||||
@@ -621,7 +621,6 @@ $lang->menugroup->job = 'ci';
|
||||
/* Nav group.*/
|
||||
$lang->navGroup = new stdclass();
|
||||
$lang->navGroup->my = 'my';
|
||||
$lang->navGroup->todo = 'my';
|
||||
$lang->navGroup->effort = 'my';
|
||||
$lang->navGroup->score = 'my';
|
||||
|
||||
@@ -669,13 +668,10 @@ $lang->navGroup->execution = 'execution';
|
||||
$lang->navGroup->task = 'execution';
|
||||
$lang->navGroup->build = 'execution';
|
||||
|
||||
$lang->navGroup->company = 'system';
|
||||
$lang->navGroup->sqlbuilder = 'system';
|
||||
$lang->navGroup->auditcl = 'system';
|
||||
$lang->navGroup->cmcl = 'system';
|
||||
$lang->navGroup->user = 'system';
|
||||
$lang->navGroup->group = 'system';
|
||||
$lang->navGroup->dept = 'system';
|
||||
$lang->navGroup->todo = 'system';
|
||||
$lang->navGroup->ldap = 'system';
|
||||
$lang->navGroup->process = 'system';
|
||||
$lang->navGroup->activity = 'system';
|
||||
@@ -693,6 +689,11 @@ $lang->navGroup->overtime = 'attend';
|
||||
$lang->navGroup->lieu = 'attend';
|
||||
|
||||
$lang->navGroup->admin = 'admin';
|
||||
$lang->navGroup->company = 'admin';
|
||||
$lang->navGroup->dept = 'admin';
|
||||
$lang->navGroup->user = 'admin';
|
||||
$lang->navGroup->group = 'admin';
|
||||
$lang->navGroup->dept = 'admin';
|
||||
$lang->navGroup->webhook = 'admin';
|
||||
$lang->navGroup->sms = 'admin';
|
||||
$lang->navGroup->message = 'admin';
|
||||
@@ -897,7 +898,7 @@ $lang->icons['score'] = 'tint';
|
||||
$lang->menu = new stdclass();
|
||||
$lang->menu->scrum = new stdclass();
|
||||
$lang->menu->scrum->index = '仪表盘|project|index|project={PROJECT}';
|
||||
$lang->menu->scrum->execution = "$lang->executionCommon|execution|all|status=all&executionID=0&from=project";
|
||||
$lang->menu->scrum->execution = "$lang->executionCommon|execution|all|status=all&projectID={PROJECT}&from=project";
|
||||
$lang->menu->scrum->projectstory = array('link' => $lang->SRCommon . '|projectstory|story', 'alias' => 'story,track');
|
||||
$lang->menu->scrum->doc = '文档|doc|index|';
|
||||
$lang->menu->scrum->qa = '测试|qa|index';
|
||||
@@ -905,7 +906,6 @@ $lang->menu->scrum->ci = '代码|repo|browse';
|
||||
$lang->menu->scrum->projectbuild = array('link' => '版本|projectbuild|browse|project={PROJECT}');
|
||||
$lang->menu->scrum->projectrelease = array('link' => '发布|projectrelease|browse|project={PROJECT}');
|
||||
$lang->menu->scrum->dynamic = array('link' => '动态|project|dynamic|project={PROJECT}');
|
||||
$lang->menu->scrum->other = array('link' => '其他|project|other', 'class' => 'dropdown dropdown-hover waterfall-list', 'subModule' => 'issue,risk,stakeholder');
|
||||
$lang->menu->scrum->projectsetting = array('link' => '设置|project|view|project={PROJECT}', 'subModule' => 'stakeholder', 'alias' => 'edit,manageproducts,group,managemembers,manageview,managepriv,whitelist,addwhitelist');
|
||||
|
||||
$lang->scrum = new stdclass();
|
||||
|
||||
@@ -147,6 +147,9 @@ class company extends control
|
||||
*/
|
||||
public function view()
|
||||
{
|
||||
$this->lang->navGroup->company = 'system';
|
||||
$this->lang->noMenuModule[] = 'company';
|
||||
|
||||
$this->company->setMenu();
|
||||
$this->view->title = $this->lang->company->common . $this->lang->colon . $this->lang->company->view;
|
||||
$this->view->position[] = $this->lang->company->view;
|
||||
@@ -167,6 +170,9 @@ class company extends control
|
||||
*/
|
||||
public function dynamic($browseType = 'today', $param = '', $recTotal = 0, $date = '', $direction = 'next')
|
||||
{
|
||||
$this->lang->navGroup->company = 'system';
|
||||
$this->lang->noMenuModule[] = 'company';
|
||||
|
||||
$this->company->setMenu();
|
||||
$this->app->loadLang('user');
|
||||
$this->app->loadLang('execution');
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#titlebar {display: none;}
|
||||
form {position: relative;}
|
||||
#querybox {float: none !important; width: auto;}
|
||||
#moreOrLite {right: 10px !important;}
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
<td class='c-actions'>
|
||||
<?php $disabled = $key == $config->custom->URSR ? "disabled=disabled" : '';?>
|
||||
<?php if(common::hasPriv('custom', 'editStoryConcept')) echo html::a($this->createLink('custom', 'editStoryConcept', "id=$key", '', true), "<i class='icon icon-edit'></i>", '', "class='btn iframe' title={$lang->edit}");?>
|
||||
<?php if(common::hasPriv('custom', 'deleteStoryConcept')) echo html::a($this->createLink('custom', 'deleteStoryConcept', "id=$key"), "<i class='icon icon-trash'></i>", 'hiddenwin', "class='btn' $disabled title={$lang->delete} data-group='system'");?>
|
||||
<?php if(common::hasPriv('custom', 'deleteStoryConcept')) echo html::a($this->createLink('custom', 'deleteStoryConcept', "id=$key"), "<i class='icon icon-trash'></i>", 'hiddenwin', "class='btn' $disabled title={$lang->delete} data-group='admin'");?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
|
||||
@@ -1914,7 +1914,7 @@ class execution extends control
|
||||
|
||||
/* Get execution's product. */
|
||||
$productID = 0;
|
||||
$productPairs = $this->loadModel('product')->getProductPairsByExecution($executionID);
|
||||
$productPairs = $this->loadModel('product')->getProductPairsByProject($executionID);
|
||||
if($productPairs) $productID = key($productPairs);
|
||||
|
||||
$this->view->title = $this->lang->execution->storyKanban;
|
||||
@@ -2569,7 +2569,7 @@ class execution extends control
|
||||
* All execution.
|
||||
*
|
||||
* @param string $status
|
||||
* @param int $executionID
|
||||
* @param int $projectID
|
||||
* @param string $orderBy
|
||||
* @param int $productID
|
||||
* @param int $recTotal
|
||||
@@ -2578,26 +2578,14 @@ class execution extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function all($status = 'all', $executionID = 0, $from = 'execution', $orderBy = 'id_desc', $productID = 0, $recTotal = 0, $recPerPage = 10, $pageID = 1)
|
||||
public function all($status = 'all', $projectID = 0, $from = 'execution', $orderBy = 'id_desc', $productID = 0, $recTotal = 0, $recPerPage = 10, $pageID = 1)
|
||||
{
|
||||
$this->app->loadLang('my');
|
||||
$this->app->loadLang('product');
|
||||
$this->app->loadLang('programplan');
|
||||
if($from == 'execution')
|
||||
{
|
||||
if($this->executions)
|
||||
{
|
||||
$execution = $this->commonAction($executionID);
|
||||
$executionID = $execution->id;
|
||||
}
|
||||
$this->session->set('executionList', $this->app->getURI(true));
|
||||
$projectID = 0;
|
||||
}
|
||||
elseif($from == 'project')
|
||||
{
|
||||
$this->lang->navGroup->execution = 'project';
|
||||
$projectID = $this->session->PRJ;
|
||||
}
|
||||
|
||||
if($from == 'execution') $this->session->set('executionList', $this->app->getURI(true));
|
||||
if($from == 'project') $this->lang->navGroup->execution = 'project';
|
||||
|
||||
/* Load pager and get tasks. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
@@ -2607,13 +2595,15 @@ class execution extends control
|
||||
$this->view->position[] = $this->lang->execution->allExecutions;
|
||||
|
||||
$this->view->executionStats = $this->project->getStats($projectID, $status, $productID, 0, 30, $orderBy, $pager);
|
||||
$this->view->products = array(0 => $this->lang->product->select) + $this->loadModel('product')->getProductPairsByProject($this->session->PRJ);
|
||||
$this->view->productID = $productID;
|
||||
$this->view->executionID = $executionID;
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->projects = $this->project->getPairsByModel();
|
||||
$this->view->pager = $pager;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->status = $status;
|
||||
$this->view->from = $from;
|
||||
$this->view->projectTree = $this->project->getTreeMenu(0, array('projectmodel', 'createManageLink'), 0, 'list');
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
@@ -313,6 +313,7 @@ class executionModel extends model
|
||||
$execution = $this->getByID($executionID);
|
||||
$this->session->set('project', $execution->project);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a execution.
|
||||
*
|
||||
@@ -345,7 +346,7 @@ class executionModel extends model
|
||||
->setDefault('lastEditedBy', $this->app->user->account)
|
||||
->setDefault('lastEditedDate', helper::now())
|
||||
->setDefault('team', substr($this->post->name,0, 30))
|
||||
->setIF($this->config->systemMode == 'new', 'execution', $this->session->PRJ)
|
||||
->setIF($this->config->systemMode == 'new', 'project', $this->session->PRJ)
|
||||
->setIF($this->config->systemMode == 'new', 'parent', $this->session->PRJ)
|
||||
->setIF($this->post->acl == 'open', 'whitelist', '')
|
||||
->join('whitelist', ',')
|
||||
@@ -1136,7 +1137,7 @@ class executionModel extends model
|
||||
->andWhere('t2.deleted')->eq(0)
|
||||
->fetchPairs();
|
||||
|
||||
$products = $this->loadModel('product')->getProductPairsByExecution($projectID);
|
||||
$products = $this->loadModel('product')->getProductPairsByProject($projectID);
|
||||
|
||||
foreach($executions as $id => $execution)
|
||||
{
|
||||
@@ -2309,7 +2310,7 @@ class executionModel extends model
|
||||
if($executionType == 'execution')
|
||||
{
|
||||
$childSprints = $this->dao->select('id')->from(TABLE_EXECUTION)->where('project')->eq($execution->id)->andWhere('type')->in('stage,sprint')->andWhere('deleted')->eq('0')->fetchPairs();
|
||||
$linkedProducts = $this->loadModel('product')->getProductPairsByExecution($execution->id);
|
||||
$linkedProducts = $this->loadModel('product')->getProductPairsByProject($execution->id);
|
||||
|
||||
$this->loadModel('user')->updateUserView(array($executionID), 'execution', $changedAccounts);
|
||||
if(!empty($childSprints)) $this->user->updateUserView($childSprints, 'sprint', $changedAccounts);
|
||||
@@ -2355,7 +2356,7 @@ class executionModel extends model
|
||||
$changedAccounts = array_unique($changedAccounts);
|
||||
|
||||
$this->loadModel('user')->updateUserView($executionID, $executionType, $changedAccounts);
|
||||
$linkedProducts = $this->loadModel('product')->getProductPairsByExecution($executionID);
|
||||
$linkedProducts = $this->loadModel('product')->getProductPairsByProject($executionID);
|
||||
if(!empty($linkedProducts)) $this->user->updateUserView(array_keys($linkedProducts), 'product', $changedAccounts);
|
||||
}
|
||||
|
||||
@@ -2386,7 +2387,7 @@ class executionModel extends model
|
||||
{
|
||||
$this->dao->delete()->from(TABLE_TEAM)->where('root')->eq($sprint->execution)->andWhere('type')->eq('execution')->andWhere('account')->eq($account)->exec();
|
||||
$this->loadModel('user')->updateUserView($sprint->execution, 'execution', array($account));
|
||||
$linkedProducts = $this->loadModel('product')->getProductPairsByExecution($sprint->execution);
|
||||
$linkedProducts = $this->loadModel('product')->getProductPairsByProject($sprint->execution);
|
||||
if(!empty($linkedProducts)) $this->user->updateUserView(array_keys($linkedProducts), 'product', array($account));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,25 +25,41 @@
|
||||
@-moz-document url-prefix() {.main-table tbody > tr.table-children > td:first-child::before {width: 4px;}}
|
||||
</style>
|
||||
<div id='mainMenu' class='clearfix'>
|
||||
<?php if($from == 'execution'):?>
|
||||
<div id="sidebarHeader">
|
||||
<div class="title">
|
||||
<?php echo empty($projectID) ? $lang->project->common : zget($projects, $projectID);?>
|
||||
<?php if($projectID) echo html::a(inLink('all'), "<i class='icon icon-sm icon-close'></i>", '', 'class="text-muted"');?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<div class='btn-toolbar pull-left'>
|
||||
<?php foreach($lang->execution->featureBar['all'] as $key => $label):?>
|
||||
<?php echo html::a(inlink("all", "status=$key&executionID=$executionID&orderBy=$orderBy&productID=$productID"), "<span class='text'>{$label}</span>", '', "class='btn btn-link' id='{$key}Tab'");?>
|
||||
<?php echo html::a(inlink("all", "status=$key&projectID=$projectID&from=$from&orderBy=$orderBy&productID=$productID"), "<span class='text'>{$label}</span>", '', "class='btn btn-link' id='{$key}Tab'");?>
|
||||
<?php endforeach;?>
|
||||
<div class='input-control space w-180px'>
|
||||
<?php echo html::select('product', $products, $productID, "class='chosen form-control' onchange='byProduct(this.value, $executionID, \"$status\")'");?>
|
||||
</div>
|
||||
</div>
|
||||
<div class='btn-toolbar pull-right'>
|
||||
<?php common::printLink('execution', 'export', "status=$status&productID=$productID&orderBy=$orderBy", "<i class='icon-export muted'> </i>" . $lang->export, '', "class='btn btn-link export'")?>
|
||||
<?php if(common::hasPriv('execution', 'create')) echo html::a($this->createLink('execution', 'create'), "<i class='icon icon-sm icon-plus'></i> " . $this->lang->execution->create, '', "class='btn btn-primary'");?>
|
||||
</div>
|
||||
</div>
|
||||
<div id='mainContent'>
|
||||
<div id='mainContent' class="main-row">
|
||||
<?php if($from == 'execution'):?>
|
||||
<div id="sidebar" class="side-col">
|
||||
<div class="sidebar-toggle"><i class="icon icon-angle-left"></i></div>
|
||||
<div class="cell">
|
||||
<?php echo $projectTree;?>
|
||||
<div class="text-center">
|
||||
<?php common::printLink('project', 'projectTitle', '', $lang->project->moduleSetting, '', "class='btn btn-info btn-wide iframe'", true, true);?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php $canOrder = (common::hasPriv('execution', 'updateOrder') and strpos($orderBy, 'order') !== false)?>
|
||||
<?php $canBatchEdit = common::hasPriv('execution', 'batchEdit'); ?>
|
||||
<form class='main-table' id='executionsForm' method='post' action='<?php echo inLink('batchEdit', "executionID=$executionID");?>' data-ride='table'>
|
||||
<form class='main-table' id='executionsForm' method='post' action='<?php echo inLink('batchEdit');?>' data-ride='table'>
|
||||
<table class='table has-sort-head table-fixed' id='executionList'>
|
||||
<?php $vars = "status=$status&executionID=$executionID&orderBy=%s&productID=$productID&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}";?>
|
||||
<?php $vars = "status=$status&projectID=$projectID&from=$from&orderBy=%s&productID=$productID&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}";?>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='c-id'>
|
||||
@@ -168,7 +184,7 @@
|
||||
<div class="checkbox-primary check-all"><label><?php echo $lang->selectAll?></label></div>
|
||||
<div class="table-actions btn-toolbar"><?php echo html::submitButton($lang->execution->batchEdit, '', 'btn');?></div>
|
||||
<?php endif;?>
|
||||
<?php if(!$canOrder and common::hasPriv('execution', 'updateOrder')) echo html::a(inlink('all', "status=$status&executionID=$executionID&order=order_desc&productID=$productID&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}"), $lang->execution->updateOrder, '', "class='btn'");?>
|
||||
<?php if(!$canOrder and common::hasPriv('execution', 'updateOrder')) echo html::a(inlink('all', "status=$status&projectID=$projectID&from=$from&order=order_desc&productID=$productID&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}"), $lang->execution->updateOrder, '', "class='btn'");?>
|
||||
<?php $pager->show('right', 'pagerjs');?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
|
||||
@@ -1062,7 +1062,6 @@ $lang->mail->methodOrder[65] = 'ztCloud';
|
||||
$lang->resource->custom = new stdclass();
|
||||
$lang->resource->custom->index = 'index';
|
||||
$lang->resource->custom->set = 'set';
|
||||
$lang->resource->custom->project = 'project';
|
||||
$lang->resource->custom->product = 'product';
|
||||
$lang->resource->custom->restore = 'restore';
|
||||
$lang->resource->custom->flow = 'flow';
|
||||
@@ -1076,17 +1075,16 @@ $lang->resource->custom->deleteStoryConcept = 'deleteStoryConcept';
|
||||
|
||||
$lang->custom->methodOrder[5] = 'index';
|
||||
$lang->custom->methodOrder[10] = 'set';
|
||||
$lang->custom->methodOrder[15] = 'project';
|
||||
$lang->custom->methodOrder[20] = 'product';
|
||||
$lang->custom->methodOrder[25] = 'restore';
|
||||
$lang->custom->methodOrder[30] = 'flow';
|
||||
$lang->custom->methodOrder[35] = 'working';
|
||||
$lang->custom->methodOrder[40] = 'setPublic';
|
||||
$lang->custom->methodOrder[45] = 'timezone';
|
||||
$lang->custom->methodOrder[55] = 'setStoryContcept';
|
||||
$lang->custom->methodOrder[60] = 'editStoryContcept';
|
||||
$lang->custom->methodOrder[65] = 'browseStoryContcept';
|
||||
$lang->custom->methodOrder[70] = 'deleteStoryContcept';
|
||||
$lang->custom->methodOrder[15] = 'product';
|
||||
$lang->custom->methodOrder[20] = 'restore';
|
||||
$lang->custom->methodOrder[25] = 'flow';
|
||||
$lang->custom->methodOrder[30] = 'working';
|
||||
$lang->custom->methodOrder[35] = 'setPublic';
|
||||
$lang->custom->methodOrder[40] = 'timezone';
|
||||
$lang->custom->methodOrder[45] = 'setStoryContcept';
|
||||
$lang->custom->methodOrder[50] = 'editStoryContcept';
|
||||
$lang->custom->methodOrder[55] = 'browseStoryContcept';
|
||||
$lang->custom->methodOrder[60] = 'deleteStoryContcept';
|
||||
|
||||
$lang->resource->datatable = new stdclass();
|
||||
$lang->resource->datatable->setGlobal = 'setGlobal';
|
||||
|
||||
@@ -113,7 +113,12 @@
|
||||
{
|
||||
if(methodLowerCase === 'create' && (link.params.programID || link.params.$1)) return 'program';
|
||||
}
|
||||
if(moduleName === 'my') if(methodLowerCase === 'team' || methodLowerCase == 'calendar') return 'system';
|
||||
if(moduleName === 'user')
|
||||
{
|
||||
if(['todo', 'task', 'story', 'bug', 'testtask', 'testcase', 'execution', 'dynamic', 'profile'].includes(methodLowerCase)) return 'system';
|
||||
}
|
||||
if(moduleName === 'my') if(methodLowerCase === 'team' || methodLowerCase == 'calendar') return 'system';
|
||||
if(moduleName === 'company') if(methodLowerCase === 'dynamic' || methodLowerCase == 'view') return 'system';
|
||||
if(moduleName === 'tree')
|
||||
{
|
||||
if(methodLowerCase === 'browse')
|
||||
@@ -131,9 +136,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
var myMethods = 'todocalendar|effortcalendar|todo|task|story|bug|testtask|testcase|execution|issue|risk|dynamic|profile';
|
||||
if(moduleName === 'user' && myMethods.indexOf(methodLowerCase) != -1) return 'my';
|
||||
|
||||
code = window.navGroup[moduleName] || moduleName || urlOrModuleName;
|
||||
return appsMap[code] ? code : '';
|
||||
}
|
||||
|
||||
@@ -115,13 +115,29 @@ class project extends control
|
||||
*/
|
||||
public function ajaxGetDropMenu($projectID = 0, $module, $method)
|
||||
{
|
||||
$projects = $this->dao->select('*')->from(TABLE_PROJECT)->where('id')->in($this->app->user->view->projects)->andWhere('deleted')->eq(0)->orderBy('parent desc')->fetchAll();
|
||||
$programs = $this->dao->select('id, name')->from(TABLE_PROGRAM)->where('type')->eq('program')->andWhere('deleted')->eq(0)->orderBy('order_asc')->fetchPairs();
|
||||
$projects = $this->dao->select('*')->from(TABLE_PROJECT)->where('id')->in($this->app->user->view->projects)->andWhere('deleted')->eq(0)->orderBy('openedDate_desc')->fetchAll('id');
|
||||
|
||||
/* Sort project by program. */
|
||||
$orderedProjects = array();
|
||||
foreach($programs as $programID => $programName)
|
||||
{
|
||||
foreach($projects as $project)
|
||||
{
|
||||
if($project->parent == $programID)
|
||||
{
|
||||
$orderedProjects[] = $project;
|
||||
unset($projects[$project->id]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!empty($projects)) $orderedProjects += $projects;
|
||||
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->projects = $projects;
|
||||
$this->view->projects = $orderedProjects;
|
||||
$this->view->module = $module;
|
||||
$this->view->method = $method;
|
||||
$this->view->programs = $this->loadModel('program')->getPairs(true);
|
||||
$this->view->programs = $programs;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
@@ -355,10 +371,10 @@ class project extends control
|
||||
$this->loadModel('action');
|
||||
|
||||
$project = $this->project->getByID($projectID);
|
||||
$projectID = $project->parent;
|
||||
$programID = $project->parent;
|
||||
|
||||
/* Navigation stay in project when enter from project list. */
|
||||
$this->adjustNavigation($from, $projectID);
|
||||
/* Navigation stay in program when enter from program list. */
|
||||
$this->adjustNavigation($from, $programID);
|
||||
|
||||
if($_POST)
|
||||
{
|
||||
@@ -409,7 +425,7 @@ class project extends control
|
||||
$this->view->PMUsers = $this->loadModel('user')->getPairs('noclosed|nodeleted|pmfirst', $project->PM);
|
||||
$this->view->users = $this->user->getPairs('noclosed|nodeleted');
|
||||
$this->view->project = $project;
|
||||
$this->view->projectList = $this->program->getParentPairs();
|
||||
$this->view->programList = $this->program->getParentPairs();
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->allProducts = array('0' => '') + $allProducts;
|
||||
$this->view->productPlans = $productPlans;
|
||||
|
||||
@@ -618,7 +618,7 @@ class projectModel extends model
|
||||
}
|
||||
|
||||
krsort($projectMenu);
|
||||
$projectMenu = array_pop($projectMenu);
|
||||
$projectMenu = implode('', $projectMenu);
|
||||
$lastMenu = "<ul class='tree' data-ride='tree' id='projectTree' data-name='tree-project'>{$projectMenu}</ul>\n";
|
||||
|
||||
return $lastMenu;
|
||||
@@ -635,6 +635,9 @@ class projectModel extends model
|
||||
{
|
||||
$link = $project->type == 'program' ? helper::createLink('project', 'browse', "projectID={$project->id}&status=all") : helper::createLink('project', 'index', "projectID={$project->id}", '', '', $project->id);
|
||||
$icon = $project->type == 'program' ? "<i class='icon icon-program'></i> " : "<i class='icon icon-project'></i> ";
|
||||
|
||||
if($this->app->rawModule == 'execution') $link = helper::createLink('execution', 'all', "status=all&projectID={$project->id}");
|
||||
|
||||
return html::a($link, $icon . $project->name, '_self', "id=project{$project->id} title='{$project->name}' class='text-ellipsis'");
|
||||
}
|
||||
|
||||
@@ -852,7 +855,7 @@ class projectModel extends model
|
||||
->setIF($this->post->future, 'budget', 0)
|
||||
->setIF($this->post->budget != 0, 'budget', round($this->post->budget, 2))
|
||||
->join('whitelist', ',')
|
||||
->stripTags($this->config->project->editor->prjedit['id'], $this->config->allowedTags)
|
||||
->stripTags($this->config->project->editor->edit['id'], $this->config->allowedTags)
|
||||
->remove('products,branch,plans,delta,future')
|
||||
->get();
|
||||
|
||||
@@ -892,7 +895,7 @@ class projectModel extends model
|
||||
return false;
|
||||
}
|
||||
|
||||
$project = $this->loadModel('file')->processImgURL($project, $this->config->project->editor->prjedit['id'], $this->post->uid);
|
||||
$project = $this->loadModel('file')->processImgURL($project, $this->config->project->editor->edit['id'], $this->post->uid);
|
||||
|
||||
$requiredFields = $this->config->project->edit->requiredFields;
|
||||
if($this->post->delta == 999) $requiredFields = trim(str_replace(',end,', ',', ",{$requiredFields},"), ',');
|
||||
@@ -909,7 +912,7 @@ class projectModel extends model
|
||||
->checkIF($project->begin != '', 'begin', 'date')
|
||||
->checkIF($project->end != '', 'end', 'date')
|
||||
->checkIF($project->end != '', 'end', 'gt', $project->begin)
|
||||
->check('name', 'unique', "id!=$projectID and deleted='0'")
|
||||
->check('name', 'unique', "id != $projectID and deleted='0'")
|
||||
->where('id')->eq($projectID)
|
||||
->exec();
|
||||
|
||||
@@ -1192,6 +1195,7 @@ class projectModel extends model
|
||||
public function updateProductProgram($oldProgram, $newProgram, $products)
|
||||
{
|
||||
$this->loadModel('action');
|
||||
$this->loadModel('program');
|
||||
/* Product belonging project set processing. */
|
||||
$oldTopProgram = $this->program->getTopByID($oldProgram);
|
||||
$newTopProgram = $this->program->getTopByID($newProgram);
|
||||
|
||||
@@ -21,7 +21,7 @@ $projectsPinYin = common::convert2Pinyin($projectNames);
|
||||
foreach($projects as $project)
|
||||
{
|
||||
$link = helper::createLink('project', 'index', "projectID=%s", '', '', $project->id);
|
||||
$projectName = $project->parent ? zget($programs, $project->parent, '') . '/' . $project->name : $project->name;
|
||||
$projectName = zget($programs, $project->parent, '') ? zget($programs, $project->parent) . '/' . $project->name : $project->name;
|
||||
if($project->status != 'done' and $project->status != 'closed' and $project->PM == $this->app->user->account)
|
||||
{
|
||||
$myProjectsHtml .= html::a(sprintf($link, $project->id), $projectName, '', "class='text-important' title='{$projectName}' data-key='" . zget($projectsPinYin, $projectName, '') . "'");
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<th class='w-120px'><?php echo $lang->program->parent;?></th>
|
||||
<td><?php echo html::select('parent', $projectList, $project->parent, "class='form-control chosen'");?></td>
|
||||
<td><?php echo html::select('parent', $programList, $project->parent, "class='form-control chosen'");?></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
/**
|
||||
* The prjprojecttitle view file of project 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 project
|
||||
* @version $Id: prjprojecttitle.html.php 4769 2013-05-05 07:24:21Z wwccss $
|
||||
* @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->project->moduleSetting;?></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-180px"><?php echo $lang->project->moduleOpen;?></td>
|
||||
<td><?php echo html::radio('programTitle', $lang->project->programTitle, $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';?>
|
||||
+13
-12
@@ -9,15 +9,16 @@
|
||||
* @version $Id: en.php 5080 2013-07-10 00:46:59Z wyd621@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->report->common = 'Berichte';
|
||||
$lang->report->index = 'Home';
|
||||
$lang->report->list = 'Liste';
|
||||
$lang->report->item = 'Eintrag';
|
||||
$lang->report->value = 'Wert';
|
||||
$lang->report->percent = '%';
|
||||
$lang->report->undefined = 'Undefiniert';
|
||||
$lang->report->query = 'Abfrage';
|
||||
$lang->report->annual = 'Annual Summary';
|
||||
$lang->report->common = 'Berichte';
|
||||
$lang->report->index = 'Home';
|
||||
$lang->report->list = 'Liste';
|
||||
$lang->report->item = 'Eintrag';
|
||||
$lang->report->value = 'Wert';
|
||||
$lang->report->percent = '%';
|
||||
$lang->report->undefined = 'Undefiniert';
|
||||
$lang->report->query = 'Abfrage';
|
||||
$lang->report->annual = 'Annual Summary';
|
||||
$lang->report->executionCommon = 'Execution';
|
||||
|
||||
$lang->report->colors[] = 'AFD8F8';
|
||||
$lang->report->colors[] = 'F6BD0F';
|
||||
@@ -37,7 +38,7 @@ $lang->report->assign['assign'] = 'Zugeordnet';
|
||||
|
||||
$lang->report->singleColor[] = 'F6BD0F';
|
||||
|
||||
$lang->report->executionDeviation = $lang->executionCommon . ' Abweichung';
|
||||
$lang->report->executionDeviation = 'Durchgeführt Abweichung';
|
||||
$lang->report->productSummary = $lang->productCommon . ' Zusammenfassung';
|
||||
$lang->report->bugCreate = 'Bug gemeldet';
|
||||
$lang->report->bugAssign = 'Bug zugeordnet';
|
||||
@@ -46,7 +47,7 @@ $lang->report->workloadAB = 'Arbeitslast';
|
||||
$lang->report->bugOpenedDate = 'Bug gemeldet am';
|
||||
$lang->report->beginAndEnd = ' : von';
|
||||
$lang->report->dept = 'Abteilung';
|
||||
$lang->report->deviationChart = $lang->executionCommon . ' Abweichnungs Chart';
|
||||
$lang->report->deviationChart = 'Durchgeführt Abweichnungs Chart';
|
||||
|
||||
$lang->reportList = new stdclass();
|
||||
$lang->reportList->execution = new stdclass();
|
||||
@@ -54,7 +55,7 @@ $lang->reportList->product = new stdclass();
|
||||
$lang->reportList->test = new stdclass();
|
||||
$lang->reportList->staff = new stdclass();
|
||||
|
||||
$lang->reportList->execution->lists[10] = $lang->executionCommon . ' Abweichnung|report|executiondeviation';
|
||||
$lang->reportList->execution->lists[10] = 'Durchgeführt Abweichnung|report|executiondeviation';
|
||||
$lang->reportList->product->lists[10] = $lang->productCommon . ' Zusammenfassung|report|productsummary';
|
||||
$lang->reportList->test->lists[10] = 'Bugs gemeldet|report|bugcreate';
|
||||
$lang->reportList->test->lists[13] = 'Bugs zugeordnet|report|bugassign';
|
||||
|
||||
+13
-12
@@ -9,15 +9,16 @@
|
||||
* @version $Id: en.php 5080 2013-07-10 00:46:59Z wyd621@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->report->common = 'Report';
|
||||
$lang->report->index = 'Report Home';
|
||||
$lang->report->list = 'Report';
|
||||
$lang->report->item = 'Item';
|
||||
$lang->report->value = 'Value';
|
||||
$lang->report->percent = '%';
|
||||
$lang->report->undefined = 'Undefined';
|
||||
$lang->report->query = 'Query';
|
||||
$lang->report->annual = 'Annual Summary';
|
||||
$lang->report->common = 'Report';
|
||||
$lang->report->index = 'Report Home';
|
||||
$lang->report->list = 'Report';
|
||||
$lang->report->item = 'Item';
|
||||
$lang->report->value = 'Value';
|
||||
$lang->report->percent = '%';
|
||||
$lang->report->undefined = 'Undefined';
|
||||
$lang->report->query = 'Query';
|
||||
$lang->report->annual = 'Annual Summary';
|
||||
$lang->report->executionCommon = 'Execution';
|
||||
|
||||
$lang->report->colors[] = 'AFD8F8';
|
||||
$lang->report->colors[] = 'F6BD0F';
|
||||
@@ -37,7 +38,7 @@ $lang->report->assign['assign'] = 'Assigned';
|
||||
|
||||
$lang->report->singleColor[] = 'F6BD0F';
|
||||
|
||||
$lang->report->executionDeviation = $lang->executionCommon . ' Deviation';
|
||||
$lang->report->executionDeviation = 'Execution Deviation';
|
||||
$lang->report->productSummary = $lang->productCommon . ' Summary';
|
||||
$lang->report->bugCreate = 'Bug Reported Summary';
|
||||
$lang->report->bugAssign = 'Bug Assigned Summary';
|
||||
@@ -46,7 +47,7 @@ $lang->report->workloadAB = 'Workload';
|
||||
$lang->report->bugOpenedDate = 'Bug reported from';
|
||||
$lang->report->beginAndEnd = ' From';
|
||||
$lang->report->dept = 'Department';
|
||||
$lang->report->deviationChart = $lang->executionCommon . ' Deviation Chart';
|
||||
$lang->report->deviationChart = 'Execution Deviation Chart';
|
||||
|
||||
$lang->reportList = new stdclass();
|
||||
$lang->reportList->execution = new stdclass();
|
||||
@@ -54,7 +55,7 @@ $lang->reportList->product = new stdclass();
|
||||
$lang->reportList->test = new stdclass();
|
||||
$lang->reportList->staff = new stdclass();
|
||||
|
||||
$lang->reportList->execution->lists[10] = $lang->executionCommon . ' Deviation|report|executiondeviation';
|
||||
$lang->reportList->execution->lists[10] = 'Execution Deviation|report|executiondeviation';
|
||||
$lang->reportList->product->lists[10] = $lang->productCommon . ' Summary|report|productsummary';
|
||||
$lang->reportList->test->lists[10] = 'Bug Reported Summary|report|bugcreate';
|
||||
$lang->reportList->test->lists[13] = 'Bug Assigned Summary|report|bugassign';
|
||||
|
||||
+13
-12
@@ -9,15 +9,16 @@
|
||||
* @version $Id: en.php 5080 2013-07-10 00:46:59Z wyd621@gmail.com $
|
||||
* @link https://www.zentao.pm
|
||||
*/
|
||||
$lang->report->common = 'Rapports';
|
||||
$lang->report->index = 'Accueil Rapports';
|
||||
$lang->report->list = 'Rapports';
|
||||
$lang->report->item = 'Item';
|
||||
$lang->report->value = 'Valeur';
|
||||
$lang->report->percent = '%';
|
||||
$lang->report->undefined = 'N/D';
|
||||
$lang->report->query = 'Requête';
|
||||
$lang->report->annual = 'Résumé Annuel';
|
||||
$lang->report->common = 'Rapports';
|
||||
$lang->report->index = 'Accueil Rapports';
|
||||
$lang->report->list = 'Rapports';
|
||||
$lang->report->item = 'Item';
|
||||
$lang->report->value = 'Valeur';
|
||||
$lang->report->percent = '%';
|
||||
$lang->report->undefined = 'N/D';
|
||||
$lang->report->query = 'Requête';
|
||||
$lang->report->annual = 'Résumé Annuel';
|
||||
$lang->report->executionCommon = 'Execution';
|
||||
|
||||
$lang->report->colors[] = 'AFD8F8';
|
||||
$lang->report->colors[] = 'F6BD0F';
|
||||
@@ -37,7 +38,7 @@ $lang->report->assign['assign'] = 'Affecté';
|
||||
|
||||
$lang->report->singleColor[] = 'F6BD0F';
|
||||
|
||||
$lang->report->executionDeviation = 'Dérive ' . $lang->executionCommon;
|
||||
$lang->report->executionDeviation = 'Dérive Effectué';
|
||||
$lang->report->productSummary = 'Résumé ' . $lang->productCommon;
|
||||
$lang->report->bugCreate = 'Résumé remontée Bugs';
|
||||
$lang->report->bugAssign = 'Résumé affectation Bugs';
|
||||
@@ -46,7 +47,7 @@ $lang->report->workloadAB = 'Charge Travail';
|
||||
$lang->report->bugOpenedDate = 'Bugs signalés de';
|
||||
$lang->report->beginAndEnd = ' de';
|
||||
$lang->report->dept = 'Compartiment';
|
||||
$lang->report->deviationChart = 'Graphique de Dérive du ' . $lang->executionCommon;
|
||||
$lang->report->deviationChart = 'Graphique de Dérive d uEffectué' ;
|
||||
|
||||
$lang->reportList = new stdclass();
|
||||
$lang->reportList->execution = new stdclass();
|
||||
@@ -54,7 +55,7 @@ $lang->reportList->product = new stdclass();
|
||||
$lang->reportList->test = new stdclass();
|
||||
$lang->reportList->staff = new stdclass();
|
||||
|
||||
$lang->reportList->execution->lists[10] = 'Dérive ' . $lang->executionCommon . '|report|executiondeviation';
|
||||
$lang->reportList->execution->lists[10] = 'Dériv Effectué|report|executiondeviation';
|
||||
$lang->reportList->product->lists[10] = 'Résumé ' . $lang->productCommon . '|report|productsummary';
|
||||
$lang->reportList->test->lists[10] = 'Résumé remontée Bugs|report|bugcreate';
|
||||
$lang->reportList->test->lists[13] = 'Résumé affectation Bugs|report|bugassign';
|
||||
|
||||
+13
-12
@@ -9,15 +9,16 @@
|
||||
* @version $Id: vi.php 5080 2013-07-10 00:46:59Z wyd621@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->report->common = 'Báo cáo';
|
||||
$lang->report->index = 'Trang báo cáo';
|
||||
$lang->report->list = 'Báo cáo';
|
||||
$lang->report->item = 'Hạng mục';
|
||||
$lang->report->value = 'Giá trị';
|
||||
$lang->report->percent = '%';
|
||||
$lang->report->undefined = 'Chưa định nghĩa';
|
||||
$lang->report->query = 'Truy vấn';
|
||||
$lang->report->annual = 'Tóm tắt theo năm';
|
||||
$lang->report->common = 'Báo cáo';
|
||||
$lang->report->index = 'Trang báo cáo';
|
||||
$lang->report->list = 'Báo cáo';
|
||||
$lang->report->item = 'Hạng mục';
|
||||
$lang->report->value = 'Giá trị';
|
||||
$lang->report->percent = '%';
|
||||
$lang->report->undefined = 'Chưa định nghĩa';
|
||||
$lang->report->query = 'Truy vấn';
|
||||
$lang->report->annual = 'Tóm tắt theo năm';
|
||||
$lang->report->executionCommon = 'Execution';
|
||||
|
||||
$lang->report->colors[] = 'AFD8F8';
|
||||
$lang->report->colors[] = 'F6BD0F';
|
||||
@@ -37,7 +38,7 @@ $lang->report->assign['assign'] = 'Đã giao';
|
||||
|
||||
$lang->report->singleColor[] = 'F6BD0F';
|
||||
|
||||
$lang->report->executionDeviation = 'Độ lệch '.$lang->executionCommon;
|
||||
$lang->report->executionDeviation = 'Độ lệch thực hiện';
|
||||
$lang->report->productSummary = 'Tóm tắt '.$lang->productCommon;
|
||||
$lang->report->bugCreate = 'Báo cáo Bug';
|
||||
$lang->report->bugAssign = 'Bàn giao Bug';
|
||||
@@ -46,7 +47,7 @@ $lang->report->workloadAB = 'Lượng công việc';
|
||||
$lang->report->bugOpenedDate = 'Bug được báo cáo từ';
|
||||
$lang->report->beginAndEnd = ' từ';
|
||||
$lang->report->dept = 'Phòng/Ban';
|
||||
$lang->report->deviationChart = 'Biểu đồ chênh lệch '.$lang->executionCommon;
|
||||
$lang->report->deviationChart = 'Biểu đồ chênh lệcthực hiệnh';
|
||||
|
||||
$lang->reportList = new stdclass();
|
||||
$lang->reportList->execution = new stdclass();
|
||||
@@ -54,7 +55,7 @@ $lang->reportList->product = new stdclass();
|
||||
$lang->reportList->test = new stdclass();
|
||||
$lang->reportList->staff = new stdclass();
|
||||
|
||||
$lang->reportList->execution->lists[10] = 'Chênh lệch '.$lang->executionCommon . '|report|executiondeviation';
|
||||
$lang->reportList->execution->lists[10] = 'Chênh lệchthực hiện|report|executiondeviation';
|
||||
$lang->reportList->product->lists[10] = 'Tóm tắt '.$lang->productCommon . '|report|productsummary';
|
||||
$lang->reportList->test->lists[10] = 'Báo cáo Bug|report|bugcreate';
|
||||
$lang->reportList->test->lists[13] = 'Bàn giao Bug|report|bugassign';
|
||||
|
||||
@@ -9,15 +9,16 @@
|
||||
* @version $Id: zh-cn.php 5080 2013-07-10 00:46:59Z wyd621@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->report->common = '统计视图';
|
||||
$lang->report->index = '统计首页';
|
||||
$lang->report->list = '统计报表';
|
||||
$lang->report->item = '条目';
|
||||
$lang->report->value = '值';
|
||||
$lang->report->percent = '百分比';
|
||||
$lang->report->undefined = '未设定';
|
||||
$lang->report->query = '查询';
|
||||
$lang->report->annual = '年度总结';
|
||||
$lang->report->common = '统计视图';
|
||||
$lang->report->index = '统计首页';
|
||||
$lang->report->list = '统计报表';
|
||||
$lang->report->item = '条目';
|
||||
$lang->report->value = '值';
|
||||
$lang->report->percent = '百分比';
|
||||
$lang->report->undefined = '未设定';
|
||||
$lang->report->query = '查询';
|
||||
$lang->report->annual = '年度总结';
|
||||
$lang->report->executionCommon = '执行';
|
||||
|
||||
$lang->report->colors[] = 'AFD8F8';
|
||||
$lang->report->colors[] = 'F6BD0F';
|
||||
@@ -37,7 +38,7 @@ $lang->report->assign['assign'] = '已指派';
|
||||
|
||||
$lang->report->singleColor[] = 'F6BD0F';
|
||||
|
||||
$lang->report->executionDeviation = $lang->executionCommon . '偏差报表';
|
||||
$lang->report->executionDeviation = '执行偏差报表';
|
||||
$lang->report->productSummary = $lang->productCommon . '汇总表';
|
||||
$lang->report->bugCreate = 'Bug创建表';
|
||||
$lang->report->bugAssign = 'Bug指派表';
|
||||
@@ -46,7 +47,7 @@ $lang->report->workloadAB = '工作负载';
|
||||
$lang->report->bugOpenedDate = 'Bug创建时间';
|
||||
$lang->report->beginAndEnd = '起止时间';
|
||||
$lang->report->dept = '部门';
|
||||
$lang->report->deviationChart = $lang->executionCommon . '偏差曲线';
|
||||
$lang->report->deviationChart = '执行偏差曲线';
|
||||
|
||||
$lang->reportList = new stdclass();
|
||||
$lang->reportList->execution = new stdclass();
|
||||
@@ -54,7 +55,7 @@ $lang->reportList->product = new stdclass();
|
||||
$lang->reportList->test = new stdclass();
|
||||
$lang->reportList->staff = new stdclass();
|
||||
|
||||
$lang->reportList->execution->lists[10] = $lang->executionCommon . '偏差报表|report|executiondeviation';
|
||||
$lang->reportList->execution->lists[10] = '执行偏差报表|report|executiondeviation';
|
||||
$lang->reportList->product->lists[10] = $lang->productCommon . '汇总表|report|productsummary';
|
||||
$lang->reportList->test->lists[10] = 'Bug创建表|report|bugcreate';
|
||||
$lang->reportList->test->lists[13] = 'Bug指派表|report|bugassign';
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<div class='cell'>
|
||||
<div class="table-row" id='conditions'>
|
||||
<div class='input-group w-400px input-group-sm'>
|
||||
<span class='input-group-addon'><?php echo $lang->executionCommon . $lang->report->beginAndEnd;?></span>
|
||||
<span class='input-group-addon'><?php echo $lang->report->executionCommon . $lang->report->beginAndEnd;?></span>
|
||||
<div class='datepicker-wrapper datepicker-date'><?php echo html::input('date', $begin, "class='form-control form-date' onchange='changeDate(this.value, \"$end\")'");?></div>
|
||||
<span class='input-group-addon'><?php echo $lang->report->to;?></span>
|
||||
<div class='datepicker-wrapper datepicker-date'><?php echo html::input('date', $end, "class='form-control form-date' onchange='changeDate(\"$begin\", this.value)'");?></div>
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
</tr>
|
||||
<?php endfor;?>
|
||||
</tbody>
|
||||
<tfoot><tr><td colspan='6' class='text-center form-actions'><?php echo html::submitButton() . ' ' . html::backButton(); ?></td></tr></tfoot>
|
||||
<tfoot><tr><td colspan='6' class='text-left form-actions'><?php echo html::submitButton() . ' ' . html::backButton(); ?></td></tr></tfoot>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -88,7 +88,7 @@ class testcaseModel extends model
|
||||
$result = $this->loadModel('common')->removeDuplicate('case', $case, $param);
|
||||
if($result['stop']) return array('status' => 'exists', 'id' => $result['duplicate']);
|
||||
|
||||
/* value of story may be showmore. */
|
||||
/* Value of story may be showmore. */
|
||||
$case->story = (int)$case->story;
|
||||
$this->dao->insert(TABLE_CASE)->data($case)->autoCheck()->batchCheck($this->config->testcase->create->requiredFields, 'notempty')->exec();
|
||||
if(!$this->dao->isError())
|
||||
@@ -112,6 +112,27 @@ class testcaseModel extends model
|
||||
if($step->type == 'group') $parentStepID = $this->dao->lastInsertID();
|
||||
if($step->type == 'step') $parentStepID = 0;
|
||||
}
|
||||
|
||||
/* If the story is linked project, make the case link the project. */
|
||||
if(!empty($case->story))
|
||||
{
|
||||
$projects = $this->dao->select('project')->from(TABLE_PROJECTSTORY)->Where('story')->eq($case->story)->fetchAll('project');
|
||||
if(!empty($projects))
|
||||
{
|
||||
foreach($projects as $projectID => $project)
|
||||
{
|
||||
$lastOrder = (int)$this->dao->select('*')->from(TABLE_PROJECTCASE)->where('project')->eq($projectID)->orderBy('order_desc')->limit(1)->fetch('order');
|
||||
$data = new stdclass();
|
||||
$data->project = $projectID;
|
||||
$data->product = $case->product;
|
||||
$data->case = $caseID;
|
||||
$data->version = 1;
|
||||
$data->order = ++ $lastOrder;
|
||||
$this->dao->insert(TABLE_PROJECTCASE)->data($data)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return array('status' => 'created', 'id' => $caseID);
|
||||
}
|
||||
}
|
||||
@@ -250,7 +271,39 @@ class testcaseModel extends model
|
||||
->beginIF($auto == 'unit')->andWhere('t1.auto')->eq('unit')->fi()
|
||||
->beginIF($auto != 'unit')->andWhere('t1.auto')->ne('unit')->fi()
|
||||
->andWhere('t1.deleted')->eq('0')
|
||||
->orderBy($orderBy)->page($pager)->fetchAll('id');
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchAll('id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get project cases of a module.
|
||||
*
|
||||
* @param int $productID
|
||||
* @param int $moduleIdList
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @param string $auto no|unit
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getModuleProjectCases($productID, $branch = 0, $moduleIdList = 0, $orderBy = 'id_desc', $pager = null, $browseType = '', $auto = 'no')
|
||||
{
|
||||
return $this->dao->select('distinct t1.*, t2.*, t4.title as storyTitle')->from(TABLE_PROJECTCASE)->alias('t1')
|
||||
->leftJoin(TABLE_CASE)->alias('t2')->on('t1.case=t2.id')
|
||||
->leftJoin(TABLE_PROJECTSTORY)->alias('t3')->on('t3.story=t2.story')
|
||||
->leftJoin(TABLE_STORY)->alias('t4')->on('t3.story=t4.id')
|
||||
->where('t2.product')->eq((int)$productID)
|
||||
->beginIF($this->lang->navGroup->testcase != 'qa')->andWhere('t1.project')->eq($this->session->PRJ)->fi()
|
||||
->beginIF($branch)->andWhere('t2.branch')->eq($branch)->fi()
|
||||
->beginIF($moduleIdList)->andWhere('t2.module')->in($moduleIdList)->fi()
|
||||
->beginIF($browseType == 'wait')->andWhere('t2.status')->eq($browseType)->fi()
|
||||
->beginIF($auto == 'unit')->andWhere('t2.auto')->eq('unit')->fi()
|
||||
->beginIF($auto != 'unit')->andWhere('t2.auto')->ne('unit')->fi()
|
||||
->andWhere('t2.deleted')->eq('0')
|
||||
->orderBy($orderBy)
|
||||
->page($pager, 't1.case')
|
||||
->fetchAll('id');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -350,12 +403,20 @@ class testcaseModel extends model
|
||||
/* Set modules and browse type. */
|
||||
$modules = $moduleID ? $this->loadModel('tree')->getAllChildId($moduleID) : '0';
|
||||
$browseType = ($browseType == 'bymodule' and $this->session->caseBrowseType and $this->session->caseBrowseType != 'bysearch') ? $this->session->caseBrowseType : $browseType;
|
||||
$group = $this->lang->navGroup->testcase;
|
||||
|
||||
/* By module or all cases. */
|
||||
$cases = array();
|
||||
if($browseType == 'bymodule' or $browseType == 'all' or $browseType == 'wait')
|
||||
{
|
||||
$cases = $this->getModuleCases($productID, $branch, $modules, $sort, $pager, $browseType, $auto);
|
||||
if($group == 'project')
|
||||
{
|
||||
$cases = $this->getModuleProjectCases($productID, $branch, $modules, $sort, $pager, $browseType, $auto);
|
||||
}
|
||||
else
|
||||
{
|
||||
$cases = $this->getModuleCases($productID, $branch, $modules, $sort, $pager, $browseType, $auto);
|
||||
}
|
||||
}
|
||||
/* Cases need confirmed. */
|
||||
elseif($browseType == 'needconfirm')
|
||||
|
||||
@@ -457,7 +457,6 @@ class testtaskModel extends model
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_CASE)->where($query)
|
||||
->andWhere('id')->notIN($linkedCases)
|
||||
->beginIF($this->config->systemMode == 'new' and $this->lang->navGroup->testtask != 'qa')->andWhere('project')->eq($this->session->PRJ)->fi()
|
||||
->andWhere('status')->ne('wait')
|
||||
->andWhere('type')->ne('unit')
|
||||
->beginIF($task->branch)->andWhere('branch')->in("0,$task->branch")->fi()
|
||||
@@ -967,8 +966,20 @@ class testtaskModel extends model
|
||||
$row->assignedTo = '';
|
||||
$row->status = 'wait';
|
||||
if($type == 'bybuild') $row->assignedTo = zget($assignedToPairs, $caseID, '');
|
||||
|
||||
$this->dao->replace(TABLE_TESTRUN)->data($row)->exec();
|
||||
|
||||
/* When the cases linked the testtask, the cases link to the project. */
|
||||
if($this->lang->navGroup->testtask != 'qa')
|
||||
{
|
||||
$lastOrder = (int)$this->dao->select('*')->from(TABLE_PROJECTCASE)->where('project')->eq($projectID)->orderBy('order_desc')->limit(1)->fetch('order');
|
||||
$data = new stdclass();
|
||||
$data->project = $this->session->PRJ;
|
||||
$data->product = $this->session->product;
|
||||
$data->case = $caseID;
|
||||
$data->version = 1;
|
||||
$data->order = ++ $lastOrder;
|
||||
$this->dao->replace(TABLE_PROJECTCASE)->data($data)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user