mdserver-web/plugins/csvn/js/csvn.js

500 lines
18 KiB
JavaScript
Raw Normal View History

2018-12-09 05:58:41 -05:00
pluginService('csvn');
2018-12-12 00:57:43 -05:00
function csvnPost(method,args,callback){
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 });
$.post('/plugins/run', {name:'csvn', func:method, args:JSON.stringify(args)}, function(data) {
layer.close(loadT);
2018-12-12 02:11:55 -05:00
if (!data.status){
2018-12-13 04:09:23 -05:00
layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']});
2018-12-12 02:11:55 -05:00
return;
}
2018-12-12 00:57:43 -05:00
if(typeof(callback) == 'function'){
callback(data);
}
},'json');
}
2018-12-09 05:58:41 -05:00
2018-12-14 01:52:33 -05:00
function csvnEdit(){
csvnPost('csvn_edit',{} , function(data){
2018-12-18 02:13:19 -05:00
// console.log(data);
2018-12-14 01:52:33 -05:00
var rdata = $.parseJSON(data.data);
var edit = '<p class="status">通用的手动编辑:</p>';
edit +='<div class="sfm-opt">\
<button class="btn btn-default btn-sm" onclick="onlineEditFile(0,\''+rdata['svn_access_file']+'\');">权限编辑</button>\
<button class="btn btn-default btn-sm" onclick="onlineEditFile(0,\''+rdata['post_commit_tpl']+'\');">post_commit_tpl</button>\
<button class="btn btn-default btn-sm" onclick="onlineEditFile(0,\''+rdata['commit_tpl']+'\');">commit_tpl</button>\
</div>';
$(".soft-man-con").html(edit);
});
}
2018-12-13 02:36:19 -05:00
function csvnUserFind(){
var search = $('#csvn_find_user').val();
if (search==''){
layer.msg('搜索字符不能为空!',{icon:0,time:2000,shade: [0.3, '#000']});
return;
2018-12-10 21:37:45 -05:00
}
2018-12-13 02:36:19 -05:00
csvnUserList(1, search);
}
2018-12-10 21:37:45 -05:00
2018-12-13 02:36:19 -05:00
function csvnUserList(page, search) {
2018-12-13 04:09:23 -05:00
2018-12-12 00:57:43 -05:00
var _data = {};
2018-12-13 02:36:19 -05:00
if (typeof(page) =='undefined'){
var page = 1;
}
2018-12-09 05:58:41 -05:00
_data['page'] = page;
2018-12-10 01:22:22 -05:00
_data['page_size'] = 10;
2018-12-13 02:36:19 -05:00
if(typeof(search) != 'undefined'){
_data['search'] = search;
}
2018-12-12 00:57:43 -05:00
csvnPost('user_list', _data, function(data){
2018-12-09 05:58:41 -05:00
2018-12-10 01:22:22 -05:00
var rdata = $.parseJSON(data.data);
// console.log(rdata);
2018-12-13 02:36:19 -05:00
content = '<div class="finduser"><input class="bt-input-text mr5 outline_no" type="text" placeholder="查找用户名" id="csvn_find_user" style="height: 28px; border-radius: 3px;width: 505px;">';
content += '<button class="btn btn-success btn-sm" onclick="csvnUserFind();">查找</button></div>';
2018-12-10 01:22:22 -05:00
2018-12-10 06:17:40 -05:00
content += '<div class="divtable" style="margin-top:5px;"><table class="table table-hover" width="100%" cellspacing="0" cellpadding="0" border="0">';
2018-12-10 01:22:22 -05:00
content += '<thead><tr>';
content += '<th>用户名</th>';
2018-12-10 11:44:29 -05:00
content += '<th>操作(<a class="btlink" onclick="csvnAddUser();">添加</a>)</th>';
2018-12-10 01:22:22 -05:00
content += '</tr></thead>';
content += '<tbody>';
ulist = rdata.data;
for (i in ulist){
content += '<tr><td>'+ulist[i]+'</td><td>'+
2018-12-10 11:28:09 -05:00
'<a class="btlink" onclick="csvnDelUser(\''+ulist[i]+'\')">删除</a> | ' +
2018-12-10 06:17:40 -05:00
'<a class="btlink" onclick="csvnModPwdUser(\''+ulist[i]+'\')">改密</a></td></tr>';
2018-12-10 01:22:22 -05:00
}
content += '</tbody>';
content += '</table></div>';
page = '<div class="dataTables_paginate paging_bootstrap pagination" style="margin-top:0px;"><ul id="softPage" class="page"><div>';
page += rdata.list;
page += '</div></ul></div>';
content += page;
$(".soft-man-con").html(content);
2018-12-12 00:57:43 -05:00
});
2018-12-10 06:17:40 -05:00
}
2018-12-10 01:22:22 -05:00
2018-12-10 06:17:40 -05:00
function csvnDelUser(name){
2018-12-10 11:28:09 -05:00
var loadOpen = layer.open({
type: 1,
title: '删除用户',
area: '350px',
content:"<div class='bt-form pd20 pb70 c6'>\
<div class='version line'>你要确认要删除"+ name + "账户?</div>\
<div class='bt-form-submit-btn'>\
<button type='button' id='csvn_del_close' class='btn btn-danger btn-sm btn-title'>关闭</button>\
<button type='button' id='csvn_del_ok' class='btn btn-success btn-sm btn-title bi-btn'>确认</button>\
</div>\
</div>"
});
$('#csvn_del_close').click(function(){
layer.close(loadOpen);
});
$('#csvn_del_ok').click(function(){
_data = {};
_data['username'] = name;
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 });
$.post('/plugins/run', {name:'csvn', func:'user_del', args:JSON.stringify(_data)}, function(data) {
layer.close(loadT);
if (!data.status){
layer.msg(data.data,{icon:0,time:2000,shade: [0.3, '#000']});
return;
}
if (data.data !='ok'){
layer.msg(data.data,{icon:2,time:2000,shade: [0.3, '#000']});
}
2018-12-10 12:15:09 -05:00
layer.close(loadOpen);
layer.msg("删除成功!",{icon:1,time:3000,shade: [0.3, '#000']});
2018-12-10 21:34:20 -05:00
2018-12-10 12:15:09 -05:00
},'json');
2018-12-10 11:28:09 -05:00
});
2018-12-10 06:17:40 -05:00
}
2018-12-10 22:01:28 -05:00
function csvnAddUser(username){
user_input = ''
if (typeof(username) == 'undefined'){
user_input = "<div><input class='bt-input-text mr5 outline_no' type='text' id='csvn_username' name='username' style='height: 28px; border-radius: 3px;width: 200px;' placeholder='输入用户名'></div>";
} else {
user_input = "<div><input value='"+ username +"' class='bt-input-text mr5 outline_no' type='text' id='csvn_username' name='username' style='height: 28px; border-radius: 3px;width: 200px;' disabled='true'></div>";
}
2018-12-10 12:15:09 -05:00
var loadOpen = layer.open({
type: 1,
title: '添加用户',
2018-12-10 12:17:09 -05:00
area: '240px',
2018-12-10 12:15:09 -05:00
content:"<div class='bt-form pd20 pb70 c6'>\
<div class='version line'>\
2018-12-10 22:01:28 -05:00
"+user_input+"\
2018-12-10 21:31:53 -05:00
<div style='padding-top:3px;'><input class='bt-input-text mr5 outline_no' type='text' id='csvn_password' name='password' style='height: 28px; border-radius: 3px;width: 200px;' placeholder='输入密码'></div>\
2018-12-10 12:15:09 -05:00
</div>\
<div class='bt-form-submit-btn'>\
2018-12-10 21:31:53 -05:00
<button type='button' id='csvn_add_close' class='btn btn-danger btn-sm btn-title'>关闭</button>\
<button type='button' id='csvn_add_ok' class='btn btn-success btn-sm btn-title bi-btn'>确认</button>\
2018-12-10 12:15:09 -05:00
</div>\
</div>"
});
2018-12-10 21:31:53 -05:00
$('#csvn_add_close').click(function(){
layer.close(loadOpen);
});
$('#csvn_add_ok').click(function(){
_data = {};
_data['username'] = $('#csvn_username').val();
_data['password'] = $('#csvn_password').val();
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 });
$.post('/plugins/run', {name:'csvn', func:'user_add', args:JSON.stringify(_data)}, function(data) {
layer.close(loadT);
if (!data.status){
layer.msg(data.data,{icon:0,time:2000,shade: [0.3, '#000']});
return;
}
if (data.data !='ok'){
layer.msg(data.data,{icon:2,time:2000,shade: [0.3, '#000']});
}
2018-12-10 21:37:45 -05:00
csvnUserList();
2018-12-10 21:31:53 -05:00
layer.close(loadOpen);
2018-12-10 21:34:20 -05:00
layer.msg("操作成功!",{icon:1,time:3000,shade: [0.3, '#000']});
2018-12-10 21:31:53 -05:00
},'json');
});
2018-12-10 11:44:29 -05:00
}
2018-12-10 06:17:40 -05:00
function csvnModPwdUser(name){
2018-12-13 00:34:06 -05:00
csvnAddUser(name);
2018-12-10 06:17:40 -05:00
}
2018-12-13 02:20:47 -05:00
function csvnProjectFind(){
var search = $('#csvn_project_find').val();
if (search == ''){
layer.msg('查找字符不能为空!',{icon:0,time:2000,shade: [0.3, '#000']});
return;
}
csvnProjectList(1, search);
}
function csvnProjectList(page, search){
2018-12-12 00:57:43 -05:00
var _data = {};
2018-12-10 06:17:40 -05:00
_data['page_size'] = 10;
2018-12-13 02:20:47 -05:00
if (typeof(search) != 'undefined'){
_data['search'] = search;
}
2018-12-13 00:34:06 -05:00
2018-12-13 04:13:48 -05:00
if (typeof(page) != 'undefined'){
_data['page'] = page;
setCookie('csvnProjectListPage',page);
} else {
_data['page'] = 1;
cookie_page = getCookie('csvnProjectListPage')
if (cookie_page >0){
_data['page'] = cookie_page;
}
}
2018-12-13 00:34:06 -05:00
csvnPost('project_list', _data, function(data){
2018-12-10 06:17:40 -05:00
2018-12-11 04:53:37 -05:00
var rdata = $.parseJSON($.trim(data.data));
2018-12-13 00:34:06 -05:00
var csvn_mg = project_url = 'http://' +rdata['ip'] +(rdata['csvn_port'] == '80' ? '': ':'+rdata['csvn_port']);
2018-12-10 06:17:40 -05:00
2018-12-13 02:20:47 -05:00
content = '<div><input class="bt-input-text mr5" type="text" placeholder="查找项目" id="csvn_project_find" style="height: 28px; border-radius: 3px;width: 505px;">';
content += '<button class="btn btn-success btn-sm" onclick="csvnProjectFind();">查找</button></div>';
2018-12-10 06:17:40 -05:00
content += '<div class="divtable" style="margin-top:5px;"><table class="table table-hover" width="100%" cellspacing="0" cellpadding="0" border="0">';
content += '<thead><tr>';
content += '<th>项目名</th>';
2018-12-13 00:34:06 -05:00
content += '<th>地址</th>';
content += '<th>操作(<a class="btlink" onclick="csvnAddProject();">添加</a>) | <a class="btlink" target="_blank" href="'+csvn_mg+'">后台管理</a> </th>';
2018-12-10 06:17:40 -05:00
content += '</tr></thead>';
content += '<tbody>';
2018-12-13 00:51:14 -05:00
// console.log(rdata);
2018-12-10 06:17:40 -05:00
ulist = rdata.data;
for (i in ulist){
2018-12-13 00:34:06 -05:00
var project_url = 'http://' +rdata['ip'] +(rdata['port'] == '80' ? '': ':'+rdata['port'])+ '/svn/'+ulist[i]['name'];
var code_url = 'http://' +rdata['ip'] +(rdata['port'] == '80' ? '': ':'+rdata['port'])+ '/viewvc/'+ulist[i]['name'];
2018-12-11 04:53:37 -05:00
content += '<tr><td>'+ulist[i]['name']+'</td>'+
2018-12-13 00:34:06 -05:00
'<td>'+project_url+'</td><td>'+
2018-12-11 11:07:01 -05:00
'<a class="btlink" onclick="csvnDelProject(\''+ulist[i]['name']+'\')">删除</a> | ' +
2018-12-13 00:34:06 -05:00
'<a class="btlink" onclick="csvnAclProject(\''+ulist[i]['name']+'\')">权限</a> | ' +
2018-12-13 01:57:30 -05:00
'<a class="btlink" target="_blank" href="' + code_url +'">源码</a> | ' +
2018-12-13 04:09:23 -05:00
'<a class="btlink" onclick="csvnProjectScript(\''+ulist[i]['name']+'\','+ ulist[i]['has_hook']+')">脚本</a>' +
2018-12-11 04:53:37 -05:00
'</td></tr>';
2018-12-10 06:17:40 -05:00
}
content += '</tbody>';
content += '</table></div>';
page = '<div class="dataTables_paginate paging_bootstrap pagination" style="margin-top:0px;"><ul id="softPage" class="page"><div>';
page += rdata.list;
page += '</div></ul></div>';
content += page;
$(".soft-man-con").html(content);
2018-12-13 00:34:06 -05:00
});
2018-12-11 04:53:37 -05:00
}
function csvnDelProject(name){
var loadOpen = layer.open({
type: 1,
title: '删除用户',
area: '350px',
content:"<div class='bt-form pd20 pb70 c6'>\
<div class='version line'>你要确认要删除"+ name + "账户?</div>\
<div class='bt-form-submit-btn'>\
<button type='button' id='csvn_del_close' class='btn btn-danger btn-sm btn-title'>关闭</button>\
<button type='button' id='csvn_del_ok' class='btn btn-success btn-sm btn-title bi-btn'>确认</button>\
</div>\
</div>"
});
$('#csvn_del_close').click(function(){
layer.close(loadOpen);
});
$('#csvn_del_ok').click(function(){
2018-12-12 00:57:43 -05:00
var _data = {};
2018-12-11 04:53:37 -05:00
_data['name'] = name;
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 });
$.post('/plugins/run', {name:'csvn', func:'project_del', args:JSON.stringify(_data)}, function(data) {
layer.close(loadT);
if (!data.status){
layer.msg(data.data,{icon:0,time:2000,shade: [0.3, '#000']});
return;
}
if (data.data !='ok'){
layer.msg(data.data,{icon:2,time:2000,shade: [0.3, '#000']});
return;
}
csvnProjectList();
layer.close(loadOpen);
layer.msg("删除成功!",{icon:1,time:3000,shade: [0.3, '#000']});
},'json');
});
}
function csvnAddProject(){
var loadOpen = layer.open({
type: 1,
title: '添加项目',
area: '240px',
content:"<div class='bt-form pd20 pb70 c6'>\
<div class='version line'>\
<div><input class='bt-input-text mr5 outline_no' type='text' id='csvn_name' name='username' style='height: 28px; border-radius: 3px;width: 200px;' placeholder='输入项目名'></div>\
</div>\
<div class='bt-form-submit-btn'>\
<button type='button' id='csvn_project_close' class='btn btn-danger btn-sm btn-title'>关闭</button>\
<button type='button' id='csvn_project_ok' class='btn btn-success btn-sm btn-title bi-btn'>确认</button>\
</div>\
</div>"
});
$('#csvn_project_close').click(function(){
layer.close(loadOpen);
});
$('#csvn_project_ok').click(function(){
2018-12-12 00:57:43 -05:00
var _data = {};
2018-12-11 04:53:37 -05:00
_data['name'] = $('#csvn_name').val();
2018-12-13 01:57:30 -05:00
csvnPost('project_add', _data, function(data){
2018-12-11 04:53:37 -05:00
if (data.data !='ok'){
layer.msg(data.data,{icon:2,time:2000,shade: [0.3, '#000']});
return;
}
csvnProjectList();
layer.close(loadOpen);
layer.msg("操作成功!",{icon:1,time:3000,shade: [0.3, '#000']});
2018-12-13 01:57:30 -05:00
});
});
}
2018-12-26 01:20:10 -05:00
function csvnProjectScript(pname, has_hook){
2018-12-13 04:09:23 -05:00
var html = '';
if (has_hook){
2018-12-26 01:20:10 -05:00
html += '<button onclick="csvnProjectScriptEdit(\''+pname+'\')" class="btn btn-default btn-sm">手动编辑</button>';
html += '<button onclick="csvnProjectScriptDebug(\''+pname+'\')" class="btn btn-default btn-sm">调试日志</button>';
html += '<button onclick="csvnProjectScriptLoad(\''+pname+'\')" class="btn btn-default btn-sm">重新加载</button>';
html += '<button onclick="csvnProjectScriptUnload(\''+pname+'\')" class="btn btn-default btn-sm">卸载脚本</button>';
2018-12-13 04:09:23 -05:00
} else {
2018-12-26 01:20:10 -05:00
html += '<button onclick="csvnProjectScriptLoad(\''+pname+'\')" class="btn btn-default btn-sm">加载脚本</button>';
2018-12-13 04:09:23 -05:00
}
2018-12-13 01:57:30 -05:00
var loadOpen = layer.open({
type: 1,
title: '脚本设置',
area: '240px',
2018-12-13 04:09:23 -05:00
content:'<div class="change-default pd20">'+html+'</div>'
});
}
function csvnProjectScriptLoad(pname){
csvnPost('project_script_load', {'pname':pname}, function(data){
if (data.data != 'ok'){
layer.msg(data.data,{icon:0,time:2000,shade: [0.3, '#000']});
return;
}
layer.msg('加载成功!',{icon:1,time:2000,shade: [0.3, '#000']});
setTimeout(function(){
csvnProjectList();
},2000);
});
}
function csvnProjectScriptUnload(pname){
csvnPost('project_script_unload', {'pname':pname}, function(data){
if (data.data != 'ok'){
layer.msg(data.data,{icon:0,time:2000,shade: [0.3, '#000']});
return;
}
layer.msg('卸载成功!',{icon:1,time:2000,shade: [0.3, '#000']});
setTimeout(function(){
csvnProjectList();
},2000);
});
}
function csvnProjectScriptEdit(pname){
csvnPost('project_script_edit', {'pname':pname}, function(data){
var rdata = $.parseJSON(data.data);
if (rdata['status']){
onlineEditFile(0, rdata['path']);
csvnProjectList();
} else {
layer.msg(rdata.msg,{icon:1,time:2000,shade: [0.3, '#000']});
}
2018-12-11 04:53:37 -05:00
});
2018-12-11 11:07:01 -05:00
}
2018-12-11 04:53:37 -05:00
2018-12-13 10:15:33 -05:00
function csvnProjectScriptDebug(pname){
csvnPost('project_script_debug', {'pname':pname}, function(data){
var rdata = $.parseJSON(data.data);
if (rdata['status']){
onlineEditFile(0, rdata['path']);
csvnProjectList();
} else {
layer.msg(rdata.msg,{icon:1,time:2000,shade: [0.3, '#000']});
}
});
}
2018-12-12 02:11:55 -05:00
function csvnAclAdd(pname){
var uname = $('#csvn_username').val();
if (uname == ''){
layer.msg('添加用户名不能为空!',{icon:0,time:2000,shade: [0.3, '#000']});
return;
}
csvnPost('project_acl_add', {'pname':pname,'uname':uname}, function(data){
if (data.data != 'ok'){
layer.msg(data.data,{icon:0,time:2000,shade: [0.3, '#000']});
return;
}
2018-12-14 00:56:16 -05:00
$('.layui-layer-close1').click();
2018-12-12 02:11:55 -05:00
csvnAclProject(pname);
});
}
function csvnAclDel(pname, uname){
csvnPost('project_acl_del', {'pname':pname,'uname':uname}, function(data){
if (data.data != 'ok'){
layer.msg(data.data,{icon:0,time:2000,shade: [0.3, '#000']});
return;
}
2018-12-14 00:56:16 -05:00
$('.layui-layer-close1').click();
2018-12-12 02:11:55 -05:00
csvnAclProject(pname);
});
}
2018-12-12 11:49:11 -05:00
function csvnAclSet(obj, pname, uname, acl, selected){
2018-12-12 05:06:02 -05:00
2018-12-12 11:49:11 -05:00
if (selected){
$(obj).prop('checked',true);
layer.msg('权限没有变化!',{icon:0,time:2000,shade: [0.3, '#000']});
return;
}
csvnPost('project_acl_set', {'pname':pname,'uname':uname, 'acl':acl}, function(data){
if (data.data != 'ok'){
layer.msg(data.data,{icon:0,time:2000,shade: [0.3, '#000']});
return;
}
2018-12-14 00:56:16 -05:00
$('.layui-layer-close1').click();
2018-12-12 11:49:11 -05:00
csvnAclProject(pname);
});
2018-12-12 05:06:02 -05:00
}
2018-12-12 02:11:55 -05:00
function csvnAclProject(pname){
csvnPost('project_acl_list', {'name':pname}, function(data){
2018-12-12 00:57:43 -05:00
var rdata = [];
try {
rdata = $.parseJSON(data.data);
2018-12-12 02:11:55 -05:00
} catch(e){}
2018-12-12 00:57:43 -05:00
var list = '';
for (i in rdata) {
2018-12-12 05:06:02 -05:00
var user = rdata[i]['user'];
2018-12-12 00:57:43 -05:00
var acl = '';
if (rdata[i]['acl'] == 'r'){
2018-12-12 11:49:11 -05:00
acl += '<input type="checkbox" onclick="csvnAclSet(this,\''+pname+'\',\''+user+'\',\'r\',true)" checked="true"> 只读 | <input type="checkbox" onclick="csvnAclSet(this,\''+pname+'\',\''+user+'\',\'rw\', false)"> 读写';
2018-12-12 00:57:43 -05:00
} else {
2018-12-12 11:49:11 -05:00
acl += '<input type="checkbox" onclick="csvnAclSet(this,\''+pname+'\',\''+user+'\',\'r\',false)"> 只读 | <input type="checkbox" onclick="csvnAclSet(this,\''+pname+'\',\''+user+'\',\'rw\',true)" checked="true"> 读写';
2018-12-12 00:57:43 -05:00
}
2018-12-12 05:06:02 -05:00
list += '<tr><td>'+user+'</td><td>' + acl +'</td>'+
'<td><a class="btlink" onclick="csvnAclDel(\''+pname+'\',\''+user+'\')">删除</a></td>'+'</tr>';
2018-12-12 00:57:43 -05:00
}
var loadOpen = layer.open({
type: 1,
2018-12-14 00:56:16 -05:00
title: '项目('+pname+')权限设置',
2018-12-12 00:57:43 -05:00
area: '300px',
2018-12-13 01:57:30 -05:00
content:"<div class='bt-form pd20 c6'>\
2018-12-12 00:57:43 -05:00
<div>\
2018-12-12 02:11:55 -05:00
<div><input class='bt-input-text mr5 outline_no' type='text' id='csvn_username' name='username' style='height: 28px; border-radius: 3px;width: 205px;' placeholder='用户名'>\
<button class='btn btn-success btn-sm' onclick='csvnAclAdd(\""+pname+"\");'>添加</button></div>\
2018-12-12 00:57:43 -05:00
<div class='divtable' style='margin-top:5px;'><table class='table table-hover'><thead><tr><th>用户</th><th></th><th></th></tr></thead>\
<tbody>"+list+"</tbody>\
</table></div>\
</div>\
2018-12-13 01:57:30 -05:00
</div>"
2018-12-12 00:57:43 -05:00
});
2018-12-11 11:07:01 -05:00
});
2018-12-09 05:58:41 -05:00
}