[Jifty-commit] r3617 - in jifty/branches/trimclient: . examples/Yada/lib/Yada lib/Jifty/Plugin/SkeletonApp lib/Jifty/Web share/web/static/js

jifty-commit at lists.jifty.org jifty-commit at lists.jifty.org
Sat Jul 7 16:44:30 EDT 2007


Author: clkao
Date: Sat Jul  7 16:44:30 2007
New Revision: 3617

Modified:
   jifty/branches/trimclient/   (props changed)
   jifty/branches/trimclient/examples/Yada/lib/Yada/View.pm
   jifty/branches/trimclient/lib/Jifty/Plugin/SkeletonApp/View.pm
   jifty/branches/trimclient/lib/Jifty/View/Declare/Compile.pm
   jifty/branches/trimclient/lib/Jifty/Web/PageRegion.pm
   jifty/branches/trimclient/share/web/static/js/jifty.js

Log:
 r18477 at ubuntu:  clkao | 2007-06-26 12:38:26 +0100
 intermediate commit to converge with B::Deparse cleanup.
 r18478 at ubuntu:  clkao | 2007-06-26 12:49:26 +0100
 More convergence.
 r18492 at ubuntu:  clkao | 2007-06-26 17:13:09 +0100
 Catch up with B::Deparse cleanups.
 
 r18549 at ubuntu:  clkao | 2007-06-29 13:53:13 +0100
 current_region.
 r18657 at ubuntu:  clkao | 2007-07-07 20:58:35 +0100
 minor cleanups.
 r18658 at ubuntu:  clkao | 2007-07-07 20:58:56 +0100
 Mark __jifty/empty as static
 r18659 at ubuntu:  clkao | 2007-07-07 21:04:03 +0100
 Be graceful when failed to eval the compiled js.
 r18660 at ubuntu:  clkao | 2007-07-07 21:41:53 +0100
 mixing hyperlink into static.
 r18661 at ubuntu:  clkao | 2007-07-07 21:42:27 +0100
 Emit anonhash.
 r18662 at ubuntu:  clkao | 2007-07-07 21:43:04 +0100
 Fake hyperlink on clientside.


Modified: jifty/branches/trimclient/examples/Yada/lib/Yada/View.pm
==============================================================================
--- jifty/branches/trimclient/examples/Yada/lib/Yada/View.pm	(original)
+++ jifty/branches/trimclient/examples/Yada/lib/Yada/View.pm	Sat Jul  7 16:44:30 2007
@@ -11,23 +11,13 @@
     my $self = shift;
     title { _('Yada!') };
 
-    hyperlink(label => 'clear',
-	      onclick => [{region => 'test_region',
-			   replace_with => '__jifty/empty',
-			  }]);
-
-    render_region(
-        name => 'test_region',
-        path => '/__jifty/empty'
-    );
+    render_region('test_region');
 
     hyperlink(label => 'FAQ',
 	      onclick => [{region => 'test_region',
 			   replace_with => '_faq',
 			  }]);
 
-
-
     form {
 	set(item_path => '/todo/view_brief');
 	render_region(name => 'list', path => '/todo/list');
@@ -46,6 +36,7 @@
                 }
 	    }
 	}
+	hyperlink(label => 'close', onclick => [{replace_with => '/__jifty/empty'}])
     }
 };
 

Modified: jifty/branches/trimclient/lib/Jifty/Plugin/SkeletonApp/View.pm
==============================================================================
--- jifty/branches/trimclient/lib/Jifty/Plugin/SkeletonApp/View.pm	(original)
+++ jifty/branches/trimclient/lib/Jifty/Plugin/SkeletonApp/View.pm	Sat Jul  7 16:44:30 2007
@@ -40,7 +40,7 @@
         Jifty->web->navigation->render_as_menu; };
 };
 
-template '__jifty/empty' => sub {
+template '__jifty/empty' => sub :Static {
         '';
 };
 

Modified: jifty/branches/trimclient/lib/Jifty/View/Declare/Compile.pm
==============================================================================
--- jifty/branches/trimclient/lib/Jifty/View/Declare/Compile.pm	(original)
+++ jifty/branches/trimclient/lib/Jifty/View/Declare/Compile.pm	Sat Jul  7 16:44:30 2007
@@ -155,6 +155,16 @@
     return "function () " . $text;
 }
 
+sub e_anonhash {
+    my ($self, $info) = @_;
+    my @exprs = @{$info->{exprs}};
+    my @pairs;
+    while (my @p = splice(@exprs, 0, 2)) {
+	push @pairs, join(': ', map { $self->deparse($_, 6) } @p);
+    }
+    return '{' . join(", ", @pairs) . '}';
+}
+
 sub pp_entersub {
     my $self = shift;
     my $ret = $self->SUPER::pp_entersub(@_);

Modified: jifty/branches/trimclient/lib/Jifty/Web/PageRegion.pm
==============================================================================
--- jifty/branches/trimclient/lib/Jifty/Web/PageRegion.pm	(original)
+++ jifty/branches/trimclient/lib/Jifty/Web/PageRegion.pm	Sat Jul  7 16:44:30 2007
@@ -389,9 +389,8 @@
 
 sub _actual_td_code {
     my $code = shift or return;
-
-    return PadWalker::closed_over($code)->{'$coderef'}
-	? ${ PadWalker::closed_over($code)->{'$coderef'} } : $code;
+    my $closed_over = PadWalker::closed_over($code)->{'$coderef'};
+    return $closed_over ? $$closed_over : $code;
 }
 
 sub client_cacheable {

Modified: jifty/branches/trimclient/share/web/static/js/jifty.js
==============================================================================
--- jifty/branches/trimclient/share/web/static/js/jifty.js	(original)
+++ jifty/branches/trimclient/share/web/static/js/jifty.js	Sat Jul  7 16:44:30 2007
@@ -13,17 +13,40 @@
 
 Jifty.web = function() { return Jifty.Web };
 
-var render_param = function(a, field) { outs(a.render_param(field)) };
-var form_return  = function(foo, label, bar, submit) {
-    var action_hash = {};
-    action_hash[submit.moniker] = 1;
-    // XXX: fix the fabricated refresh-self
+function _get_named_args(args) {
+}
+
+function _get_onclick(action_hash, name, args, path) {
     var onclick = 'if(event.ctrlKey||event.metaKey||event.altKey||event.shiftKey) return true; return update('
     + JSON.stringify({'continuation': {},
 		      'actions': action_hash,
-		      'fragments': [{'mode': 'Replace', 'args': {}, 'region':'__page-signup_widget', 'path': '_signup'}]})
+		      'fragments': [{'mode': 'Replace', 'args': args, 'region': name, 'path': path}]})
     +', this)';
     onclick = onclick.replace(/"/g, "'"); //"' )# grr emacs!
+	return onclick;
+}
+// XXX
+var hyperlink  = function(foo, label, bar, onclick) {
+    var current_region = Jifty.Web.current_region;
+    var onclick = _get_onclick({}, current_region.name, current_region.args, onclick[0].replace_with);
+    outs( a(function() { attr(function()
+			       {return ['onclick', onclick]});
+	    return label
+		}));
+}
+
+var render_param = function(a, field) { outs(a.render_param(field)) };
+var form_return  = function(foo, label, bar, submit) {
+    var action_hash = {};
+    action_hash[submit.moniker] = 1;
+    // XXX: fix the fabricated refresh-self
+    // XXX: implicit onclick only for now
+
+    // $self->_push_onclick($args, { refresh_self => 1, submit => $args->{submit} });
+    // @args{qw/mode path region/} = ('Replace', Jifty->web->current_region->path, Jifty->web->current_region);
+
+    var current_region = Jifty.Web.current_region;
+    var onclick = _get_onclick(action_hash, current_region.name, current_region.args, current_region.path);
     outs(
 	 div(function() {
 		 attr(function() { return ['class', 'submit_button'] });
@@ -852,7 +875,7 @@
 var CACHE = {};
 
 // FIXME: try not to pollute the namespace!
-var tags = ['div', 'h2', 'dl', 'dt', 'dd', 'span', 'label', 'input'];
+var tags = ['div', 'h2', 'dl', 'dt', 'dd', 'span', 'label', 'input', 'a'];
 for (var i in tags) {
     this[tags[i]] = _mk_tag_wrapper(tags[i]);
 }
@@ -893,7 +916,7 @@
 	var _post = post ? post(attr) : '</'+name+'>';
 	if (want_outbuf && this.out_buf) {
 	    first += this.out_buf;
-	    this.outbuf = '';
+	    this.out_buf = '';
 	}
 	return _pre + first + _post + buf.join('');
     }
@@ -919,13 +942,14 @@
             } else if (fragment_bit.firstChild) {
                 textContent = fragment_bit.firstChild.nodeValue;
             } 
-            var cache_func;
-	    try { cache_func = eval(textContent) }
+	    try {
+		var cache_func = eval(textContent);
+		CACHE[f['path']] = { 'type': c_type, 'content': cache_func };
+	    }
 	    catch(e) { 
 		alert(e);
 		alert(textContent);
 	    }
-            CACHE[f['path']] = { 'type': c_type, 'content': cache_func };
         }
     });
 };
@@ -1075,7 +1099,8 @@
             var content_node = document.createElement('content');
 	    var cached_result;
 
-	    try { cached_result = cached['content']() }
+	    Jifty.Web.current_region = fragments[f['region']];
+	    try { cached_result = apply_cached_for_action(cached['content'], []) }
 	    catch (e) { alert(e) }
 
             content_node.textContent = cached_result;
@@ -1094,6 +1119,7 @@
             my_fragment.setAttribute('id', f['region']);
             update_from_cache.push(function(){
 		    var cached_result;
+		    Jifty.Web.current_region = fragments[f['region']];
 		    try {
 			cached_result = apply_cached_for_action(cached['content'], Form.getActions(form));
 		    }


More information about the Jifty-commit mailing list