diff options
Diffstat (limited to 'mod/developers/start.php')
| -rw-r--r-- | mod/developers/start.php | 87 |
1 files changed, 75 insertions, 12 deletions
diff --git a/mod/developers/start.php b/mod/developers/start.php index 27a14b336..94d0f652c 100644 --- a/mod/developers/start.php +++ b/mod/developers/start.php @@ -23,6 +23,8 @@ function developers_init() { 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_load_js('jquery.form'); + elgg_register_js('elgg.dev', 'js/developers/developers.js', 'footer'); elgg_load_js('elgg.dev'); } @@ -48,21 +50,35 @@ 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); } } 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'); + elgg_register_admin_menu_item('develop', 'inspect', 'develop_tools'); + elgg_register_admin_menu_item('develop', 'preview', 'develop_tools'); + elgg_register_admin_menu_item('develop', 'unit_tests', 'develop_tools'); + + elgg_register_menu_item('page', array( + 'name' => 'dev_settings', + 'href' => 'admin/developers/settings', + 'text' => elgg_echo('settings'), + 'context' => 'admin', + 'priority' => 10, + 'section' => 'develop' + )); } } /** -* Clear all the strings so the raw descriptor strings are displayed -*/ + * Clear all the strings so the raw descriptor strings are displayed + */ function developers_clear_strings() { global $CONFIG; @@ -73,6 +89,15 @@ function developers_clear_strings() { /** * Post-process a view to add wrapper comments to it + * + * 1. Only process views served with the 'default' viewtype. + * 2. Does not wrap views that begin with js/ or css/ as they are not HTML. + * 3. Does not wrap views that are images (start with icon/). Is this still true? + * 4. Does not wrap input and output views (why?). + * 5. Does not wrap html head or the primary page shells + * + * @warning this will break views in the default viewtype that return non-HTML data + * that do not match the above restrictions. */ function developers_wrap_views($hook, $type, $result, $params) { if (elgg_get_viewtype() != "default") { @@ -106,9 +131,45 @@ function developers_wrap_views($hook, $type, $result, $params) { } /** + * 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 * * @param array $page + * @return bool */ function developers_theme_preview_controller($page) { if (!isset($page[0])) { @@ -117,13 +178,14 @@ function developers_theme_preview_controller($page) { $pages = array( 'buttons', - 'components', - 'forms', - 'grid', + 'components', + 'forms', + 'grid', 'icons', - 'modules', - 'navigation', - 'typography', + 'modules', + 'navigation', + 'typography', + 'miscellaneous' ); foreach ($pages as $page_name) { @@ -143,4 +205,5 @@ function developers_theme_preview_controller($page) { )); echo elgg_view_page($title, $layout, 'theme_preview'); + return true; } |
