From c5be2b6b3b798146e30d1a4e4844c75bb62a42d9 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Fri, 3 Nov 2023 16:09:05 +0800 Subject: [PATCH] * Rewrite bind ui for webhook. --- module/webhook/js/bind.ui.js | 35 +++++++++ module/webhook/ui/bind.html.php | 122 ++++++++++++++++++++++++++++++++ 2 files changed, 157 insertions(+) create mode 100644 module/webhook/js/bind.ui.js create mode 100644 module/webhook/ui/bind.html.php diff --git a/module/webhook/js/bind.ui.js b/module/webhook/js/bind.ui.js new file mode 100644 index 0000000000..2ea3a039dc --- /dev/null +++ b/module/webhook/js/bind.ui.js @@ -0,0 +1,35 @@ +window.confirmChanges = function() +{ + var picker = $('#userSelect').zui('picker') + var items = picker.options.items; + var value = picker.$.value; + var text = ''; + + for(i in items) + { + if(items[i].value == value) + { + text = items[i].text; + break; + } + } + + var spanText = text ? '' + text + '' : ''; + var inputName = $("#saveInput").children('input').eq(0).attr("name"); + + var $nameInput = $(".bindUsersList").find("input[name='" + inputName + "']"); + $nameInput.val(value); + $nameInput.closest('td').find('.username').html(spanText); + + $('#userList').modal('hide'); +}; + +window.showBindModal = function(e) +{ + var $obj = $(e.target); + var inputName = $obj.attr("data-value"); + if(typeof(inputName) == 'undefined') inputName = $obj.closest('[data-value]').attr('data-value'); + + $("#saveInput").html(""); + $('#userSelect').picker('setValue', ''); +}; diff --git a/module/webhook/ui/bind.html.php b/module/webhook/ui/bind.html.php new file mode 100644 index 0000000000..f0e1b36427 --- /dev/null +++ b/module/webhook/ui/bind.html.php @@ -0,0 +1,122 @@ + + * @package webhook + * @link https://www.zentao.net + */ +namespace zin; + +$useridLang = $lang->webhook->dingUserid; +if($webhook->type == 'wechatuser') $useridLang = $lang->webhook->wechatUserid; +if($webhook->type == 'feishuuser') $useridLang = $lang->webhook->feishuUserid; + +$statusLang = $lang->webhook->dingBindStatus; +if($webhook->type == 'wechatuser') $statusLang = $lang->webhook->wechatBindStatus; +if($webhook->type == 'feishuuser') $statusLang = $lang->webhook->feishuBindStatus; + +$fnBuildTbody = function() use($users, $bindedUsers, $oauthUsers, $useridPairs, $lang) +{ + $trItems = array(); + + foreach($users as $user) + { + $userid = ''; + $bindStatus = 0; + if(isset($bindedUsers[$user->account])) + { + $userid = $bindedUsers[$user->account]; + $bindStatus = 1; + } + elseif(isset($oauthUsers[$user->realname])) + { + $userid = $oauthUsers[$user->realname]; + } + + $trItems[] = h::tr + ( + h::td(set::colspan(2), $user->account, span(setClass('label secondary-outline circle ml-2'), $user->realname)), + h::td + ( + set::colspan(2), + div + ( + setClass("username"), + $userid ? span(setClass('label primary-outline circle'), zget($useridPairs, $userid)) : null, + ), + formHidden("userid[{$user->account}]", $userid), + ), + h::td(set::style(array('text-align' => 'center')), btn(setClass('bind btn-link'), set('data-value', "userid[{$user->account}]"), set('data-toggle', "modal"), set('data-target', '#userList'), set('data-size', 'sm'), icon('edit'))), + h::td(set::style(array('text-align' => 'center')), \zget($lang->webhook->dingBindStatusList, $bindStatus, '')), + ); + } + + return h::tbody($trItems); +}; + +$fnBuildFooter = function() use($users, $lang, $selectedDepts, $webhook) +{ + if(empty($users)) return null; + + return row + ( + setClass('table-footer justify-between items-center'), + cell + ( + btn(set::btnType('submit'), setClass('primary mr-2'), set::size('sm'), $lang->save), + btn(set::url(createLink('webhook', 'browse')), setClass('mr-2'), set::size('sm'), $lang->goback), + $selectedDepts ? btn(set::url(createLink('webhook', 'chooseDept', "id={$webhook->id}")), set::size('sm'), $lang->webhook->chooseDeptAgain) : null, + ), + cell(pager()), + ); +}; + +panel +( + setClass('m-auto'), + set::style(array('width' => '900px')), + set::title($lang->webhook->bind), + form + ( + set::actions(false), + set::method('post'), + h::table + ( + setClass('bindUsersList'), + on::click('.bind', 'showBindModal'), + setClass('table bordered condensed'), + h::thead + ( + h::tr + ( + h::th(set::colspan(2), $lang->webhook->zentaoUser), + h::th(set::colspan(2), $useridLang), + h::th(set::width('80'), set::style(array('text-align' => 'center')), $lang->actions), + h::th(set::width('150'), set::style(array('text-align' => 'center')), $statusLang), + ) + ), + $fnBuildTbody(), + ), + $fnBuildFooter(), + ) +); + +modal +( + setID('userList'), + set::title($lang->webhook->bind), + set::closeBtn(true), + div + ( + setClass('mt-3'), + picker(setID('userSelect'), set::name('userid'), set::items($useridPairs)), + div(setClass('text-center'), btn(setClass('primary mt-3'), set('onclick', 'confirmChanges()'), $lang->save)), + ), + div(setID('saveInput')), +); + +render(); +