From 69786dcc8ad1c193f3b4fff36807e6dc92da1d8d Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Fri, 10 Feb 2012 07:24:11 -0500 Subject: new layout and ajax loading for walled garden --- engine/lib/elgglib.php | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'engine/lib/elgglib.php') diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php index 11bdc7285..5c444c2f5 100644 --- a/engine/lib/elgglib.php +++ b/engine/lib/elgglib.php @@ -2021,14 +2021,36 @@ function elgg_walled_garden_index() { elgg_load_css('elgg.walled_garden'); elgg_load_js('elgg.walled_garden'); - $body = elgg_view('core/walled_garden/body'); + $content = elgg_view('core/walled_garden/login'); + $params = array( + 'content' => $content, + 'class' => 'elgg-walledgarden-double', + ); + $body = elgg_view_layout('walled_garden', $params); echo elgg_view_page('', $body, 'walled_garden'); // return true to prevent other plugins from adding a front page return true; } +/** + * Serve walled garden sections + * + * @param array $page Array of URL segments + * @return string + * @access private + */ +function _elgg_walled_garden_ajax_handler($page) { + $view = $page[0]; + $params = array( + 'content' => elgg_view("core/walled_garden/$view"), + 'class' => 'elgg-walledgarden-single hidden', + ); + echo elgg_view_layout('walled_garden', $params); + return true; +} + /** * Checks the status of the Walled Garden and forwards to a login page * if required. @@ -2049,6 +2071,8 @@ function elgg_walled_garden() { elgg_register_css('elgg.walled_garden', '/css/walled_garden.css'); elgg_register_js('elgg.walled_garden', '/js/walled_garden.js'); + elgg_register_page_handler('walled_garden', '_elgg_walled_garden_ajax_handler'); + // check for external page view if (isset($CONFIG->site) && $CONFIG->site instanceof ElggSite) { $CONFIG->site->checkWalledGarden(); -- cgit v1.2.3 From 77c2d19bc36450ce6f5bc6ddf6b2ddea510bd19b Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Fri, 10 Feb 2012 08:06:33 -0500 Subject: updated the walled garden js to use new js lib --- engine/lib/elgglib.php | 2 ++ views/default/js/walled_garden.php | 52 +++++++++++++++++----------- views/default/page/layouts/walled_garden.php | 2 ++ 3 files changed, 35 insertions(+), 21 deletions(-) (limited to 'engine/lib/elgglib.php') diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php index 5c444c2f5..b55958a6c 100644 --- a/engine/lib/elgglib.php +++ b/engine/lib/elgglib.php @@ -2026,6 +2026,7 @@ function elgg_walled_garden_index() { $params = array( 'content' => $content, 'class' => 'elgg-walledgarden-double', + 'id' => 'elgg-walledgarden-login', ); $body = elgg_view_layout('walled_garden', $params); echo elgg_view_page('', $body, 'walled_garden'); @@ -2046,6 +2047,7 @@ function _elgg_walled_garden_ajax_handler($page) { $params = array( 'content' => elgg_view("core/walled_garden/$view"), 'class' => 'elgg-walledgarden-single hidden', + 'id' => str_replace('_', '-', "elgg-walledgarden-$view"), ); echo elgg_view_layout('walled_garden', $params); return true; diff --git a/views/default/js/walled_garden.php b/views/default/js/walled_garden.php index e761e5869..13ec83c04 100644 --- a/views/default/js/walled_garden.php +++ b/views/default/js/walled_garden.php @@ -2,9 +2,10 @@ /** * Walled garden JavaScript * - * @todo update for new JS lib + * @since 1.8 */ +// note that this assumes the button view is not using single quotes $cancel_button = elgg_view('input/button', array( 'value' => elgg_echo('cancel'), 'class' => 'elgg-button-cancel mlm', @@ -13,27 +14,12 @@ $cancel_button = trim($cancel_button); ?> -$(document).ready(function() { +elgg.provide('elgg.walled_garden'); - $('.forgot_link').click(function(event) { - $.get('walled_garden/lost_password', function(data) { - $('.elgg-walledgarden-double').fadeToggle(); - $('.elgg-body-walledgarden').append(data); - $(".elgg-form-user-requestnewpassword").find('input.elgg-button-submit').after(''); - $('.elgg-walledgarden-single').fadeToggle(); - }); - event.preventDefault(); - }); +elgg.walled_garden.init = function () { - $('.registration_link').click(function(event) { - $.get('walled_garden/register', function(data) { - $('.elgg-walledgarden-double').fadeToggle(); - $('.elgg-body-walledgarden').append(data); - $('.elgg-form-register').find('input.elgg-button-submit').after(''); - $('.elgg-walledgarden-single').fadeToggle(); - }); - event.preventDefault(); - }); + $('.forgot_link').click(elgg.walled_garden.load('lost_password')); + $('.registration_link').click(elgg.walled_garden.load('register')); $('input.elgg-button-cancel').live('click', function(event) { if ($('.elgg-walledgarden-single').is(':visible')) { @@ -43,4 +29,28 @@ $(document).ready(function() { } event.preventDefault(); }); -}); \ No newline at end of file +}; + +/** + * Creates a closure for loading walled garden content through ajax + * + * @param {String} view Name of the walled garden view + * @return {Object} + */ +elgg.walled_garden.load = function(view) { + return function(event) { + var id = '#elgg-walledgarden-' + view; + id = id.replace('_', '-'); + elgg.get('walled_garden/' + view, { + 'success' : function(data) { + $('.elgg-body-walledgarden').append(data); + $(id).find('input.elgg-button-submit').after(''); + $('#elgg-walledgarden-login').fadeToggle(); + $(id).fadeToggle(); + }, + }); + event.preventDefault(); + }; +}; + +elgg.register_hook_handler('init', 'system', elgg.walled_garden.init); \ No newline at end of file diff --git a/views/default/page/layouts/walled_garden.php b/views/default/page/layouts/walled_garden.php index 5cddcbb77..6ecd941ef 100644 --- a/views/default/page/layouts/walled_garden.php +++ b/views/default/page/layouts/walled_garden.php @@ -4,11 +4,13 @@ * * @uses $vars['content'] Main content * @uses $vars['class'] CSS classes + * @uses $vars['id'] CSS id */ $class = elgg_extract('class', $vars, 'elgg-walledgarden-single'); echo elgg_view_module('walledgarden', '', $vars['content'], array( 'class' => $class, + 'id' => elgg_extract('id', $vars, ''), 'header' => ' ', 'footer' => ' ', )); -- cgit v1.2.3