Merge branch 'tsj_sort' into 'master'

Tsj sort

See merge request easycorp/zentaopms!7440
This commit is contained in:
王怡栋
2023-04-17 08:42:15 +00:00
12 changed files with 95 additions and 28 deletions
+6
View File
@@ -289,6 +289,9 @@ SELECT t1.`group`, t1.`module`, 'addCatalog' FROM `zt_grouppriv` AS t1 WHERE t1.
INSERT IGNORE INTO `zt_grouppriv` (`group`, `module`, `method`)
SELECT t1.`group`, t1.`module`, 'editCatalog' FROM `zt_grouppriv` AS t1 WHERE t1.`module` = 'doc' AND t1.`method` = 'catalog';
INSERT IGNORE INTO `zt_grouppriv` (`group`, `module`, `method`)
SELECT t1.`group`, t1.`module`, 'sortCatalog' FROM `zt_grouppriv` AS t1 WHERE t1.`module` = 'doc' AND t1.`method` = 'catalog';
INSERT IGNORE INTO `zt_grouppriv` (`group`, `module`, `method`)
SELECT t1.`group`, t1.`module`, 'deleteCatalog' FROM `zt_grouppriv` AS t1 WHERE t1.`module` = 'doc' AND t1.`method` = 'catalog';
@@ -298,6 +301,9 @@ SELECT t1.`group`, 'api', 'addCatalog' FROM `zt_grouppriv` AS t1 WHERE t1.`modul
INSERT IGNORE INTO `zt_grouppriv` (`group`, `module`, `method`)
SELECT t1.`group`, 'api', 'editCatalog' FROM `zt_grouppriv` AS t1 WHERE t1.`module` = 'doc' AND t1.`method` = 'catalog';
INSERT IGNORE INTO `zt_grouppriv` (`group`, `module`, `method`)
SELECT t1.`group`, 'api', 'sortCatalog' FROM `zt_grouppriv` AS t1 WHERE t1.`module` = 'doc' AND t1.`method` = 'catalog';
INSERT IGNORE INTO `zt_grouppriv` (`group`, `module`, `method`)
SELECT t1.`group`, 'api', 'deleteCatalog' FROM `zt_grouppriv` AS t1 WHERE t1.`module` = 'doc' AND t1.`method` = 'catalog';
+1
View File
@@ -64,6 +64,7 @@ $lang->api->allLibs = "AllLibs";
$lang->api->noLinked = "No Linked {$lang->productCommon} and {$lang->projectCommon}";
$lang->api->addCatalog = 'Add Catalog';
$lang->api->editCatalog = 'Edit Catalog';
$lang->api->sortCatalog = 'Catalog Sorting';
$lang->api->deleteCatalog = 'Delete Catalog';
/* Common access control lang. */
+1
View File
@@ -64,6 +64,7 @@ $lang->api->allLibs = "AllLibs";
$lang->api->noLinked = "No Linked {$lang->productCommon} and {$lang->projectCommon}";
$lang->api->addCatalog = 'Add Catalog';
$lang->api->editCatalog = 'Edit Catalog';
$lang->api->sortCatalog = 'Catalog Sorting';
$lang->api->deleteCatalog = 'Delete Catalog';
/* Common access control lang. */
+1
View File
@@ -64,6 +64,7 @@ $lang->api->allLibs = "AllLibs";
$lang->api->noLinked = "No Linked {$lang->productCommon} and {$lang->projectCommon}";
$lang->api->addCatalog = 'Add Catalog';
$lang->api->editCatalog = 'Edit Catalog';
$lang->api->sortCatalog = 'Catalog Sorting';
$lang->api->deleteCatalog = 'Delete Catalog';
/* Common access control lang. */
+1
View File
@@ -64,6 +64,7 @@ $lang->api->allLibs = "全部库";
$lang->api->noLinked = "未关联{$lang->productCommon}{$lang->projectCommon}";
$lang->api->addCatalog = '添加目录';
$lang->api->editCatalog = '编辑目录';
$lang->api->sortCatalog = '目录排序';
$lang->api->deleteCatalog = '删除目录';
/* Common access control lang. */
+1
View File
@@ -148,6 +148,7 @@ $lang->doc->tableContents = 'Catalog';
$lang->doc->addCatalog = 'Add Catalog';
$lang->doc->editCatalog = 'Edit Catalog';
$lang->doc->deleteCatalog = 'Delete Catalog';
$lang->doc->sortCatalog = 'Catalog Sorting';
$lang->doc->docStatistic = 'Statistic';
$lang->doc->docCreated = 'Created Documents';
$lang->doc->docEdited = 'Edited Documents';
+1
View File
@@ -148,6 +148,7 @@ $lang->doc->tableContents = 'Directory';
$lang->doc->addCatalog = 'Add Catalog';
$lang->doc->editCatalog = 'Edit Catalog';
$lang->doc->deleteCatalog = 'Delete Catalog';
$lang->doc->sortCatalog = 'Catalog Sorting';
$lang->doc->docStatistic = 'Statistic';
$lang->doc->docCreated = 'Created Documents';
$lang->doc->docEdited = 'Edited Documents';
+1
View File
@@ -148,6 +148,7 @@ $lang->doc->tableContents = 'Catalog';
$lang->doc->addCatalog = 'Add Catalog';
$lang->doc->editCatalog = 'Edit Catalog';
$lang->doc->deleteCatalog = 'Delete Catalog';
$lang->doc->sortCatalog = 'Catalog Sorting';
$lang->doc->docStatistic = 'Statistic';
$lang->doc->docCreated = 'Created Documents';
$lang->doc->docEdited = 'Edited Documents';
+1
View File
@@ -148,6 +148,7 @@ $lang->doc->tableContents = '目录';
$lang->doc->addCatalog = '添加目录';
$lang->doc->editCatalog = '编辑目录';
$lang->doc->deleteCatalog = '删除目录';
$lang->doc->sortCatalog = '目录排序';
$lang->doc->docStatistic = '文档统计';
$lang->doc->docCreated = '创建的文档';
$lang->doc->docEdited = '编辑的文档';
+2
View File
@@ -2927,6 +2927,7 @@ class docModel extends model
$item->name = $module->name;
$item->type = $module->type == 'api' ? 'apiDoc' : $module->type;
$item->active = $module->id == $moduleID ? 1 : 0;
$item->order = $module->order;
$item->children = $this->getModuleTree($rootID, $moduleID, $type, $module->id, $modules);
$showDoc = $this->loadModel('setting')->getItem('owner=' . $this->app->user->account . '&module=doc&key=showDoc');
$showDoc = $showDoc === '0' ? 0 : 1;
@@ -2997,6 +2998,7 @@ class docModel extends model
$item->id = $lib->id;
$item->type = $lib->type == 'api' ? 'api' : 'lib';
$item->name = $lib->name;
$item->order = $lib->order;
$item->objectType = $type;
$item->objectID = $objectID;
$item->active = $lib->id == $libID && $browseType != 'bysearch' ? 1 : 0;
+54 -7
View File
@@ -57,6 +57,17 @@ i.btn-info, i.btn-info:hover {border: none; background: #fff; box-shadow: unset;
#leftBar .selectBox #currentItem > .text {overflow: hidden; text-align: left; flex: 0 1 100%;}
.dropdown-in-tree {max-height: 293px; overflow-y: auto;}
.before-tree-item {flex: 0 0 14px; margin-right: 5px; margin-bottom: 2px;}
/* Catalog sort style. */
.sortable-sorting .catalog > a {cursor: move;}
.sortable-sorting li .flex-start {opacity: 0.5;}
.sortable-sorting .drop-here .flex-start {background-color: #fff3e0;}
.sortable-sorting .drop-here .flex-start > * {opacity: 0.1;}
.sortable-sorting .drag-shadow .flex-start {opacity: 1 !important;}
.sortable-sorting .drag-shadow .icon-drop {visibility: hidden;}
.is-sorting > li .flex-start {opacity: 1; border-radius: 4px;}
.is-sorting > li ul {display: none !important;}
li.drag-shadow ul {display: none !important;}
</style>
<?php
@@ -70,6 +81,7 @@ js::set('objectID', isset($objectID) ? $objectID : '');
js::set('isFirstLoad', isset($isFirstLoad) ? $isFirstLoad: '');
js::set('canViewFiles', common::hasPriv('doc', 'showfiles'));
js::set('spaceMethod', $config->doc->spaceMethod);
js::set('canSortCatalog', common::hasPriv('doc', 'sortCatalog'));
?>
<div id="fileTree" class="file-tree menu-active-primary menu-hover-primary">
@@ -253,11 +265,13 @@ $(function()
if(typeof docID != 'undefined' && item.id == docID) item.active = 1;
if(['text', 'word', 'ppt', 'excel'].indexOf(item.type) !== -1) item.hasAction = false;
var objectType = config.currentModule == 'api' ? item.objectType : item.type;
var libClass = ['lib', 'annex', 'api', 'execution'].indexOf(objectType) !== -1 ? 'lib' : '';
var hasChild = item.children ? !!item.children.length : false;
var link = item.type != 'execution' || item.hasAction ? '###' : '#';
var $item = '<a href="' + link + '" style="position: relative" data-has-children="' + hasChild + '" title="' + item.name + '" data-id="' + item.id + '" class="' + libClass + '" data-type="' + item.type + '" data-action="' + item.hasAction + '">';
var objectType = config.currentModule == 'api' ? item.objectType : item.type;
var libClass = ['lib', 'annex', 'api', 'execution'].indexOf(objectType) !== -1 ? 'lib' : '';
var moduleClass = item.type == 'doc' ? 'catalog' : '';
var sortClass = item.type == 'doc' && canSortCatalog ? ' sort-module' : '';
var hasChild = item.children ? !!item.children.length : false;
var link = item.type != 'execution' || item.hasAction ? '###' : '#';
var $item = '<a href="' + link + '" style="position: relative" data-has-children="' + hasChild + '" title="' + item.name + '" data-id="' + item.id + '" class="' + libClass + sortClass + '" data-type="' + item.type + '" data-action="' + item.hasAction + '">';
$item += '<div class="text h-full w-full flex-start overflow-hidden">';
if((libClass == 'lib' && item.type != 'execution') || (item.type == 'execution' && item.hasAction)) $item += '<i class="before-tree-item icon icon-' + imgObj[item.type] +'-lib"></i>';
@@ -284,9 +298,9 @@ $(function()
if(item.versions) versionsData[item.id] = item.versions;
$li.append($item);
$li.addClass(libClass);
$li.addClass(libClass).addClass(moduleClass).attr('data-order', item.order);
if(item.active) $li.addClass('active');
}
},
});
if(isFirstLoad) ele.data('zui.tree').collapse();
@@ -630,5 +644,38 @@ $(function()
{
if(e.keyCode == 13) $(this).trigger('blur');
});
/* Make modules tree sortable */
$('#fileTree').sortable(
{
trigger: 'a.sort-module',
dropToClass: 'sort-to',
stopPropagation: true,
nested: true,
selector: 'li',
dragCssClass: 'drop-here',
canMoveHere: function($ele, $target)
{
if($ele && $target && $ele.parent().closest('li').attr('data-id') !== $target.parent().closest('li').attr('data-id')) return false;
},
targetSelector: function($ele, $root)
{
var $ul = $ele.closest('ul');
setTimeout(function()
{
if($('#fileTree').hasClass('sortable-sorting')) $ul.addClass('is-sorting');
}, 100);
return $ul.children('li.catalog');
},
always: function()
{
$('#fileTree,#fileTree .is-sorting').removeClass('is-sorting');
},
finish: function(e)
{
if(!e.changed) return;
}
});
})
</script>
+25 -21
View File
@@ -1416,6 +1416,7 @@ $lang->resource->doc->teamSpace = 'teamSpace';
$lang->resource->doc->showFiles = 'showFiles';
$lang->resource->doc->addCatalog = 'addCatalog';
$lang->resource->doc->editCatalog = 'editCatalog';
$lang->resource->doc->sortCatalog = 'sortCatalog';
$lang->resource->doc->deleteCatalog = 'deleteCatalog';
$lang->resource->doc->displaySetting = 'displaySetting';
@@ -1439,8 +1440,9 @@ $lang->doc->methodOrder[85] = 'teamSpace';
$lang->doc->methodOrder[90] = 'showFiles';
$lang->doc->methodOrder[95] = 'addCatalog';
$lang->doc->methodOrder[100] = 'editCatalog';
$lang->doc->methodOrder[105] = 'deleteCatalog';
$lang->doc->methodOrder[110] = 'displaySetting';
$lang->doc->methodOrder[105] = 'sortCatalog';
$lang->doc->methodOrder[110] = 'deleteCatalog';
$lang->doc->methodOrder[115] = 'displaySetting';
/* Mail. */
$lang->resource->mail = new stdclass();
@@ -1937,32 +1939,34 @@ $lang->resource->api->edit = 'edit';
$lang->resource->api->delete = 'delete';
$lang->resource->api->addCatalog = 'addCatalog';
$lang->resource->api->editCatalog = 'editCatalog';
$lang->resource->api->sortCatalog = 'sortCatalog';
$lang->resource->api->deleteCatalog = 'deleteCatalog';
$lang->resource->api->getModel = 'getModel';
$lang->resource->api->debug = 'debug';
$lang->resource->api->sql = 'sql';
$lang->api->methodOrder[0] = 'index';
$lang->api->methodOrder[5] = 'createLib';
$lang->api->methodOrder[10] = 'editLib';
$lang->api->methodOrder[15] = 'deleteLib';
$lang->api->methodOrder[20] = 'createRelease';
$lang->api->methodOrder[25] = 'releases';
$lang->api->methodOrder[30] = 'deleteRelease';
$lang->api->methodOrder[35] = 'struct';
$lang->api->methodOrder[40] = 'createStruct';
$lang->api->methodOrder[45] = 'editStruct';
$lang->api->methodOrder[50] = 'deleteStruct';
$lang->api->methodOrder[55] = 'create';
$lang->api->methodOrder[60] = 'edit';
$lang->api->methodOrder[65] = 'delete';
$lang->api->methodOrder[0] = 'index';
$lang->api->methodOrder[5] = 'createLib';
$lang->api->methodOrder[10] = 'editLib';
$lang->api->methodOrder[15] = 'deleteLib';
$lang->api->methodOrder[20] = 'createRelease';
$lang->api->methodOrder[25] = 'releases';
$lang->api->methodOrder[30] = 'deleteRelease';
$lang->api->methodOrder[35] = 'struct';
$lang->api->methodOrder[40] = 'createStruct';
$lang->api->methodOrder[45] = 'editStruct';
$lang->api->methodOrder[50] = 'deleteStruct';
$lang->api->methodOrder[55] = 'create';
$lang->api->methodOrder[60] = 'edit';
$lang->api->methodOrder[65] = 'delete';
$lang->api->methodOrder[70] = 'addCatalog';
$lang->api->methodOrder[75] = 'editCatalog';
$lang->api->methodOrder[80] = 'deleteCatalog';
$lang->api->methodOrder[85] = 'getModel';
$lang->api->methodOrder[90] = 'debug';
$lang->api->methodOrder[95] = 'sql';
$lang->api->methodOrder[75] = 'editCatalog';
$lang->api->methodOrder[80] = 'sortCatalog';
$lang->api->methodOrder[85] = 'deleteCatalog';
$lang->api->methodOrder[90] = 'getModel';
$lang->api->methodOrder[95] = 'debug';
$lang->api->methodOrder[100] = 'sql';
$lang->resource->file = new stdclass();
$lang->resource->file->download = 'download';