* Code for task #89140.

This commit is contained in:
tianshujie
2023-03-31 10:11:53 +08:00
parent 3ff63df56c
commit 076fc558aa
3 changed files with 51 additions and 37 deletions
+28 -8
View File
@@ -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();
+3 -16
View File
@@ -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');
+20 -13
View File
@@ -24,26 +24,33 @@ $link = $this->createLink('api', 'index');
$selected = $objectType == 'nolink' ? 'selected' : '';
$dataParams = 'data-type="nolink" data-id="0"';
$normalObjectsHtml .= "<li>" . html::a($link, $lang->api->noLinked, '', "class='clickable $selected' title='{$lang->api->noLinked}' $dataParams data-key='" . zget($objectsPinYin, $lang->api->noLinked, '') . "'") . '</li>';
if(!empty($nolinkLibs)) $normalObjectsHtml .= "<li>" . html::a($link, $lang->api->noLinked, '', "class='clickable $selected' title='{$lang->api->noLinked}' $dataParams data-key='" . zget($objectsPinYin, $lang->api->noLinked, '') . "'") . '</li>';
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 .= "<li>" . html::a($link, "<i class='icon icon-$moduleType'></i> $normalObjectName", '', "class='$selected clickable' title='{$normalObjectName}' $dataParams data-key='" . zget($objectsPinYin, $normalObjectName, '') . "'") . '</li>';
foreach($normalObjects[$moduleType] as $normalObjectID => $normalObjectName)
{
$dataParams = "data-type='$moduleType' data-id='$normalObjectID'";
$selected = $normalObjectID == $objectID ? 'selected' : '';
$normalObjectsHtml .= "<li>" . html::a($link, "<i class='icon icon-$moduleType'></i> $normalObjectName", '', "class='$selected clickable' title='{$normalObjectName}' $dataParams data-key='" . zget($objectsPinYin, $normalObjectName, '') . "'") . '</li>';
}
}
foreach($closedObjects[$moduleType] as $closedObjectID => $closedObjectName)
if(!empty($closedObjects[$moduleType]))
{
$dataParams = "data-type='$moduleType' data-id='$normalObjectID'";
$selected = $closedObjectID == $objectID ? 'selected' : '';
$closedObjectsHtml .= '<li>' . html::a($link, "<i class='icon icon-$moduleType'></i> $closedObjectName", '', "class='$selected clickable' title='{$closedObjectName}' $dataParams data-key='" . zget($objectsPinYin, $closedObjectName, '') . "'") . '</li>';
foreach($closedObjects[$moduleType] as $closedObjectID => $closedObjectName)
{
$dataParams = "data-type='$moduleType' data-id='$normalObjectID'";
$selected = $closedObjectID == $objectID ? 'selected' : '';
$closedObjectsHtml .= '<li>' . html::a($link, "<i class='icon icon-$moduleType'></i> $closedObjectName", '', "class='$selected clickable' title='{$closedObjectName}' $dataParams data-key='" . zget($objectsPinYin, $closedObjectName, '') . "'") . '</li>';
}
}
if($moduleType == 'product')
{
if($normalObjects['project']) $normalObjectsHtml .= '<li class="divider"></li>';
if($closedObjects['project']) $closedObjectsHtml .= '<li class="divider"></li>';
if($normalObjects['project'] and (!empty($nolinkLibs) or !empty($normalObjects['product']))) $normalObjectsHtml .= '<li class="divider"></li>';
if($closedObjects['project'] and !empty($normalObjects['product'])) $closedObjectsHtml .= '<li class="divider"></li>';
}
}
$normalObjectsHtml .= '</ul>';
@@ -51,7 +58,7 @@ $closedObjectsHtml .= '</ul>';
?>
<div class="table-row">
<div class="table-col <?php if($closedObjects['product'] or $closedObjects['project']) echo 'col-left'?>">
<div class="table-col <?php if(!empty($closedObjects['product']) or !empty($closedObjects['project'])) echo 'col-left'?>">
<div class='list-group'>
<div class="tab-content objectTree" id="tabContent">
<div class="tab-pane objects active">
@@ -59,7 +66,7 @@ $closedObjectsHtml .= '</ul>';
</div>
</div>
</div>
<?php if($closedObjects['product'] or $closedObjects['project']):?>
<?php if(!empty($closedObjects['product']) or !empty($closedObjects['project'])):?>
<div class="col-footer">
<a class='pull-right toggle-right-col not-list-item'><?php echo $lang->doc->closed?><i class='icon icon-angle-right'></i></a>
</div>