Select Git revision
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
moderator.js 5.86 KiB
var moderator = {
api: {
init: function () {
},
set: function(path,value,reload) {
var req = {};
req[path] = value;
moderator.api.set_multi(req,reload)
},
set_multi: function(dict,reload) {
$.ajax({
method: "POST",
url: "/edit",
dataType: "text",
contentType: "application/json",
data: JSON.stringify(dict),
success: function () {
if (reload) {
window.location.reload();
}
}
});
},
add_new: function(value,type,reload) {
$.ajax({
method: "POST",
url: "/new/"+type,
dataType: "text",
contentType: "application/json",
data: JSON.stringify(value),
success: function () {
if (reload) {
window.location.reload();
}
}
})
},
gethttp: function (url){
$.ajax({
method: "GET",
url: url,
dataType: "text",
})
}
},
editor: {
init: function() {
var editable = $('.moderator_editor');
for (var i=0; i<editable.length; i++) {
var e = $(editable[i]);
$('.moderator_editor_sign',e).popover(
{
title: e.data('path'),
html: true,
trigger: 'click',
container: 'body',
content: function() {
return '<div class="row form-group">'+
'<span class="col-xs-12">'+
'<textarea class="form-control editor_value" rows="3" data-path="'+$(this.parentElement).data('path')+'">'+this.parentElement.getElementsByClassName('moderator_editor_value')[0].innerHTML+'</textarea>'+
'</span>'+
'<span class="col-xs-12">'+
'<input class="btn btn-default pull-right" type="submit" data-path="'+$(this.parentElement).data('path')+'" value="save" onClick="moderator.editor.editbtnclick(this)">'+
'</span>'+
'</div>';
}
}
);
}
},
editbtnclick: function (src) {
var path = $($(src)[0]).data('path');
var value = $('.editor_value',src.parentElement.parentElement).val();
var editable = $('.moderator_editor');
for (var i=0; i<editable.length; i++) {
var e = $(editable[i]);
if (e.data('path') == path) {
$('.moderator_editor_sign',e).click();
$(".moderator_editor_value",e).html(value);
}
}
moderator.api.set(path,value);
},
changeboxclick: function(src) {
var value = $(src)[0].checked;
var path = $(src).data('path');
moderator.api.set(path,value ? 1 : 0);
},
deletebtnclick: function(src) {
if (confirm('Realy delete this?')) {
moderator.api.set($(src).data('path'),1,true);
}
}
},
acleditor: {
acls: [],
setacls: function(value) {
var idlist = [];
for (i in value) {
if (idlist.indexOf(value[i]['auth_id']) == -1) {
idlist[idlist.length] = value[i]['auth_id'];
moderator.acleditor.acls[moderator.acleditor.acls.length] = value[i];
}
}
},
init: function () {
$('.modmoderator_acleditor').popover(
{
title: "acls",
html: true,
placement: "left",
trigger: 'click',
container: 'body',
content: function () {
var html = '';
var id = $(this).data('id');
var type = $(this).data('type');
html += '<div width="300px" class="row" data-id="'+id+'" data-type="'+type+'">';
html += '<select onchange="moderator.acleditor.selectacl(this)" size="6" class="col-xs-12 acllist">';
var idlist = [];
for (i in moderator.acleditor.acls) {
if ((moderator.acleditor.acls[i][type+'_id'] == id)) {
var auth = {};
auth.type = moderator.acleditor.acls[i]['auth_type'];
auth.param = moderator.acleditor.acls[i]['auth_param'];
auth.param2 = moderator.acleditor.acls[i]['auth_param2'];
auth.id = moderator.acleditor.acls[i]['auth_id'];
idlist[idlist.length] = auth.id;
html += '<option data-auth_id="'+auth.id+'">#'+auth.id+' '+auth.type+' '+ ( auth.type == "password" ? ' ("'+auth.param+'":"'+auth.param2+'")' : '' ) +'</option>';
}
}
html += '</select>';
html += '<select class="col-xs-12 authtype" onchange="moderator.acleditor.acltypechange(this)"><option value="public">public</option><option selected value="password">password</option></select>';
html += '<input class="col-xs-12 passwordinput authuser" type="text" placeholder="username">';
html += '<input class="col-xs-12 passwordinput authpassword" type="text" placeholder="password">';
html += '<button class="col-xs-6" onclick="moderator.acleditor.addbtnclick(this)">Add</button>';
//html += '<button class="col-xs-4" onclick="moderator.acleditor.updatebtnclick(this)">Update</button>';
html += '<button class="col-xs-6" onclick="moderator.acleditor.delbtnclick(this)">Delete</button>';
html += '</div>';
return html;
}
}
);
},
selectacl: function (element) {
},
delbtnclick: function (element) {
moderator.api.set("auth."+$(".acllist option:selected", element.parentElement).data('auth_id')+".deleted",1,true);
},
addbtnclick: function (element) {
var auth = {};
auth.type = $(".authtype", element.parentElement).val();
if (auth.type == "password") {
auth.param = $(".authuser", element.parentElement).val();
auth.param2 = $(".authpassword", element.parentElement).val();
}
dict = {}
dict['auth_type'] = auth.type;
dict['auth_param'] = auth.param;
dict['auth_param2'] = auth.param2;
dict[$(element.parentElement).data('type')+'_id'] = $(element.parentElement).data('id');
moderator.api.add_new(dict,'auth',true);
var option = $('<option>', {
"text": auth.type+' '+( auth.type == "password" ? ' ("'+auth.param+'":"'+auth.param2+'")' : '' ) ,
"data-auth": JSON.stringify(auth)
});
$(".acllist",element.parentElement).append(option);
},
acltypechange: function (element) {
$(".passwordinput",element.parentElement).toggle();
}
},
init: function () {
moderator.api.init();
moderator.editor.init();
moderator.acleditor.init();
}
};
$( document ).ready( function () { moderator.init(); } );