mirror of
https://github.com/remittor/zapret-openwrt.git
synced 2025-12-06 11:36:48 +03:00
luci: Add support multiline long string editing
This commit is contained in:
@@ -141,26 +141,36 @@ return view.extend({
|
||||
o.default = '<hr style="width: 620px; height: 1px; margin: 1px 0 1px; border-top: 1px solid;">';
|
||||
};
|
||||
|
||||
let add_param = function(sec, param, locname = null, rows = 10) {
|
||||
let add_param = function(sec, param, locname = null, rows = 10, multiline = false) {
|
||||
if (!locname)
|
||||
locname = param;
|
||||
let btn = sec.taboption(tabname, form.Button, '_' + param + '_btn', locname);
|
||||
btn.inputtitle = _('Edit');
|
||||
btn.inputstyle = 'edit btn';
|
||||
let val = sec.taboption(tabname, form.DummyValue, '_' + param);
|
||||
val.rawhtml = false;
|
||||
val.rawhtml = multiline ? true : false;
|
||||
val.cfgvalue = function(section_id) {
|
||||
let name = uci.get(tools.appName, section_id, param);
|
||||
if (name == null || name == "")
|
||||
name = "";
|
||||
return name;
|
||||
let value = uci.get(tools.appName, section_id, param);
|
||||
if (value == null) {
|
||||
return "";
|
||||
}
|
||||
value = value.trim();
|
||||
if (multiline == 2) {
|
||||
value = value.replace(/\n --/g, "\n--");
|
||||
value = value.replace(/\n --/g, "\n--");
|
||||
value = value.replace(/ --/g, "\n--");
|
||||
}
|
||||
if (val.rawhtml) {
|
||||
value = value.replace(/</g, '˂');
|
||||
value = value.replace(/>/g, '˃');
|
||||
value = value.replace(/\n/g, '<br/>');
|
||||
}
|
||||
return value;
|
||||
};
|
||||
val.validate = function(section_id, value) {
|
||||
if (!value)
|
||||
return "";
|
||||
return value.trim();
|
||||
return (value) ? value.trim() : "";
|
||||
};
|
||||
btn.onclick = () => new tools.longstrEditDialog('config', param, param, locname, rows).show();
|
||||
btn.onclick = () => new tools.longstrEditDialog('config', param, param, locname, rows, multiline).show();
|
||||
};
|
||||
|
||||
add_delim(s);
|
||||
@@ -213,7 +223,7 @@ return view.extend({
|
||||
o.inputtitle = _('Edit');
|
||||
o.inputstyle = 'edit btn';
|
||||
o.description = tools.autoHostListFN;
|
||||
o.onclick = () => new tools.fileEditDialog(
|
||||
o.onclick = () => new tools.fileEditDialog(
|
||||
tools.autoHostListFN,
|
||||
_('Auto host list'),
|
||||
'',
|
||||
@@ -229,7 +239,7 @@ return view.extend({
|
||||
o.inputtitle = _('Edit');
|
||||
o.inputstyle = 'edit btn';
|
||||
o.description = tools.autoHostListDbgFN;
|
||||
o.onclick = () => new tools.fileEditDialog(
|
||||
o.onclick = () => new tools.fileEditDialog(
|
||||
tools.autoHostListDbgFN,
|
||||
_('Auto host debug list'),
|
||||
'',
|
||||
@@ -246,7 +256,7 @@ return view.extend({
|
||||
o.inputtitle = _('Edit');
|
||||
o.inputstyle = 'edit btn';
|
||||
o.description = tools.hostsUserFN;
|
||||
o.onclick = () => new tools.fileEditDialog(
|
||||
o.onclick = () => new tools.fileEditDialog(
|
||||
tools.hostsUserFN,
|
||||
_('User entries'),
|
||||
_('One hostname per line.<br />Examples:'),
|
||||
@@ -258,7 +268,7 @@ return view.extend({
|
||||
o.inputtitle = _('Edit');
|
||||
o.inputstyle = 'edit btn';
|
||||
o.description = tools.hostsUserExcludeFN;
|
||||
o.onclick = () => new tools.fileEditDialog(
|
||||
o.onclick = () => new tools.fileEditDialog(
|
||||
tools.hostsUserExcludeFN,
|
||||
_('User excluded entries'),
|
||||
_('One hostname per line.<br />Examples:'),
|
||||
|
||||
@@ -350,18 +350,24 @@ return baseclass.extend({
|
||||
}),
|
||||
|
||||
longstrEditDialog: baseclass.extend({
|
||||
__init__: function(cfgsec, cfgparam, title, desc, rows = 10) {
|
||||
__init__: function(cfgsec, cfgparam, title, desc, rows = 10, multiline = false) {
|
||||
this.cfgsec = cfgsec;
|
||||
this.cfgparam = cfgparam;
|
||||
this.title = title;
|
||||
this.desc = desc;
|
||||
this.rows = rows;
|
||||
this.multiline = multiline;
|
||||
},
|
||||
|
||||
load: function() {
|
||||
let value = uci.get('zapret', this.cfgsec, this.cfgparam);
|
||||
if (typeof(value) === 'string') {
|
||||
return value.trim();
|
||||
value = value.trim();
|
||||
if (this.multiline == 2) {
|
||||
value = value.replace(/\n --/g, "\n--");
|
||||
value = value.replace(/\n --/g, "\n--");
|
||||
value = value.replace(/ --/g, "\n--");
|
||||
}
|
||||
}
|
||||
return value;
|
||||
},
|
||||
@@ -401,15 +407,36 @@ return baseclass.extend({
|
||||
|
||||
handleSave: function(ev) {
|
||||
let txt = document.getElementById('widget.modal_content');
|
||||
let value = txt.value.trim().replace(/\r\n/g, ' ').replace(/\r/g, ' ').replace(/\n/g, ' ').trim();
|
||||
let value = txt.value.trim();
|
||||
if (this.multiline) {
|
||||
value = value.replace(/\r/g, '');
|
||||
if (value != "" && value != "\t") {
|
||||
value = '\n' + value + '\n';
|
||||
}
|
||||
} else {
|
||||
value = value.replace(/\r\n/g, ' ');
|
||||
value = value.replace(/\r/g, ' ');
|
||||
value = value.replace(/\n/g, ' ');
|
||||
value = value.trim();
|
||||
}
|
||||
if (value == "") {
|
||||
value = "\t";
|
||||
}
|
||||
value = value.replace(/˂/g, '<');
|
||||
value = value.replace(/˃/g, '>');
|
||||
uci.set('zapret', this.cfgsec, this.cfgparam, value);
|
||||
uci.save();
|
||||
let elem = document.getElementById("cbi-zapret-" + this.cfgsec + "-_" + this.cfgparam);
|
||||
if (elem) {
|
||||
elem.querySelector('div').textContent = value;
|
||||
let val = value.trim();
|
||||
if (this.multiline) {
|
||||
val = val.replace(/</g, '˂');
|
||||
val = val.replace(/>/g, '˃');
|
||||
val = val.replace(/\n/g, '<br/>');
|
||||
elem.querySelector('div').innerHTML = val;
|
||||
} else {
|
||||
elem.querySelector('div').textContent = val;
|
||||
}
|
||||
}
|
||||
ui.hideModal();
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user