summaryrefslogtreecommitdiffstats
path: root/public/ng/js/gogs.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/ng/js/gogs.js')
-rw-r--r--public/ng/js/gogs.js95
1 files changed, 95 insertions, 0 deletions
diff --git a/public/ng/js/gogs.js b/public/ng/js/gogs.js
index 37144ce99e..473997e9ee 100644
--- a/public/ng/js/gogs.js
+++ b/public/ng/js/gogs.js
@@ -52,6 +52,59 @@ var Gogs = {};
}
}
});
+ $.fn.extend({
+ toggleHide: function () {
+ $(this).addClass("hidden");
+ },
+ toggleShow: function () {
+ $(this).removeClass("hidden");
+ },
+ toggleAjax: function (successCallback, errorCallback) {
+ var url = $(this).data("ajax");
+ var method = $(this).data('ajax-method') || 'get';
+ var ajaxName = $(this).data('ajax-name');
+ var data = {};
+
+ if (ajaxName.endsWith("preview")) {
+ data["mode"] = "gfm";
+ data["context"] = $(this).data('ajax-context');
+ }
+
+ $('[data-ajax-rel=' + ajaxName + ']').each(function () {
+ var field = $(this).data("ajax-field");
+ var t = $(this).data("ajax-val");
+ if (t == "val") {
+ data[field] = $(this).val();
+ return true;
+ }
+ if (t == "txt") {
+ data[field] = $(this).text();
+ return true;
+ }
+ if (t == "html") {
+ data[field] = $(this).html();
+ return true;
+ }
+ if (t == "data") {
+ data[field] = $(this).data("ajax-data");
+ return true;
+ }
+ return true;
+ });
+ console.log("toggleAjax:", method, url, data);
+ $.ajax({
+ url: url,
+ method: method.toUpperCase(),
+ data: data,
+ error: errorCallback,
+ success: function (d) {
+ if (successCallback) {
+ successCallback(d);
+ }
+ }
+ })
+ }
+ });
}(jQuery));
(function ($) {
@@ -145,6 +198,26 @@ var Gogs = {};
}
}).trigger('hashchange');
};
+
+ // Search users by keyword.
+ Gogs.searchUsers = function (val, $target) {
+ $.ajax({
+ url: '/api/v1/users/search?q=' + val,
+ dataType: "json",
+ success: function (json) {
+ if (json.ok && json.data.length) {
+ var html = '';
+ $.each(json.data, function (i, item) {
+ html += '<li><a><img src="' + item.avatar + '">' + item.username + '</a></li>';
+ });
+ $target.html(html);
+ $target.toggleShow();
+ } else {
+ $target.toggleHide();
+ }
+ }
+ });
+ }
})(jQuery);
function initCore() {
@@ -175,6 +248,7 @@ function initRepoCreate() {
}
function initRepoSetting() {
+ // Options.
// Confirmation of changing repository name.
$('#repo-setting-form').submit(function (e) {
var $reponame = $('#repo_name');
@@ -189,6 +263,27 @@ function initRepoSetting() {
$('#delete-button').click(function () {
$('#delete-form').show();
});
+
+ // Collaboration.
+ $('#repo-collab-list hr:last-child').remove();
+ var $ul = $('#repo-collaborator').next().next().find('ul');
+ $('#repo-collaborator').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 () {
+ $('#repo-collaborator').val($(this).text());
+ $ul.toggleHide();
+ });
}
$(document).ready(function () {