From f9e506892bde3cc933acdd9172d1423306d9580d Mon Sep 17 00:00:00 2001
From: juanmanuelr <noreply@pandorafms.org>
Date: Mon, 28 Feb 2011 16:53:09 +0000
Subject: [PATCH] 2011-02-28 Juan Manuel Ramon <juanmanuel.ramon@artica.es>

	* include/functions_html.php: new parameter in function print_image in
	order to return only src field of image.
	* include/ajax/visual_console_builder.ajax.php
	include/functions_gis.php
	godmode/groups/configure_group.php
	godmode/alerts/configure_alert_compound.php
	godmode/setup/os.builder.php
	godmode/reporting/visual_console_builder.editor.js
	godmode/reporting/visual_console_builder.editor.php
	godmode/reporting/reporting_builder.item_editor.php: Changed the way of create
	images from "<img=.." html tag to print_image function.
	* include/ajax/skins.ajax.php: Added to repository. New php callback for
	skins support inside javascript code.
	* ajax.php: Load of relative_path variable in ajax user session.



git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@4028 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
---
 pandora_console/ChangeLog                     |  17 +++
 pandora_console/ajax.php                      |   3 +
 .../alerts/configure_alert_compound.php       |  34 ++++-
 .../godmode/groups/configure_group.php        |  32 ++++-
 .../reporting_builder.item_editor.php         |  15 +-
 .../visual_console_builder.editor.js          | 136 ++++++++++++++++--
 .../visual_console_builder.editor.php         |   6 +-
 pandora_console/godmode/setup/os.builder.php  |  16 ++-
 pandora_console/include/ajax/skins.ajax.php   |  37 +++++
 .../ajax/visual_console_builder.ajax.php      |  16 +++
 pandora_console/include/functions_gis.php     |  19 ++-
 pandora_console/include/functions_html.php    |  12 +-
 12 files changed, 322 insertions(+), 21 deletions(-)
 create mode 100644 pandora_console/include/ajax/skins.ajax.php

diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog
index 22482a7146..f57890b745 100644
--- a/pandora_console/ChangeLog
+++ b/pandora_console/ChangeLog
@@ -1,3 +1,20 @@
+2011-02-28 Juan Manuel Ramon <juanmanuel.ramon@artica.es>
+
+	* include/functions_html.php: new parameter in function print_image in 	
+	order to return only src field of image.	 
+	* include/ajax/visual_console_builder.ajax.php
+	include/functions_gis.php
+	godmode/groups/configure_group.php
+	godmode/alerts/configure_alert_compound.php
+	godmode/setup/os.builder.php
+	godmode/reporting/visual_console_builder.editor.js
+	godmode/reporting/visual_console_builder.editor.php
+	godmode/reporting/reporting_builder.item_editor.php: Changed the way of create 
+	images from "<img=.." html tag to print_image function. 
+	* include/ajax/skins.ajax.php: Added to repository. New php callback for 
+	skins support inside javascript code.
+	* ajax.php: Load of relative_path variable in ajax user session.
+
 2011-02-28 Miguel de Dios  <miguel.dedios@artica.es>
 	* include/functions_db.php: cleaned source code, and erased the deprecated
 	function "dame_id_grupo".
diff --git a/pandora_console/ajax.php b/pandora_console/ajax.php
index c14d0605ee..db5e51b8a7 100644
--- a/pandora_console/ajax.php
+++ b/pandora_console/ajax.php
@@ -37,6 +37,9 @@ $page = (string) get_parameter ('page');
 $page = safe_url_extraclean ($page);
 $page .= '.php';
 $config["id_user"] = $_SESSION["id_usuario"];
+$isFunctionSkins = enterprise_include_once ('include/functions_skins.php');
+if ($isFunctionSkins !== ENTERPRISE_NOT_HOOK)
+	$config["relative_path"] = enterprise_hook('set_image_skin_path',array($config['id_user']));
 session_write_close ();
 if (file_exists ($page)) {
 	require_once ($page);
diff --git a/pandora_console/godmode/alerts/configure_alert_compound.php b/pandora_console/godmode/alerts/configure_alert_compound.php
index 234876f457..d1e11b5016 100644
--- a/pandora_console/godmode/alerts/configure_alert_compound.php
+++ b/pandora_console/godmode/alerts/configure_alert_compound.php
@@ -666,7 +666,21 @@ function add_alert () {
 		.clone ()
 		.append (td);
 	
-	$("img", tr).attr ("src", "images/delete.png");
+	var params = [];
+	params.push("get_image_path=1");
+	params.push("img_src=images/delete.png");
+	params.push("page=include/ajax/skins.ajax");
+	params.push("only_src=1");
+	jQuery.ajax ({
+		data: params.join ("&"),
+		type: 'POST',
+		url: action="ajax.php",
+		async: false,
+		timeout: 10000,
+			success: function (data) {
+				$("img", tr).attr ("src", data);
+			}
+		});	
 	$("a", tr).attr("id", "remove-"+id)
 		.click (remove_alert);
 	
@@ -740,8 +754,22 @@ $(document).ready (function () {
 				alerts = Array ();
 				jQuery.each (data, function () {
 					tr = $('<tr></tr>');
-					img = $("<img></img>").attr ("src", "images/add.png")
-						.addClass ("clickable");
+					
+					var params = [];
+					params.push("get_image_path=1");
+					params.push("img_src=images/add.png");
+					params.push("page=include/ajax/skins.ajax");
+					params.push("only_src=1");
+					jQuery.ajax ({
+						data: params.join ("&"),
+						type: 'POST',
+						url: action="ajax.php",
+						async: false,
+						timeout: 10000,
+							success: function (data) {
+								img = $("<img></img>").attr ("src", data).addClass ("clickable");
+							}
+						});
 					a = $("<a></a>").append (img)
 						.attr ("id", "add-"+this["id"])
 						.attr ("href", "#condition")
diff --git a/pandora_console/godmode/groups/configure_group.php b/pandora_console/godmode/groups/configure_group.php
index 4f9a694f5c..32a91b7973 100644
--- a/pandora_console/godmode/groups/configure_group.php
+++ b/pandora_console/godmode/groups/configure_group.php
@@ -127,7 +127,21 @@ function icon_changed () {
 	$('#icon_preview').fadeOut ('normal', function () {
 		$('#icon_preview').empty ();
 		if (data != "") {
-			$('#icon_preview').append ($('<img />').attr ('src', 'images/groups_small/'+data));
+			var params = [];
+			params.push("get_image_path=1");
+			params.push("img_src=images/groups_small/" + data);
+			params.push("page=include/ajax/skins.ajax");
+			params.push("only_src=1");
+			jQuery.ajax ({
+				data: params.join ("&"),
+				type: 'POST',
+				url: action="ajax.php",
+				async: false,
+				timeout: 10000,
+				success: function (result) {
+					$('#icon_preview').append ($('<img />').attr ('src', result));
+				}
+			});
 		}
 		$('#icon_preview').fadeIn ();
 	});
@@ -149,7 +163,21 @@ function parent_changed () {
 			$('#parent_preview').fadeOut ('normal', function () {
 				$('#parent_preview').empty ();
 				if (data_ != null) {
-					$('#parent_preview').append ($('<img />').attr ('src', 'images/groups_small/'+data['icon']+'.png'));
+					var params = [];
+					params.push("get_image_path=1");
+					params.push("img_src=images/groups_small/" + data['icon'] + ".png");
+					params.push("page=include/ajax/skins.ajax");
+					params.push("only_src=1");
+					jQuery.ajax ({
+						data: params.join ("&"),
+						type: 'POST',
+						url: action="ajax.php",
+						async: false,
+						timeout: 10000,
+						success: function (result) {
+							$('#parent_preview').append ($('<img />').attr ('src', result));
+						}
+					});
 				}
 				$('#parent_preview').fadeIn ();
 			});
diff --git a/pandora_console/godmode/reporting/reporting_builder.item_editor.php b/pandora_console/godmode/reporting/reporting_builder.item_editor.php
index 8c948f0864..bbb59b6c1c 100644
--- a/pandora_console/godmode/reporting/reporting_builder.item_editor.php
+++ b/pandora_console/godmode/reporting/reporting_builder.item_editor.php
@@ -479,7 +479,20 @@ function chooseSQLquery() {
 		$("#sql_example").html('');
 	}
 	else {
-		$("#sql_example").html('<img src="images/spinner.gif" />');
+		var params1 = [];
+		params1.push("get_image_path=1");
+		params1.push("img_src=" + "images/spinner.gif");
+		params1.push("page=include/ajax/skins.ajax");
+		jQuery.ajax ({
+			data: params1.join ("&"),
+			type: 'POST',
+			url: action="ajax.php",
+			async: false,
+			timeout: 10000,
+			success: function (data) {
+				$("#sql_example").html(data);
+			}
+		});
 		
 		var params = [];
 		params.push("get_custom_sql=1");
diff --git a/pandora_console/godmode/reporting/visual_console_builder.editor.js b/pandora_console/godmode/reporting/visual_console_builder.editor.js
index a35e621a19..60d417595d 100644
--- a/pandora_console/godmode/reporting/visual_console_builder.editor.js
+++ b/pandora_console/godmode/reporting/visual_console_builder.editor.js
@@ -126,7 +126,23 @@ function updateAction() {
 			$("#background").css('height', values['height']);
 			
 			//$("#background").css('background', 'url(images/console/background/' + values['background'] + ')');
-			$("#background_img").attr('src', 'images/console/background/' + values['background']);
+
+			var params = [];
+			params.push("get_image_path=1");
+			params.push("img_src=images/console/background/" + values['background']);
+			params.push("page=include/ajax/skins.ajax");
+			params.push("only_src=1");
+			jQuery.ajax ({
+				data: params.join ("&"),
+				type: 'POST',
+				url: action="ajax.php",
+				async: false,
+				timeout: 10000,
+				success: function (data) {
+					$("#background_img").attr('src', data);
+				}
+			});	
+		
 			var idElement = 0;
 			break;
 		case 'static_graph':
@@ -158,7 +174,22 @@ function updateAction() {
 					// Default is Grey (Other)
 			}
 
-			$("#image_" + idItem).attr('src', 'images/console/icons/' + values['image'] + suffix);
+			var params = [];
+			params.push("get_image_path=1");
+			params.push("img_src=images/console/icons/" + values['image'] + suffix);
+			params.push("page=include/ajax/skins.ajax");
+			params.push("only_src=1");
+			jQuery.ajax ({
+				data: params.join ("&"),
+				type: 'POST',
+				url: action="ajax.php",
+				async: false,
+				timeout: 10000,
+				success: function (data) {
+					$("#image_" + idItem).attr('src', data);
+				}
+			});	
+		
 			if ((values['width'] != 0) && (values['height'] != 0)) {
 				$("#image_" + idItem).attr('width', values['width']);
 				$("#image_" + idItem).attr('height', values['height']);
@@ -189,7 +220,23 @@ function updateAction() {
 			$("#text_" + idItem).html(values['label']);
 			break;
 		case 'icon':
-			$("#image_" + idItem).attr('src', getImageElement(idItem));
+
+			var params = [];
+			params.push("get_image_path=1");
+			params.push("img_src=" + getImageElement(idItem));
+			params.push("page=include/ajax/skins.ajax");
+			params.push("only_src=1");
+			jQuery.ajax ({
+				data: params.join ("&"),
+				type: 'POST',
+				url: action="ajax.php",
+				async: false,
+				timeout: 10000,
+				success: function (data) {
+					$("#image_" + idItem).attr('src', data);
+				}
+			});	
+
 			if ((values['width'] != 0) && (values['height'] != 0)) {
 				$("#image_" + idItem).attr('width', values['width']);
 				$("#image_" + idItem).attr('height', values['height']);
@@ -672,7 +719,7 @@ function createItem(type, values, id_data) {
 				var sizeStyle = 'width: ' + values['width']  + 'px; height: ' + values['height'] + 'px;';
 				var imageSize = 'width="' + values['width']  + '" height="' + values['height'] + '"';
 			}
-		
+
 			var element_status= null;
 			var parameter = Array();
 			parameter.push ({name: "page", value: "include/ajax/visual_console_builder.ajax"});
@@ -689,9 +736,27 @@ function createItem(type, values, id_data) {
 					element_status = data;
 				}
 			});
+	
+			var img_src= null;
+			var parameter = Array();
+			parameter.push ({name: "page", value: "include/ajax/skins.ajax"});
+			parameter.push ({name: "get_image_path", value: "1"});
+			parameter.push ({name: "img_src", value: getImageElement(id_data)});
+			parameter.push ({name: "only_src", value: "1"});
 
+			jQuery.ajax ({
+				type: 'POST',
+				url: action="ajax.php",
+				data: parameter,
+				async: false,
+				timeout: 10000,
+				success: function (data) {
+					img_src = data;
+				}
+			});
+			
 			var item = $('<div id="' + id_data + '" class="item static_graph" style="left: 0px; top: 0px; color: ' + values['label_color'] + '; text-align: center; position: absolute; ' + sizeStyle + ' margin-top: ' + values['top'] + 'px; margin-left: ' + values['left'] + 'px;">' +
-				'<img id="image_' + id_data + '" class="image" src="' + getImageElement(id_data) + '" ' + imageSize + ' /><br />' +
+				'<img id="image_' + id_data + '" class="image" src="' + img_src + '" ' + imageSize + ' /><br />' +
 				'<span id="text_' + id_data + '" class="text">' + values['label'] + '</span>' + 
 				'</div><input id="hidden-status_' + id_data + '" type="hidden" value="' + element_status + '" name="status_' + id_data + '">'
 			);
@@ -741,8 +806,27 @@ function createItem(type, values, id_data) {
 				var sizeStyle = 'width: ' + values['width']  + 'px; height: ' + values['height'] + 'px;';
 				var imageSize = 'width="' + values['width']  + '" height="' + values['height'] + '"';
 			}
+
+			var img_src= null;
+			var parameter = Array();
+			parameter.push ({name: "page", value: "include/ajax/skins.ajax"});
+			parameter.push ({name: "get_image_path", value: "1"});
+			parameter.push ({name: "img_src", value: getImageElement(id_data)});
+			parameter.push ({name: "only_src", value: "1"});
+
+			jQuery.ajax ({
+				type: 'POST',
+				url: action="ajax.php",
+				data: parameter,
+				async: false,
+				timeout: 10000,
+				success: function (data) {
+					img_src = data;
+				}
+			});
+
 			var item = $('<div id="' + id_data + '" class="item icon" style="left: 0px; top: 0px; color: ' + values['label_color'] + '; text-align: center; position: absolute; ' + sizeStyle + ' margin-top: ' + values['top'] + 'px; margin-left: ' + values['left'] + 'px;">' +
-				'<img id="image_' + id_data + '" class="image" src="' + getImageElement(id_data) + '" ' + imageSize + ' /><br />' + 
+				'<img id="image_' + id_data + '" class="image" src="' + img_src + '" ' + imageSize + ' /><br />' + 
 				'</div>'
 			);
 			break;
@@ -1225,10 +1309,26 @@ function showPreviewStaticGraph(staticGraph) {
 	
 	if (staticGraph != '') {
 		imgBase = "images/console/icons/" + staticGraph;
-		$("#preview").append("<img src='" + imgBase + "_bad.png' />");
-		$("#preview").append("<img src='" + imgBase + "_ok.png' />");
-		$("#preview").append("<img src='" + imgBase + "_warning.png' />");
-		$("#preview").append("<img src='" + imgBase + ".png' />");
+
+		var img_src= null;
+		var parameter = Array();
+		parameter.push ({name: "page", value: "include/ajax/visual_console_builder.ajax"});
+		parameter.push ({name: "get_image_path_status", value: "1"});
+		parameter.push ({name: "img_src", value: imgBase });
+
+		jQuery.ajax ({
+			type: 'POST',
+			url: action="ajax.php",
+			data: parameter,
+			async: false,
+			dataType: 'json',
+			timeout: 10000,
+			success: function (data) {
+				jQuery.each(data, function(i, line) {
+					$("#preview").append(line);
+				});
+			}
+		});
 	}
 }
 
@@ -1238,6 +1338,20 @@ function showPreviewIcon(icon) {
 	
 	if (icon != '') {
 		imgBase = "images/console/icons/" + icon;
-		$("#preview").append("<img src='" + imgBase + ".png' />");
+
+		var params = [];
+		params.push("get_image_path=1");
+		params.push("img_src=" + imgBase + ".png");
+		params.push("page=include/ajax/skins.ajax");
+		jQuery.ajax ({
+			data: params.join ("&"),
+			type: 'POST',
+			url: action="ajax.php",
+			async: false,
+			timeout: 10000,
+			success: function (data) {
+				$("#preview").append(data);
+			}
+		});	
 	}
 }
diff --git a/pandora_console/godmode/reporting/visual_console_builder.editor.php b/pandora_console/godmode/reporting/visual_console_builder.editor.php
index 985463e988..a38633c9bd 100644
--- a/pandora_console/godmode/reporting/visual_console_builder.editor.php
+++ b/pandora_console/godmode/reporting/visual_console_builder.editor.php
@@ -32,7 +32,11 @@ if (is_ajax ()) {
 	
 	if ($get_original_size_background) {
 		$background = get_parameter('background', '');
-		$size = getimagesize($background);
+		$replace = strlen($config["homeurl"] . '/');
+		if (substr($background, 0, $replace) == $config["homeurl"] . '/')
+			$size = getimagesize(substr($background, $replace));
+		else
+			$size = getimagesize($background);
 		echo json_encode($size);
 		return;
 	}
diff --git a/pandora_console/godmode/setup/os.builder.php b/pandora_console/godmode/setup/os.builder.php
index 90909fb4e1..c289581de1 100644
--- a/pandora_console/godmode/setup/os.builder.php
+++ b/pandora_console/godmode/setup/os.builder.php
@@ -74,6 +74,20 @@ function get_list_os_icons_dir() {
 <script type="text/javascript">
 
 function show_icon_OS() {
-	$("#icon_image").html('<img src="images/os_icons/' + $("#icon").val() + '" />');
+
+	var params = [];
+	params.push("get_image_path=1");
+	params.push('img_src=images/os_icons/' + $("#icon").val());
+	params.push("page=include/ajax/skins.ajax");
+	jQuery.ajax ({
+		data: params.join ("&"),
+		type: 'POST',
+		url: action="ajax.php",
+		async: false,
+		timeout: 10000,
+		success: function (data) {
+			$("#icon_image").html(data);		
+		}
+	});
 }
 </script>
\ No newline at end of file
diff --git a/pandora_console/include/ajax/skins.ajax.php b/pandora_console/include/ajax/skins.ajax.php
new file mode 100644
index 0000000000..f74abbf130
--- /dev/null
+++ b/pandora_console/include/ajax/skins.ajax.php
@@ -0,0 +1,37 @@
+<?php
+// Pandora FMS - http://pandorafms.com
+// ==================================================
+// Copyright (c) 2005-2009 Artica Soluciones Tecnologicas
+// Please see http://pandorafms.org for full contribution list
+
+// 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 for version 2.
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Login check
+global $config;
+
+check_login ();
+
+if (! give_acl ($config['id_user'], 0, "IR")) {
+	pandora_audit("ACL Violation",
+		"Trying to access report builder");
+	require ("general/noaccess.php");
+	exit;
+}
+
+$get_image_path = get_parameter('get_image_path', 0);
+
+/* skins image checks */
+if ($get_image_path){
+	$img_src = get_parameter("img_src");
+	$only_src = get_parameter("only_src", 0);
+
+	return print_image($img_src, false, '', $only_src);
+}
+
+?>
diff --git a/pandora_console/include/ajax/visual_console_builder.ajax.php b/pandora_console/include/ajax/visual_console_builder.ajax.php
index 51c61d7b26..3d46a6216d 100644
--- a/pandora_console/include/ajax/visual_console_builder.ajax.php
+++ b/pandora_console/include/ajax/visual_console_builder.ajax.php
@@ -53,6 +53,7 @@ $height_module_graph = get_parameter('height_module_graph', null);
 $width_module_graph = get_parameter('width_module_graph', null);
 
 $get_element_status = get_parameter('get_element_status', 0);
+$get_image_path_status = get_parameter('get_image_path_status', 0);
 
 switch ($action) {
 	case 'get_layout_data':
@@ -297,4 +298,19 @@ if ($get_element_status){
 	return;
 }
 
+if ($get_image_path_status){
+	$img_src = get_parameter("img_src");
+	$only_src = get_parameter("only_src", 0);
+
+	$result = array();
+	
+	$result['bad'] = print_image($img_src . '_bad.png', true, '', $only_src);
+	$result['ok'] = print_image($img_src . '_ok.png', true, '', $only_src);
+	$result['warning'] = print_image($img_src . '_warning.png', true, '', $only_src);
+	$result['ok'] = print_image($img_src . '_ok.png', true, '', $only_src);
+	$result['normal'] = print_image($img_src . '.png', true, '', $only_src);
+
+	echo json_encode($result);
+}
+
 ?>
\ No newline at end of file
diff --git a/pandora_console/include/functions_gis.php b/pandora_console/include/functions_gis.php
index d42c564f82..a99b98356a 100644
--- a/pandora_console/include/functions_gis.php
+++ b/pandora_console/include/functions_gis.php
@@ -165,10 +165,27 @@ function makeLayer($name, $visible = true, $dot = null, $idLayer = null) {
 						var long_lat = featureData.long_lat;
 						var popup;
 						
+						var img_src= null;
+						var parameter = Array();
+						parameter.push ({name: "page", value: "include/ajax/skins.ajax"});
+						parameter.push ({name: "get_image_path", value: "1"});
+						parameter.push ({name: "img_src", value: "images/spinner.gif"});
+
+						jQuery.ajax ({
+							type: 'POST',
+							url: action="ajax.php",
+							data: parameter,
+							async: false,
+							timeout: 10000,
+							success: function (data) {
+								img_src = data;
+							}
+						});						
+
 						popup = new OpenLayers.Popup.FramedCloud('cloud00',
 								long_lat,
 								null,
-								'<div class="cloudContent' + featureData.id + '" style="text-align: center;"><img src="images/spinner.gif" /></div>',
+								'<div class="cloudContent' + featureData.id + '" style="text-align: center;">' + img_src + '</div>',
 								null,
 								true,
 								function () { popup.destroy(); });
diff --git a/pandora_console/include/functions_html.php b/pandora_console/include/functions_html.php
index a00f1a8cc5..bb24401b15 100644
--- a/pandora_console/include/functions_html.php
+++ b/pandora_console/include/functions_html.php
@@ -1094,10 +1094,11 @@ function print_checkbox ($name, $value, $checked = false, $return = false, $disa
  * @param bool $return Whether to return or print
  * @param array $options Array with optional HTML options to set. At this moment, the 
  * following options are supported: alt, style, title, width, height, class, pos_tree.
+ * @param bool $return_src Whether to return src field of image ('images/*.*') or complete html img tag ('<img src="..." alt="...">'). 
  *
  * @return string HTML code if return parameter is true.
  */
-function print_image ($src, $return = false, $options = false) {
+function print_image ($src, $return = false, $options = false, $return_src = false) {
 	global $config;
 
 	/* Checks if user's skin is available */
@@ -1112,6 +1113,15 @@ function print_image ($src, $return = false, $options = false) {
 	// path to image 
 	$src = $config["homeurl"] . '/' . $src;
 
+	// Only return src field of image
+	if ($return_src){
+		if (!$return){ 
+			echo safe_input($src); 
+			return; 
+		}
+		return safe_input($src);
+	}
+
 	$output = '<img src="'.safe_input ($src).'" '; //safe input necessary to strip out html entities correctly
 	$style = '';