diff --git a/api/v1/entries/issue.php b/api/v1/entries/issue.php index 8716099236..7bae43e939 100644 --- a/api/v1/entries/issue.php +++ b/api/v1/entries/issue.php @@ -10,12 +10,15 @@ class issueEntry extends Entry { public function get($issueID) { + /* If $issueID has '-', go to productIssue entry point for Gitlab. */ + if(strpos($issueID, '-') !== FALSE) return $this->fetch('productIssue', 'get', array('issueID' => $issueID)); + $control = $this->loadController('issue', 'view'); $control->view($issueID); $data = $this->getData(); if(!$data or (isset($data->message) and $data->message == '404 Not found')) return $this->send404(); - if(isset($data->status) and $data->status == 'success') $this->send(200, $this->format($data->data->issue, 'createdDate:time,editedDate:time,assignedDate:time')); + if(isset($data->status) and $data->status == 'success') return $this->send(200, $this->format($data->data->issue, 'createdDate:time,editedDate:time,assignedDate:time')); if(isset($data->status) and $data->status == 'fail') return $this->sendError(400, $data->message); $this->sendError(400, 'error'); diff --git a/api/v1/entries/issues.php b/api/v1/entries/issues.php index 3cfb8d9df4..5697355fbf 100644 --- a/api/v1/entries/issues.php +++ b/api/v1/entries/issues.php @@ -1,5 +1,4 @@ status)) return $this->sendError(400, 'error'); if(isset($data->status) and $data->status == 'fail') return $this->sendError(400, $data->message); - $pager = $data->data->pager; + $pager = $data->data->pager; $result = array(); foreach($data->data->issues as $issue) { $result[] = $this->format($issue, 'createdDate:time,editedDate:time,assignedDate:time'); } + return $this->send(200, array('page' => $pager->pageID, 'total' => $pager->recTotal, 'limit' => $pager->recPerPage, 'issues' => $result)); } diff --git a/api/v1/entries/risk.php b/api/v1/entries/risk.php index 4b1260a517..dde1545eae 100644 --- a/api/v1/entries/risk.php +++ b/api/v1/entries/risk.php @@ -15,7 +15,7 @@ class riskEntry extends Entry $data = $this->getData(); if(!$data or (isset($data->message) and $data->message == '404 Not found')) return $this->send404(); - if(isset($data->status) and $data->status == 'success') $this->send(200, $this->format($data->data->risk, 'createdDate:time,editedDate:time')); + if(isset($data->status) and $data->status == 'success') return $this->send(200, $this->format($data->data->risk, 'createdDate:time,editedDate:time')); if(isset($data->status) and $data->status == 'fail') return $this->sendError(400, $data->message); $this->sendError(400, 'error'); @@ -42,7 +42,6 @@ class riskEntry extends Entry $control = $this->loadController('risk', 'delete'); $control->delete($riskID, 'true'); - $this->getData(); $this->sendSuccess(200, 'success'); } } diff --git a/api/v1/entries/risks.php b/api/v1/entries/risks.php index 35195b5a08..e40a6fc157 100644 --- a/api/v1/entries/risks.php +++ b/api/v1/entries/risks.php @@ -1,5 +1,4 @@ status)) return $this->sendError(400, 'error'); if(isset($data->status) and $data->status == 'fail') return $this->sendError(400, $data->message); - $pager = $data->data->pager; + $pager = $data->data->pager; $result = array(); foreach($data->data->risks as $risk) { $result[] = $this->format($risk, 'createdDate:time,editedDate:time'); } + return $this->send(200, array('page' => $pager->pageID, 'total' => $pager->recTotal, 'limit' => $pager->recPerPage, 'risks' => $result)); } public function post($projectID = 0) { - if((int)$projectID <= 0) $this->sendError(400, 'The id of project is wrong.'); + if((int)$projectID <= 0) return $this->sendError(400, 'The id of project is wrong.'); $fields = 'source,name,category,strategy,status,impact,probability,rate,identifiedDate,plannedClosedDate,actualClosedDate,resolvedBy,assignedTo,prevention,remedy,resolution'; $this->batchSetPost($fields); diff --git a/api/v1/entries/testtask.php b/api/v1/entries/testtask.php index c1af138a25..ca65cb7a76 100644 --- a/api/v1/entries/testtask.php +++ b/api/v1/entries/testtask.php @@ -18,6 +18,7 @@ class testtaskEntry extends entry if(!isset($data->data->task)) $this->sendError(400, 'error'); $testtask = $data->data->task; + $this->send(200, $this->format($testtask, 'realFinishedDate:time')); } @@ -27,6 +28,7 @@ class testtaskEntry extends entry $control->delete($testtaskID, 'yes'); $this->getData(); + $this->sendSuccess(200, 'success'); } } diff --git a/api/v1/entries/testtasks.php b/api/v1/entries/testtasks.php index 45ccf7ec10..bcfb90e213 100644 --- a/api/v1/entries/testtasks.php +++ b/api/v1/entries/testtasks.php @@ -17,12 +17,13 @@ class testtasksEntry extends entry if(!isset($data->status)) return $this->sendError(400, 'error'); if(isset($data->status) and $data->status == 'fail') return $this->sendError(400, $data->message); - $pager = $data->data->pager; + $pager = $data->data->pager; $result = array(); foreach($data->data->tasks as $testtask) { $result[] = $this->format($testtask, 'realFinishedDate:time'); } + return $this->send(200, array('page' => $pager->pageID, 'total' => $pager->recTotal, 'limit' => $pager->recPerPage, 'testtasks' => $result)); } } diff --git a/config/filter.php b/config/filter.php index 4aec7e207e..d6876990fc 100644 --- a/config/filter.php +++ b/config/filter.php @@ -287,7 +287,7 @@ $filter->doc->showfiles->get['recPerPage'] = 'int'; $filter->doc->showfiles->get['recTotal'] = 'int'; $filter->doc->showfiles->get['title'] = 'reg::any'; -$filter->file->download->get['charset'] = 'reg::lang'; +$filter->file->download->get['charset'] = 'reg::lang'; $filter->mail->batchdelete->get['idList'] = 'reg::idList'; @@ -330,10 +330,10 @@ $filter->repo->default->get['repoPath'] = 'reg::base64'; $filter->repo->default->get['path'] = 'reg::base64'; $filter->repo->default->get['entry'] = 'reg::base64'; -$filter->repo->default->cookie['repoBranch'] = 'reg::any'; -$filter->repo->diff->cookie['arrange'] = 'reg::word'; -$filter->repo->diff->cookie['repoPairs'] = 'array'; -$filter->repo->view->cookie['repoPairs'] = 'array'; +$filter->repo->default->cookie['repoBranch'] = 'reg::any'; +$filter->repo->diff->cookie['arrange'] = 'reg::word'; +$filter->repo->diff->cookie['repoPairs'] = 'array'; +$filter->repo->view->cookie['repoPairs'] = 'array'; $filter->repo->ajaxsynccommit->cookie['syncBranch'] = 'reg::any'; $filter->webhook->bind->get['selectedDepts'] = 'reg::checked'; diff --git a/config/routes.php b/config/routes.php index 32f5743b6e..97d2116f0e 100644 --- a/config/routes.php +++ b/config/routes.php @@ -42,8 +42,10 @@ $routes['/user'] = 'user'; $routes['/programs'] = 'programs'; $routes['/programs/:id'] = 'program'; -$routes['/issues/:issueID'] = 'productIssue'; $routes['/products/:productID/issues'] = 'productIssues'; +$routes['/projects/:projectID/issues'] = 'issues'; +$routes['/issues'] = 'issues'; +$routes['/issues/:issueID'] = 'issue'; $routes['/todos'] = 'todos'; $routes['/todos/:id'] = 'todo'; @@ -55,8 +57,4 @@ $routes['/projects/:project/risks'] = 'risks'; $routes['/risks'] = 'risks'; $routes['/risks/:id'] = 'risk'; -$routes['/projects/:project/questions'] = 'issues'; -$routes['/questions'] = 'issues'; -$routes['/questions/:id'] = 'issue'; - $config->routes = $routes; diff --git a/framework/api/entry.class.php b/framework/api/entry.class.php index 801beacd6c..ffbae876d8 100644 --- a/framework/api/entry.class.php +++ b/framework/api/entry.class.php @@ -509,4 +509,23 @@ class baseEntry return $value; } } + + /** + * 获取其他方法的执行结果。 + * Fetch result of other method. + * + * @param string $entry + * @param string $method + * @param array $params + * @access public + * @return void + */ + public function fetch($entry, $method, $params = array()) + { + include($this->app->appRoot . "api/{$this->app->version}/entries/" . strtolower($entry) . ".php"); + + $entryName = $entry . 'Entry'; + $entry = new $entryName(); + return call_user_func_array(array($entry, $method), $params); + } }