@@ -219,10 +221,9 @@ js::set('flow', $config->global->flow); bug->steps;?> - + fetch('user', 'ajaxPrintTemplates', 'type=bug&link=steps');?> - caselib->getLibCases($libID, $browseType, $queryID, $moduleID, $sort, $pager); - if(empty($cases) and $pageID > 1) - { - $pager = pager::init(0, $recPerPage, 1); - $cases = $this->caselib->getLibCases($libID, $browseType, $queryID, $moduleID, $sort, $pager); - } $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'testcase', true); diff --git a/module/ci/model.php b/module/ci/model.php index 8583bf61b5..02e2ff7dbf 100644 --- a/module/ci/model.php +++ b/module/ci/model.php @@ -66,13 +66,13 @@ class ciModel extends model $userPWD = "$jenkinsUser:$jenkinsPassword"; $queueUrl = sprintf('%s/queue/item/%s/api/json', $jenkinsServer, $compile->queue); - $response = common::http($queueUrl, '', array('CURLOPT_USERPWD' => $userPWD)); + $response = common::http($queueUrl, '', array(CURLOPT_USERPWD => $userPWD)); $this->dao->update(TABLE_COMPILE)->set('times = times + 1')->where('id')->eq($compile->id)->exec(); if(strripos($response, "404") > -1) { $infoUrl = sprintf("%s/job/%s/api/xml?tree=builds[id,number,result,queueId]&xpath=//build[queueId=%s]", $jenkinsServer, $compile->jkJob, $compile->queue); - $response = common::http($infoUrl, '', array('CURLOPT_USERPWD' => $userPWD)); + $response = common::http($infoUrl, '', array(CURLOPT_USERPWD => $userPWD)); if($response) { $buildInfo = simplexml_load_string($response); @@ -83,7 +83,7 @@ class ciModel extends model $this->updateBuildStatus($compile, $result); $logUrl = sprintf('%s/job/%s/%s/consoleText', $jenkinsServer, $compile->jkJob, $buildNumber); - $response = common::http($logUrl, '', array('CURLOPT_USERPWD' => $userPWD)); + $response = common::http($logUrl, '', array(CURLOPT_USERPWD => $userPWD)); $this->dao->update(TABLE_COMPILE)->set('logs')->eq($response)->where('id')->eq($compile->id)->exec(); } } @@ -93,7 +93,7 @@ class ciModel extends model if(!empty($queueInfo->executable)) { $buildUrl = $queueInfo->executable->url . 'api/json?pretty=true'; - $response = common::http($buildUrl, '', array('CURLOPT_USERPWD' => $userPWD)); + $response = common::http($buildUrl, '', array(CURLOPT_USERPWD => $userPWD)); $buildInfo = json_decode($response); if($buildInfo->building) @@ -106,7 +106,7 @@ class ciModel extends model $this->updateBuildStatus($compile, $result); $logUrl = $buildInfo->url . 'logText/progressiveText/api/json'; - $response = common::http($logUrl, '', array('CURLOPT_USERPWD' => $userPWD)); + $response = common::http($logUrl, '', array(CURLOPT_USERPWD => $userPWD)); $this->dao->update(TABLE_COMPILE)->set('logs')->eq($response)->where('id')->eq($compile->id)->exec(); } } @@ -139,7 +139,7 @@ class ciModel extends model public function sendRequest($url, $data, $userPWD = '') { if(!empty($data->PARAM_TAG)) $data->PARAM_REVISION = ''; - $response = common::http($url, $data, array('CURLOPT_HEADER' => true, 'CURLOPT_USERPWD' => $userPWD)); + $response = common::http($url, $data, array(CURLOPT_HEADER => true, CURLOPT_USERPWD => $userPWD)); if(preg_match("!Location: .*item/(.*)/!", $response, $matches)) return $matches[1]; return 0; } diff --git a/module/common/model.php b/module/common/model.php index 6327e1955d..9b977a6b8b 100644 --- a/module/common/model.php +++ b/module/common/model.php @@ -11,7 +11,7 @@ */ class commonModel extends model { - static public $errors = array(); + static public $requestErrors = array(); /** * The construc method, to do some auto things. @@ -1859,8 +1859,8 @@ EOD; * * @param string $url * @param string|array $data - * @param bool $optHeader - * @param string $userPWD + * @param array $options This is option and value pair, like CURLOPT_HEADER => true. Use curl_setopt function to set options. + * @param array $headers Set request headers. * @static * @access public * @return string @@ -1870,7 +1870,10 @@ EOD; global $lang, $app; if(!extension_loaded('curl')) return json_encode(array('result' => 'fail', 'message' => $lang->error->noCurlExt)); - commonModel::$errors = array(); + commonModel::$requestErrors = array(); + + if(!is_array($headers)) $headers = (array)$headers; + $headers[] = "API-RemoteIP: " . zget($_SERVER, 'REMOTE_ADDR', ''); $curl = curl_init(); curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); @@ -1884,17 +1887,16 @@ EOD; curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); curl_setopt($curl, CURLOPT_HEADER, FALSE); curl_setopt($curl, CURLINFO_HEADER_OUT, TRUE); - - $headers[] = "API-RemoteIP: " . $_SERVER['REMOTE_ADDR']; curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_URL, $url); + if(!empty($data)) { curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } - foreach($options as $option => $value) curl_setopt($curl, $option, $value); + if($options) curl_setopt_array($curl, $options); $response = curl_exec($curl); $errors = curl_error($curl); @@ -1914,7 +1916,7 @@ EOD; fclose($fh); } - if($errors) commonModel::$errors[] = $errors; + if($errors) commonModel::$requestErrors[] = $errors; return $response; } diff --git a/module/doc/model.php b/module/doc/model.php index 498fdc0a56..b171f67109 100644 --- a/module/doc/model.php +++ b/module/doc/model.php @@ -513,15 +513,15 @@ class docModel extends model * * @param int $libID * @param int $module - * @param string $mode undeleted|all + * @param string $mode normal|all * @access public * @return void */ - public function getPrivDocs($libID = 0, $module = 0, $mode = 'undeleted') + public function getPrivDocs($libID = 0, $module = 0, $mode = 'normal') { $stmt = $this->dao->select('*')->from(TABLE_DOC) ->where('1=1') - ->beginIF($mode == 'undeleted')->andWhere('deleted')->eq(0)->fi() + ->beginIF($mode == 'normal')->andWhere('deleted')->eq(0)->fi() ->beginIF($this->config->doc->notArticleType)->andWhere('type')->notIN($this->config->doc->notArticleType)->fi() ->beginIF($libID)->andWhere('lib')->in($libID)->fi() ->beginIF(strpos($this->config->doc->custom->showLibs, 'children') === false)->andWhere('module')->in($module)->fi() diff --git a/module/install/lang/zh-cn.php b/module/install/lang/zh-cn.php index ae3ffad6d2..ee72c96ae7 100644 --- a/module/install/lang/zh-cn.php +++ b/module/install/lang/zh-cn.php @@ -195,7 +195,7 @@ $lang->install->chanzhi->desc = <<install->zdoo = new stdclass(); -$lang->install->zdoo->name = 'ZDOO'; +$lang->install->zdoo->name = 'ZDOO协同'; $lang->install->zdoo->logo = 'images/main/zdoo.ico'; $lang->install->zdoo->url = 'https://www.zdoo.com'; $lang->install->zdoo->desc = <<token ? $jenkins->token : $jenkins->password; $userPWD = "$jenkinsUser:$jenkinsPassword"; - $response = common::http($jenkinsServer . '/api/json/items/list', '', array('CURLOPT_USERPWD' => $userPWD)); + $response = common::http($jenkinsServer . '/api/json/items/list', '', array(CURLOPT_USERPWD => $userPWD)); $response = json_decode($response); $tasks = array(); diff --git a/module/job/js/create.js b/module/job/js/create.js index f299816283..20d93c09ed 100644 --- a/module/job/js/create.js +++ b/module/job/js/create.js @@ -100,13 +100,11 @@ $('#jkHost').change(function() $('#jkJobBox .loading').remove(); $('#jkJobBox .input-group').append(html); - var dropDirection = $('#jkJobBox #jkJob option').length > 2 ? 'up' : 'auto'; - $('#jkJobBox #jkJob').chosen({drop_direction: dropDirection}); + $('#jkJobBox #jkJob').chosen({drop_direction: 'auto'}); }) }) $(function() { - $('#jkHost').chosen({drop_direction: $('#jkHost option').length > 3 ? 'up' : 'auto'}); $('#triggerType').change(); }); diff --git a/module/job/js/edit.js b/module/job/js/edit.js index aacfdb51f8..4b30331753 100644 --- a/module/job/js/edit.js +++ b/module/job/js/edit.js @@ -104,14 +104,12 @@ $('#jkHost').change(function() $('#jkJobBox .loading').remove(); $('#jkJobBox .input-group').append(html); - var dropDirection = $('#jkJobBox #jkJob option').length > 2 ? 'up' : 'auto'; - $('#jkJobBox #jkJob').val(jkJob).chosen({drop_direction: dropDirection}); + $('#jkJobBox #jkJob').val(jkJob).chosen({drop_direction: 'auto'}); }) }) $(function() { - $('#jkHost').chosen({drop_direction: $('#jkHost option').length > 3 ? 'up' : 'auto'}); $('#jkHost').change(); $('#triggerType').change(); }); diff --git a/module/job/view/create.html.php b/module/job/view/create.html.php index f3bccad3a1..f25dd6dd54 100644 --- a/module/job/view/create.html.php +++ b/module/job/view/create.html.php @@ -76,7 +76,7 @@ job->jkHost; ?>
-
+
job->jkJob; ?> diff --git a/module/job/view/edit.html.php b/module/job/view/edit.html.php index 524a85b615..fbc5a36da6 100644 --- a/module/job/view/edit.html.php +++ b/module/job/view/edit.html.php @@ -99,7 +99,7 @@ job->jkHost; ?>
-
jkHost, "class='form-control'");?>
+
jkHost, "class='form-control chosen'");?>
job->jkJob; ?> diff --git a/module/misc/lang/zh-cn.php b/module/misc/lang/zh-cn.php index ce12c83a85..d31a815a55 100644 --- a/module/misc/lang/zh-cn.php +++ b/module/misc/lang/zh-cn.php @@ -54,7 +54,7 @@ $lang->misc->zentao->service['servicemore']= '更多服务...'; global $config; $lang->misc->zentao->others['chanzhi'] = " 蝉知门户"; -$lang->misc->zentao->others['zdoo'] = " ZDOO"; +$lang->misc->zentao->others['zdoo'] = " ZDOO协同"; $lang->misc->zentao->others['xuanxuan'] = " 喧喧聊天"; $lang->misc->zentao->others['ydisk'] = " 悦库网盘"; $lang->misc->zentao->others['meshiot' ] = " 易天物联"; diff --git a/module/product/control.php b/module/product/control.php index f3a2553c0b..2deb012b25 100644 --- a/module/product/control.php +++ b/module/product/control.php @@ -165,16 +165,10 @@ class product extends control /* Load pager. */ $this->app->loadClass('pager', $static = true); - if($this->app->getViewType() == 'mhtml') $recPerPage = 10; $pager = new pager($recTotal, $recPerPage, $pageID); /* Get stories. */ $stories = $this->product->getStories($productID, $branch, $browseType, $queryID, $moduleID, $storyType, $sort, $pager); - if(empty($stories) and $pageID > 1) - { - $pager = pager::init(0, $recPerPage, 1); - $stories = $this->product->getStories($productID, $branch, $browseType, $queryID, $moduleID, $storyType, $sort, $pager); - } /* Process the sql, get the conditon partion, save it to session. */ $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'story', $browseType != 'bysearch'); diff --git a/module/product/view/project.html.php b/module/product/view/project.html.php index 2e48656987..1e48cfaa30 100644 --- a/module/product/view/project.html.php +++ b/module/product/view/project.html.php @@ -24,7 +24,7 @@

project->noProject;?> - createLink('project', 'create', "projectID=©ProjectID=&planID=&confirm=&productID=$productID"), " " . $lang->project->create, '', "class='btn btn-info'");?> + createLink('project', 'create', "productID=$productID"), " " . $lang->project->create, '', "class='btn btn-info'");?>

diff --git a/module/productplan/view/browse.html.php b/module/productplan/view/browse.html.php index 088c0bfba6..8b2bf8c5eb 100644 --- a/module/productplan/view/browse.html.php +++ b/module/productplan/view/browse.html.php @@ -122,7 +122,7 @@ " . $this->loadModel('flow')->getFieldValue($extendField, $plan) . "";?> id"), '', '', "class='btn' title='{$lang->project->create}'"); + if(common::hasPriv('project', 'create')) echo html::a(helper::createLink('project', 'create', "productID=&projectID=©ProjectID=&planID=$plan->id"), '', '', "class='btn' title='{$lang->project->create}'"); if(common::hasPriv('productplan', 'linkStory')) echo html::a(inlink('view', "planID=$plan->id&type=story&orderBy=id_desc&link=true"), '', '', "class='btn' title='{$lang->productplan->linkStory}'"); if(common::hasPriv('productplan', 'linkBug') and $config->global->flow != 'onlyStory') echo html::a(inlink('view', "planID=$plan->id&type=bug&orderBy=id_desc&link=true"), '', '', "class='btn' title='{$lang->productplan->linkBug}'"); common::printIcon('productplan', 'edit', "planID=$plan->id", $plan, 'list'); diff --git a/module/project/control.php b/module/project/control.php index 731784e19b..e3303d3f37 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -181,11 +181,6 @@ class project extends control /* Get tasks. */ $tasks = $this->project->getTasks($productID, $projectID, $this->projects, $browseType, $queryID, $moduleID, $sort, $pager); - if(empty($tasks) and $pageID > 1) - { - $pager = pager::init(0, $recPerPage, 1); - $tasks = $this->project->getTasks($productID, $projectID, $this->projects, $browseType, $queryID, $moduleID, $sort, $pager); - } /* Build the search form. */ $actionURL = $this->createLink('project', 'task', "projectID=$projectID&status=bySearch¶m=myQueryID"); @@ -706,11 +701,6 @@ class project extends control $pager = new pager($recTotal, $recPerPage, $pageID); $stories = $this->story->getProjectStories($projectID, $sort, $type, $param, 'story', '', $pager); - if(empty($stories) and $pageID > 1) - { - $pager = pager::init(0, $recPerPage, 1); - $stories = $this->story->getProjectStories($projectID, $sort, $type, $param, 'story', '', $pager); - } $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'story', false); $users = $this->user->getPairs('noletter'); @@ -1044,14 +1034,16 @@ class project extends control /** * Create a project. * + * @param string $productID * @param string $projectID * @param string $copyProjectID * @param int $planID + * @param string $confirm * * @access public * @return void */ - public function create($projectID = '', $copyProjectID = '', $planID = 0, $confirm = 'no', $productID = '') + public function create($productID = '', $projectID = '', $copyProjectID = '', $planID = 0, $confirm = 'no') { if($projectID) { @@ -1063,7 +1055,7 @@ class project extends control } else { - die(js::confirm($this->lang->project->importPlanStory, inlink('create', "projectID=$projectID©ProjectID=&planID=$planID&confirm=yes"), inlink('create', "projectID=$projectID"), 'parent', 'parent')); + die(js::confirm($this->lang->project->importPlanStory, inlink('create', "productID=&projectID=$projectID©ProjectID=&planID=$planID&confirm=yes"), inlink('create', "productID=&projectID=$projectID"), 'parent', 'parent')); } } $this->view->title = $this->lang->project->tips; @@ -1129,11 +1121,11 @@ class project extends control } if(!empty($planID)) { - $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('create', "projectID=$projectID©ProjectID=&planID=$planID&confirm=no"))); + $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('create', "productID=&projectID=$projectID©ProjectID=&planID=$planID&confirm=no"))); } else { - $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('create', "projectID=$projectID"))); + $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('create', "productID=&projectID=$projectID"))); } } diff --git a/module/project/js/common.js b/module/project/js/common.js index 2d953b531c..eec18f98ad 100644 --- a/module/project/js/common.js +++ b/module/project/js/common.js @@ -239,6 +239,26 @@ $(function() e.preventDefault(); }); + /*Assign value to the manage products by the different request type.*/ + var url = window.location.href; + if(window.config.requestType == 'GET') + { + var paramStr = url.split('?')[1]; + var paramArr = paramString.split('&'); + var productID = paramArr[2].split('=')[1]; + } + else + { + var urlArr = url.split('/'); + var paramStr = urlArr[urlArr.length-1]; + var paramArr = paramStr.split('-'); + var productID = paramArr[2].split('.')[0]; + } + var product = $('#productsBox .input-group:last select:first'); + $(product).val(productID); + $(product).trigger("chosen:updated"); + loadBranches($(product)); + adjustProductBoxMargin(); adjustPlanBoxMargin(); }); diff --git a/module/project/js/create.js b/module/project/js/create.js index d88527f265..93ef3a3296 100644 --- a/module/project/js/create.js +++ b/module/project/js/create.js @@ -1,6 +1,6 @@ function setCopyProject(projectID) { - location.href = createLink('project', 'create', 'projectID=0©ProjectID=' + projectID); + location.href = createLink('project', 'create', 'productID=&projectID=0©ProjectID=' + projectID); } $(function() diff --git a/module/project/model.php b/module/project/model.php index 1bac3998ac..915c4bbd68 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -1704,7 +1704,7 @@ class projectModel extends model } } $this->linkStory($projectID, $planStories, $planProducts); - if($count != 0) echo js::alert(sprintf($this->lang->project->haveDraft, $count)) . js::locate(helper::createLink('project', 'create', "projectID=$projectID")); + if($count != 0) echo js::alert(sprintf($this->lang->project->haveDraft, $count)) . js::locate(helper::createLink('project', 'create', "productID=&projectID=$projectID")); } /** diff --git a/module/project/view/create.html.php b/module/project/view/create.html.php index 58648f442f..e780478c9b 100644 --- a/module/project/view/create.html.php +++ b/module/project/view/create.html.php @@ -109,7 +109,7 @@
- +
diff --git a/module/story/control.php b/module/story/control.php index 2fea670f25..d06b04fb39 100644 --- a/module/story/control.php +++ b/module/story/control.php @@ -1463,7 +1463,6 @@ class story extends control $storyInfo['estimate'] = $story->estimate; $storyInfo['pri'] = $story->pri; $storyInfo['spec'] = html_entity_decode($story->spec); - echo json_encode($storyInfo); } diff --git a/module/story/model.php b/module/story/model.php index b62b256429..25f0801567 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -562,7 +562,6 @@ class storyModel extends model ->remove('files,labels,comment,contactListMenu,stages') ->get(); if(isset($story->plan) and is_array($story->plan)) $story->plan = trim(join(',', $story->plan), ','); - if(empty($_POST['product'])) $story->branch = $oldStory->branch; if(isset($_POST['branch']) and $_POST['branch'] == 0) $story->branch = 0; if(!empty($_POST['stages'])) { @@ -1758,6 +1757,7 @@ class storyModel extends model $branch = join(',', $branch); if($branch) $branch = "0,$branch"; } + $stories = $this->dao->select('*')->from(TABLE_STORY) ->where('product')->in($productID) ->beginIF(!$hasParent)->andWhere("parent")->ge(0)->fi() @@ -1767,7 +1767,10 @@ class storyModel extends model ->beginIF($status and $status != 'all')->andWhere('status')->in($status)->fi() ->andWhere('deleted')->eq(0) ->andWhere('type')->eq($type) - ->orderBy($orderBy)->page($pager)->fetchAll('id'); + ->orderBy($orderBy) + ->page($pager) + ->fetchAll('id'); + return $this->mergePlanTitle($productID, $stories, $branch, $type); } diff --git a/module/story/view/edit.html.php b/module/story/view/edit.html.php index df9c81d698..db0de78837 100644 --- a/module/story/view/edit.html.php +++ b/module/story/view/edit.html.php @@ -80,6 +80,13 @@
+ + + product->branch;?> + +
type != 'normal') echo html::select('branch', $branches, $story->branch, "onchange='loadBranch();' class='form-control chosen control-branch'");?>
+ + story->module;?> diff --git a/module/task/model.php b/module/task/model.php index c9858a4418..cf1cb6fed9 100644 --- a/module/task/model.php +++ b/module/task/model.php @@ -1631,7 +1631,7 @@ class taskModel extends model $this->dao->update(TABLE_TASK)->data($task)->autoCheck()->where('id')->eq((int)$taskID)->exec(); if($oldTask->fromBug) $this->dao->update(TABLE_BUG)->set('toTask')->eq(0)->where('id')->eq($oldTask->fromBug)->exec(); if($oldTask->parent > 0) $this->updateParentStatus($taskID); - if($oldTask->parent == '-1') + if($oldTask->parent == '-1') { unset($task->assignedTo); $this->dao->update(TABLE_TASK)->data($task)->autoCheck()->where('parent')->eq((int)$taskID)->exec(); @@ -1695,7 +1695,7 @@ class taskModel extends model ->exec(); if($oldTask->parent > 0) $this->updateParentStatus($taskID); - if($oldTask->parent == '-1') + if($oldTask->parent == '-1') { unset($task->left); $this->dao->update(TABLE_TASK)->data($task)->autoCheck()->where('parent')->eq((int)$taskID)->exec(); diff --git a/module/task/view/close.html.php b/module/task/view/close.html.php index 7002c5007c..61795a3205 100644 --- a/module/task/view/close.html.php +++ b/module/task/view/close.html.php @@ -23,7 +23,6 @@
-
diff --git a/module/testcase/control.php b/module/testcase/control.php index 19606b9a36..0476ae0efa 100644 --- a/module/testcase/control.php +++ b/module/testcase/control.php @@ -92,16 +92,11 @@ class testcase extends control /* Load pager. */ $this->app->loadClass('pager', $static = true); - $pager = pager::init($recTotal, $recPerPage, $pageID); + $pager = new pager($recTotal, $recPerPage, $pageID); $sort = $this->loadModel('common')->appendOrder($orderBy); /* Get test cases. */ $cases = $this->testcase->getTestCases($productID, $branch, $browseType, $browseType == 'bysearch' ? $queryID : $suiteID, $moduleID, $sort, $pager); - if(empty($cases) and $pageID > 1) - { - $pager = pager::init(0, $recPerPage, 1); - $cases = $this->testcase->getTestCases($productID, $branch, $browseType, $browseType == 'bysearch' ? $queryID : $suiteID, $moduleID, $sort, $pager); - } /* save session .*/ $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'testcase', $browseType != 'bysearch' ? false : true); @@ -1504,7 +1499,7 @@ class testcase extends control /* Load pager. */ $this->app->loadClass('pager', $static = true); - $pager = pager::init(0, $recPerPage, $pageID); + $pager = new pager($recTotal, $recPerPage, $pageID); $this->view->title = $this->lang->testcase->common . $this->lang->colon . $this->lang->testcase->importFromLib; $this->view->position[] = $this->lang->testcase->importFromLib; diff --git a/module/testreport/control.php b/module/testreport/control.php index d35dc2e2fe..5ff4d006cd 100644 --- a/module/testreport/control.php +++ b/module/testreport/control.php @@ -63,11 +63,6 @@ class testreport extends control $pager = pager::init($recTotal, $recPerPage, $pageID); $reports = $this->testreport->getList($objectID, $objectType, $extra, $orderBy, $pager); - if(empty($reports) and $pageID > 1) - { - $pager = pager::init(0, $recPerPage, 1); - $reports = $this->testreport->getList($objectID, $objectType, $extra, $orderBy, $pager); - } if($objectType == 'project' and isset($_POST['taskIdList'])) { @@ -450,7 +445,7 @@ class testreport extends control $tasks = $report->tasks ? $this->testtask->getByList($report->tasks) : array();; $builds = $report->builds ? $this->build->getByList($report->builds) : array(); $cases = $this->testreport->getTaskCases($tasks, $report->begin, $report->end, $report->cases, $pager); - $totalCases = $this->testreport->getTaskCases($tasks, $report->begin, $report->end, $report->cases); + $caseIdList = $this->testreport->getCaseIdList($reportID); $bugInfo = $this->testreport->getBugInfo($tasks, $report->product, $report->begin, $report->end, $builds); if($report->objectType == 'testtask') @@ -478,10 +473,10 @@ class testreport extends control $this->view->actions = $this->loadModel('action')->getList('testreport', $reportID); $this->view->storySummary = $this->product->summary($stories); - $this->view->caseSummary = $this->testreport->getResultSummary($tasks, $totalCases, $report->begin, $report->end); + $this->view->caseSummary = $this->testreport->getResultSummary($tasks, $caseIdList, $report->begin, $report->end); - $perCaseResult = $this->testreport->getPerCaseResult4Report($tasks, $totalCases, $report->begin, $report->end); - $perCaseRunner = $this->testreport->getPerCaseRunner4Report($tasks, $totalCases, $report->begin, $report->end); + $perCaseResult = $this->testreport->getPerCaseResult4Report($tasks, $caseIdList, $report->begin, $report->end); + $perCaseRunner = $this->testreport->getPerCaseRunner4Report($tasks, $caseIdList, $report->begin, $report->end); $this->view->datas['testTaskPerRunResult'] = $this->loadModel('report')->computePercent($perCaseResult); $this->view->datas['testTaskPerRunner'] = $this->report->computePercent($perCaseRunner); diff --git a/module/testreport/model.php b/module/testreport/model.php index ea247232d0..5e9f74a0b1 100644 --- a/module/testreport/model.php +++ b/module/testreport/model.php @@ -362,6 +362,24 @@ class testreportModel extends model return $cases; } + /** + * Get caseID list. + * + * @param int $reportID + * @access public + * @return void + */ + public function getCaseIdList($reportID) + { + $caseIdList = $this->dao->select('`case`')->from(TABLE_TESTREPORT)->alias('t1') + ->leftJoin(TABLE_TESTRUN)->alias('t2')->on('t1.tasks=t2.task') + ->where('t1.id')->eq($reportID) + ->andWhere('t1.deleted')->eq(0) + ->fetchPairs('case'); + + return $caseIdList; + } + /** * Get result summary. * @@ -409,6 +427,7 @@ class testreportModel extends model ->leftJoin(TABLE_TESTRUN)->alias('t2') ->on('t1.run= t2.id') ->where('t2.task')->in(array_keys($tasks)) + ->andwhere('t1.date = t2.lastRunDate') ->andWhere('t1.`case`')->in(array_keys($cases)) ->andWhere('t1.date')->ge($begin) ->andWhere('t1.date')->le($end . " 23:59:59") @@ -440,6 +459,7 @@ class testreportModel extends model ->leftJoin(TABLE_TESTRUN)->alias('t2') ->on('t1.run= t2.id') ->where('t2.task')->in(array_keys($tasks)) + ->andwhere('t1.date = t2.lastRunDate') ->andWhere('t1.`case`')->in(array_keys($cases)) ->andWhere('t1.date')->ge($begin) ->andWhere('t1.date')->le($end . " 23:59:59") diff --git a/module/testsuite/control.php b/module/testsuite/control.php index 3547cd2c6e..f5eb67e539 100644 --- a/module/testsuite/control.php +++ b/module/testsuite/control.php @@ -54,11 +54,6 @@ class testsuite extends control $productName = isset($this->products[$productID]) ? $this->products[$productID] : ''; $suites = $this->testsuite->getSuites($productID, $sort, $pager); - if(empty($suites) and $pageID > 1) - { - $pager = pager::init(0, $recPerPage, 1); - $suites = $this->testsuite->getSuites($productID, $sort, $pager); - } $this->view->title = $productName . $this->lang->testsuite->common; $this->view->position[] = html::a($this->createLink('testsuite', 'browse', "productID=$productID"), $productName); diff --git a/module/testtask/control.php b/module/testtask/control.php index 6d11529b3c..1e93337592 100644 --- a/module/testtask/control.php +++ b/module/testtask/control.php @@ -77,11 +77,6 @@ class testtask extends control /* Get tasks. */ $tasks = $this->testtask->getProductTasks($productID, $branch, $sort, $pager, $scopeAndStatus, $beginTime, $endTime); - if(empty($tasks) and $pageID > 1) - { - $pager = pager::init(0, $recPerPage, 1); - $tasks = $this->testtask->getProductTasks($productID, $branch, $sort, $pager, $scopeAndStatus, $beginTime, $endTime); - } $this->view->title = $this->products[$productID] . $this->lang->colon . $this->lang->testtask->common; $this->view->position[] = html::a($this->createLink('testtask', 'browse', "productID=$productID"), $this->products[$productID]); diff --git a/module/testtask/lang/zh-cn.php b/module/testtask/lang/zh-cn.php index 3aa542985c..06dae20fce 100644 --- a/module/testtask/lang/zh-cn.php +++ b/module/testtask/lang/zh-cn.php @@ -123,7 +123,7 @@ $lang->testtask->showFail = '失败%s次'; $lang->testtask->confirmDelete = '您确认要删除该测试单吗?'; $lang->testtask->confirmUnlinkCase = '您确认要移除该用例吗?'; $lang->testtask->noticeNoOther = '该产品还没有其他测试单'; -$lang->testtask->noTesttask = '暂时没有测试单'; +$lang->testtask->noTesttask = '暂时没有测试单。'; $lang->testtask->checkLinked = '请检查测试单的产品是否与项目相关联'; $lang->testtask->noImportData = '导入的XML没有解析出数据。'; $lang->testtask->unitXMLFormat = '请选择Junit XML 格式的文件。'; diff --git a/module/user/view/ajaxprinttemplates.html.php b/module/user/view/ajaxprinttemplates.html.php index 0d5d3cf328..6680b5418e 100644 --- a/module/user/view/ajaxprinttemplates.html.php +++ b/module/user/view/ajaxprinttemplates.html.php @@ -77,7 +77,6 @@ function setTemplate(templateID) var cmd = editor[''].edit.cmd; editor[''].html(''); cmd.inserthtml(content); - $("#mainContent #dataform .table.table-form .steps #templateID").val(templateID); } function deleteTemplate(templateID) diff --git a/www/js/zui/lang.ja.min.js b/www/js/zui/lang.ja.min.js index ea42f28494..ebc270c49c 100644 --- a/www/js/zui/lang.ja.min.js +++ b/www/js/zui/lang.ja.min.js @@ -1,4 +1,2 @@ -alert('日语是收费功能,需要购买插件安装'); -$.cookie('lang', 'zh-cn', {expires:config.cookieLife, path:config.webRoot}); -location.href = location.href; - +var locateLink = config.webRoot + 'tip4japanese.html'; +if(location.href.indexOf(locateLink) < 0) location.href = locateLink; diff --git a/www/theme/default/style.css b/www/theme/default/style.css index aa85484a05..26c7654940 100644 --- a/www/theme/default/style.css +++ b/www/theme/default/style.css @@ -58,3 +58,5 @@ a.showMoreImage:hover{opacity: 1;} .color-darkblue:hover{background:rgb(0,0,139)} .color-darkblue:focus{background:rgb(0,0,139)} .margin-l-50px{margin-left:50px;} + +.chosen-container .chosen-drop{z-index: 1100;} diff --git a/www/tip4japanese.html b/www/tip4japanese.html new file mode 100644 index 0000000000..83a3c93894 --- /dev/null +++ b/www/tip4japanese.html @@ -0,0 +1,40 @@ + + + + + + + + グリッド・リサーチ株式会社に完全日本語使用権を取得ください + + + +
+
グリッド・リサーチ株式会社に完全日本語使用権を取得ください
+
+

〒104-0041 東京都中央区新富1-15-11 マキプラザ 3階

+

電話:03-3537-9700(代表)

+

MailTo:sales1@grids.co.jp

+
+
+ Language : + 简体 + 繁體 + English + Deutsch + Français + Tiếng Việt +
+
+ + +