diff --git a/module/api/control.php b/module/api/control.php index 6f9736218f..62561e69ee 100755 --- a/module/api/control.php +++ b/module/api/control.php @@ -47,10 +47,29 @@ class api extends control /* Get all api doc libraries. */ $loadLib = false; $libs = $this->doc->getApiLibs($appendLib, $objectType, $objectID); + if(empty($libs) and $objectType != 'nolink') + { + $objectType = 'nolink'; + $objectID = 0; + $libs = $this->doc->getApiLibs($appendLib, 'nolink'); + } + if(empty($libs)) { - $loadLib = true; - $libs = $this->doc->getApiLibs($appendLib); + list($normalObjects, $closedObjects) = $this->api->getOrderedObjects(); + + if(!empty($normalObjects)) + { + $objectType = key($normalObjects); + $objectID = key($normalObjects[$objectType]); + $libs = $this->doc->getApiLibs($appendLib, $objectType, $objectID); + } + elseif(!empty($closedObjects)) + { + $objectType = key($closedObjects); + $objectID = key($closedObjects[$objectType]); + $libs = $this->doc->getApiLibs($appendLib, $objectType, $objectID); + } } if($libID == 0 and !empty($libs)) @@ -901,20 +920,21 @@ class api extends control */ public function ajaxGetDropMenu($objectType, $objectID, $module, $method) { - list($normalObjects, $closedObjects) = $this->api->getOrderedObjects($objectType, 'nomerge', 'api'); + list($normalObjects, $closedObjects) = $this->api->getOrderedObjects(); $titleList = array($this->lang->api->noLinked); - $titleList += array_values($normalObjects['product']); - $titleList += array_values($normalObjects['project']); - $titleList += array_values($closedObjects['product']); - $titleList += array_values($closedObjects['project']); + if(!empty($normalObjects['product'])) $titleList += array_values($normalObjects['product']); + if(!empty($normalObjects['project'])) $titleList += array_values($normalObjects['project']); + if(!empty($closedObjects['product'])) $titleList += array_values($closedObjects['product']); + if(!empty($closedObjects['project'])) $titleList += array_values($closedObjects['project']); $this->view->objectType = $objectType; $this->view->objectID = $objectID; $this->view->module = $module; $this->view->method = $method; - $this->view->normalObjects = array($this->lang->api->noLinked) + $normalObjects; + $this->view->normalObjects = $normalObjects; $this->view->closedObjects = $closedObjects; + $this->view->nolinkLibs = $this->doc->getApiLibs(0, 'nolink'); $this->view->objectsPinYin = common::convert2Pinyin($titleList); $this->display(); diff --git a/module/api/model.php b/module/api/model.php index 23f2a27c38..102adb44ff 100644 --- a/module/api/model.php +++ b/module/api/model.php @@ -985,20 +985,13 @@ class apiModel extends model */ public function getOrderedObjects() { - $normalObjects = $closedObjects = array('product' => array(), 'project' => array()); - + $libs = $this->loadModel('doc')->getApiLibs(); $products = $this->dao->select('t1.id, t1.name, t1.status')->from(TABLE_PRODUCT)->alias('t1') ->leftjoin(TABLE_DOCLIB)->alias('t2')->on('t2.product=t1.id') ->where('t2.id')->gt(0) ->andWhere('t1.vision')->eq($this->config->vision) - ->andWhere('t2.vision')->eq($this->config->vision) ->andWhere('t1.deleted')->eq(0) - ->andWhere('t2.type')->eq('api') - ->beginIF(!$this->app->user->admin) - ->andWhere('(t2.acl')->eq('open') - ->orWhere('t1.id')->in($this->app->user->view->products) - ->markRight(1) - ->fi() + ->andWhere('t2.id')->in(array_keys($libs)) ->fetchAll('id'); foreach($products as $id => $product) @@ -1017,15 +1010,9 @@ class apiModel extends model ->leftjoin(TABLE_DOCLIB)->alias('t2')->on('t2.project=t1.id') ->where('t2.id')->gt(0) ->andWhere('t1.vision')->eq($this->config->vision) - ->andWhere('t2.vision')->eq($this->config->vision) - ->andWhere('t2.type')->eq('api') ->andWhere('t1.deleted')->eq(0) ->beginIF(!$this->app->user->admin)->andWhere('t1.id')->in($this->app->user->view->projects)->fi() - ->beginIF(!$this->app->user->admin) - ->andWhere('(t2.acl')->eq('open') - ->orWhere('t1.id')->in($this->app->user->view->projects) - ->markRight(1) - ->fi() + ->andWhere('t2.id')->in(array_keys($libs)) ->orderBy('t1.hasProduct_asc') ->fetchAll('id'); diff --git a/module/api/view/ajaxgetdropmenu.html.php b/module/api/view/ajaxgetdropmenu.html.php index 189a23b118..03a045ec9e 100644 --- a/module/api/view/ajaxgetdropmenu.html.php +++ b/module/api/view/ajaxgetdropmenu.html.php @@ -24,26 +24,33 @@ $link = $this->createLink('api', 'index'); $selected = $objectType == 'nolink' ? 'selected' : ''; $dataParams = 'data-type="nolink" data-id="0"'; -$normalObjectsHtml .= "
  • " . html::a($link, $lang->api->noLinked, '', "class='clickable $selected' title='{$lang->api->noLinked}' $dataParams data-key='" . zget($objectsPinYin, $lang->api->noLinked, '') . "'") . '
  • '; +if(!empty($nolinkLibs)) $normalObjectsHtml .= "
  • " . html::a($link, $lang->api->noLinked, '', "class='clickable $selected' title='{$lang->api->noLinked}' $dataParams data-key='" . zget($objectsPinYin, $lang->api->noLinked, '') . "'") . '
  • '; foreach(array('product', 'project') as $moduleType) { - foreach($normalObjects[$moduleType] as $normalObjectID => $normalObjectName) + if(!empty($normalObjects[$moduleType])) { - $dataParams = "data-type='$moduleType' data-id='$normalObjectID'"; - $selected = $normalObjectID == $objectID ? 'selected' : ''; - $normalObjectsHtml .= "
  • " . html::a($link, " $normalObjectName", '', "class='$selected clickable' title='{$normalObjectName}' $dataParams data-key='" . zget($objectsPinYin, $normalObjectName, '') . "'") . '
  • '; + foreach($normalObjects[$moduleType] as $normalObjectID => $normalObjectName) + { + $dataParams = "data-type='$moduleType' data-id='$normalObjectID'"; + $selected = $normalObjectID == $objectID ? 'selected' : ''; + $normalObjectsHtml .= "
  • " . html::a($link, " $normalObjectName", '', "class='$selected clickable' title='{$normalObjectName}' $dataParams data-key='" . zget($objectsPinYin, $normalObjectName, '') . "'") . '
  • '; + } } - foreach($closedObjects[$moduleType] as $closedObjectID => $closedObjectName) + if(!empty($closedObjects[$moduleType])) { - $dataParams = "data-type='$moduleType' data-id='$normalObjectID'"; - $selected = $closedObjectID == $objectID ? 'selected' : ''; - $closedObjectsHtml .= '
  • ' . html::a($link, " $closedObjectName", '', "class='$selected clickable' title='{$closedObjectName}' $dataParams data-key='" . zget($objectsPinYin, $closedObjectName, '') . "'") . '
  • '; + foreach($closedObjects[$moduleType] as $closedObjectID => $closedObjectName) + { + $dataParams = "data-type='$moduleType' data-id='$normalObjectID'"; + $selected = $closedObjectID == $objectID ? 'selected' : ''; + $closedObjectsHtml .= '
  • ' . html::a($link, " $closedObjectName", '', "class='$selected clickable' title='{$closedObjectName}' $dataParams data-key='" . zget($objectsPinYin, $closedObjectName, '') . "'") . '
  • '; + } } + if($moduleType == 'product') { - if($normalObjects['project']) $normalObjectsHtml .= '
  • '; - if($closedObjects['project']) $closedObjectsHtml .= '
  • '; + if($normalObjects['project'] and (!empty($nolinkLibs) or !empty($normalObjects['product']))) $normalObjectsHtml .= '
  • '; + if($closedObjects['project'] and !empty($normalObjects['product'])) $closedObjectsHtml .= '
  • '; } } $normalObjectsHtml .= ''; @@ -51,7 +58,7 @@ $closedObjectsHtml .= ''; ?>
    -
    +
    @@ -59,7 +66,7 @@ $closedObjectsHtml .= '';
    - +