[Jifty-commit] r4873 - in jifty/trunk: lib/Jifty/Web share/web/static/js

jifty-commit at lists.jifty.org jifty-commit at lists.jifty.org
Fri Jan 18 00:02:08 EST 2008


Author: alexmv
Date: Fri Jan 18 00:02:07 2008
New Revision: 4873

Modified:
   jifty/trunk/   (props changed)
   jifty/trunk/lib/Jifty/Web/PageRegion.pm
   jifty/trunk/share/web/static/js/jifty.js

Log:
 r26877 at zoq-fot-pik:  chmrr | 2008-01-17 23:59:54 -0500
  * Lazy page regions (only work with JS)


Modified: jifty/trunk/lib/Jifty/Web/PageRegion.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Web/PageRegion.pm	(original)
+++ jifty/trunk/lib/Jifty/Web/PageRegion.pm	Fri Jan 18 00:02:07 2008
@@ -15,7 +15,7 @@
 =cut
 
 use base qw/Jifty::Object Class::Accessor::Fast/;
-__PACKAGE__->mk_accessors(qw(name force_path force_arguments default_path default_arguments qualified_name parent region_wrapper));
+__PACKAGE__->mk_accessors(qw(name force_path force_arguments default_path default_arguments qualified_name parent region_wrapper lazy));
 use Jifty::JSON;
 use Encode ();
 
@@ -60,8 +60,9 @@
 HTML region preamble that makes Javascript aware of its presence.
 Defaults to true.
 
+=item lazy (optional)
 
-=item
+Delays the loading of the fragment until render-time
 
 =back
 
@@ -79,6 +80,7 @@
                 force_arguments => {},
                 force_path => undef,
                 region_wrapper => 1,
+                lazy => 0,
                 @_
                );
 
@@ -107,6 +109,7 @@
     $self->arguments({});
     $self->parent($args{parent} || Jifty->web->current_region);
     $self->region_wrapper($args{region_wrapper});
+    $self->lazy($args{lazy});
 
     # Keep track of the fully qualified name (which should be unique)
     $self->log->warn("Repeated region: " . $self->qualified_name)
@@ -284,8 +287,11 @@
             . qq|'| . $self->path . qq|',|
             . ( $self->parent ? qq|'| . $self->parent->qualified_name . qq|'| : q|null|)
             . qq|);\n|
-            . qq|</script>|
-            . qq|<div id="region-| . $self->qualified_name . qq|">|;
+            . qq|</script>|;
+        if ($self->lazy) {
+            return $result .  qq|<div id="region-| . $self->qualified_name . qq|" class="lazy_region"></div>|;
+        }
+        $result .= qq|<div id="region-| . $self->qualified_name . qq|">|;
     }
 
     $self->render_as_subrequest(\$result, \%arguments);

Modified: jifty/trunk/share/web/static/js/jifty.js
==============================================================================
--- jifty/trunk/share/web/static/js/jifty.js	(original)
+++ jifty/trunk/share/web/static/js/jifty.js	Fri Jan 18 00:02:07 2008
@@ -628,6 +628,9 @@
         element = $(element);
 
         var extras = $A();
+        if (!element)
+            return extras;
+
         var args = Form.Element.buttonArguments(element);
         var keys = args.keys();
         for (var i = 0; i < keys.length; i++) {
@@ -724,6 +727,10 @@
     },
     '.form_field .error, .form_field .warning, .form_field .canonicalization_note': function(e) {
         if ( e.innerHTML == "" ) Element.hide(e);
+    },
+    '.lazy_region': function(e) {
+        var region = e.getAttribute("id").replace(/^region-/,"");
+        Jifty.update( { 'fragments': [{'region': region, 'mode': 'Replace'}]}, e);
     }
 });
 
@@ -1041,6 +1048,8 @@
     var has_request = 0;
     request.set('actions', $H());
     for (var moniker in named_args['actions']) {
+        if (moniker == 'extend')
+            continue;
         var disable = named_args['actions'][moniker];
         var a = new Action(moniker, button_args);
             current_actions.set(moniker, a); // XXX: how do i make this bloody singleton?


More information about the Jifty-commit mailing list