]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
If JS enabled, walled garden registration reload will not flicker
authorSteve Clay <steve@mrclay.org>
Sun, 9 Jun 2013 03:31:37 +0000 (23:31 -0400)
committerSteve Clay <steve@mrclay.org>
Sun, 9 Jun 2013 03:31:37 +0000 (23:31 -0400)
views/default/core/walled_garden/login.php
views/default/js/walled_garden.php
views/default/page/walled_garden.php

index 54af90f6792c47e3c3071d120cbc67e7cc2c5f68..42b79607d88c67bdeb22186a8cf8650896fc213c 100644 (file)
@@ -29,13 +29,3 @@ echo <<<HTML
        </div>
 </div>
 HTML;
-
-if (elgg_is_sticky_form('register')) {
-?>
-<script type="text/javascript">
-       elgg.register_hook_handler('init', 'system', function(){
-               $('.registration_link').trigger('click');
-       });
-</script>
-<?php
-}
index b15cf880a7ebe8ff71b35cbd71108a58954a9ee6..09a478e93429d839196e943c2db1aad15b528846 100644 (file)
@@ -10,7 +10,7 @@ $cancel_button = elgg_view('input/button', array(
        'value' => elgg_echo('cancel'),
        'class' => 'elgg-button-cancel mlm',
 ));
-$cancel_button = trim($cancel_button);
+$cancel_button = json_encode($cancel_button);
 
 if (0) { ?><script><?php }
 ?>
@@ -23,10 +23,11 @@ elgg.walled_garden.init = function () {
        $('.registration_link').click(elgg.walled_garden.load('register'));
 
        $('input.elgg-button-cancel').live('click', function(event) {
-               if ($('.elgg-walledgarden-single').is(':visible')) {
+               var $wgs = $('.elgg-walledgarden-single');
+               if ($wgs.is(':visible')) {
                        $('.elgg-walledgarden-double').fadeToggle();
-                       $('.elgg-walledgarden-single').fadeToggle();
-                       $('.elgg-walledgarden-single').remove();
+                       $wgs.fadeToggle();
+                       $wgs.remove();
                }
                event.preventDefault();
        });
@@ -45,10 +46,28 @@ elgg.walled_garden.load = function(view) {
                //@todo display some visual element that indicates that loading of content is running
                elgg.get('walled_garden/' + view, {
                        'success' : function(data) {
-                               $('.elgg-body-walledgarden').append(data);
-                               $(id).find('input.elgg-button-submit').after('<?php echo $cancel_button; ?>');
-                               $('#elgg-walledgarden-login').fadeToggle();
-                               $(id).fadeToggle();
+                               var $wg = $('.elgg-body-walledgarden');
+                               $wg.append(data);
+                               $(id).find('input.elgg-button-submit').after(<?php echo $cancel_button; ?>);
+
+                               if (view == 'register' && $wg.hasClass('hidden')) {
+                                       // this was a failed register, display the register form ASAP
+                                       $('#elgg-walledgarden-login').toggle();
+                                       $(id).toggle();
+                                       $wg.removeClass('hidden');
+                               } else {
+                                       $('#elgg-walledgarden-login').fadeToggle();
+                                       $(id).fadeToggle();
+                               }
+
+                               if (view == 'register') {
+                                       $('.elgg-form-register').submit(function () {
+                                               // set short cookie indicating JS support
+                                               var date = new Date();
+                                               date.setTime(date.getTime() + (60 * 1000));
+                                               elgg.session.cookie('elgg_js_support', '1', { expires: date });
+                                       });
+                               }
                        }
                });
                event.preventDefault();
index ff8e317c7e4aa8b84878d4beec529287982d94bd..87a79a69095b7f3d1849126540f5b5a70ac66597 100644 (file)
@@ -5,6 +5,12 @@
  * Used for the walled garden index page
  */
 
+$is_sticky_register = elgg_is_sticky_form('register');
+$wg_body_class = 'elgg-body-walledgarden';
+if ($is_sticky_register && !empty($_COOKIE['elgg_js_support'])) {
+       $wg_body_class .= ' hidden';
+}
+
 // Set the content type
 header("Content-type: text/html; charset=UTF-8");
 ?>
@@ -18,10 +24,17 @@ header("Content-type: text/html; charset=UTF-8");
        <div class="elgg-page-messages">
                <?php echo elgg_view('page/elements/messages', array('object' => $vars['sysmessages'])); ?>
        </div>
-       <div class="elgg-body-walledgarden">
+       <div class="<?php echo $wg_body_class; ?>">
                <?php echo $vars['body']; ?>
        </div>
 </div>
+<?php if ($is_sticky_register): ?>
+<script type="text/javascript">
+elgg.register_hook_handler('init', 'system', function() {
+       $('.registration_link').trigger('click');
+});
+</script>
+<?php endif; ?>
 <?php echo elgg_view('page/elements/foot'); ?>
 </body>
 </html>
\ No newline at end of file