Merge branch '313-Respuestas-de-evento-masivas' into 'develop'
ent-313-Respuestas-de-evento-masivas See merge request artica/pandorafms!2121 Former-commit-id: c4cf56f0b2526158d8f7f67ab3417e46b6e0f003
This commit is contained in:
commit
797b49c03d
|
@ -193,25 +193,49 @@ if ($dialogue_event_response) {
|
|||
$event_id = get_parameter ('event_id');
|
||||
$response_id = get_parameter ('response_id');
|
||||
$command = get_parameter ('target');
|
||||
|
||||
$massive = get_parameter ('massive');
|
||||
$end = get_parameter ('end');
|
||||
$show_execute_again_btn = get_parameter ('show_execute_again_btn');
|
||||
$out_iterator = get_parameter ('out_iterator');
|
||||
$event_response = db_get_row('tevent_response','id',$response_id);
|
||||
|
||||
$event = db_get_row('tevento','id_evento',$event_id);
|
||||
|
||||
$prompt = "<br>> ";
|
||||
|
||||
switch($event_response['type']) {
|
||||
case 'command':
|
||||
echo "<div style='text-align:left'>";
|
||||
echo $prompt.sprintf(__('Executing command: %s',$command));
|
||||
echo "</div><br>";
|
||||
|
||||
|
||||
echo "<div id='response_loading_command' style='display:none'>".html_print_image('images/spinner.gif', true)."</div>";
|
||||
echo "<br><div id='response_out' style='text-align:left'></div>";
|
||||
|
||||
echo "<br><div id='re_exec_command' style='display:none;'>";
|
||||
html_print_button(__('Execute again'),'btn_str',false,'perform_response(\''.$command.'\', ' . $response_id . ');', "class='sub next'");
|
||||
echo "</div>";
|
||||
if ($massive) {
|
||||
echo "<div style='text-align:left'>";
|
||||
echo $prompt.sprintf("(Event #$event_id) ".__('Executing command: %s',$command));
|
||||
echo "</div><br>";
|
||||
|
||||
echo "<div id='response_loading_command_".$out_iterator."' style='display:none'>".html_print_image('images/spinner.gif', true)."</div>";
|
||||
echo "<br><div id='response_out_".$out_iterator."' style='text-align:left'></div>";
|
||||
|
||||
if ($end) {
|
||||
|
||||
echo "<br><div id='re_exec_command_".$out_iterator."' style='display:none;'>";
|
||||
html_print_button(__('Execute again'),'btn_str',false,'execute_event_response(false);', "class='sub next'");
|
||||
echo "<span id='execute_again_loading' style='display:none'>".html_print_image('images/spinner.gif', true)."</span>";
|
||||
echo "</div>";
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
echo "<div style='text-align:left'>";
|
||||
echo $prompt.sprintf(__('Executing command: %s',$command));
|
||||
echo "</div><br>";
|
||||
|
||||
echo "<div id='response_loading_command' style='display:none'>".html_print_image('images/spinner.gif', true)."</div>";
|
||||
echo "<br><div id='response_out' style='text-align:left'></div>";
|
||||
|
||||
echo "<br><div id='re_exec_command' style='display:none;'>";
|
||||
html_print_button(__('Execute again'),'btn_str',false,'perform_response(\''.$command.'\', ' . $response_id . ');', "class='sub next'");
|
||||
echo "</div>";
|
||||
}
|
||||
|
||||
break;
|
||||
case 'url':
|
||||
$command = str_replace("localhost",$_SERVER['SERVER_NAME'],$command);
|
||||
|
|
|
@ -158,10 +158,11 @@ function show_response_dialog(event_id, response_id, response) {
|
|||
var params = [];
|
||||
params.push("page=include/ajax/events");
|
||||
params.push("dialogue_event_response=1");
|
||||
params.push("massive=0");
|
||||
params.push("event_id="+event_id);
|
||||
params.push("target="+response['target']);
|
||||
params.push("response_id="+response_id);
|
||||
|
||||
|
||||
jQuery.ajax ({
|
||||
data: params.join ("&"),
|
||||
type: 'POST',
|
||||
|
@ -187,6 +188,57 @@ function show_response_dialog(event_id, response_id, response) {
|
|||
});
|
||||
}
|
||||
|
||||
//Show the modal window of event responses when multiple events are selected
|
||||
function show_massive_response_dialog(event_id, response_id, response, out_iterator, end) {
|
||||
var ajax_file = $('#hidden-ajax_file').val();
|
||||
|
||||
var params = [];
|
||||
params.push("page=include/ajax/events");
|
||||
params.push("dialogue_event_response=1");
|
||||
params.push("massive=1");
|
||||
params.push("end="+end);
|
||||
params.push("out_iterator="+out_iterator);
|
||||
params.push("event_id="+event_id);
|
||||
params.push("target="+response['target']);
|
||||
params.push("response_id="+response_id);
|
||||
|
||||
|
||||
jQuery.ajax ({
|
||||
data: params.join ("&"),
|
||||
response_tg: response['target'],
|
||||
response_id: response_id,
|
||||
out_iterator: out_iterator,
|
||||
type: 'POST',
|
||||
url: action=ajax_file,
|
||||
dataType: 'html',
|
||||
success: function (data) {
|
||||
if (out_iterator === 0)
|
||||
$("#event_response_window").empty();
|
||||
|
||||
$("#event_response_window").hide ()
|
||||
.append (data)
|
||||
.dialog ({
|
||||
title: $('#select_custom_response option:selected').html(),
|
||||
resizable: true,
|
||||
draggable: true,
|
||||
modal: false,
|
||||
open: function(event, ui) {
|
||||
$('#response_loading_dialog').hide();
|
||||
$('#button-submit_event_response').show();
|
||||
},
|
||||
close: function(event, ui) {
|
||||
$( ".chk_val" ).prop( "checked", false );
|
||||
},
|
||||
width: response['modal_width'],
|
||||
height: response['modal_height']
|
||||
})
|
||||
.show ();
|
||||
|
||||
perform_response_massive(this.response_tg, this.response_id, this.out_iterator);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Get an event response from db
|
||||
function get_response(response_id) {
|
||||
var ajax_file = $('#hidden-ajax_file').val();
|
||||
|
@ -371,6 +423,42 @@ function perform_response(target, response_id) {
|
|||
return false;
|
||||
}
|
||||
|
||||
// Perform a response and put the output into a div
|
||||
function perform_response_massive(target, response_id, out_iterator) {
|
||||
var ajax_file = $('#hidden-ajax_file').val();
|
||||
|
||||
$('#re_exec_command').hide();
|
||||
$('#response_loading_command_'+out_iterator).show();
|
||||
$('#response_out_'+out_iterator).html('');
|
||||
|
||||
var finished = 0;
|
||||
var time = Math.round(+new Date()/1000);
|
||||
var timeout = time + 10;
|
||||
|
||||
var params = [];
|
||||
params.push("page=include/ajax/events");
|
||||
params.push("perform_event_response=1");
|
||||
params.push("target="+target);
|
||||
params.push("response_id="+response_id)
|
||||
|
||||
jQuery.ajax ({
|
||||
data: params.join ("&"),
|
||||
type: 'POST',
|
||||
url: action=ajax_file,
|
||||
async: true,
|
||||
timeout: 10000,
|
||||
dataType: 'html',
|
||||
success: function (data) {
|
||||
var out = data.replace(/[\n|\r]/g, "<br>");
|
||||
$('#response_out_'+out_iterator).html(out);
|
||||
$('#response_loading_command_'+out_iterator).hide();
|
||||
$('#re_exec_command_'+out_iterator).show();
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Change the status of an event to new, in process or validated
|
||||
function event_change_status(event_ids) {
|
||||
var ajax_file = $('#hidden-ajax_file').val();
|
||||
|
|
|
@ -20,6 +20,8 @@ require_once ($config["homedir"] . "/include/functions_ui.php");
|
|||
$sort_field = get_parameter("sort_field", "timestamp");
|
||||
$sort = get_parameter("sort", "down");
|
||||
|
||||
$response_id = get_parameter ("response_id", "");
|
||||
|
||||
$table = new stdClass();
|
||||
if(!isset($table->width)) {
|
||||
$table->width = '100%';
|
||||
|
@ -887,9 +889,8 @@ else {
|
|||
|
||||
echo '<div style="width:' . $table->width . ';" class="action-buttons">';
|
||||
if (!$readonly && $show_validate_button) {
|
||||
html_print_button(__('In progress selected'), 'validate_button', false, 'validate_selected(2);', 'class="sub ok"');
|
||||
echo " ";
|
||||
html_print_button(__('Validate selected'), 'validate_button', false, 'validate_selected(1);', 'class="sub ok"');
|
||||
$array_events_actions['in_progress_selected'] = 'In progress selected';
|
||||
$array_events_actions['validate_selected'] = 'Validate selected';
|
||||
// Fix: validated_selected JS function has to be included with the proper user ACLs
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
|
@ -899,12 +900,14 @@ else {
|
|||
validate_event_advanced($(this).val(), new_status);
|
||||
}
|
||||
});
|
||||
location.reload();
|
||||
}
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
|
||||
if (!$readonly && ($show_delete_button)) {
|
||||
html_print_button(__('Delete selected'), 'delete_button', false, 'delete_selected();', 'class="sub delete"');
|
||||
$array_events_actions['delete_selected'] = 'Delete selected';
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
function delete_selected() {
|
||||
|
@ -916,13 +919,126 @@ else {
|
|||
</script>
|
||||
<?php
|
||||
}
|
||||
|
||||
echo '</div>';
|
||||
echo '</form>';
|
||||
|
||||
$sql_event_resp = "SELECT id, name FROM tevent_response WHERE type LIKE 'command'";
|
||||
$event_responses = db_get_all_rows_sql ($sql_event_resp);
|
||||
|
||||
foreach ($event_responses as $val)
|
||||
$array_events_actions[$val['id']] = $val['name'];
|
||||
|
||||
if ($config['event_replication'] != 1) {
|
||||
echo '<div style="width:100%;text-align:right;">';
|
||||
echo '<form method="post" id="form_event_response">';
|
||||
html_print_select($array_events_actions, 'response_id', '', '', '', 0, false, false, false);
|
||||
echo '  ';
|
||||
html_print_button(__('Execute event response'), 'submit_event_response', false, 'execute_event_response(true);', 'class="sub next"');
|
||||
echo "<span id='response_loading_dialog' style='display:none'>".html_print_image('images/spinner.gif', true)."</span>";
|
||||
echo '</form>';
|
||||
echo '<span id="max_custom_event_resp_msg" style="display:none; color:#FC4444; line-height: 200%;">'.__("A maximum of 10 event custom responses can be selected").'</span>';
|
||||
echo '</div>';
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
|
||||
function execute_event_response(event_list_btn) {
|
||||
|
||||
$('#max_custom_event_resp_msg').hide();
|
||||
|
||||
var response_id = $('select[name=response_id]').val();
|
||||
|
||||
if (!isNaN(response_id)) { // It is a custom response
|
||||
|
||||
var response = get_response(response_id);
|
||||
|
||||
var counter=0;
|
||||
var end=0;
|
||||
|
||||
// If cannot get response abort it
|
||||
if (response == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
var total_checked = $(".chk_val:checked").length;
|
||||
|
||||
// Limit number of events to apply custom responses to for performance reasons
|
||||
if (total_checked > 10) {
|
||||
$('#max_custom_event_resp_msg').show();
|
||||
return;
|
||||
}
|
||||
|
||||
if (event_list_btn) {
|
||||
$('#button-submit_event_response').hide(function() {
|
||||
$('#response_loading_dialog').show(function() {
|
||||
|
||||
$(".chk_val").each(function() {
|
||||
|
||||
if ($(this).is(":checked")) {
|
||||
//var server_id = $('#hidden-server_id_'+).
|
||||
event_id = $(this).val();
|
||||
server_id = $('#hidden-server_id_'+event_id).val();
|
||||
|
||||
response['target'] = get_response_target(event_id, response_id, server_id);
|
||||
|
||||
if (total_checked-1 === counter) end=1;
|
||||
|
||||
show_massive_response_dialog(event_id, response_id, response, counter, end);
|
||||
|
||||
counter++;
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
else {
|
||||
$('#button-btn_str').hide(function() {
|
||||
$('#execute_again_loading').show(function() {
|
||||
|
||||
$(".chk_val").each(function() {
|
||||
|
||||
if ($(this).is(":checked")) {
|
||||
//var server_id = $('#hidden-server_id_'+).
|
||||
event_id = $(this).val();
|
||||
server_id = $('#hidden-server_id_'+event_id).val();
|
||||
|
||||
response['target'] = get_response_target(event_id, response_id, server_id);
|
||||
|
||||
if (total_checked-1 === counter) end=1;
|
||||
|
||||
show_massive_response_dialog(event_id, response_id, response, counter, end);
|
||||
|
||||
counter++;
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
else { // It is not a custom response
|
||||
switch (response_id) {
|
||||
case 'in_progress_selected':
|
||||
validate_selected(2);
|
||||
break;
|
||||
case 'validate_selected':
|
||||
validate_selected(1);
|
||||
break;
|
||||
case 'delete_selected':
|
||||
delete_selected();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
else {
|
||||
echo '<div class="nf">' . __('No events') . '</div>';
|
||||
}
|
||||
echo '</div>';
|
||||
}
|
||||
?>
|
||||
?>
|
|
@ -559,6 +559,18 @@ if ($validate) {
|
|||
if ($delete) {
|
||||
$ids = (array) get_parameter ("validate_ids", -1);
|
||||
|
||||
// Discard deleting in progress events
|
||||
$in_process_status = db_get_all_rows_sql("
|
||||
SELECT id_evento
|
||||
FROM tevento
|
||||
WHERE estado=2");
|
||||
|
||||
foreach ($in_process_status as $val) {
|
||||
if (($key = array_search($val['id_evento'], $ids)) !== false) {
|
||||
unset($ids[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
if ($ids[0] != -1) {
|
||||
$return = events_delete_event ($ids, ($group_rep == 1), $meta);
|
||||
ui_print_result_message ($return,
|
||||
|
|
Loading…
Reference in New Issue