r9678 - helma-ng/trunk/modules/helma

[email protected] Mon, 27 Apr 2009 16:46:15 +0200 (CEST)
Newsgroups gmane.comp.java.helma.cvs
Message-ID <20090427144615.400423D0D6@mia>
Author: hannes
Date: 2009-04-27 16:46:15 +0200 (Mon, 27 Apr 2009)
New Revision: 9678

Modified:
   helma-ng/trunk/modules/helma/skin.js
Log:
Make helma/skin.render() accept a helma resource as first argument.

Details at http://dev.helma.org/trac/helma/changeset/9678

Modified: helma-ng/trunk/modules/helma/skin.js
===================================================================
--- helma-ng/trunk/modules/helma/skin.js	2009-04-27 14:46:13 UTC (rev 9677)
+++ helma-ng/trunk/modules/helma/skin.js	2009-04-27 14:46:15 UTC (rev 9678)
@@ -16,27 +16,29 @@
 
 /**
  * Parse a skin from a resource and render it using the given context.
- * @param skinOrPath a skin object or a file name
+ * @param skinOrResource a skin object, helma resource, or file name
  * @param context the skin render context
  * @param scope optional scope object for relative resource lookup
  */
-function render(skinOrPath, context, scope) {
+function render(skinOrResource, context, scope) {
     scope = scope || this;
     var skin;
-    if (typeof(skinOrPath.render) == "function") {
-        skin = skinOrPath;
-    } else if (typeof(skinOrPath) == "string") {
+    if (typeof(skinOrResource.render) == "function") {
+        skin = skinOrResource;
+    } else if (skinOrResource instanceof org.helma.repository.Resource) {
+        skin = createSkin(skinOrResource, scope);
+    } else if (typeof(skinOrResource) == "string") {
         var subskin;
-        if (skinOrPath.indexOf('#') > -1) {
-            [skinOrPath, subskin] = skinOrPath.split('#');
+        if (skinOrResource.indexOf('#') > -1) {
+            [skinOrResource, subskin] = skinOrResource.split('#');
         }
-        var resource = scope.getResource(skinOrPath);
+        var resource = scope.getResource(skinOrResource);
         skin = createSkin(resource, scope);
         if (subskin) {
             skin = skin.getSubskin(subskin);
         }
     } else {
-        throw Error("Unknown skin object: " + skinOrPath);
+        throw Error("Unknown skin object: " + skinOrResource);
     }
     return skin.render(context);
 }
@@ -177,11 +179,11 @@
         if (isDefined(elem)) {
             if (elem[last + suffix] instanceof Function) {
                 return value === undefined ?
-                       elem[last + suffix].call(elem, macro, self, context) :
-                       elem[last + suffix].call(elem, value, macro, self, context);
+                       elem[last + suffix].call(elem, macro, context, self) :
+                       elem[last + suffix].call(elem, value, macro, context, self);
             } else if (value === undefined && isDefined(elem[last])) {
                 if (elem[last] instanceof Function) {
-                    return elem[last].call(elem, macro, self, context);
+                    return elem[last].call(elem, macro, context, self);
                 } else {
                     return elem[last];
                 }