Fix Issue #49 and improve handling of edit defaults
This commit is contained in:
steve-lad 2022-01-01 12:45:46 +01:00 committed by GitHub
commit 6cf10cc13b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 56 additions and 52 deletions

View file

@ -1186,6 +1186,9 @@ function sleep(milliseconds)
}
}
// There are 2 dynamically created button Classes
// sccp_restore for restoring system defaults, and sccp_edit for entering
// custom values. Clicking on these buttons is handled by the 2 functions below.
$(".sccp-restore").click(function() {
//input is sent by data-for where for is an attribute
var id = $(this).data("for"), input = $("#" + id);
@ -1195,7 +1198,9 @@ $(".sccp-restore").click(function() {
return;
}
if ($(this).is(":checked")) {
console.log('restore/checked');
// Restoring defaults
// show the edit block and populate with default values.
edit_style.display = 'block';
var defaultVal = $(this).data("default");
if ($(this).data("type") === 'radio') {
@ -1205,7 +1210,7 @@ $(".sccp-restore").click(function() {
radioElement.setAttribute('disabled', true);
if (radioElement.value === defaultVal){
radioElement.removeAttribute('disabled');
radioElement.setAttribute('checked', true);
radioElement.checked = true;
} else {
radioElement.removeAttribute('checked');
}
@ -1222,14 +1227,19 @@ $(".sccp-restore").click(function() {
}
}
} else {
// editing for custom value
console.log('restore/unchecked');
edit_style.display = 'none';
if ($(this).data("type") === 'radio') {
input.forEach(
function(radioElement) {
radioElement.removeAttribute('disabled');
//Revert to original value as have unchecked customise.
radioElement.checked = radioElement.defaultChecked;
radioElement.name.value = radioElement.name.defaultValue;
}
);
} else if ($(this).data("type") === 'text') {
//Revert to original value as have unchecked customise.
input[0].value = input[0].defaultValue;
}
}
});
@ -1238,34 +1248,38 @@ $(".sccp-edit").click(function() {
//input is sent by data-xxx where xxx is an attribute
var id = $(this).data("for"), input = $("#" + id);
var edit_style = document.getElementById("edit_" + id).style;
if ($(this).data("type") === 'radio') {
input = document.getElementsByName(id);
}
if (input.length === 0) {
return;
}
if ($(this).is(":checked")) {
// editing away from the default value
console.log('edit/checked');
edit_style.display = 'block';
if ($(this).data("type") === 'radio') {
// Security - attribute should not exist.
input.forEach(
function(radioElement) {
radioElement.removeAttribute('disabled');
}
);
return;
} else if ($(this).data("type") === 'text') {
input[0].focus();
}
input.prop("readonly", false);
input.focus();
} else {
console.log('edit/unchecked');
edit_style.display = 'none';
if ($(this).data("type") === 'radio') {
return;
input.forEach(
function(radioElement) {
//Revert to original value as have unchecked customise.
radioElement.checked = radioElement.defaultChecked;
}
);
} else if ($(this).data("type") === 'text') {
//Revert to original value as have unchecked customise.
input[0].value = input[0].defaultValue;
}
input.data("custom", input.val());
input.prop("readonly", true);
input.val(input.data("default"));
}
});

View file

@ -78,7 +78,7 @@ and open the template in the editor. Base Version before all crash :-)
<name>servername</name>
<default>Asterisk XML</default>
</input>
<help>Servername: This is the type of server - usually, it will be Asterisk.</help>
<help>Servername: This is the name of the server; normally it will be Asterisk.</help>
</item>
<item type="IE" id="3">
<label>Bind Address : [ Port ]</label>
@ -415,17 +415,6 @@ and open the template in the editor. Base Version before all crash :-)
<button value="no">No</button>
<help>Use simulated enbloc dialing to speedup connection when dialing while onhook (older phones)</help>
</item>
<item type="IE" id="5">
<label>SCCP SERVER Keepalive</label>
<input>
<name>keepalive</name>
<default>60</default>
<class>sccp-custom</class>
<type>number</type>
<options min="60" max="300"></options>
</input>
<help>Time between Keep Alive checks. Valid range is 60-300 seconds. After much trial-and-error, the minimum (60) seems to work just fine.</help>
</item>
<item type="IS" id="11" seq="98">
<name>phonepersonalization</name>
<label>Allow push background from server </label>

View file

@ -89,6 +89,7 @@ class formcreate
// Setting a site specific value
echo " data-for={$res_id}";
echo " class=sccp-edit";
echo " data-type=text";
echo " id=usedefault_{$res_id}";
echo " :checked";
} else {