From ae5ad0a65508725871159ffb6a068fcb2084aad7 Mon Sep 17 00:00:00 2001
From: cash <cash.costello@gmail.com>
Date: Sat, 2 Jul 2011 11:36:53 -0400
Subject: added the inspect tool to developers tool plugin

---
 mod/developers/views/default/admin/developers/inspect.php | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
 create mode 100644 mod/developers/views/default/admin/developers/inspect.php

(limited to 'mod/developers/views/default/admin')

diff --git a/mod/developers/views/default/admin/developers/inspect.php b/mod/developers/views/default/admin/developers/inspect.php
new file mode 100644
index 000000000..cfa3de2ea
--- /dev/null
+++ b/mod/developers/views/default/admin/developers/inspect.php
@@ -0,0 +1,14 @@
+<?php
+/**
+* Inspect View
+*
+* Inspect global variables of Elgg
+*/
+
+elgg_load_js('jquery.jstree');
+elgg_load_css('jquery.jstree');
+
+echo elgg_view_form('developers/inspect', array('class' => 'developers-form-inspect'));
+
+echo '<div id="developers-inspect-results"></div>';
+echo elgg_view('graphics/ajax_loader', array('id' => 'developers-ajax-loader'));
-- 
cgit v1.2.3


From c4a53af23533d44383a87b5180b15e1a01a0e18a Mon Sep 17 00:00:00 2001
From: cash <cash.costello@gmail.com>
Date: Sat, 2 Jul 2011 12:07:27 -0400
Subject: added logging to the web page footer

---
 engine/classes/ElggPlugin.php                      | 10 ++---
 mod/developers/actions/developers/settings.php     |  3 ++
 mod/developers/classes/ElggLogCache.php            | 43 ++++++++++++++++++++++
 mod/developers/languages/en.php                    |  5 +++
 mod/developers/start.php                           |  8 ++++
 .../views/default/admin/developers/settings.php    |  7 ++++
 mod/developers/views/default/developers/css.php    |  6 +++
 mod/developers/views/default/developers/log.php    | 16 ++++++++
 8 files changed, 93 insertions(+), 5 deletions(-)
 create mode 100644 mod/developers/classes/ElggLogCache.php
 create mode 100644 mod/developers/views/default/developers/log.php

(limited to 'mod/developers/views/default/admin')

diff --git a/engine/classes/ElggPlugin.php b/engine/classes/ElggPlugin.php
index 95a7362e2..e46ac4273 100644
--- a/engine/classes/ElggPlugin.php
+++ b/engine/classes/ElggPlugin.php
@@ -700,6 +700,11 @@ class ElggPlugin extends ElggObject {
 //			return false;
 //		}
 
+		// include classes
+		if ($flags & ELGG_PLUGIN_REGISTER_CLASSES) {
+			$this->registerClasses();
+		}
+		
 		// include start file
 		if ($flags & ELGG_PLUGIN_INCLUDE_START) {
 			$this->includeFile('start.php');
@@ -715,11 +720,6 @@ class ElggPlugin extends ElggObject {
 			$this->registerLanguages();
 		}
 
-		// include classes
-		if ($flags & ELGG_PLUGIN_REGISTER_CLASSES) {
-			$this->registerClasses();
-		}
-
 		return true;
 	}
 
diff --git a/mod/developers/actions/developers/settings.php b/mod/developers/actions/developers/settings.php
index d8be34866..9fa96fa91 100644
--- a/mod/developers/actions/developers/settings.php
+++ b/mod/developers/actions/developers/settings.php
@@ -18,6 +18,7 @@ if (get_input('view_path_cache')) {
 }
 
 elgg_set_plugin_setting('display_errors', get_input('display_errors'), 'developers');
+elgg_set_plugin_setting('screen_log', get_input('screen_log'), 'developers');
 
 $debug = get_input('debug_level');
 if ($debug) {
@@ -26,4 +27,6 @@ if ($debug) {
 	unset_config('debug', $site->getGUID());
 }
 
+system_message(elgg_echo('developers:settings:success'));
+
 forward(REFERER);
diff --git a/mod/developers/classes/ElggLogCache.php b/mod/developers/classes/ElggLogCache.php
new file mode 100644
index 000000000..19df598d7
--- /dev/null
+++ b/mod/developers/classes/ElggLogCache.php
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Cache logging information for later display
+ *
+ */
+
+class ElggLogCache {
+	protected $cache;
+
+	public function __construct() {
+		$this->cache = array();
+	}
+
+	/**
+	 * Insert into cache
+	 * 
+	 * @param mixed $data The log data to cache
+	 */
+	public function insert($data) {
+		$this->cache[] = $data;
+	}
+
+	/**
+	 * Insert into cache from plugin hook
+	 * 
+	 * @param string $hook
+	 * @param string $type
+	 * @param bool   $result 
+	 * @param array  $params Must have the data at $params['msg']
+	 */
+	public function insertDump($hook, $type, $result, $params) {
+		$this->insert($params['msg']);
+	}
+
+	/**
+	 * Get the cache
+	 *
+	 * @return array
+	 */
+	public function get() {
+		return $this->cache;
+	}
+}
diff --git a/mod/developers/languages/en.php b/mod/developers/languages/en.php
index dc763765c..053eed04f 100644
--- a/mod/developers/languages/en.php
+++ b/mod/developers/languages/en.php
@@ -21,6 +21,8 @@ $english = array(
 	'developers:help:debug_level' => "This controls the amount of information logged. See elgg_log() for more information.",
 	'developers:label:display_errors' => 'Display fatal PHP errors',
 	'developers:help:display_errors' => "By default, Elgg's .htaccess file supresses the display of fatal errors.",
+	'developers:label:screen_log' => "Log to the screen",
+	'developers:help:screen_log' => "This displays elgg_log() and elgg_dump() output on the web page.",
 
 	'developers:debug:off' => 'Off',
 	'developers:debug:error' => 'Error',
@@ -41,6 +43,9 @@ $english = array(
 	'theme_preview:modules' => 'Modules',
 	'theme_preview:navigation' => 'Navigation',
 	'theme_preview:typography' => 'Typography',
+
+	// status messages
+	'developers:settings:success' => 'Settings saved',
 );
 
 add_translation('en', $english);
diff --git a/mod/developers/start.php b/mod/developers/start.php
index a53b7eec4..23b82d9db 100644
--- a/mod/developers/start.php
+++ b/mod/developers/start.php
@@ -12,6 +12,7 @@ function developers_init() {
 	elgg_register_event_handler('pagesetup', 'system', 'developers_setup_menu');
 
 	elgg_extend_view('css/admin', 'developers/css');
+	elgg_extend_view('css/elgg', 'developers/css');
 
 	elgg_register_page_handler('theme_preview', 'developers_theme_preview_controller');
 
@@ -32,6 +33,13 @@ function developers_process_settings() {
 	} else {
 		ini_set('display_errors', 0);
 	}
+
+	if (elgg_get_plugin_setting('screen_log', 'developers') == 1) {
+		$cache = new ElggLogCache();
+		elgg_set_config('log_cache', $cache);
+		elgg_register_plugin_hook_handler('debug', 'log', array($cache, 'insertDump'));
+		elgg_extend_view('page/elements/foot', 'developers/log');
+	}
 }
 
 function developers_setup_menu() {
diff --git a/mod/developers/views/default/admin/developers/settings.php b/mod/developers/views/default/admin/developers/settings.php
index 705ad00c6..3843c2c30 100644
--- a/mod/developers/views/default/admin/developers/settings.php
+++ b/mod/developers/views/default/admin/developers/settings.php
@@ -8,6 +8,7 @@ $sections = array(
 	'view_path_cache' => 'checkbox',
 	'display_errors' => 'checkbox',
 	'debug_level' => 'pulldown',
+	'screen_log' => 'checkbox',
 );
 
 $data = array(
@@ -39,6 +40,12 @@ $data = array(
 			'NOTICE' => elgg_echo('developers:debug:notice'),
 		),
 	),
+
+	'screen_log' => array(
+		'type' => 'checkbox',
+		'value' => 1,
+		'checked' => elgg_get_plugin_setting('screen_log', 'developers') == 1,
+	),
 );
 
 $form_vars = array('id' => 'developer-settings-form');
diff --git a/mod/developers/views/default/developers/css.php b/mod/developers/views/default/developers/css.php
index 3aa226d0a..4690945a9 100644
--- a/mod/developers/views/default/developers/css.php
+++ b/mod/developers/views/default/developers/css.php
@@ -15,3 +15,9 @@
 .elgg-page .jstree-default.jstree-focused {
 	background-color: transparent;
 }
+.developers-log {
+	background-color: #EBF5FF;
+	border: 1px solid #999;
+	color: #666;
+	padding: 20px;
+}
diff --git a/mod/developers/views/default/developers/log.php b/mod/developers/views/default/developers/log.php
new file mode 100644
index 000000000..eca2b4b67
--- /dev/null
+++ b/mod/developers/views/default/developers/log.php
@@ -0,0 +1,16 @@
+<?php
+/**
+ * Logging information
+ */
+
+$cache = elgg_get_config('log_cache');
+$items = $cache->get();
+
+echo '<div class="developers-log">';
+foreach ($items as $item) {
+	echo '<pre>';
+	print_r($item);
+	echo '</pre>';
+}
+
+echo '</div>';
\ No newline at end of file
-- 
cgit v1.2.3


From a60e2d661f8895ed643b5c0b38e18add806a6883 Mon Sep 17 00:00:00 2001
From: cash <cash.costello@gmail.com>
Date: Sat, 2 Jul 2011 19:22:07 -0400
Subject: Fixes #3500 added setting for raw string display

---
 mod/developers/actions/developers/settings.php          |  8 +++++---
 mod/developers/languages/en.php                         |  2 ++
 mod/developers/start.php                                | 17 +++++++++++++++++
 .../views/default/admin/developers/settings.php         | 14 ++++++--------
 4 files changed, 30 insertions(+), 11 deletions(-)

(limited to 'mod/developers/views/default/admin')

diff --git a/mod/developers/actions/developers/settings.php b/mod/developers/actions/developers/settings.php
index 9fa96fa91..5a7f97cd3 100644
--- a/mod/developers/actions/developers/settings.php
+++ b/mod/developers/actions/developers/settings.php
@@ -17,9 +17,6 @@ if (get_input('view_path_cache')) {
 	elgg_disable_filepath_cache();
 }
 
-elgg_set_plugin_setting('display_errors', get_input('display_errors'), 'developers');
-elgg_set_plugin_setting('screen_log', get_input('screen_log'), 'developers');
-
 $debug = get_input('debug_level');
 if ($debug) {
 	set_config('debug', $debug, $site->getGUID());
@@ -27,6 +24,11 @@ if ($debug) {
 	unset_config('debug', $site->getGUID());
 }
 
+$simple_settings = array('display_errors', 'screen_log', 'show_strings');
+foreach ($simple_settings as $setting) {
+	elgg_set_plugin_setting($setting, get_input($setting), 'developers');
+}
+
 system_message(elgg_echo('developers:settings:success'));
 
 forward(REFERER);
diff --git a/mod/developers/languages/en.php b/mod/developers/languages/en.php
index 053eed04f..827eb6ba3 100644
--- a/mod/developers/languages/en.php
+++ b/mod/developers/languages/en.php
@@ -23,6 +23,8 @@ $english = array(
 	'developers:help:display_errors' => "By default, Elgg's .htaccess file supresses the display of fatal errors.",
 	'developers:label:screen_log' => "Log to the screen",
 	'developers:help:screen_log' => "This displays elgg_log() and elgg_dump() output on the web page.",
+	'developers:label:show_strings' => "Show raw translation strings",
+	'developers:help:show_strings' => "This displays the translation strings used by elgg_echo().",
 
 	'developers:debug:off' => 'Off',
 	'developers:debug:error' => 'Error',
diff --git a/mod/developers/start.php b/mod/developers/start.php
index 23b82d9db..b864bca1e 100644
--- a/mod/developers/start.php
+++ b/mod/developers/start.php
@@ -40,6 +40,12 @@ function developers_process_settings() {
 		elgg_register_plugin_hook_handler('debug', 'log', array($cache, 'insertDump'));
 		elgg_extend_view('page/elements/foot', 'developers/log');
 	}
+
+	if (elgg_get_plugin_setting('show_strings', 'developers') == 1) {
+		// first and last in case a plugin registers a translation in an init method
+		register_elgg_event_handler('init', 'system', 'developers_clear_strings', 1000);
+		register_elgg_event_handler('init', 'system', 'developers_clear_strings', 1);
+	}
 }
 
 function developers_setup_menu() {
@@ -50,6 +56,17 @@ function developers_setup_menu() {
 	}
 }
 
+/**
+* Clear all the strings so the raw descriptor strings are displayed
+*/
+function developers_clear_strings() {
+	global $CONFIG;
+
+	$language = get_language();
+	$CONFIG->translations[$language] = array();
+	$CONFIG->translations['en'] = array();
+}
+
 /**
  * Serve the theme preview pages
  *
diff --git a/mod/developers/views/default/admin/developers/settings.php b/mod/developers/views/default/admin/developers/settings.php
index 3843c2c30..a1ae6c186 100644
--- a/mod/developers/views/default/admin/developers/settings.php
+++ b/mod/developers/views/default/admin/developers/settings.php
@@ -3,14 +3,6 @@
  * Developer settings
  */
 
-$sections = array(
-	'simple_cache' => 'checkbox',
-	'view_path_cache' => 'checkbox',
-	'display_errors' => 'checkbox',
-	'debug_level' => 'pulldown',
-	'screen_log' => 'checkbox',
-);
-
 $data = array(
 	'simple_cache' => array(
 		'type' => 'checkbox',
@@ -46,6 +38,12 @@ $data = array(
 		'value' => 1,
 		'checked' => elgg_get_plugin_setting('screen_log', 'developers') == 1,
 	),
+	
+	'show_strings' => array(
+		'type' => 'checkbox',
+		'value' => 1,
+		'checked' => elgg_get_plugin_setting('show_strings', 'developers') == 1,
+	),
 );
 
 $form_vars = array('id' => 'developer-settings-form');
-- 
cgit v1.2.3


From 21cda6136548a46670ca84fae76a046f57927115 Mon Sep 17 00:00:00 2001
From: cash <cash.costello@gmail.com>
Date: Sat, 2 Jul 2011 19:51:22 -0400
Subject: Fixes #3152 adds wrapping of views with comments

---
 mod/developers/actions/developers/settings.php     |  2 +-
 mod/developers/languages/en.php                    |  2 ++
 mod/developers/start.php                           | 42 ++++++++++++++++++++--
 .../views/default/admin/developers/settings.php    |  6 ++++
 4 files changed, 49 insertions(+), 3 deletions(-)

(limited to 'mod/developers/views/default/admin')

diff --git a/mod/developers/actions/developers/settings.php b/mod/developers/actions/developers/settings.php
index 5a7f97cd3..f7caf859d 100644
--- a/mod/developers/actions/developers/settings.php
+++ b/mod/developers/actions/developers/settings.php
@@ -24,7 +24,7 @@ if ($debug) {
 	unset_config('debug', $site->getGUID());
 }
 
-$simple_settings = array('display_errors', 'screen_log', 'show_strings');
+$simple_settings = array('display_errors', 'screen_log', 'show_strings', 'wrap_views');
 foreach ($simple_settings as $setting) {
 	elgg_set_plugin_setting($setting, get_input($setting), 'developers');
 }
diff --git a/mod/developers/languages/en.php b/mod/developers/languages/en.php
index 827eb6ba3..a20241eff 100644
--- a/mod/developers/languages/en.php
+++ b/mod/developers/languages/en.php
@@ -25,6 +25,8 @@ $english = array(
 	'developers:help:screen_log' => "This displays elgg_log() and elgg_dump() output on the web page.",
 	'developers:label:show_strings' => "Show raw translation strings",
 	'developers:help:show_strings' => "This displays the translation strings used by elgg_echo().",
+	'developers:label:wrap_views' => "Wrap views",
+	'developers:help:wrap_views' => "This wraps almost every view with HTML comments. Useful for finding the view creating particular HTML.",
 
 	'developers:debug:off' => 'Off',
 	'developers:debug:error' => 'Error',
diff --git a/mod/developers/start.php b/mod/developers/start.php
index b864bca1e..27a14b336 100644
--- a/mod/developers/start.php
+++ b/mod/developers/start.php
@@ -43,8 +43,12 @@ function developers_process_settings() {
 
 	if (elgg_get_plugin_setting('show_strings', 'developers') == 1) {
 		// first and last in case a plugin registers a translation in an init method
-		register_elgg_event_handler('init', 'system', 'developers_clear_strings', 1000);
-		register_elgg_event_handler('init', 'system', 'developers_clear_strings', 1);
+		elgg_register_event_handler('init', 'system', 'developers_clear_strings', 1000);
+		elgg_register_event_handler('init', 'system', 'developers_clear_strings', 1);
+	}
+
+	if (elgg_get_plugin_setting('wrap_views', 'developers') == 1) {
+		register_plugin_hook('view', 'all', 'developers_wrap_views');
 	}
 }
 
@@ -67,6 +71,40 @@ function developers_clear_strings() {
 	$CONFIG->translations['en'] = array();
 }
 
+/**
+ * Post-process a view to add wrapper comments to it
+ */
+function developers_wrap_views($hook, $type, $result, $params) {
+	if (elgg_get_viewtype() != "default") {
+		return;
+	}
+
+	$excluded_bases = array('css', 'js', 'input', 'output', 'embed', 'icon',);
+
+	$excluded_views = array(
+		'page/default',
+		'page/admin',
+		'page/elements/head',
+	);
+
+	$view = $params['view'];
+
+	$view_hierarchy = explode('/',$view);
+	if (in_array($view_hierarchy[0], $excluded_bases)) {
+		return;
+	}
+
+	if (in_array($view, $excluded_views)) {
+		return;
+	}
+
+	if ($result) {
+		$result = "<!-- developers:begin $view -->$result<!-- developers:end $view -->";
+	}
+
+	return $result;
+}
+
 /**
  * Serve the theme preview pages
  *
diff --git a/mod/developers/views/default/admin/developers/settings.php b/mod/developers/views/default/admin/developers/settings.php
index a1ae6c186..d463955b6 100644
--- a/mod/developers/views/default/admin/developers/settings.php
+++ b/mod/developers/views/default/admin/developers/settings.php
@@ -44,6 +44,12 @@ $data = array(
 		'value' => 1,
 		'checked' => elgg_get_plugin_setting('show_strings', 'developers') == 1,
 	),
+
+	'wrap_views' => array(
+		'type' => 'checkbox',
+		'value' => 1,
+		'checked' => elgg_get_plugin_setting('wrap_views', 'developers') == 1,
+	),
 );
 
 $form_vars = array('id' => 'developer-settings-form');
-- 
cgit v1.2.3


From b3382a41496bee4b66bc69421b9612bedfb77913 Mon Sep 17 00:00:00 2001
From: cash <cash.costello@gmail.com>
Date: Sat, 2 Jul 2011 23:16:59 -0400
Subject: added logging of events and plugin hooks

---
 mod/developers/actions/developers/settings.php     |  3 +-
 mod/developers/languages/en.php                    |  5 +++
 mod/developers/start.php                           | 42 +++++++++++++++++++++-
 .../views/default/admin/developers/settings.php    |  6 ++++
 4 files changed, 54 insertions(+), 2 deletions(-)

(limited to 'mod/developers/views/default/admin')

diff --git a/mod/developers/actions/developers/settings.php b/mod/developers/actions/developers/settings.php
index f7caf859d..811fd22c0 100644
--- a/mod/developers/actions/developers/settings.php
+++ b/mod/developers/actions/developers/settings.php
@@ -24,7 +24,8 @@ if ($debug) {
 	unset_config('debug', $site->getGUID());
 }
 
-$simple_settings = array('display_errors', 'screen_log', 'show_strings', 'wrap_views');
+$simple_settings = array('display_errors', 'screen_log', 'show_strings',
+	'wrap_views', 'log_events',);
 foreach ($simple_settings as $setting) {
 	elgg_set_plugin_setting($setting, get_input($setting), 'developers');
 }
diff --git a/mod/developers/languages/en.php b/mod/developers/languages/en.php
index a20241eff..42df52134 100644
--- a/mod/developers/languages/en.php
+++ b/mod/developers/languages/en.php
@@ -27,6 +27,8 @@ $english = array(
 	'developers:help:show_strings' => "This displays the translation strings used by elgg_echo().",
 	'developers:label:wrap_views' => "Wrap views",
 	'developers:help:wrap_views' => "This wraps almost every view with HTML comments. Useful for finding the view creating particular HTML.",
+	'developers:label:log_events' => "Log events and plugin hooks",
+	'developers:help:log_events' => "Write events and plugin hooks to the log. Warning: there are many of these per page.",
 
 	'developers:debug:off' => 'Off',
 	'developers:debug:error' => 'Error',
@@ -36,6 +38,9 @@ $english = array(
 	// inspection
 	'developers:inspect:help' => 'Inspect configuration of the Elgg framework.',
 
+	// event logging
+	'developers:event_log_msg' => "%s: '%s, %s' in %s",
+
 	// theme preview
 	'theme_preview:general' => 'Introduction',
 	'theme_preview:breakout' => 'Break out of iframe',
diff --git a/mod/developers/start.php b/mod/developers/start.php
index 27a14b336..d9e1141e0 100644
--- a/mod/developers/start.php
+++ b/mod/developers/start.php
@@ -48,7 +48,12 @@ function developers_process_settings() {
 	}
 
 	if (elgg_get_plugin_setting('wrap_views', 'developers') == 1) {
-		register_plugin_hook('view', 'all', 'developers_wrap_views');
+		elgg_register_plugin_hook_handler('view', 'all', 'developers_wrap_views');
+	}
+
+	if (elgg_get_plugin_setting('log_events', 'developers') == 1) {
+		elgg_register_event_handler('all', 'all', 'developers_log_events', 1);
+		elgg_register_plugin_hook_handler('all', 'all', 'developers_log_events', 1);
 	}
 }
 
@@ -105,6 +110,41 @@ function developers_wrap_views($hook, $type, $result, $params) {
 	return $result;
 }
 
+/**
+* Log the events and plugin hooks
+*/
+function developers_log_events($name, $type) {
+
+	// filter out some very common events
+	if ($name == 'view' || $name == 'display' || $name == 'log' || $name == 'debug') {
+		return;
+	}
+	if ($name == 'session:get' || $name == 'validate') {
+		return;
+	}
+
+	$stack = debug_backtrace();
+	if ($stack[2]['function'] == 'elgg_trigger_event') {
+		$event_type = 'Event';
+	} else {
+		$event_type = 'Plugin hook';
+	}
+	$function = $stack[3]['function'] . '()';
+	if ($function == 'require_once' || $function == 'include_once') {
+		$function = $stack[3]['file'];
+	}
+
+	$msg = elgg_echo('developers:event_log_msg', array(
+		$event_type,
+		$name,
+		$type,
+		$function,
+	));
+	elgg_dump($msg, false, 'WARNING');
+
+	unset($stack);
+}
+
 /**
  * Serve the theme preview pages
  *
diff --git a/mod/developers/views/default/admin/developers/settings.php b/mod/developers/views/default/admin/developers/settings.php
index d463955b6..287f4d99e 100644
--- a/mod/developers/views/default/admin/developers/settings.php
+++ b/mod/developers/views/default/admin/developers/settings.php
@@ -50,6 +50,12 @@ $data = array(
 		'value' => 1,
 		'checked' => elgg_get_plugin_setting('wrap_views', 'developers') == 1,
 	),
+
+	'log_events' => array(
+		'type' => 'checkbox',
+		'value' => 1,
+		'checked' => elgg_get_plugin_setting('log_events', 'developers') == 1,
+	),
 );
 
 $form_vars = array('id' => 'developer-settings-form');
-- 
cgit v1.2.3