]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
new layout and ajax loading for walled garden
authorCash Costello <cash.costello@gmail.com>
Fri, 10 Feb 2012 12:24:11 +0000 (07:24 -0500)
committerCash Costello <cash.costello@gmail.com>
Fri, 10 Feb 2012 12:24:11 +0000 (07:24 -0500)
engine/classes/ElggSite.php
engine/lib/elgglib.php
views/default/core/walled_garden/body.php [deleted file]
views/default/core/walled_garden/login.php
views/default/core/walled_garden/lost_password.php
views/default/core/walled_garden/register.php
views/default/js/walled_garden.php
views/default/page/layouts/walled_garden.php [new file with mode: 0644]

index 49616f1be077fcf6d0e31177fed32882d2d2425e..bf3234a18162f30586e4b16c86fff75dc1f759b9 100644 (file)
@@ -422,6 +422,7 @@ class ElggSite extends ElggEntity {
 
                // default public pages
                $defaults = array(
+                       'walled_garden/.*',
                        'action/login',
                        'register',
                        'action/register',
index 11bdc7285bdd70890eacb175f41cd65fc038a18b..5c444c2f59482576a261e2a424e8d2d281b7b48c 100644 (file)
@@ -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();
diff --git a/views/default/core/walled_garden/body.php b/views/default/core/walled_garden/body.php
deleted file mode 100644 (file)
index 67d8e0c..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-/**
- * Walled garden body
- */
-
-echo elgg_view('core/walled_garden/login');
-echo elgg_view('core/walled_garden/lost_password');
-
-if (elgg_get_config('allow_registration')) {
-       echo elgg_view('core/walled_garden/register');
-}
index 0a8b4a90881c122267036408e47e8c7e59794e50..42b79607d88c67bdeb22186a8cf8650896fc213c 100644 (file)
@@ -14,7 +14,7 @@ $menu = elgg_view_menu('walled_garden', array(
 
 $login_box = elgg_view('core/account/login_box', array('module' => 'walledgarden-login'));
 
-$content = <<<HTML
+echo <<<HTML
 <div class="elgg-col elgg-col-1of2">
        <div class="elgg-inner">
                <h1 class="elgg-heading-walledgarden">
@@ -29,9 +29,3 @@ $content = <<<HTML
        </div>
 </div>
 HTML;
-
-echo elgg_view_module('walledgarden', '', $content, array(
-       'class' => 'elgg-walledgarden-double',
-       'header' => ' ',
-       'footer' => ' ',
-));
index ce75b558b5c3fb4f5a9e6e46a1278606ff1dbe1a..82f8caf5078a5462513aa9b791b2a4ad1d1e80db 100644 (file)
@@ -5,15 +5,9 @@
 
 $title = elgg_echo('user:password:lost');
 $body = elgg_view_form('user/requestnewpassword');
-$lost = <<<HTML
+echo <<<HTML
 <div class="elgg-inner">
        <h3>$title</h3>
        $body
 </div>
 HTML;
-
-echo elgg_view_module('walledgarden', '', $lost, array(
-       'class' => 'elgg-walledgarden-single elgg-walledgarden-password hidden',
-       'header' => ' ',
-       'footer' => ' ',
-));
index 7f6aac99b932fd4a2e700eb619d2feb6da40d9e8..1ce2f871660cc5706322b3b009316ebbb2990b7b 100644 (file)
@@ -9,15 +9,9 @@ $body = elgg_view_form('register', array(), array(
        'invitecode' => get_input('invitecode'),
 ));
 
-$content = <<<__HTML
+echo <<<__HTML
 <div class="elgg-inner">
        <h2>$title</h2>
        $body
 </div>
 __HTML;
-
-echo elgg_view_module('walledgarden', '', $content, array(
-       'class' => 'elgg-walledgarden-single elgg-walledgarden-register hidden',
-       'header' => ' ',
-       'footer' => ' ',
-));
\ No newline at end of file
index 46c2934ffd4813aeceafb992e3e23264707d7fb5..e761e58697d72c610ec932db8cc5ee9792312985 100644 (file)
@@ -15,25 +15,31 @@ $cancel_button = trim($cancel_button);
 
 $(document).ready(function() {
 
-       // add cancel button to inline forms
-       $(".elgg-walledgarden-password").find('input.elgg-button-submit').after('<?php echo $cancel_button; ?>');
-       $('.elgg-walledgarden-register').find('input.elgg-button-submit').after('<?php echo $cancel_button; ?>');
-
-       $(".forgot_link").click(function(event) {
+       $('.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('<?php echo $cancel_button; ?>');
+                       $('.elgg-walledgarden-single').fadeToggle();
+               });
                event.preventDefault();
-               $(".elgg-walledgarden-password").fadeToggle();
        });
 
-       $(".registration_link").click(function(event) {
+       $('.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('<?php echo $cancel_button; ?>');
+                       $('.elgg-walledgarden-single').fadeToggle();
+               });
                event.preventDefault();
-               $(".elgg-walledgarden-register").fadeToggle();
        });
 
-       $('input.elgg-button-cancel').click(function(event) {
-               if ($(".elgg-walledgarden-password").is(':visible')) {
-                       $(".forgot_link").click();
-               } else if ($('.elgg-walledgarden-register').is(':visible')) {
-                       $(".registration_link").click();
+       $('input.elgg-button-cancel').live('click', function(event) {
+               if ($('.elgg-walledgarden-single').is(':visible')) {
+                       $('.elgg-walledgarden-double').fadeToggle();
+                       $('.elgg-walledgarden-single').fadeToggle();
+                       $('.elgg-walledgarden-single').remove();
                }
                event.preventDefault();
        });
diff --git a/views/default/page/layouts/walled_garden.php b/views/default/page/layouts/walled_garden.php
new file mode 100644 (file)
index 0000000..5cddcbb
--- /dev/null
@@ -0,0 +1,14 @@
+<?php
+/**
+ * Walled Garden layout
+ *
+ * @uses $vars['content'] Main content
+ * @uses $vars['class']   CSS classes
+ */
+
+$class = elgg_extract('class', $vars, 'elgg-walledgarden-single');
+echo elgg_view_module('walledgarden', '', $vars['content'], array(
+       'class' => $class,
+       'header' => ' ',
+       'footer' => ' ',
+));