diff --git a/module/gitea/control.php b/module/gitea/control.php index 4e4090360c..37969d7993 100644 --- a/module/gitea/control.php +++ b/module/gitea/control.php @@ -175,10 +175,11 @@ class gitea extends control * Bind gitea user to zentao users. * * @param int $giteaID + * @param string $type * @access public * @return void */ - public function bindUser($giteaID) + public function bindUser($giteaID, $type = 'all') { $zentaoUsers = $this->dao->select('account,email,realname')->from(TABLE_USER)->fetchAll('account'); $userPairs = $this->loadModel('user')->getPairs('noclosed|noletter'); @@ -190,11 +191,42 @@ class gitea extends control return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $this->server->http_referer)); } - $this->view->title = $this->lang->gitea->bindUser; - $this->view->userPairs = $userPairs; - $this->view->giteaUsers = $this->gitea->apiGetUsers($giteaID); - $this->view->bindedUsers = $this->gitea->getUserAccountIdPairs($giteaID); - $this->view->matchedResult = $this->gitea->getMatchedUsers($giteaID, $this->view->giteaUsers, $zentaoUsers); + $giteaUsers = $this->gitea->apiGetUsers($giteaID); + $bindedUsers = $this->gitea->getUserAccountIdPairs($giteaID); + $matchedResult = $this->gitea->getMatchedUsers($giteaID, $giteaUsers, $zentaoUsers); + + foreach($giteaUsers as $userID => &$user) + { + $user->binded = 0; + $user->zentaoUsers = array('' => ''); + $user->zentaoAccount = isset($matchedResult[$user->id]) ? $matchedResult[$user->id]->zentaoAccount : ''; + if($user->zentaoAccount) + { + $user->zentaoUsers += array($user->zentaoAccount => zget($userPairs, $user->zentaoAccount)); + if(isset($bindedUsers[$user->zentaoAccount]) && $bindedUsers[$user->zentaoAccount] == $user->id) + { + $user->binded = 1; + if(!isset($bindedUsers[$user->zentaoAccount])) $user->binded = 2; + } + } + + if($type == 'notBind' && $user->binded > 0) + { + unset($giteaUsers[$userID]); + } + elseif($type == 'binded' && $user->binded == 0) + { + unset($giteaUsers[$userID]); + } + + } + + $this->view->title = $this->lang->gitea->bindUser; + $this->view->userPairs = array('' => '') + $userPairs; + $this->view->giteaUsers = $giteaUsers; + $this->view->giteaID = $giteaID; + $this->view->type = $type; + $this->view->zentaoUsers = $zentaoUsers; $this->display(); } diff --git a/module/gitea/js/binduser.js b/module/gitea/js/binduser.js new file mode 100644 index 0000000000..014d06eeb1 --- /dev/null +++ b/module/gitea/js/binduser.js @@ -0,0 +1,24 @@ +$(document).ready(function() +{ + $('.gitlab-user-bind').change(function() + { + var user = zentaoUsers[$(this).val()]; + if(user !== undefined) + { + $(this).parent().parent().find('.email').text(user.email) + } + }); + + $(document).on('click', '.zentao-users .chosen-container', function() + { + var $obj = $(this).prev('select'); + var value = $obj.val(); + if($obj.hasClass('filled')) return false; + + $obj.empty(); + $obj.append($('#userList').html()); + $obj.val(value); + $obj.addClass('filled'); + $obj.trigger("chosen:updated"); + }) +}); diff --git a/module/gitea/model.php b/module/gitea/model.php index 06782ea84f..33cf575853 100644 --- a/module/gitea/model.php +++ b/module/gitea/model.php @@ -342,8 +342,8 @@ class giteaModel extends model { if(isset($bindedUsers[$giteaUser->account])) { - $giteaUser->zentaoAccount = $bindedUsers[$giteaUser->account]; - $matchedUsers[] = $giteaUser; + $giteaUser->zentaoAccount = $bindedUsers[$giteaUser->account]; + $matchedUsers[$giteaUser->id] = $giteaUser; continue; } @@ -355,8 +355,8 @@ class giteaModel extends model $matchedZentaoUsers = array_unique($matchedZentaoUsers); if(count($matchedZentaoUsers) == 1) { - $giteaUser->zentaoAccount = current($matchedZentaoUsers); - $matchedUsers[] = $giteaUser; + $giteaUser->zentaoAccount = current($matchedZentaoUsers); + $matchedUsers[$giteaUser->id] = $giteaUser; } } diff --git a/module/gitea/view/binduser.html.php b/module/gitea/view/binduser.html.php index bac7b14aae..96f9ea3d88 100644 --- a/module/gitea/view/binduser.html.php +++ b/module/gitea/view/binduser.html.php @@ -11,60 +11,66 @@ */ ?> +createLink('gitea', 'browse', ""); ?> +