ManagePanel/static/js/permissions.js

120 lines
3.9 KiB
JavaScript
Raw Normal View History

2017-12-16 13:54:00 -07:00
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
2017-12-16 13:38:20 -07:00
function addPermission(permcode, permdesc) {
permcode = permcode.trim().toUpperCase();
if (permcode == "") {
2017-12-21 00:56:11 -07:00
return false;
2017-05-28 23:24:56 -06:00
}
2017-12-16 13:38:20 -07:00
if ($("#permslist div[data-permcode=" + permcode + "]").length) {
2017-12-21 00:56:11 -07:00
$("#permslist .list-group-item[data-permcode=" + permcode + "]").animate({
backgroundColor: "#ff0000",
}, 500, "linear", function () {
$("#permslist .list-group-item[data-permcode=" + permcode + "]").animate({
backgroundColor: "#ffffff",
}, 500);
});
return false;
2017-12-16 13:38:20 -07:00
}
if (typeof permdesc == "undefined") {
2017-12-21 00:56:11 -07:00
$.post("action.php", {
action: 'autocomplete_permission',
q: $("#perms-box").val()
}, function (resp) {
if (resp.length === 0) {
return;
}
if (resp.length === 1) {
permdesc = resp[0].info;
} else {
for (var i = 0; i < resp.length; i++) {
if (resp[i].name == permcode) {
permdesc = resp[i].info;
break;
}
}
if (typeof permdesc == "undefined") {
return;
}
}
$('#permslist').append("<div class=\"list-group-item\" data-permcode=\"" + permcode + "\">" + permcode + "<div class=\"btn btn-danger btn-sm float-right rmperm\"><i class=\"fas fa-trash\"></i></div><input type=\"hidden\" name=\"permissions[]\" value=\"" + permcode + "\" /> <p class=\"small\">" + permdesc + "</p></div>");
2017-12-21 00:56:11 -07:00
$("#perms-box").val("");
}, "json");
2017-12-16 13:38:20 -07:00
} else {
$('#permslist').append("<div class=\"list-group-item\" data-permcode=\"" + permcode + "\">" + permcode + "<div class=\"btn btn-danger btn-sm float-right rmperm\"><i class=\"fas fa-trash\"></i></div><input type=\"hidden\" name=\"permissions[]\" value=\"" + permcode + "\" /> <p class=\"small\">" + permdesc + "</p></div>");
2017-12-21 00:56:11 -07:00
$("#perms-box").val("");
2017-12-16 13:38:20 -07:00
}
}
function removePermission(permcode) {
$("#permslist div[data-permcode=" + permcode + "]").remove();
}
var options = {
url: "action.php",
ajaxSettings: {
2017-12-21 00:56:11 -07:00
dataType: "json",
method: "GET",
data: {
action: "autocomplete_user"
}
2017-12-16 13:38:20 -07:00
},
preparePostData: function (data) {
2017-12-21 00:56:11 -07:00
data.q = $("#user-box").val();
return data;
2017-12-16 13:38:20 -07:00
},
getValue: function (element) {
2017-12-21 00:56:11 -07:00
return element.username;
2017-12-16 13:38:20 -07:00
},
template: {
2017-12-21 00:56:11 -07:00
type: "custom",
method: function (value, item) {
return item.name + " <i class=\"small\">" + item.username + "</i>";
}
2017-12-16 13:38:20 -07:00
},
list: {
2017-12-21 00:56:11 -07:00
onClickEvent: function () {
var value = $("#user-box").getSelectedItemData().username;
document.location.href = "app.php?page=permissions&user=" + value;
}
2017-12-16 13:38:20 -07:00
},
requestDelay: 500,
cssClasses: "form-control form-control-sm"
2017-12-16 13:38:20 -07:00
};
if ($("#user-box").get(0).tagName != "SELECT") {
$("#user-box").easyAutocomplete(options);
}
2017-12-16 13:38:20 -07:00
$("#user-box").keyup(function (e) {
if (e.keyCode == 13) {
2017-12-21 00:56:11 -07:00
$("#selectuserbtn").click();
2017-12-16 13:38:20 -07:00
}
});
$("#selectuserbtn").click(function () {
document.location.href = "app.php?page=permissions&user=" + $("#user-box").val();
});
$("#perms-box").keyup(function (event) {
if (event.keyCode == 13) {
2017-12-21 00:56:11 -07:00
$("#addpermbtn").click();
event.preventDefault();
return false;
2017-12-16 13:38:20 -07:00
}
});
$("#perms-box").keydown(function (event) {
if (event.keyCode == 13) {
2017-12-21 00:56:11 -07:00
event.preventDefault();
return false;
2017-12-16 13:38:20 -07:00
}
});
$("#addpermbtn").click(function () {
addPermission($("#perms-box").val());
});
$('#permslist').on("click", ".rmperm", function () {
removePermission($(this).parent().data("permcode"));
2017-05-28 23:24:56 -06:00
});