From ae5ad0a65508725871159ffb6a068fcb2084aad7 Mon Sep 17 00:00:00 2001 From: cash Date: Sat, 2 Jul 2011 11:36:53 -0400 Subject: added the inspect tool to developers tool plugin --- mod/developers/start.php | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'mod/developers/start.php') diff --git a/mod/developers/start.php b/mod/developers/start.php index c05432e30..a53b7eec4 100644 --- a/mod/developers/start.php +++ b/mod/developers/start.php @@ -17,6 +17,13 @@ function developers_init() { $action_base = elgg_get_plugins_path() . 'developers/actions/developers'; elgg_register_action('developers/settings', "$action_base/settings.php", 'admin'); + elgg_register_action('developers/inspect', "$action_base/inspect.php", 'admin'); + + elgg_register_js('jquery.jstree', 'mod/developers/vendors/jsTree/jquery.jstree.js', 'footer'); + elgg_register_css('jquery.jstree', 'mod/developers/vendors/jsTree/themes/default/style.css'); + + elgg_register_js('elgg.dev', 'js/developers/developers.js', 'footer'); + elgg_load_js('elgg.dev'); } function developers_process_settings() { @@ -30,6 +37,7 @@ function developers_process_settings() { function developers_setup_menu() { if (elgg_in_context('admin')) { elgg_register_admin_menu_item('develop', 'settings', 'developers'); + elgg_register_admin_menu_item('develop', 'inspect', 'developers'); elgg_register_admin_menu_item('develop', 'preview', 'developers'); } } -- cgit v1.2.3 From c4a53af23533d44383a87b5180b15e1a01a0e18a Mon Sep 17 00:00:00 2001 From: cash 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/start.php') 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 @@ +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 @@ +get(); + +echo '
'; +foreach ($items as $item) { + echo '
';
+	print_r($item);
+	echo '
'; +} + +echo '
'; \ No newline at end of file -- cgit v1.2.3 From a60e2d661f8895ed643b5c0b38e18add806a6883 Mon Sep 17 00:00:00 2001 From: cash 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/start.php') 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 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/start.php') 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 = "$result"; + } + + 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 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/start.php') 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