doclib->name?>
+
+
+
+
+ doc->order;?>
+
+
+diff --git a/module/api/control.php b/module/api/control.php index 19b1bfa7f1..d66698951e 100755 --- a/module/api/control.php +++ b/module/api/control.php @@ -674,6 +674,11 @@ EOT; $selected = $key == $libID ? 'selected' : ''; $output .= html::a(inlink($methodName, "libID=$key"), $lib->name, '', "class='$selected' data-app='{$this->app->tab}'"); } + if(count($libs) >= 2 and common::hasPriv('doc', 'sortLibs')) + { + $output .= '
'; + $output .= html::a($this->createLink('doc', 'sortLibs', "type=api&objectID=0", '', true), " {$this->lang->doc->sortLibs}", '', "data-title='{$this->lang->doc->sortLibs}' data-toggle='modal' data-type='iframe' data-width='400px' data-app='{$this->app->tab}'"); + } $output .= ""; /* Get lib version */ diff --git a/module/doc/control.php b/module/doc/control.php index 9f6a58abb5..2e4261d9a8 100755 --- a/module/doc/control.php +++ b/module/doc/control.php @@ -1199,4 +1199,22 @@ class doc extends control unset($this->lang->doc->libTypeList['book']); $this->display(); } + + /** + * Sort libs. + * + * @access public + * @return void + */ + public function sortLibs($type, $objectID) + { + if(!empty($_POST)) + { + $this->doc->updateLibOrder(); + return print(js::reload('parent.parent')); + } + $this->view->title = $this->lang->doc->sortLibs; + $this->view->libs = $this->doc->getLibs($type, '', '', $objectID); + $this->display(); + } } diff --git a/module/doc/css/common.css b/module/doc/css/common.css index 5e2b577193..a9b746c106 100644 --- a/module/doc/css/common.css +++ b/module/doc/css/common.css @@ -103,3 +103,4 @@ ol, ul {margin-bottom: 0} .fullscreen-close {top: 8px !important;} #subHeader .list-group>a.selected {color: #e9f2fb !important; background-color: #0c64eb !important;} +#pageNav #dropMenu .table-col .list-group .icon-move {display:block; float: left; font-size: 12px; padding: 3px 4px 3px 1px;} diff --git a/module/doc/css/sortlibs.css b/module/doc/css/sortlibs.css new file mode 100644 index 0000000000..e8ec94be34 --- /dev/null +++ b/module/doc/css/sortlibs.css @@ -0,0 +1,4 @@ +#mainContent .doclib-name {font-size: 13px; font-weight: 550; padding: 10px 0px;} +#mainContent #libs .lib > .icon-move {padding-left: 4px; font-size:13px; vertical-align: text-top;} +#mainContent #libs .lib {padding-bottom: 5px;} +#mainContent #libs {padding-bottom: 10px;} diff --git a/module/doc/js/sortlibs.js b/module/doc/js/sortlibs.js new file mode 100644 index 0000000000..7e86f69b58 --- /dev/null +++ b/module/doc/js/sortlibs.js @@ -0,0 +1,31 @@ +$(function() +{ + /* Make libs sortable. */ + $('#libs').sortable( + { + trigger: '.lib > .icon-move, .lib > .lib-name', + dropToClass: 'sort-to', + stopPropagation: true, + nested: true, + selector: 'div', + dragCssClass: 'drop-here', + targetSelector: function($ele, $root) + { + var $libs = $ele.closest('#libs'); + return $libs.children('div.lib'); + }, + always: function() + { + $('#libs,#libs .is-sorting').removeClass('is-sorting'); + }, + finish: function(e) + { + var orders = ','; + $('#libs').find('div.lib').each(function() + { + orders += $(this).attr('data-id') + ','; + }); + $('#libs #libIdList').attr('value', orders); + } + }); +}); diff --git a/module/doc/lang/en.php b/module/doc/lang/en.php index 25738bfb22..d3e052be03 100644 --- a/module/doc/lang/en.php +++ b/module/doc/lang/en.php @@ -151,6 +151,7 @@ $lang->doc->removeMenu = 'Remove from Menu'; $lang->doc->search = 'Search'; $lang->doc->allCollections = 'All Collections'; $lang->doc->keywordsTips = 'Please use commas to separate keywords.'; +$lang->doc->sortLibs = 'Sort Libs'; global $config; /* Query condition list. */ diff --git a/module/doc/lang/zh-cn.php b/module/doc/lang/zh-cn.php index 112b990c3d..b879716bfd 100644 --- a/module/doc/lang/zh-cn.php +++ b/module/doc/lang/zh-cn.php @@ -151,6 +151,7 @@ $lang->doc->removeMenu = '从菜单栏移除'; $lang->doc->search = '搜索'; $lang->doc->allCollections = '查看全部收藏文档'; $lang->doc->keywordsTips = '多个关键字请用逗号分隔。'; +$lang->doc->sortLibs = '文档库排序'; global $config; /* 查询条件列表 */ diff --git a/module/doc/model.php b/module/doc/model.php index 7fe3134a2a..6527b467d5 100644 --- a/module/doc/model.php +++ b/module/doc/model.php @@ -48,7 +48,7 @@ class docModel extends model ->where('deleted')->eq(0) ->andWhere('type')->eq('api') ->beginIF(!empty($appendLib))->orWhere('id')->eq($appendLib)->fi() - ->orderBy('id_desc') + ->orderBy('`order`_asc, id_desc') ->fetchAll('id'); $libs = array_filter($libs, array($this, 'checkPrivLib')); return $libs; @@ -61,6 +61,7 @@ class docModel extends model * @param string $extra * @param string $appendLibs * @param int $projectID + * * @access public * @return array */ @@ -72,7 +73,7 @@ class docModel extends model ->where('type')->ne('api') ->beginIF($type == 'all')->andWhere('deleted')->eq(0)->fi() ->andWhere('vision')->eq($this->config->vision) - ->orderBy('id_desc') + ->orderBy('`order` asc, id_desc') ->query(); } else @@ -83,7 +84,7 @@ class docModel extends model ->beginIF($type)->andWhere('type')->eq($type)->fi() ->beginIF(!$type)->andWhere('type')->ne('api')->fi() ->beginIF($objectID and strpos(',product,project,execution,', ",$type,") !== false)->andWhere($type)->eq($objectID)->fi() - ->orderBy('`order`, id desc')->query(); + ->orderBy("`order` asc, id_desc")->query(); } $products = $this->loadModel('product')->getPairs(); @@ -128,7 +129,7 @@ class docModel extends model if(!empty($appendLibs)) { - $stmt = $this->dao->select('*')->from(TABLE_DOCLIB)->where('id')->in($appendLibs)->orderBy('`order`, id desc')->query(); + $stmt = $this->dao->select('*')->from(TABLE_DOCLIB)->where('id')->in($appendLibs)->orderBy("`order` asc, id_desc")->query(); while($lib = $stmt->fetch()) { if(!isset($libPairs[$lib->id]) and $this->checkPrivLib($lib, $extra)) $libPairs[$lib->id] = $lib->name; @@ -1401,8 +1402,8 @@ class docModel extends model ->andWhere('vision')->eq($this->config->vision) ->andWhere('type')->eq($type) ->beginIF(!empty($appendLib))->orWhere('id')->eq($appendLib)->fi() - ->beginIF($type == 'custom')->orderBy('`order`, id')->fi() - ->beginIF($type == 'book')->orderBy('id_desc')->fi() + ->beginIF($type == 'custom')->orderBy('`order` asc, id_desc')->fi() + ->beginIF($type == 'book')->orderBy('`order` asc, id_desc')->fi() ->fetchAll('id'); } elseif($type != 'product' and $type != 'project' and $type != 'execution') @@ -1417,7 +1418,7 @@ class docModel extends model ->andWhere($type)->eq($objectID) ->beginIF(!empty($appendLib))->orWhere('id')->eq($appendLib)->fi() ->beginIF($type == 'project')->andWhere('execution')->eq(0)->fi() - ->orderBy('`order`, id') + ->orderBy('`order` asc, id_desc') ->fetchAll('id'); } @@ -2360,6 +2361,11 @@ EOT; $selected = empty($libID) ? 'selected' : ''; $output .= html::a(inlink('showFiles', "type=$type&objectID=$objectID"), $this->lang->doclib->files, '', "class='$selected' data-app='{$this->app->tab}'"); } + if(count($libs) >= 2 and common::hasPriv('doc', 'sortLibs')) + { + $output .= ''; + $output .= html::a(inlink('sortLibs', "type=$type&objectID=$objectID", '', true), " {$this->lang->doc->sortLibs}", '', "data-title='{$this->lang->doc->sortLibs}' data-toggle='modal' data-type='iframe' data-width='400px' data-app='{$this->app->tab}'"); + } $output .= ""; } @@ -2767,7 +2773,7 @@ EOT; $table = $this->config->objectTables[$type]; $libs = $this->getLibsByObject($type, $objectID, '', $appendLib); - if($libID == 0) $libID = key($libs); + if($libID == 0) $libID = reset($libs)->id; $this->lang->modulePageNav = $this->select($type, $objects, $objectID, $libs, $libID); if($this->app->tab == 'doc') $this->app->rawMethod = $type; @@ -2812,4 +2818,26 @@ EOT; return $autoloadPage; } + + /** + * Update Lib orders. + * + * @access public + * @return void + */ + public function updateLibOrder() + { + $libIdList = $this->post->libIdList; + $libIdList = explode(',', $libIdList); + + $order = 1; + foreach($libIdList as $libID) + { + if(!$libID) continue; + + $this->dao->update(TABLE_DOCLIB)->set('`order`')->eq($order * 10)->where('id')->eq($libID)->exec(); + + $order++; + } + } } diff --git a/module/doc/view/sortlibs.html.php b/module/doc/view/sortlibs.html.php new file mode 100644 index 0000000000..b16f7f59e9 --- /dev/null +++ b/module/doc/view/sortlibs.html.php @@ -0,0 +1,33 @@ + + * @package doc + * @version $Id: sorlibs.html.php 958 2022-06-21 14:20:42Z $ + * @link https://www.zentao.net + */ +?> + +