diff --git a/module/action/lang/zh-tw.php b/module/action/lang/zh-tw.php index 7ae1d1bda0..aa811cc237 100755 --- a/module/action/lang/zh-tw.php +++ b/module/action/lang/zh-tw.php @@ -97,7 +97,10 @@ $lang->action->objectTypes['testsuite'] = '套件'; $lang->action->objectTypes['testtask'] = '測試單'; $lang->action->objectTypes['testreport'] = '報告'; $lang->action->objectTypes['doc'] = '文檔'; +$lang->action->objectTypes['api'] = '介面'; $lang->action->objectTypes['doclib'] = '文檔庫'; +$lang->action->objectTypes['api'] = '介面庫'; +$lang->action->objectTypes['apistruct'] = '資料結構'; $lang->action->objectTypes['todo'] = '待辦'; $lang->action->objectTypes['risk'] = '風險'; $lang->action->objectTypes['issue'] = '問題'; diff --git a/module/api/config.php b/module/api/config.php index 61fc3a5985..e3cc572035 100644 --- a/module/api/config.php +++ b/module/api/config.php @@ -16,14 +16,14 @@ $config->api->create->requiredFields = 'lib,title,path'; $config->api->edit = new stdclass(); $config->api->edit->requiredFields = 'lib,title,path'; -$config->api->publish = new stdclass(); -$config->api->publish->requiredFields = 'version'; +$config->api->createrelease = new stdclass(); +$config->api->createrelease->requiredFields = 'version'; $config->api->editor = new stdclass(); -$config->api->editor->createlib = array('id' => 'desc', 'tools' => 'simpleTools'); -$config->api->editor->editlib = array('id' => 'desc', 'tools' => 'simpleTools'); -$config->api->editor->create = array('id' => 'desc', 'tools' => 'simpleTools'); -$config->api->editor->edit = array('id' => 'desc', 'tools' => 'simpleTools'); -$config->api->editor->publish = array('id' => 'desc', 'tools' => 'simpleTools'); -$config->api->editor->createstruct = array('id' => 'desc', 'tools' => 'simpleTools'); -$config->api->editor->editstruct = array('id' => 'desc', 'tools' => 'simpleTools'); +$config->api->editor->createlib = array('id' => 'desc', 'tools' => 'simpleTools'); +$config->api->editor->editlib = array('id' => 'desc', 'tools' => 'simpleTools'); +$config->api->editor->create = array('id' => 'desc', 'tools' => 'simpleTools'); +$config->api->editor->edit = array('id' => 'desc', 'tools' => 'simpleTools'); +$config->api->editor->createRelease = array('id' => 'desc', 'tools' => 'simpleTools'); +$config->api->editor->createstruct = array('id' => 'desc', 'tools' => 'simpleTools'); +$config->api->editor->editstruct = array('id' => 'desc', 'tools' => 'simpleTools'); diff --git a/module/api/control.php b/module/api/control.php index ced9b1e4f3..d3aa67ef00 100755 --- a/module/api/control.php +++ b/module/api/control.php @@ -82,13 +82,13 @@ class api extends control } /** - * Release manage page. + * Release list. * * @param int $libID * @access public * @return void */ - public function editPublish($libID, $orderBy = 'id', $recTotal = 0, $recPerPage = 15, $pageID = 1) + public function releases($libID, $orderBy = 'id', $recTotal = 0, $recPerPage = 15, $pageID = 1) { $libs = $this->doc->getApiLibs(); $this->app->loadClass('pager', $static = true); @@ -105,6 +105,7 @@ class api extends control $this->view->orderBy = $orderBy; $this->view->title = $this->lang->api->managePublish; $this->view->libID = $libID; + $this->view->users = $this->loadModel('user')->getPairs('noletter'); $this->display(); } @@ -122,20 +123,20 @@ class api extends control } else { - $this->api->deletePublish($id); + $this->api->deleteRelease($id); if(dao::isError()) return $this->sendError(dao::getError()); - die(js::locate(inlink('editPublish', "libID=$libID"), 'parent')); + die(js::locate(inlink('releases', "libID=$libID"), 'parent')); } } /** - * Publish a api doc lib. + * Create a api doc lib. * * @param int $libID * @access public * @return void */ - public function publish($libID) + public function createRelease($libID) { $lib = $this->doc->getLibById($libID); @@ -148,7 +149,7 @@ class api extends control ->get(); /* Check version is exist. */ - if($this->api->getReleaseByVersion($libID, $data->version)) + if(!empty($data->version) and $this->api->getReleaseByVersion($libID, $data->version)) { return $this->sendError($this->lang->api->noUniqueVersion); } @@ -159,7 +160,7 @@ class api extends control } $libName = isset($lib->name) ? $lib->name : ''; - $this->view->title = $this->lang->api->publish . $libName; + $this->view->title = $this->lang->api->createRelease . $libName; $this->display(); } @@ -632,9 +633,9 @@ class api extends control /* Global struct link. */ $menu = ''; - if($libID and common::hasPriv('api', 'publish')) + if($libID and common::hasPriv('api', 'createRelease')) { - $menu .= html::a(helper::createLink('api', 'publish', "libID=$libID"), $this->lang->api->publish, '', 'class="btn btn-link iframe"'); + $menu .= html::a(helper::createLink('api', 'createRelease', "libID=$libID"), $this->lang->api->createRelease, '', 'class="btn btn-link iframe"'); } /* page of index menu. */ @@ -744,19 +745,6 @@ EOT; return $output; } - /** - * Show doc of api doc library - * - * @param int $libID - * @access public - * @return void - */ - public function showLibs($libID = 0) - { - $lib = $this->doc->getLibById($libID); - if(!empty($lib) and $lib->deleted == '1') $appendLib = $libID; - } - /** * Return session to the client. * diff --git a/module/api/js/publish.js b/module/api/js/createrelease.js similarity index 100% rename from module/api/js/publish.js rename to module/api/js/createrelease.js diff --git a/module/api/lang/en.php b/module/api/lang/en.php index 7e83febb3f..a94cd673ae 100644 --- a/module/api/lang/en.php +++ b/module/api/lang/en.php @@ -16,9 +16,11 @@ $lang->api->sql = 'SQL Query API'; $lang->api->index = 'Api Doc Home'; $lang->api->editLib = 'Edit Api Doc'; -$lang->api->deleteLib = 'Delete Api Doc'; -$lang->api->publish = 'Publish'; $lang->api->editPublish = 'Edit Publish'; +$lang->api->deleteLib = 'Delete Api Doc'; +$lang->api->createRelease = 'Publish'; +$lang->api->releases = 'Releases'; +$lang->api->deleteRelease = 'Delete Release'; $lang->api->createLib = 'Create Api Library'; $lang->api->createApi = 'Create Api'; $lang->api->createAB = 'Create'; @@ -116,10 +118,9 @@ $lang->api->requestType = 'Request Type'; $lang->api->status = 'Development Status'; $lang->api->owner = 'Person In Charge'; $lang->api->paramsExample = 'Response Example'; +$lang->api->header = 'Request Header'; $lang->api->query = 'Request Parameters'; $lang->api->params = 'Request Body'; -$lang->api->header = 'Request Header'; -$lang->api->query = 'Query Parameters'; $lang->api->response = 'Response'; $lang->api->responseExample = 'Response Example'; $lang->api->res = new stdClass(); diff --git a/module/api/lang/zh-cn.php b/module/api/lang/zh-cn.php index bb0516971e..3a87bea43e 100755 --- a/module/api/lang/zh-cn.php +++ b/module/api/lang/zh-cn.php @@ -16,9 +16,10 @@ $lang->api->sql = 'SQL查询接口'; $lang->api->index = '接口库主页'; $lang->api->editLib = '编辑接口库'; -$lang->api->editPublish = '版本管理'; +$lang->api->releases = '版本管理'; +$lang->api->deleteRelease = '删除版本'; $lang->api->deleteLib = '删除接口库'; -$lang->api->publish = '发布接口'; +$lang->api->createRelease = '发布接口'; $lang->api->createLib = '创建接口库'; $lang->api->createApi = '创建接口'; $lang->api->createAB = '创建'; @@ -58,6 +59,7 @@ $lang->api->confirmDeleteLib = "您确定删除该接口库吗?"; $lang->api->filterStruct = "使用数据结构填充"; $lang->api->defaultVersion = "当前版本"; +/* Common access control lang. */ $lang->api->whiteList = '白名单'; $lang->api->aclList['open'] = '公开'; $lang->api->aclList['private'] = '私有'; @@ -118,8 +120,6 @@ $lang->api->paramsExample = '请求示例'; $lang->api->header = '请求头'; $lang->api->query = '请求参数'; $lang->api->params = '请求体'; -$lang->api->header = '请求头'; -$lang->api->query = 'Query参数'; $lang->api->response = '请求响应'; $lang->api->responseExample = '响应示例'; $lang->api->res = new stdClass(); diff --git a/module/api/lang/zh-tw.php b/module/api/lang/zh-tw.php index 380166aa79..87edfa939b 100644 --- a/module/api/lang/zh-tw.php +++ b/module/api/lang/zh-tw.php @@ -14,18 +14,194 @@ $lang->api->common = 'API介面'; $lang->api->getModel = '超級model調用介面'; $lang->api->sql = 'SQL查詢介面'; -$lang->api->position = '位置'; -$lang->api->startLine = "%s,%s行"; -$lang->api->desc = '描述'; -$lang->api->debug = '調試'; -$lang->api->submit = '提交'; -$lang->api->url = '請求地址'; -$lang->api->result = '返回結果'; -$lang->api->status = '狀態'; -$lang->api->data = '內容'; -$lang->api->noParam = 'GET方式調試不需要輸入參數,'; -$lang->api->post = 'POST方式調試請參照頁面表單'; +$lang->api->index = '介面庫主頁'; +$lang->api->editLib = '編輯介面庫'; +$lang->api->editPublish = '版本管理'; +$lang->api->deleteLib = '刪除介面庫'; +$lang->api->publish = '發佈介面'; +$lang->api->createLib = '創建介面庫'; +$lang->api->createApi = '創建介面'; +$lang->api->createAB = '創建'; +$lang->api->edit = '編輯介面'; +$lang->api->delete = '刪除介面'; +$lang->api->position = '位置'; +$lang->api->startLine = "%s,%s行"; +$lang->api->desc = '描述'; +$lang->api->debug = '調試'; +$lang->api->submit = '提交'; +$lang->api->url = '請求地址'; +$lang->api->result = '返回結果'; +$lang->api->status = '狀態'; +$lang->api->data = '內容'; +$lang->api->noParam = 'GET方式調試不需要輸入參數,'; +$lang->api->noModule = '介面庫下沒有目錄,請先維護目錄'; +$lang->api->post = 'POST方式調試請參照頁面表單'; +$lang->api->noUniqueName = '介面庫名已存在。'; +$lang->api->noUniqueVersion = '版本已存在。'; +$lang->api->version = '版本'; +$lang->api->createStruct = '創建資料結構'; +$lang->api->editStruct = '修改資料結構'; +$lang->api->deleteStruct = '刪除資料結構'; +$lang->api->create = '創建介面'; +$lang->api->title = '介面名稱'; +$lang->api->pageTitle = '介面庫'; +$lang->api->module = '目錄'; +$lang->api->apiDoc = '介面'; +$lang->api->manageType = '維護目錄'; +$lang->api->managePublish = '版本管理'; +$lang->api->doing = '開發中'; +$lang->api->done = '開發完成'; +$lang->api->basicInfo = '基本信息'; +$lang->api->apiDesc = '介面說明'; +$lang->api->confirmDelete = "您確定刪除該介面嗎?"; +$lang->api->confirmDeleteLib = "您確定刪除該介面庫嗎?"; +$lang->api->filterStruct = "使用資料結構填充"; +$lang->api->defaultVersion = "當前版本"; -$lang->api->error = new stdclass(); +/* Common access control lang. */ +$lang->api->whiteList = '白名單'; +$lang->api->aclList['open'] = '公開'; +$lang->api->aclList['private'] = '私有'; +$lang->api->aclList['custom'] = '自定義'; +$lang->api->group = '分組'; +$lang->api->user = '用戶'; + +$lang->api->noticeAcl = array( + 'open' => '所有人都可以訪問', + 'custom' => '白名單的用戶可以訪問', + 'private' => '只有創建者自己可以訪問', +); + +/* fields of struct */ +$lang->struct = new stdClass(); + +$lang->struct->add = '添加'; +$lang->struct->field = '欄位'; +$lang->struct->paramsType = '類型'; +$lang->struct->required = '必填'; +$lang->struct->desc = '描述'; +$lang->struct->descPlaceholder = '參數說明'; +$lang->struct->action = '操作'; +$lang->struct->addSubField = '添加子欄位'; + +$lang->struct->typeOptions = array( + 'formData' => 'FormData', + 'json' => 'JSON', + 'array' => 'Array', + 'object' => 'Object', +); + +/* fields of form */ +$lang->api->struct = '資料結構'; +$lang->api->structName = '結構名'; +$lang->api->structType = '類型'; +$lang->api->structAttr = '屬性'; +$lang->api->structAddedBy = '創建人'; +$lang->api->structAddedDate = '創建時間'; +$lang->api->name = '介面庫名稱'; +$lang->api->baseUrl = '請求基路徑'; +$lang->api->baseUrlDesc = '網址或者路徑,比如 test.zentao.net 或者 /v1'; +$lang->api->desc = '描述'; +$lang->api->control = '訪問控制'; +$lang->api->noLib = '暫時沒有介面庫。'; +$lang->api->noApi = '暫時沒有介面。'; +$lang->api->noStruct = '暫時沒有資料結構。'; +$lang->api->lib = '所屬介面庫'; +$lang->api->apiList = '介面列表'; +$lang->api->formTitle = '介面名稱'; +$lang->api->path = '請求路徑'; +$lang->api->protocol = '請求協議'; +$lang->api->method = '請求方式'; +$lang->api->requestType = '請求格式'; +$lang->api->status = '開髮狀態'; +$lang->api->owner = '負責人'; +$lang->api->paramsExample = '請求示例'; +$lang->api->header = '請求頭'; +$lang->api->query = '請求參數'; +$lang->api->params = '請求體'; +$lang->api->response = '請求響應'; +$lang->api->responseExample = '響應示例'; +$lang->api->res = new stdClass(); +$lang->api->res->name = '名稱'; +$lang->api->res->desc = '描述'; +$lang->api->res->type = '類型'; +$lang->api->req = new stdClass(); +$lang->api->req->name = '名稱'; +$lang->api->req->desc = '描述'; +$lang->api->req->type = '類型'; +$lang->api->req->required = '必填'; +$lang->api->field = '欄位'; +$lang->api->scope = '位置'; +$lang->api->paramsType = '類型'; +$lang->api->required = '是否必填'; +$lang->api->default = '預設值'; +$lang->api->desc = '描述'; +$lang->api->customType = '自定義結構'; +$lang->api->format = '格式化'; +$lang->api->methodOptions = array( + 'GET' => 'GET', + 'POST' => 'POST', + 'PUT' => 'PUT', + 'DELETE' => 'DELETE', + 'PATCH' => 'PATCH', + 'OPTIONS' => 'OPTIONS', + 'HEAD' => 'HEAD' +); +$lang->api->protocalOptions = array( + 'HTTP' => 'HTTP', + 'HTTPS' => 'HTTPS', +); +$lang->api->requestTypeOptions = array( + 'application/json' => 'application/json', + 'application/x-www-form-urlencoded' => 'application/x-www-form-urlencoded', + 'multipart/form-data' => 'multipart/form-data' +); +$lang->api->statusOptions = array( + 'done' => '開發完成', + 'doing' => '開發中', + 'hidden' => '不顯示' +); +$lang->api->paramsScopeOptions = array( + 'formData' => 'formData', + 'path' => 'path', + 'query' => 'query', + 'body' => 'body', + 'header' => 'header', + 'cookie' => 'cookie', +); +/* Api global common params */ +$lang->api->paramsTypeOptions = array( + 'object' => 'object', + 'string' => 'string', + 'date' => 'date', + 'datetime' => 'datetime', + 'boolean' => 'boolean', + 'int' => 'int', + 'long' => 'long', + 'float' => 'float', + 'double' => 'double', + 'decimal' => 'decimal' +); + +/* Api params */ +$lang->api->paramsTypeCustomOptions = array( + 'file' => 'file', + 'ref' => 'ref', +); + +$lang->api->structParamsOptons = array_merge($lang->api->paramsTypeOptions, array('file' => 'file', 'ref' => 'ref')); +$lang->api->allParamsTypeOptions = array_merge($lang->api->paramsTypeOptions, $lang->api->paramsTypeCustomOptions); +$lang->api->requiredOptions = array(0 => '否', 1 => '是'); + +$lang->doclib = new stdclass(); +$lang->doclib->name = '介面庫名稱'; + +$lang->apistruct = new stdClass(); +$lang->apistruct->name = '結構名'; + +$lang->api_lib_release = new stdClass(); +$lang->api_lib_release->version = '版本'; + +$lang->api->error = new stdclass(); $lang->api->error->onlySelect = 'SQL查詢介面只允許SELECT查詢'; $lang->api->error->disabled = '因為安全原因,該功能被禁用。可以到config目錄,修改配置項 %s,打開此功能。'; diff --git a/module/api/model.php b/module/api/model.php index b7d13df656..b586e60e0f 100644 --- a/module/api/model.php +++ b/module/api/model.php @@ -60,7 +60,7 @@ class apiModel extends model $data->snap = json_encode($snap); $this->dao->insert(TABLE_API_LIB_RELEASE)->data($data) ->autoCheck() - ->batchCheck($this->config->api->publish->requiredFields, 'notempty') + ->batchCheck($this->config->api->createrelease->requiredFields, 'notempty') ->exec(); return dao::isError() ? false : $this->dao->lastInsertID(); @@ -73,7 +73,7 @@ class apiModel extends model * @access public * @return void */ - public function deletePublish($id) + public function deleteRelease($id) { $this->dao->delete()->from(TABLE_API_LIB_RELEASE) ->where('id')->eq($id) diff --git a/module/api/view/publish.html.php b/module/api/view/createrelease.html.php similarity index 87% rename from module/api/view/publish.html.php rename to module/api/view/createrelease.html.php index 8e34f1dff9..994acef5eb 100644 --- a/module/api/view/publish.html.php +++ b/module/api/view/createrelease.html.php @@ -18,9 +18,9 @@