Alexander Nazarov (nfokz) wrote in changelog,
Alexander Nazarov
nfokz
changelog

[livejournal] r22807: LJSUP-13277: JS need to support getting ...

Committer: anazarov
LJSUP-13277: JS need to support getting templates from (l-)stat
U   trunk/cgi-bin/weblib.pl
U   trunk/htdocs/js/basic.js
Modified: trunk/cgi-bin/weblib.pl
===================================================================
--- trunk/cgi-bin/weblib.pl	2012-09-04 13:26:43 UTC (rev 22806)
+++ trunk/cgi-bin/weblib.pl	2012-09-04 13:39:11 UTC (rev 22807)
@@ -1373,33 +1373,29 @@
 sub res_template_includes {
     my $ret = shift;
     my %loaded;
-    foreach my $template (@LJ::SITEWIDE_TEMPLATES, @LJ::INCLUDE_TEMPLATE) {
-        if (LJ::is_enabled('templates_from_stat')) {
-            # Create template id
-            my $key = $template;
-            $key =~ s{(?<!\\)/} {-}g;
-            $key =~ s{\.(?:jq)?tmpl$} {}g;
+    if (LJ::is_enabled('templates_from_stat')) {
+        my $time = time;
+        my $lang = LJ::Lang::current_language();
+        my $src  = $LJ::IS_SSL? $LJ::SSLROOT : $LJ::STATPREFIX;
+           $src .= '/tmpl/??';
 
-            my $stat_prefix = 'l-stat';
-            my $debug_data  = '';
-
-            if ($LJ::IS_DEV_SERVER || $LJ::CURRENT_VERSION eq 'trunk') {
-                $stat_prefix =  'stat';
-
-                $debug_data = sprintf q{
-                    data-template="%s"
-                    data-translation="%s"},
-                    $template, $LJ::TEMPLATE_TRANSLATION;
-            }
-
-            my $address = "http://$stat_prefix.$LJ::DOMAIN/__tmpl/$template?v=" . $LJ::CURRENT_VERSION;
-            $ret .= sprintf q{<script type="text/plain" id="%s" src="%s" %s>}, 
-                        $key, $address, $debug_data;
-            $ret .= '</script>';
-
-            $ret .= sprintf q{<script>LJ.UI.registerTemplate('%s', '%s', '%s');</script>}, 
-                    $key, $key, $LJ::TEMPLATE_TRANSLATION;
-        } else {
+        foreach my $extension ('.tmpl', '.jqtmpl') {
+            my $mtime = 0;
+            $ret .= join join(',',
+                map {
+                    local $_ = $_;
+                    s{^} {../};
+                    my $lmtime = _file_modtime($_, $time);
+                    $mtime = $lmtime if $lmtime > $mtime;
+                    s{^.*?templates/} {};
+                    $_
+                } grep {
+                    -1 != index $_, $extension
+                } @LJ::SITEWIDE_TEMPLATES, @LJ::INCLUDE_TEMPLATE
+            ), qq{<script type="text/javascript" src="$src}, qq{?v=$mtime;uselang=$lang"></script>\n}; 
+        }
+    } else {
+        foreach my $template (@LJ::SITEWIDE_TEMPLATES, @LJ::INCLUDE_TEMPLATE) {
             my $path = [split m{(?<!\\)/}, $template];
             my $file = pop @$path;
             my ($type, $filter);

Modified: trunk/htdocs/js/basic.js
===================================================================
--- trunk/htdocs/js/basic.js	2012-09-04 13:26:43 UTC (rev 22806)
+++ trunk/htdocs/js/basic.js	2012-09-04 13:39:11 UTC (rev 22807)
@@ -821,31 +821,33 @@
  * @param {string} id Id of the script tag containing the templates or the template text.
  * @param {string=JQuery} type Type of the template. Default is jquery templates.
  */
-LJ.UI.registerTemplate = function(name, id, type) {
-	var node = jQuery('#' + id),
-		template;
+LJ.UI.registerTemplate = function (name, data, type) {
+	var node, template;
 
 	type = type || 'JQuery';
 
-	if (node.length > 0) {
-		//jQuery.text() method returns empty string in IE8
-		template = node.html();
-	} else {
-		template = id;
-	}
+	switch (type) {
+		case 'JQuery':
+			node = jQuery('#' + data);
 
-	LJ.UI._templates[name] = {
-		type: type
-	};
+			if (node.length) {
+				jQuery.template(name, node.html());
+			} else {
+				LJ.console.warn('Template node #' + data + ' was not found');
+				return;
+			}
 
-	var tmplObject = LJ.UI._templates[name];
+			break;
 
-	switch (type) {
-		case 'JQuery':
-			jQuery.template(name, template);
+		case 'JQuery.stat':
+			jQuery.template(name, data);
+			type = 'JQuery';
 			break;
 	}
 
+	LJ.UI._templates[name] = {
+		type: type
+	};
 };
 
 /**

Tags: anazarov, js, livejournal, nfokz, pl
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments