Fix: Save/Test settings on Notification Agents page

This commit is contained in:
Eric Schultz
2016-02-21 09:11:14 -08:00
parent da0b6f0a1e
commit 497dc1d735
+38 -37
View File
@@ -43,21 +43,21 @@ function prepareService(el, name) {
});
vars += $(this).attr('name')+'="'+include+"\"\n";
});
var cmd = (form.find('select[name=Enabled]').val()=='yes' ? 'enable' : 'disable');
form.find('input[name=#arg\\[1\\]]').val(cmd);
form.find('input[name=#arg\\[2\\]]').val(name+'.sh');
form.find('input[name=text]').val(script.format(vars,'\n'));
var cmd = (form.find('select[name="Enabled"]').val()=='yes' ? 'enable' : 'disable');
form.find('input[name="#arg\\[1\\]"]').val(cmd);
form.find('input[name="#arg\\[2\\]"]').val(name+'.sh');
form.find('input[name="text"]').val(script.format(vars,'\n'));
}
function execCmd(cmd, name) {
var form = $('#formExec');
form.find('input[name=#arg\\[1\\]]').val(cmd);
if (name) form.find('input[name=#arg\\[2\\]]').val(name+'.sh');
form.find('input[name="#arg\\[1\\]"]').val(cmd);
if (name) form.find('input[name="#arg\\[2\\]"]').val(name+'.sh');
form.submit();
}
function testService(name) {
var form = $('#formExec');
form.find('input[name=#arg\\[1\\]]').val('test');
form.find('input[name=#arg\\[2\\]]').val(name+'.sh');
form.find('input[name="#arg\\[1\\]"]').val('test');
form.find('input[name="#arg\\[2\\]"]').val(name+'.sh');
form.append('<input type="hidden" name="#env[]" value="EVENT='+name+' test.">');
form.append('<input type="hidden" name="#env[]" value="SUBJECT='+name+' test.">');
form.append('<input type="hidden" name="#env[]" value="DESCRIPTION='+name+' test.">');
@@ -68,13 +68,13 @@ function initDropdown() {
if (openPage) {$("[id^='slot_']").dropdownchecklist({width:300,explicitClose:'...close'}); openPage = false;}
}
</script>
<form method='POST' id="formExec" action='/update.php' target='progressFrame'>
<input type='hidden' name='#command' value='/webGui/scripts/agent'>
<input type='hidden' name='#arg[1]' value=''>
<input type='hidden' name='#arg[2]' value=''>
<form method="POST" id="formExec" action="/update.php" target="progressFrame">
<input type="hidden" name="#command" value="/webGui/scripts/agent">
<input type="hidden" name="#arg[1]" value="">
<input type="hidden" name="#arg[2]" value="">
</form>
<?
$fields = array('Event','Subject','Timestamp','Description','Importance','Content');
$fields = ['Event','Subject','Timestamp','Description','Importance','Content'];
$xml_file = "webGui/include/NotificationAgents.xml";
$xml = @simplexml_load_file($xml_file) or die("Failed to open $xml_file");
foreach ($xml->Agent as $agent) {
@@ -87,57 +87,58 @@ foreach ($xml->Agent as $agent) {
} else {
$file = $enabledAgent;
}
$values = array();
$values = [];
$script = "";
if (is_file($file)) {
preg_match("/[#]{6,100}([^#]*?)[#]{6,100}/si", file_get_contents($file), $match);
if (isset($match[1])) {
foreach (explode(PHP_EOL, $match[1]) as $line) {
if (strpos($line, "=")) {
list($k, $v) = explode("=",str_replace(array("\""), "", $line),2);
list($k, $v) = explode("=",str_replace("\"", "", $line),2);
$values[$k] = $v;
}
}
}
}
foreach (explode(PHP_EOL,(String) $agent->Script) as $line) if (trim($line)) $script .= trim($line)."{1}";
echo "<div id='title' style='position:relative;margin:0px;top:-21px;'><span class='left'><img src='/plugins/dynamix/icons/".strtolower($name).".png' class='icon' style='height:16px;width:16px;'>$name</span><span class='status'>".(is_file($enabledAgent) ? "<span class='green'>Enabled</span>": "<span class='red'>Disabled</span>")."</span></div>";
echo "<form method='POST' name='$name' action='/update.php' target='progressFrame'>";
echo "<input type='hidden' name='#include' value='/webGui/include/update.file.php'>";
echo "<input type='hidden' name='#file' value='$file'>";
echo "<input type='hidden' name='#command' value='/webGui/scripts/agent'>";
echo "<input type='hidden' name='#arg[1]' value=''>";
echo "<input type='hidden' name='#arg[2]' value=''>";
echo "<input type='hidden' name='text' value=''>";
echo "<dl><dt>Agent function:</dt><dd><select name='Enabled' size='1'>";
echo '<div id="title" style="position:relative;margin:0px;top:-21px;"><span class="left"><img src="/plugins/dynamix/icons/'.strtolower($name).'.png" class="icon" style="height:16px;width:16px;">'.$name.'</span><span class="status">'.(is_file($enabledAgent) ? '<span class="green">Enabled</span>' : '<span class="red">Disabled</span>').'</span></div>';
echo '<form method="POST" name="'.$name.'" action="/update.php" target="progressFrame">';
echo '<input type="hidden" name="#include" value="/webGui/include/update.file.php">';
echo '<input type="hidden" name="#file" value="'.$file.'">';
echo '<input type="hidden" name="#command" value="/webGui/scripts/agent">';
echo '<input type="hidden" name="#arg[1]" value="">';
echo '<input type="hidden" name="#arg[2]" value="">';
echo '<input type="hidden" name="text" value="">';
echo '<dl><dt>Agent function:</dt><dd><select name="Enabled" size="1">';
echo mk_option(is_file($disabledAgent), 'no', 'Disabled');
echo mk_option(is_file($enabledAgent), 'yes', 'Enabled');
echo "</select></dd></dl>";
echo "<script>scripts['$name']=".json_encode($script).";enabledAgents['$name']='$enabledAgent';disabledAgents['$name']='$disabledAgent';</script>";
echo '</select></dd></dl>';
echo '<script>scripts["'.$name.'"]='.json_encode($script).';enabledAgents["'.$name.'"]="'.$enabledAgent.'";disabledAgents["'.$name.'"]="'.$disabledAgent.'";</script>';
$i = 1;
foreach ($agent->Variables->children() as $var) {
$vName = preg_replace('#\[([^\]]*)\]#', '<$1>', (string) $var);
$vDesc = ucfirst(strtolower(preg_replace('#\[([^\]]*)\]#', '<$1>', (String) $var->attributes()->Desc)));
$vDefault = preg_replace('#\[([^\]]*)\]#', '<$1>', (String) $var->attributes()->Default);
$vHelp = preg_replace('#\[([^\]]*)\]#', '<$1>', (String) $var->attributes()->Help);
echo "<dl><dt>${vDesc}:</dt><dd>";
echo '<dl><dt>'.$vDesc.':</dt><dd>';
if (preg_match('/title|message/', ${vDesc})) {
echo "<select id=\"slot_$i\" name=\"${vName}\" size=\"1\" multiple style=\"display:none\">"; $i++;
echo '<select id="slot_'.$i.'" name="'.$vName.'" size="1" multiple style="display:none">';
$i++;
$value = str_replace('\n',',',isset($values[$vName]) ? $values[$vName] : $vDefault);
foreach ($fields as $field) echo mk_option_check($value,'$'.strtoupper($field),$field);
echo "</select>";
echo '</select>';
} else {
echo "<input type=\"text\" name=\"${vName}\" class=\"variable\" required value=\"".( isset($values[$vName]) ? $values[$vName] : $vDefault )."\">";
echo '<input type="text" name="'.$vName.'" class="variable" required value="'.( isset($values[$vName]) ? $values[$vName] : $vDefault ).'">';
}
echo "</dd></dl>";
if ($vHelp) echo "<blockquote class='inline_help'>$vHelp</blockquote>";
echo '</dd></dl>';
if ($vHelp) echo '<blockquote class="inline_help">'.$vHelp.'</blockquote>';
}
echo "<dl><dt>&nbsp;</dt><dd><input type='submit' value='Apply' onclick='prepareService(this, \"$name\")'>";
echo "<input type='button' value='Done' onclick='done()'>";
echo '<dl><dt>&nbsp;</dt><dd><input type="submit" value="Apply" onclick="prepareService(this, \''.$name.'\')">';
echo '<input type="button" value="Done" onclick="done()">';
if (is_file($file)) {
echo "<input type='button' value='Delete' onclick='execCmd(\"delete\",\"$name\")'>";
echo "<input type='button' value='Test' onclick='testService(\"$name\")'".($file==$enabledAgent ? ">" : " disabled>");
echo '<input type="button" value="Delete" onclick="execCmd(\'delete\',\''.$name.'\')">';
echo '<input type="button" value="Test" onclick="testService(\''.$name.'\')"'.($file==$enabledAgent ? '>' : ' disabled>');
}
echo "</dd></dl></form><div style='min-height:50px;'></div>";
echo '</dd></dl></form><div style="min-height:50px;"></div>';
}
?>