diff --git a/.gopmfile b/.gopmfile index 25006beb7ba..80f97bf12cb 100644 --- a/.gopmfile +++ b/.gopmfile @@ -20,7 +20,7 @@ github.com/macaron-contrib/cache = github.com/macaron-contrib/captcha = github.com/macaron-contrib/csrf = github.com/macaron-contrib/i18n = -github.com/macaron-contrib/session = +github.com/macaron-contrib/session = github.com/macaron-contrib/toolbox = github.com/nfnt/resize = diff --git a/public/ng/css/gogs.css b/public/ng/css/gogs.css index e7a3a66f261..6b400df28c0 100644 --- a/public/ng/css/gogs.css +++ b/public/ng/css/gogs.css @@ -1823,8 +1823,12 @@ textarea#issue-add-content { .invite-box { padding: 50px 0; min-height: 130px; - text-align: center; + margin: 0 auto; + width: 50%; } .invite-box input { - width: 250px; + width: 300px; +} +#org-member-list-block { + padding-top: 2px; } diff --git a/public/ng/js/gogs.js b/public/ng/js/gogs.js index ad8df997169..5e6a6a6b91f 100644 --- a/public/ng/js/gogs.js +++ b/public/ng/js/gogs.js @@ -329,6 +329,28 @@ function initOrgSetting() { }); } +function initInvite() { + // Invitation. + var $ul = $('#org-member-invite-list'); + $('#org-member-invite').on('keyup', function () { + var $this = $(this); + if (!$this.val()) { + $ul.toggleHide(); + return; + } + Gogs.searchUsers($this.val(), $ul); + }).on('focus', function () { + if (!$(this).val()) { + $ul.toggleHide(); + } else { + $ul.toggleShow(); + } + }).next().next().find('ul').on("click", 'li', function () { + $('#org-member-invite').val($(this).text()); + $ul.toggleHide(); + }); +} + $(document).ready(function () { initCore(); if ($('#user-profile-setting').length) { @@ -343,6 +365,9 @@ $(document).ready(function () { if ($('#org-setting').length) { initOrgSetting(); } + if ($('#invite-box').length) { + initInvite(); + } Tabs('#dashboard-sidebar-menu'); diff --git a/public/ng/less/gogs/organization.less b/public/ng/less/gogs/organization.less index cbdec3132e8..38058295321 100644 --- a/public/ng/less/gogs/organization.less +++ b/public/ng/less/gogs/organization.less @@ -150,8 +150,12 @@ .invite-box { padding: 50px 0; min-height: 130px; - text-align: center; + margin: 0 auto; + width: 50%; input { - width: 250px; + width: 300px; } +} +#org-member-list-block { + padding-top: 2px; } \ No newline at end of file diff --git a/templates/org/invite.tmpl b/templates/org/invite.tmpl index 400622fdd88..b9901aeb485 100644 --- a/templates/org/invite.tmpl +++ b/templates/org/invite.tmpl @@ -2,13 +2,16 @@ {{template "ng/base/header" .}} {{template "org/header" .}} <div class="container"> - <div class="invite-box"> + <div class="invite-box" id="invite-box"> {{template "ng/base/alert" .}} <h3>{{.i18n.Tr "org.members.invite_desc" .Org.FullName}}</h3> - <form action="{{.OrgLink}}/invitations/new" method="post"> + <form id="invite-member-form" action="{{.OrgLink}}/invitations/new" method="post"> {{.CsrfTokenHtml}} - <input class="ipt ipt-large ipt-radius" name="uname" required> + <input class="ipt ipt-large ipt-radius" id="org-member-invite" name="uname" autocomplete="off" required> <button class="btn btn-blue btn-large btn-radius">{{.i18n.Tr "org.members.invite_now"}}</button> + <div id="org-member-list-block"> + <ul class="menu-down-show menu-vertical menu-radius switching-list user-list" id="org-member-invite-list"></ul> + </div> </form> </div> </div>