From 71dd3dfc827f5bd454a39575924a18aefe62b39a Mon Sep 17 00:00:00 2001 From: zenggang Date: Mon, 6 Nov 2023 09:16:23 +0000 Subject: [PATCH] * Add gitlab user,edit gitlab user page --- module/gitlab/css/createuser.ui.css | 4 + module/gitlab/css/edituser.ui.css | 4 + module/gitlab/js/common.ui.js | 20 +++++ module/gitlab/js/createuser.ui.js | 21 +++++ module/gitlab/js/edituser.ui.js | 4 + module/gitlab/model.php | 2 +- module/gitlab/ui/browseuser.html.php | 2 - module/gitlab/ui/createuser.html.php | 116 +++++++++++++++++++++++++ module/gitlab/ui/edituser.html.php | 123 +++++++++++++++++++++++++++ 9 files changed, 293 insertions(+), 3 deletions(-) create mode 100644 module/gitlab/css/createuser.ui.css create mode 100644 module/gitlab/css/edituser.ui.css create mode 100644 module/gitlab/js/common.ui.js create mode 100644 module/gitlab/js/createuser.ui.js create mode 100644 module/gitlab/js/edituser.ui.js create mode 100644 module/gitlab/ui/createuser.html.php create mode 100644 module/gitlab/ui/edituser.html.php diff --git a/module/gitlab/css/createuser.ui.css b/module/gitlab/css/createuser.ui.css new file mode 100644 index 0000000000..9b243e3a68 --- /dev/null +++ b/module/gitlab/css/createuser.ui.css @@ -0,0 +1,4 @@ +#avatarUpload {display: inline-block; width: 50px; height: 50px; position: relative;} +#avatarUploadBtn {display: block; position: absolute; top: 0; left: 0; right: 0; bottom: 0;} +#avatarUploadBtn {opacity: 0; color: #fff; border-radius: 50%; line-height: 50px;} +#avatarUploadBtn:hover {opacity: 1; background-color: rgba(0,0,0,.5);} diff --git a/module/gitlab/css/edituser.ui.css b/module/gitlab/css/edituser.ui.css new file mode 100644 index 0000000000..9b243e3a68 --- /dev/null +++ b/module/gitlab/css/edituser.ui.css @@ -0,0 +1,4 @@ +#avatarUpload {display: inline-block; width: 50px; height: 50px; position: relative;} +#avatarUploadBtn {display: block; position: absolute; top: 0; left: 0; right: 0; bottom: 0;} +#avatarUploadBtn {opacity: 0; color: #fff; border-radius: 50%; line-height: 50px;} +#avatarUploadBtn:hover {opacity: 1; background-color: rgba(0,0,0,.5);} diff --git a/module/gitlab/js/common.ui.js b/module/gitlab/js/common.ui.js new file mode 100644 index 0000000000..87e31a96ce --- /dev/null +++ b/module/gitlab/js/common.ui.js @@ -0,0 +1,20 @@ +/** + * set avatar event + * + * @access public + * @return void + */ +function setAvatar() +{ + $('#avatarUploadBtn').on('click', function() + { + $('#files').trigger('click'); + }); + $("#files").on('change',function(){ + var files = this.files; + if(!files.length) return; + + $(".avatar img").attr("src", window.URL.createObjectURL(files[0])); + $(".avatar").removeClass('hidden'); + }); +} diff --git a/module/gitlab/js/createuser.ui.js b/module/gitlab/js/createuser.ui.js new file mode 100644 index 0000000000..2fcbf323ca --- /dev/null +++ b/module/gitlab/js/createuser.ui.js @@ -0,0 +1,21 @@ +$(document).ready(function() +{ + setAvatar(); +}); + +function onAccountChange(event) +{ + var account = $(event.target).val(); + var user = users[account]; + var name = ''; + var email = ''; + if(account && user) + { + name = user.realname; + account = user.account; + email = user.email; + } + $('#name').val(name); + $('#username').val(account); + $('#email').val(email); +} diff --git a/module/gitlab/js/edituser.ui.js b/module/gitlab/js/edituser.ui.js new file mode 100644 index 0000000000..728dab2181 --- /dev/null +++ b/module/gitlab/js/edituser.ui.js @@ -0,0 +1,4 @@ +$(document).ready(function() +{ + setAvatar(); +}); diff --git a/module/gitlab/model.php b/module/gitlab/model.php index 5b24a5ccd3..0f3e38df24 100644 --- a/module/gitlab/model.php +++ b/module/gitlab/model.php @@ -2410,7 +2410,7 @@ class gitlabModel extends model ->remove('username,avatar') ->removeIF(!$this->post->password, 'password,password_repeat') ->get(); - if(!empty($_FILES['avatar'])) $user->avatar = curl_file_create($_FILES['avatar']['tmp_name'], $_FILES['avatar']['type'], $_FILES['avatar']['name']); + if(!empty($_FILES['avatar']['name'])) $user->avatar = curl_file_create($_FILES['avatar']['tmp_name'], $_FILES['avatar']['type'], $_FILES['avatar']['name']); if(empty($user->account)) dao::$errors['account'][] = $this->lang->gitlab->user->bind . $this->lang->gitlab->user->emptyError; if(empty($user->name)) dao::$errors['name'][] = $this->lang->gitlab->user->name . $this->lang->gitlab->user->emptyError; diff --git a/module/gitlab/ui/browseuser.html.php b/module/gitlab/ui/browseuser.html.php index f627254d66..0df493854b 100644 --- a/module/gitlab/ui/browseuser.html.php +++ b/module/gitlab/ui/browseuser.html.php @@ -10,8 +10,6 @@ declare(strict_types=1); */ namespace zin; -jsVar('gitlabUrl', $gitlab->url); - $canCreate = hasPriv('instance', 'manage'); $menus = $items = array(); diff --git a/module/gitlab/ui/createuser.html.php b/module/gitlab/ui/createuser.html.php new file mode 100644 index 0000000000..1f4b143216 --- /dev/null +++ b/module/gitlab/ui/createuser.html.php @@ -0,0 +1,116 @@ + + * @package gitlab + * @link https://www.zentao.net + */ +namespace zin; + +jsVar('users', $users); + +formPanel +( + set::title($lang->gitlab->user->create), + formGroup + ( + set::name('account'), + set::label($lang->gitlab->user->bind), + set::required(true), + set::items($userPairs), + set::width('1/2'), + on::change('onAccountChange'), + ), + formGroup + ( + set::name('name'), + set::label($lang->gitlab->user->name), + set::required(true), + set::width('1/2'), + ), + formGroup + ( + set::name('username'), + set::label($lang->gitlab->user->username), + set::required(true), + set::width('1/2'), + ), + formGroup + ( + set::name('email'), + set::label($lang->gitlab->user->email), + set::required(true), + set::width('1/2') + ), + formGroup + ( + set::name('password'), + set::label($lang->gitlab->user->password), + set::required(true), + set::width('1/2'), + set::type('password'), + ), + formGroup + ( + set::name('password_repeat'), + set::label($lang->gitlab->user->passwordRepeat), + set::required(true), + set::width('1/2'), + set::type('password'), + ), + formRow + ( + setClass('hidden'), + formGroup + ( + set::name('projects_limit'), + set::label($lang->gitlab->user->projectsLimit), + set::placeholder($lang->gitlab->user->projectsLimit), + set::value('100000'), + set::width('1/2') + ), + ), + formGroup + ( + set::name('can_create_group'), + set::label($lang->gitlab->user->canCreateGroup), + set::control(array('type' => 'checkbox', 'checked' => true)), + set::value('1'), + ), + formGroup + ( + set::name('external'), + set::label($lang->gitlab->user->external), + set::control(array('type' => 'checkbox', 'text' => $lang->gitlab->user->externalTip)), + set::value('1'), + ), + formGroup + ( + set::name('avatar'), + set::label($lang->gitlab->user->avatar), + set::control(array('type' => 'file', 'class' => 'hidden', 'id' => 'files')), + h::div + ( + set::id('avatarUpload'), + setClass('text-center'), + html(html::avatar(array('avatar'=> 'theme/default/images/repo/avatar.jpeg', 'account'=>''), 50)), + h::a + ( + set::href('javascript:void(0)'), + setClass('btn-avatar'), + set::id('avatarUploadBtn'), + set::title($lang->gitlab->user->avatar), + icon + ( + setClass('icon icon-pencil icon-2x'), + set::name(''), + ) + ) + ) + ) +); + +render(); diff --git a/module/gitlab/ui/edituser.html.php b/module/gitlab/ui/edituser.html.php new file mode 100644 index 0000000000..04f58b57a1 --- /dev/null +++ b/module/gitlab/ui/edituser.html.php @@ -0,0 +1,123 @@ + + * @package gitlab + * @link https://www.zentao.net + */ +namespace zin; + +formPanel +( + set::title($lang->gitlab->user->edit), + h::input + ( + set::name('id'), + set::type('hidden'), + set::value($user->id) + ), + formGroup + ( + set::name('account'), + set::label($lang->gitlab->user->bind), + set::required(true), + set::items($userPairs), + set::value($zentaoBindAccount), + set::width('1/2'), + ), + formGroup + ( + set::name('name'), + set::label($lang->gitlab->user->name), + set::required(true), + set::width('1/2'), + set::value($user->name) + ), + formGroup + ( + set::name('username'), + set::label($lang->gitlab->user->username), + set::required(true), + set::width('1/2'), + set::value($user->username) + ), + formGroup + ( + set::name('email'), + set::label($lang->gitlab->user->email), + set::required(true), + set::width('1/2'), + set::value($user->email) + ), + formGroup + ( + set::name('password'), + set::label($lang->gitlab->user->password), + set::required(true), + set::width('1/2'), + set::type('password'), + ), + formGroup + ( + set::name('password_repeat'), + set::label($lang->gitlab->user->passwordRepeat), + set::required(true), + set::width('1/2'), + set::type('password'), + ), + formRow + ( + setClass('hidden'), + formGroup + ( + set::name('projects_limit'), + set::label($lang->gitlab->user->projectsLimit), + set::placeholder($lang->gitlab->user->projectsLimit), + set::value($user->projects_limit), + set::width('1/2') + ), + ), + formGroup + ( + set::name('can_create_group'), + set::label($lang->gitlab->user->canCreateGroup), + set::control(array('type' => 'checkbox', 'checked' => $user->can_create_group ? true : false)), + set::value('1'), + ), + formGroup + ( + set::name('external'), + set::label($lang->gitlab->user->external), + set::control(array('type' => 'checkbox', 'text' => $lang->gitlab->user->externalTip, 'checked' => $user->external ? true : false)), + set::value('1'), + ), + formGroup + ( + set::name('avatar'), + set::label($lang->gitlab->user->avatar), + set::control(array('type' => 'file', 'class' => 'hidden', 'id' => 'files')), + h::div + ( + set::id('avatarUpload'), + setClass('text-center'), + html(html::avatar(array('avatar'=> $user->avatar_url ? $user->avatar_url : 'theme/default/images/repo/avatar.jpeg', 'account'=>''), 50)), + h::a + ( + set::href('javascript:void(0)'), + setClass('btn-avatar'), + set::id('avatarUploadBtn'), + set::title($lang->gitlab->user->avatar), + icon + ( + setClass('icon icon-pencil icon-2x'), + set::name(''), + ) + ) + ) + ) +); + +render();