From deda8c2ab0e4393f46adcef3e4b44a4f883ae542 Mon Sep 17 00:00:00 2001 From: laf Date: Sun, 19 Apr 2015 20:23:34 +0100 Subject: [PATCH] Final bits to the schedule maintenance section --- html/forms/schedule-maintenance.inc.php | 37 +++- html/includes/modal/alert_schedule.inc.php | 187 ++++++++++++++++++ .../modal/remove_alert_schedule.inc.php | 78 ++++++++ html/includes/table/alert-schedule.inc.php | 12 +- html/pages/alert-schedule.inc.php | 174 ++-------------- includes/functions.php | 18 ++ 6 files changed, 340 insertions(+), 166 deletions(-) create mode 100644 html/includes/modal/alert_schedule.inc.php create mode 100644 html/includes/modal/remove_alert_schedule.inc.php diff --git a/html/forms/schedule-maintenance.inc.php b/html/forms/schedule-maintenance.inc.php index dcbcad4fc..4699653c6 100644 --- a/html/forms/schedule-maintenance.inc.php +++ b/html/forms/schedule-maintenance.inc.php @@ -22,7 +22,12 @@ if ($sub_type == 'new-maintenance') { // Defaults $status = 'error'; + $update = 0; + $schedule_id = mres($_POST['schedule_id']); + if ($schedule_id > 0) { + $update = 1; + } $title = mres($_POST['title']); $notes = mres($_POST['notes']); $start = mres($_POST['start']); @@ -43,11 +48,21 @@ if ($sub_type == 'new-maintenance') { } if (empty($message)) { - $schedule_id = dbInsert(array('start'=>$start,'end'=>$end,'title'=>$title,'notes'=>$notes),'alert_schedule'); + if (empty($schedule_id)) { + $schedule_id = dbInsert(array('start'=>$start,'end'=>$end,'title'=>$title,'notes'=>$notes),'alert_schedule'); + } else { + dbUpdate(array('start'=>$start,'end'=>$end,'title'=>$title,'notes'=>$notes),'alert_schedule','`schedule_id`=?',array($schedule_id)); + } if ($schedule_id > 0) { $items = array(); $fail = 0; + + if ($update == 1) { + dbDelete('alert_schedule_items', '`schedule_id`=?', array($schedule_id)); + } + foreach( $_POST['maps'] as $target ) { + $target = target_to_id($target); $item = dbInsert(array('schedule_id'=>$schedule_id,'target'=>$target),'alert_schedule_items'); if ($item > 0) { array_push($items,$item); @@ -55,18 +70,18 @@ if ($sub_type == 'new-maintenance') { $fail = 1; } } - if ($fail == 1) { + if ($fail == 1 && $update == 0) { foreach ($items as $item) { dbDelete('alert_schedule_items', '`item_id`=?', array($item)); } dbDelete('alert_schedule', '`schedule_id`=?', array($schedule_id)); - $message = 'Creating maintenance schedule failed'.$yeah; + $message = 'Issue scheduling maintenance'; } else { $status = 'ok'; - $message = 'Created maintenance schedule'; + $message = 'Scheduling maintenance ok'; } } else { - $message = "Issue creating maintenance schedule"; + $message = "Issue scheduling maintenance"; } } @@ -74,13 +89,21 @@ if ($sub_type == 'new-maintenance') { } elseif ($sub_type == 'parse-maintenance') { - $schedule_id = $_POST['schedule_id']; + $schedule_id = mres($_POST['schedule_id']); $schedule = dbFetchRow("SELECT * FROM `alert_schedule` WHERE `schedule_id`=?",array($schedule_id)); $items = array(); foreach (dbFetchRows("SELECT `target` FROM `alert_schedule_items` WHERE `schedule_id`=?",array($schedule_id)) as $targets) { - $items[] = $targets; + $targets = id_to_target($targets['target']); + array_push($items,$targets); } $response = array('start'=>$schedule['start'],'end'=>$schedule['end'],'title'=>$schedule['title'],'notes'=>$schedule['notes'],'targets'=>$items); +} elseif ($sub_type == 'del-maintenance') { + $schedule_id = mres($_POST['del_schedule_id']); + dbDelete('alert_schedule_items','`schedule_id`=?',array($schedule_id)); + dbDelete('alert_schedule','`schedule_id`=?', array($schedule_id)); + $status = 'ok'; + $message = 'Maintenance schedule has been removed'; + $response = array('status'=>$status,'message'=>$message); } echo _json_encode($response); diff --git a/html/includes/modal/alert_schedule.inc.php b/html/includes/modal/alert_schedule.inc.php new file mode 100644 index 000000000..dd9b725af --- /dev/null +++ b/html/includes/modal/alert_schedule.inc.php @@ -0,0 +1,187 @@ + + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +if(is_admin() !== false) { + +?> + + + + diff --git a/html/includes/modal/remove_alert_schedule.inc.php b/html/includes/modal/remove_alert_schedule.inc.php new file mode 100644 index 000000000..91613146f --- /dev/null +++ b/html/includes/modal/remove_alert_schedule.inc.php @@ -0,0 +1,78 @@ + + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +if(is_admin() !== false) { + +?> + + + + diff --git a/html/includes/table/alert-schedule.inc.php b/html/includes/table/alert-schedule.inc.php index 5ec8ef795..ba6f9884c 100644 --- a/html/includes/table/alert-schedule.inc.php +++ b/html/includes/table/alert-schedule.inc.php @@ -32,7 +32,7 @@ if (empty($total)) { } if (!isset($sort) || empty($sort)) { - $sort = '`S`.`title` ASC '; + $sort = '`S`.`start` DESC '; } $sql .= " ORDER BY $sort"; @@ -49,10 +49,18 @@ if ($rowCount != -1) { $sql = "SELECT `S`.`schedule_id`, DATE_FORMAT(`S`.`start`, '%D %b %Y %T') AS `start`, DATE_FORMAT(`S`.`end`, '%D %b %Y %T') AS `end`, `S`.`title` $sql"; foreach (dbFetchRows($sql,$param) as $schedule) { + $status = 0; + if ($schedule['end'] < date('dS M Y H:i::s')) { + $status = 1; + } + if (date('dS M Y H:i::s') >= $schedule['start'] && date('dS M Y H:i::s') < $schedule['end']) { + $status = 2; + } $response[] = array('title'=>$schedule['title'], 'start'=>$schedule['start'], 'end'=>$schedule['end'], - 'id'=>$schedule['schedule_id']); + 'id'=>$schedule['schedule_id'], + 'status'=>$status); } $output = array('current'=>$current,'rowCount'=>$rowCount,'rows'=>$response,'total'=>$total); diff --git a/html/pages/alert-schedule.inc.php b/html/pages/alert-schedule.inc.php index 71a38085f..47dc8027f 100644 --- a/html/pages/alert-schedule.inc.php +++ b/html/pages/alert-schedule.inc.php @@ -16,73 +16,10 @@ $pagetitle[] = "Alert Schedule"; $no_refresh = TRUE; if(is_admin() !== false) { -?> +require_once("includes/modal/alert_schedule.inc.php"); +require_once("includes/modal/remove_alert_schedule.inc.php"); - +?>
@@ -95,8 +32,8 @@ if(is_admin() !== false) { - - + + @@ -111,8 +48,16 @@ var grid = $("#alert-schedule").bootgrid({ formatters: { "commands": function(column, row) { - return " " + - ""; + if (row.status == 1) { + return ''; + } else { + var response = " " + + ""; + if (row.status == 2) { + response = response + ' '; + } + return response; + } } }, templates: { @@ -139,93 +84,8 @@ var grid = $("#alert-schedule").bootgrid({ $("#schedule-maintenance").modal('show'); }).end().find(".command-delete").on("click", function(e) { - alert("You pressed delete on row: " + $(this).data("row-id")); - }); -}); - -$('#schedule-maintenance').on('show.bs.modal', function (event) { - $('#tagmanager').tagmanager(); - var schedule_id = $('#schedule_id').val(); - $('#map-tags').tagmanager({ - strategy: 'array', - tagFieldName: 'maps[]', - initialCap: false - }); - if (schedule_id > 0) { - $.ajax({ - type: "POST", - url: "/ajax_form.php", - data: { type: "schedule-maintenance", sub_type: "parse-maintenance", schedule_id: schedule_id }, - dataType: "json", - success: function(output) { - var arr = []; - $.each ( output['targets'], function( key ) { - arr.push(key); - }); - $('#response').data('tagmanager').populate(arr); - $('#severity').val(output['severity']).change; - var extra = $.parseJSON(output['extra']); - $('#count').val(extra['count']); - } - }); - } -}); - -$('#sched-submit').click('', function(e) { - e.preventDefault(); - $.ajax({ - type: "POST", - url: "/ajax_form.php", - data: $('form.schedule-maintenance-form').serialize(), - dataType: "json", - success: function(data){ - if(data.status == 'ok') { - $("#message").html('
'+data.message+'
'); - $("#schedule-maintenance").modal('hide'); - $("#alert-schedule").bootgrid('reload'); - } else { - $("#response").html('
'+data.message+'
'); - } - }, - error: function(){ - $("#response").html('
An error occurred.
'); - } - }); - -}); - -$('#add-map').click('',function (event) { - $('#map-tags').data('tagmanager').populate([ $('#map-stub').val() ]); - $('#map-stub').val(''); -}); - -$('#map-stub').typeahead([ - { - name: 'map_devices', - remote : '/ajax_search.php?search=%QUERY&type=device&map=1', - header : '
 Devices
', - template: '{{name}}', - valueKey:"name", - engine: Hogan - }, - { - name: 'map_groups', - remote : '/ajax_search.php?search=%QUERY&type=group&map=1', - header : '
 Groups
', - template: '{{name}}', - valueKey:"name", - engine: Hogan - } -]); - -$(function () { - $("#start").datetimepicker(); - $("#end").datetimepicker(); - $("#start").on("dp.change", function (e) { - $("#end").data("DateTimePicker").minDate(e.date); - }); - $("#end").on("dp.change", function (e) { - $("#start").data("DateTimePicker").maxDate(e.date); + $('#del_schedule_id').val($(this).data("schedule_id")); + $('#delete-maintenance').modal('show'); }); }); diff --git a/includes/functions.php b/includes/functions.php index 701229ecf..043ad5008 100755 --- a/includes/functions.php +++ b/includes/functions.php @@ -1154,3 +1154,21 @@ function set_curl_proxy($post) curl_setopt($post, CURLOPT_PROXY, $config['callback_proxy']); } } + +function target_to_id($target) { + if( $target[0].$target[1] == "g:" ) { + $target = "g".dbFetchCell('SELECT id FROM device_groups WHERE name = ?',array(substr($target,2))); + } else { + $target = dbFetchCell('SELECT device_id FROM devices WHERE hostname = ?',array($target)); + } + return $target; +} + +function id_to_target($id) { + if( $id[0] == "g" ) { + $id = 'g:'.dbFetchCell("SELECT name FROM device_groups WHERE id = ?",array(substr($id,1))); + } else { + $id = dbFetchCell("SELECT hostname FROM devices WHERE device_id = ?",array($id)); + } + return $id; +}
TitleStartTitleStart End Actions