From 4e51f83f21b5b4ee40b7dc96967efc0ec95e1e76 Mon Sep 17 00:00:00 2001 From: tianshujie Date: Tue, 17 Oct 2023 13:35:23 +0800 Subject: [PATCH] * Fix edit api lib's acl linkage issue. --- module/api/js/common.ui.js | 85 ++++++++++++++++++++++++++++++++++ module/api/js/editlib.ui.js | 4 ++ module/api/ui/editlib.html.php | 2 + 3 files changed, 91 insertions(+) create mode 100644 module/api/js/editlib.ui.js diff --git a/module/api/js/common.ui.js b/module/api/js/common.ui.js index bf4a7e618e..3184c4607c 100644 --- a/module/api/js/common.ui.js +++ b/module/api/js/common.ui.js @@ -260,3 +260,88 @@ function genKey() key += Math.random().toString(36).substr(2) return key } + +/** + * Toggle acl. + * + * @param string $acl + * @param string $type + * @access public + * @return void + */ +function toggleAcl(type) +{ + const acl = $('input[name=acl]:checked').val(); + let libID = $('input[name=lib]').val(); + if($('input[name=lib]').length == 0 && $('input[name=module]').length > 0) + { + let moduleID = $('input[name=module]').val(); + if(moduleID.indexOf('_') >= 0) libID = moduleID.substr(0, moduleID.indexOf('_')); + } + if(acl == 'private') + { + $('#whiteListBox').removeClass('hidden'); + $('#groupBox').removeClass('hidden'); + } + else + { + $('#whiteListBox').addClass('hidden'); + $('#groupBox').addClass('hidden'); + } + + if(type == 'lib') + { + if(libType == 'project' && typeof(doclibID) != 'undefined') + { + let link = $.createLink('doc', 'ajaxGetWhitelist', 'doclibID=' + doclibID + '&acl=' + acl); + $.getJSON(link, function(users) + { + if(users != 'private' && users) + { + const $usersPicker = $('select[name^=users]').zui('picker'); + $usersPicker.render({items: users}); + $usersPicker.$.setValue(''); + } + }) + } + } + else if(type == 'doc') + { + $('#whiteListBox').toggleClass('hidden', acl == 'open'); + $('#groupBox').toggleClass('hidden', acl == 'open'); + loadWhitelist(libID); + } +} + +/** + * Load whitelist by libID. + * + * @param int $libID + * @access public + * @return void + */ +window.loadWhitelist = function(libID) +{ + let groupLink = $.createLink('doc', 'ajaxGetWhitelist', 'libID=' + libID + '&acl=&control=group'); + let userLink = $.createLink('doc', 'ajaxGetWhitelist', 'libID=' + libID + '&acl=&control=user'); + $.getJSON(groupLink, function(groups) + { + if(groups != 'private' && groups) + { + groups = JSON.parse(groups); + const $groupsPicker = $('select[name^=groups]').zui('picker'); + $groupsPicker.render({items: groups}); + $groupsPicker.$.setValue(''); + } + }); + + $.getJSON(userLink, function(users) + { + if(users != 'private' && users) + { + const $usersPicker = $('select[name^=users]').zui('picker'); + $usersPicker.render({items: users}); + $usersPicker.$.setValue(''); + } + }); +} diff --git a/module/api/js/editlib.ui.js b/module/api/js/editlib.ui.js new file mode 100644 index 0000000000..6865f34372 --- /dev/null +++ b/module/api/js/editlib.ui.js @@ -0,0 +1,4 @@ +$(function() +{ + toggleAcl('lib'); +}) diff --git a/module/api/ui/editlib.html.php b/module/api/ui/editlib.html.php index c47261fc13..8572cf38fd 100644 --- a/module/api/ui/editlib.html.php +++ b/module/api/ui/editlib.html.php @@ -10,6 +10,8 @@ declare(strict_types=1); */ namespace zin; +jsVar('doclibID', $lib->id); +jsVar('libType', $lib->type); modalHeader ( set::title($lang->api->editLib),