From 018811eedb707cd8e3bdec93811991b7ec905f50 Mon Sep 17 00:00:00 2001
From: vgilc <vanessa.gil@artica.es>
Date: Wed, 23 Apr 2014 07:57:40 +0000
Subject: [PATCH] 2014-04-23  Vanessa Gil <vanessa.gil@artica.es>

	* include/functions_ui.php
	  include/ajax/module.php
	  operation/tree.php
	  operation/agentes/estado_monitores.php
	  operation/agentes/status_monitor.php: Changed
	data view of modules to popup.

	* include/styles/menu.css: Changed style of menu.


git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@9800 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
---
 pandora_console/ChangeLog                     | 11 +++
 pandora_console/include/ajax/module.php       |  2 +-
 pandora_console/include/functions_ui.php      | 40 +++++++--
 pandora_console/include/styles/menu.css       |  3 +-
 .../operation/agentes/estado_monitores.php    | 90 ++++++++++++++++++-
 .../operation/agentes/status_monitor.php      |  5 +-
 pandora_console/operation/tree.php            |  6 +-
 7 files changed, 141 insertions(+), 16 deletions(-)

diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog
index e696c10bc5..7ac864b6d1 100644
--- a/pandora_console/ChangeLog
+++ b/pandora_console/ChangeLog
@@ -1,3 +1,14 @@
+2014-04-23  Vanessa Gil <vanessa.gil@artica.es>
+	
+	* include/functions_ui.php
+	  include/ajax/module.php
+	  operation/tree.php
+	  operation/agentes/estado_monitores.php
+	  operation/agentes/status_monitor.php: Changed
+	data view of modules to popup.
+
+	* include/styles/menu.css: Changed style of menu.
+
 2014-04-22  Sergio Martin <sergio.martin@artica.es>
 
 	* pandoradb.postgreSQL.sql
diff --git a/pandora_console/include/ajax/module.php b/pandora_console/include/ajax/module.php
index fa8a01681a..20c40197e8 100644
--- a/pandora_console/include/ajax/module.php
+++ b/pandora_console/include/ajax/module.php
@@ -331,7 +331,7 @@ if ($get_module_detail) {
 		ui_print_error_message(__('No available data to show'));
 	}
 	else {
-		ui_pagination($count, false, $offset);
+		ui_pagination ($count, false, $offset, 0, false, 'offset', true, 'binary_dialog');
 		html_print_table($table);
 	}
 	
diff --git a/pandora_console/include/functions_ui.php b/pandora_console/include/functions_ui.php
index e3a6defe44..84cff59695 100644
--- a/pandora_console/include/functions_ui.php
+++ b/pandora_console/include/functions_ui.php
@@ -1487,7 +1487,7 @@ function ui_process_page_body ($string, $bitfield) {
  *
  * @return string The pagination div or nothing if no pagination needs to be done
  */
-function ui_pagination ($count, $url = false, $offset = 0, $pagination = 0, $return = false, $offset_name = 'offset', $print_total_items = true) {
+function ui_pagination ($count, $url = false, $offset = 0, $pagination = 0, $return = false, $offset_name = 'offset', $print_total_items = true, $other_class = '') {
 	global $config;
 	
 	if (empty ($pagination)) {
@@ -1517,7 +1517,7 @@ function ui_pagination ($count, $url = false, $offset = 0, $pagination = 0, $ret
 	if ($count <= $pagination) {
 		
 		if ($print_total_items) {
-			$output = '<div class="pagination">';
+			$output = "<div class='pagination $other_class'>";
 			//Show the count of items
 			$output .= sprintf(__('Total items: %s'), $count);
 			// End div and layout
@@ -1559,7 +1559,7 @@ function ui_pagination ($count, $url = false, $offset = 0, $pagination = 0, $ret
 	else
 		$inicio_pag = 0;
 	
-	$output = '<div class="pagination">';
+	$output = "<div class='pagination $other_class'>";
 	
 	//Show the count of items
 	if ($print_total_items) {
@@ -1568,13 +1568,23 @@ function ui_pagination ($count, $url = false, $offset = 0, $pagination = 0, $ret
 	}
 	
 	// Show GOTO FIRST button
-	$output .= '<a class="pagination go_first" href="'.$url.'&amp;'.$offset_name.'=0">'.html_print_image ("images/go_first.png", true, array ("class" => "bot")).'</a>&nbsp;';
+	if ($other_class == '') {
+		$output .= '<a class="pagination go_first" href="'.$url.'&amp;'.$offset_name.'=0">'.html_print_image ("images/go_first.png", true, array ("class" => "bot")).'</a>&nbsp;';
+	} else {
+		$output .= "<a class='pagination $other_class go_first' href='$url.&amp;$offset_name=0'>".html_print_image ("images/go_first.png", true, array ("class" => "bot"))."</a>&nbsp;";
+	}
+
 	// Show PREVIOUS button
 	if ($index_page > 0) {
 		$index_page_prev = ($index_page - (floor ($block_limit / 2))) * $pagination;
 		if ($index_page_prev < 0)
 			$index_page_prev = 0;
-		$output .= '<a class="pagination go_rewind" href="'.$url.'&amp;'.$offset_name.'='.$index_page_prev.'">'.html_print_image ("images/go_previous.png", true, array ("class" => "bot")).'</a>';
+			
+		if ($other_class == '') {
+				$output .= '<a class="pagination go_rewind" href="'.$url.'&amp;'.$offset_name.'='.$index_page_prev.'">'.html_print_image ("images/go_previous.png", true, array ("class" => "bot")).'</a>';
+		} else {
+			$output .= "<a class='pagination $other_class go_rewind' href='$url &amp;$offset_name = $index_page_prev'>".html_print_image ("images/go_previous.png", true, array ("class" => "bot"))."</a>";
+		}
 	}
 	
 	// Draw blocks markers
@@ -1598,7 +1608,11 @@ function ui_pagination ($count, $url = false, $offset = 0, $pagination = 0, $ret
 		// it must be shown if not round to block limit)
 		$link_offset = $config['block_size'] * $i;
 		
-		$output .= '<a class="pagination offset_' . $link_offset . '" href="'.$url.'&amp;'.$offset_name.'='.$inicio_bloque.'">';
+		if ($other_class == '') {	
+				$output .= '<a class="pagination offset_' . $link_offset . '" href="'.$url.'&amp;'.$offset_name.'='.$inicio_bloque.'">';
+		} else {
+			$output .= "<a class='pagination $other_class offset_$link_offset' href='$url &amp;$offset_name=$inicio_bloque'>";
+		}
 		$output .= "[ $i ]";
 		
 		$output .= '</a></span>';
@@ -1610,7 +1624,12 @@ function ui_pagination ($count, $url = false, $offset = 0, $pagination = 0, $ret
 		$prox_bloque = ($i + ceil ($block_limit / 2)) * $pagination;
 		if ($prox_bloque > $count)
 			$prox_bloque = ($count -1) - $pagination;
-		$output .= '<a class="pagination go_fastforward" href="'.$url.'&amp;'.$offset_name.'='.$prox_bloque.'">'.html_print_image ("images/go_next.png", true, array ("class" => "bot")).'</a>';
+			
+		if ($other_class == '') {
+				$output .= '<a class="pagination go_fastforward" href="'.$url.'&amp;'.$offset_name.'='.$prox_bloque.'">'.html_print_image ("images/go_next.png", true, array ("class" => "bot")).'</a>';
+		} else {
+			$output .= "<a class='pagination $other_class go_fastforward' href='$url&amp;$offset_name=$prox_bloque'>".html_print_image ("images/go_next.png", true, array ("class" => "bot"))."</a>";
+		}
 		$i = $index_counter;
 	}
 	// if exists more registers than i can put in a page (defined by $block_size config parameter)
@@ -1619,7 +1638,12 @@ function ui_pagination ($count, $url = false, $offset = 0, $pagination = 0, $ret
 	// as painted in last block (last integer block).	
 	if (($count - $pagination) > 0) {
 		$myoffset = floor (($count - 1) / $pagination) * $pagination;
-		$output .= '<a class="pagination go_last" href="'.$url.'&amp;'.$offset_name.'='.$myoffset.'">'.html_print_image ("images/go_last.png", true, array ("class" => "bot")).'</a>';
+		
+		if ($other_class == '') {
+			$output .= '<a class="pagination go_last" href="'.$url.'&amp;'.$offset_name.'='.$myoffset.'">'.html_print_image ("images/go_last.png", true, array ("class" => "bot")).'</a>';
+		} else {
+			$output .= "<a class='pagination $other_class go_last' href='$url&amp;$offset_name=$myoffset'>".html_print_image ("images/go_last.png", true, array ("class" => "bot"))."</a>";
+		}
 	}
 	
 	// End div and layout
diff --git a/pandora_console/include/styles/menu.css b/pandora_console/include/styles/menu.css
index 0d4285192f..c22bb0c157 100644
--- a/pandora_console/include/styles/menu.css
+++ b/pandora_console/include/styles/menu.css
@@ -111,8 +111,7 @@
 	margin: -20px 0px 0 0; /* Positions it back where it should be */
 	border-left: 1px;
 }
-.menu li.has_submenu.selected > img.toggle,
-.menu li:hover.has_submenu > img.toggle {
+.menu li.has_submenu > img.toggle{
 	visibility: visible;
 	z-index: 1; /* Positions it on top of the rest */
 }
diff --git a/pandora_console/operation/agentes/estado_monitores.php b/pandora_console/operation/agentes/estado_monitores.php
index e68c83795c..6bd94e9ba4 100644
--- a/pandora_console/operation/agentes/estado_monitores.php
+++ b/pandora_console/operation/agentes/estado_monitores.php
@@ -627,7 +627,8 @@ foreach ($modules as $module) {
 		$link ="winopeng('operation/agentes/stat_win.php?type=$graph_type&amp;period=86400&amp;id=".$module["id_agente_modulo"]."&amp;label=".base64_encode($module["nombre"])."&amp;refresh=600','day_".$win_handle."')";
 		
 		$data[8] .= '<a href="javascript:'.$link.'">' . html_print_image("images/chart_curve.png", true, array("border" => '0', "alt" => "")) . '</a> &nbsp;&nbsp;';
-		$data[8] .= "<a href='index.php?sec=estado&amp;sec2=operation/agentes/ver_agente&amp;id_agente=$id_agente&tab=data_view&amp;period=86400&amp;id=".$module["id_agente_modulo"]."'>" . html_print_image('images/binary.png', true, array("border" => '0', "alt" => "")) . "</a>"; 
+		$server_name = '';
+		$data[8] .= "<a href='javascript: show_module_detail_dialog(" . $module["id_agente_modulo"] . ", ". $id_agente.", \"" . $server_name . "\", 0, 86400)'>". html_print_image ("images/binary.png", true, array ("border" => "0", "alt" => "")) . "</a>";
 	}
 	
 	if ($module['estado'] == 3) {
@@ -689,6 +690,13 @@ unset ($table_data);
 
 ui_require_css_file ('cluetip');
 ui_require_jquery_file ('cluetip');
+
+echo "<div id='module_details_dialog'></div>";
+ui_require_jquery_file ("ui-timepicker-addon");
+
+// This script is included manually to be included after jquery and avoid error
+echo '<script type="text/javascript" src="' . ui_get_full_url('include/javascript/i18n/jquery-ui-timepicker-' . get_user_language() . '.js', false, false, false) . '"></script>';
+ui_require_jquery_file("ui.datepicker-" . get_user_language(), "include/javascript/i18n/");
 ?>
 
 <script type="text/javascript">
@@ -709,6 +717,86 @@ ui_require_jquery_file ('cluetip');
 			mouseOutClose: 'both',
 			closeText: '<?php html_print_image("images/cancel.png") ?>'
 		});
+		
+	// Show the modal window of an module
+	function show_module_detail_dialog(module_id, id_agent, server_name, offset, period) {
+		
+		var server_name = '';
+		var extra_parameters = '';
+		if (period == -1) {
+
+			period = $('#period').val();
+		
+			var selection_mode = $('input[name=selection_mode]:checked').val();
+			var date_from = $('#text-date_from').val();
+			var time_from = $('#text-time_from').val();
+			var date_to = $('#text-date_to').val();
+			var time_to = $('#text-time_to').val();
+			
+			extra_parameters = '&selection_mode=' + selection_mode + '&date_from=' + date_from + '&date_to=' + date_to + '&time_from=' + time_from + '&time_to=' + time_to;
+		}
+		
+		$.ajax({
+			type: "POST",
+			url: "<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
+			data: "page=include/ajax/module&get_module_detail=1&server_name="+server_name+"&id_agent="+id_agent+"&id_module=" + module_id+"&offset="+offset+"&period="+period + extra_parameters,
+			dataType: "html",
+			success: function(data) {
+				$("#module_details_dialog").hide ()
+					.empty ()
+					.append (data)
+					.dialog ({
+						resizable: true,
+						draggable: true,
+						modal: true,
+						overlay: {
+							opacity: 0.5,
+							background: "black"
+						},
+						width: 650,
+						height: 500
+					})
+					.show ();
+					refresh_pagination_callback (module_id, id_agent, "");
+					datetime_picker_callback();
+					forced_title_callback();
+			}
+		});
+	}
+	function datetime_picker_callback() {
+
+		$("#text-time_from, #text-time_to").timepicker({
+			showSecond: true,
+			timeFormat: '<?php echo TIME_FORMAT_JS; ?>',
+			timeOnlyTitle: '<?php echo __('Choose time');?>',
+			timeText: '<?php echo __('Time');?>',
+			hourText: '<?php echo __('Hour');?>',
+			minuteText: '<?php echo __('Minute');?>',
+			secondText: '<?php echo __('Second');?>',
+			currentText: '<?php echo __('Now');?>',
+			closeText: '<?php echo __('Close');?>'});
+			
+		$("#text-date_from, #text-date_to").datepicker({dateFormat: "<?php echo DATE_FORMAT_JS; ?>"});
+		
+		$.datepicker.setDefaults($.datepicker.regional[ "<?php echo get_user_language(); ?>"]);
+	}
+	datetime_picker_callback();
+	
+	function refresh_pagination_callback (module_id, id_agent, server_name) {
+		$(".binary_dialog").click( function() {
+
+			var classes = $(this).attr('class');
+			classes = classes.split(' ');
+			var offset_class = classes[2];
+			offset_class = offset_class.split('_');
+			var offset = offset_class[1];			
+
+			var period = $('#period').val();
+		
+			show_module_detail_dialog(module_id, id_agent, server_name, offset, period);
+			return false;
+		});
+	}
 /* ]]> */
 </script>
 <?php
diff --git a/pandora_console/operation/agentes/status_monitor.php b/pandora_console/operation/agentes/status_monitor.php
index 48111fa3f6..dcc88cf94a 100644
--- a/pandora_console/operation/agentes/status_monitor.php
+++ b/pandora_console/operation/agentes/status_monitor.php
@@ -1292,10 +1292,11 @@ ui_require_javascript_file('pandora_modules');
 	}
 	
 	function refresh_pagination_callback (module_id, id_agent, server_name) {
-		$(".pagination").click( function() {
+
+		$(".binary_dialog").click( function() {
 			var classes = $(this).attr('class');
 			classes = classes.split(' ');
-			var offset_class = classes[1];
+			var offset_class = classes[2];
 			offset_class = offset_class.split('_');
 			var offset = offset_class[1];
 		
diff --git a/pandora_console/operation/tree.php b/pandora_console/operation/tree.php
index 8c17aa8ced..4a3e87f8a3 100644
--- a/pandora_console/operation/tree.php
+++ b/pandora_console/operation/tree.php
@@ -903,10 +903,12 @@ ui_require_jquery_file("ui.datepicker-" . get_user_language(), "include/javascri
 	datetime_picker_callback();
 	
 	function refresh_pagination_callback (module_id, id_agent, server_name) {
-		$(".pagination").click( function() {
+		
+		$(".binary_dialog").click( function() {
+			
 			var classes = $(this).attr('class');
 			classes = classes.split(' ');
-			var offset_class = classes[1];
+			var offset_class = classes[2];
 			offset_class = offset_class.split('_');
 			var offset = offset_class[1];