From 64bbdaf4a13bd4beb252c95493e229291db91073 Mon Sep 17 00:00:00 2001 From: cash Date: Wed, 23 Mar 2011 00:34:36 +0000 Subject: Fixes #3180 adds ajax page handler git-svn-id: http://code.elgg.org/elgg/trunk@8820 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/elgglib.php | 41 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php index 5b0ff8365..7076ec12d 100644 --- a/engine/lib/elgglib.php +++ b/engine/lib/elgglib.php @@ -1672,7 +1672,7 @@ function _elgg_shutdown_hook() { * @return void * @elgg_pagehandler js */ -function js_page_handler($page) { +function elgg_js_page_handler($page) { if (is_array($page) && sizeof($page)) { $js = implode('/', $page); $js = substr($js, 0, strpos($js, '.')); @@ -1690,6 +1690,38 @@ function js_page_handler($page) { } } +/** + * Serve individual views for Ajax. + * + * /ajax/view/? + * + * @param array $page The page array + * + * @return void + * @elgg_pagehandler ajax + */ +function elgg_ajax_page_handler($page) { + if (is_array($page) && sizeof($page)) { + // throw away 'view' and form the view name + unset($page[0]); + $view = implode('/', $page); + + // pull out GET parameters through filter + $vars = array(); + foreach ($_GET as $name => $value) { + $vars[$name] = get_input($name); + } + + if (isset($vars['guid'])) { + $vars['entity'] = get_entity($vars['guid']); + } + + echo elgg_view($view, $vars); + } + + return true; +} + /** * Serve CSS * @@ -1700,7 +1732,7 @@ function js_page_handler($page) { * @return void * @elgg_pagehandler css */ -function css_page_handler($page) { +function elgg_css_page_handler($page) { if (!isset($page[0])) { // default css $page[0] = 'elgg'; @@ -1896,8 +1928,9 @@ function elgg_init() { elgg_register_action('comments/add'); elgg_register_action('comments/delete'); - elgg_register_page_handler('js', 'js_page_handler'); - elgg_register_page_handler('css', 'css_page_handler'); + elgg_register_page_handler('js', 'elgg_js_page_handler'); + elgg_register_page_handler('css', 'elgg_css_page_handler'); + elgg_register_page_handler('ajax', 'elgg_ajax_page_handler'); elgg_register_js('elgg.autocomplete', 'js/lib/autocomplete.js'); elgg_register_js('elgg.userpicker', 'js/lib/userpicker.js'); -- cgit v1.2.3