svn commit: r1036195 [1/4] - in /ofbiz/branches/jquery: applications/content/webapp/content/content/ applications/content/webapp/content/website/ applications/content/widget/ applications/content/widget/content/ framework/common/webcommon/includes/ fra...

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r1036195 [1/4] - in /ofbiz/branches/jquery: applications/content/webapp/content/content/ applications/content/webapp/content/website/ applications/content/widget/ applications/content/widget/content/ framework/common/webcommon/includes/ fra...

jleroux@apache.org
Author: jleroux
Date: Wed Nov 17 20:13:57 2010
New Revision: 1036195

URL: http://svn.apache.org/viewvc?rev=1036195&view=rev
Log:
2 slightly modified patches from Sascha Rodekamp "Content Navigation Tree implemented with jQuery" (https://issues.apache.org/jira/browse/OFBIZ-3815) - OFBIZ-3815
+ the elrteEditor jQuery plugin

Sascha:
Migrates the last WebCms Content Screens.
Adds the jsTree for the CMS Web Site Page and replace the old dojo WYSIWYG Editor by editor from elrte http://elrte.org/.

There is still one issue regarding the new editor. When you write a text and store it with the Editor everything is fine, the HTML code is stored in the electronicText Table.
But when you reload the site and the editor get the stored data from the DB it has HTML tags in it. Freemarker encode the Tags in HTML Save Characters (works as designed). So we need a method which decodes the HTML Save output into normal HTML output to let the editor handle the data the right way. So we need something like 'encodeXmlValue' (the other way round).

JLR remarks:
* I have used jQuery 1.4.2 as I just reverted to this version
* I have replaced PageTitleNavigate by PageTitleNavigateDataResources
* We will need to localize labels and alert messages
    I noticed
    +    function destroyEditor() {
    +        // TODO
    +    }
    not sure it needs something or not
* I have used 'maxi' as elrte Editor option to have table buttons by default
* To decodes HTML as input to elrte Editor, I have tried to use simple Freemarker replaces. I was surprised to see that some were not decoded. I then tried to use a regexp but without more success... to be continued...


Added:
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/css/
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/css/elrte-inner.css   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/css/elrte.full.css   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/elrte.full.js   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/elrte.min.js   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/elrte-toolbar.png   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/google-maps.png   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/loading.gif   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/media-director.png   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/media-flash.png   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/media-quicktime.png   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/media-realaudio.png   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/media-rutube.png   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/media-vimeo.png   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/media-winmedia.png   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/media-youtube.png   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/pagebreak.gif   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/pixel.gif   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/smileys/
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/smileys/evilgrin.png   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/smileys/grin.png   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/smileys/happy.png   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/smileys/smile.png   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/smileys/surprised.png   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/smileys/tongue.png   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/smileys/unhappy.png   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/smileys/waii.png   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/smileys/wink.png   (with props)
    ofbiz/branches/jquery/framework/images/webapp/images/jquery/plugins/elrteEditor/images/yandex-maps.png   (with props)
Modified:
    ofbiz/branches/jquery/applications/content/webapp/content/content/ContentNav.ftl
    ofbiz/branches/jquery/applications/content/webapp/content/content/DisplayContentNav.ftl
    ofbiz/branches/jquery/applications/content/webapp/content/content/nav.ftl
    ofbiz/branches/jquery/applications/content/webapp/content/website/WebSiteCMSContent.ftl
    ofbiz/branches/jquery/applications/content/webapp/content/website/WebSiteCMSMeta.ftl
    ofbiz/branches/jquery/applications/content/webapp/content/website/WebSiteCMSNav.ftl
    ofbiz/branches/jquery/applications/content/webapp/content/website/WebSiteCMSPathAlias.ftl
    ofbiz/branches/jquery/applications/content/widget/WebSiteScreens.xml
    ofbiz/branches/jquery/applications/content/widget/content/ContentScreens.xml
    ofbiz/branches/jquery/applications/content/widget/content/DataResourceScreens.xml
    ofbiz/branches/jquery/framework/common/webcommon/includes/lookup.ftl
    ofbiz/branches/jquery/framework/widget/src/org/ofbiz/widget/form/MacroFormRenderer.java

Modified: ofbiz/branches/jquery/applications/content/webapp/content/content/ContentNav.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/jquery/applications/content/webapp/content/content/ContentNav.ftl?rev=1036195&r1=1036194&r2=1036195&view=diff
==============================================================================
--- ofbiz/branches/jquery/applications/content/webapp/content/content/ContentNav.ftl (original)
+++ ofbiz/branches/jquery/applications/content/webapp/content/content/ContentNav.ftl Wed Nov 17 20:13:57 2010
@@ -16,250 +16,222 @@
   specific language governing permissions and limitations
   under the License.
   -->
+<script language="javascript" type="text/javascript" src="<@ofbizContentUrl>/images/jquery/plugins/jsTree/jquery.jstree.js</@ofbizContentUrl>"></script>
 
-<script type="text/javascript">
+<script type="application/javascript">
+<#-- some labels are not unescaped in the JSON object so we have to do this manuely -->
+function unescapeHtmlText(text) {
+    return jQuery('<div />').html(text).text()
+}
+
+jQuery(document).ready(createTree());
 
-    dojo.require("dojo.widget.*");
-    dojo.require("dojo.event.*");
-    dojo.require("dojo.io.*");
-
-    var treeSelected = false;
-    var editDocumentTreeUrl = '<@ofbizUrl>/views/EditDocumentTree</@ofbizUrl>';
-    var listDocument =  '<@ofbizUrl>/views/ListDocument</@ofbizUrl>';
-    var editDocumentUrl = '<@ofbizUrl>/views/EditDocument</@ofbizUrl>';
-    var deleteDocumentUrl = '<@ofbizUrl>removeDocumentFromTree</@ofbizUrl>';
-<#-------------------------------------------------------------------------------------Load function-->
-    dojo.addOnLoad(function() {
-        dojo.event.topic.subscribe("showDocument",
-            function(message) {
-                   treeSelected = true;
-                   var ctx = new Array();
-                   ctx['contentId'] = message.node.widgetId;
-                   callDocument(ctx);
-            }
-
-        );
-        dojo.event.topic.subscribe("NewDocumentTree/engage",
-            function (menuItem) {
-                var node = menuItem.getTreeNode();
-                callCreateDocumentTree(node.widgetId);
-            }
-
-        );
-        dojo.event.topic.subscribe("NewDocument/engage",
-            function (menuItem) {
-                var node = menuItem.getTreeNode();
-                callCreateDocument(node.widgetId);
-            }
-
-        );
-        dojo.event.topic.subscribe("EditDocument/engage",
-            function (menuItem) {
-                var node = menuItem.getTreeNode();
-                callEditDocument(node.widgetId);
-            }
-        );
-       dojo.event.topic.subscribe("RenameDocumentTree/engage",
-            function (menuItem) {
-                var node = menuItem.getTreeNode();
-                callRenameDocumentTree(node.widgetId);
-            }
-
-        );
-        dojo.event.topic.subscribe("DeleteDocument/engage",
-            function (menuItem) {
-                var node = menuItem.getTreeNode();
-                callDeleteDocument(node.widgetId, node.object);
-            }
-        );
-        }
-    );
+<#-- creating the JSON Data -->
+var rawdata = [
+      <#if (contentAssoc?has_content)>
+          <@fillTree assocList = contentAssoc/>
+      </#if>
+
+      <#macro fillTree assocList>
+          <#if (assocList?has_content)>
+            <#list assocList as assoc>
+                <#assign content  = delegator.findByPrimaryKey("Content",Static["org.ofbiz.base.util.UtilMisc"].toMap("contentId",assoc.contentIdTo))/>
+                {
+                "data": {"title" : unescapeHtmlText("${content.contentName!assoc.contentIdTo}"), "attr": {"href": "javascript:void(0);", "onClick" : "callDocument('${assoc.contentIdTo}');"}},
+                <#assign assocChilds  = delegator.findByAnd("ContentAssoc",Static["org.ofbiz.base.util.UtilMisc"].toMap("contentId",assoc.contentIdTo,"contentAssocTypeId", "TREE_CHILD"))/>
+                    "attr": {"id" : "${assoc.contentIdTo}", "contentId" : "${assoc.contentId}", "AssocType" : "${assoc.contentAssocTypeId}", "fromDate" : "${assoc.fromDate}"},
+                <#if assocChilds?has_content>
+                    "children": [
+                        <@fillTree assocList = assocChilds/>
+                    ]
+                </#if>
+                <#if assoc_has_next>
+                },
+                <#else>
+                }
+                </#if>
+            </#list>
+          </#if>
+        </#macro>
+     ];
+
+ <#-------------------------------------------------------------------------------------define Requests-->
+  var editDocumentTreeUrl = '<@ofbizUrl>/views/EditDocumentTree</@ofbizUrl>';
+  var listDocument =  '<@ofbizUrl>/views/ListDocument</@ofbizUrl>';
+  var editDocumentUrl = '<@ofbizUrl>/views/EditDocument</@ofbizUrl>';
+  var deleteDocumentUrl = '<@ofbizUrl>removeDocumentFromTree</@ofbizUrl>';
+
+ <#-------------------------------------------------------------------------------------create Tree-->
+  function createTree() {
+    jQuery(function () {
+        jQuery("#tree").jstree({
+            "plugins" : [ "themes", "json_data", "ui", "contextmenu", "crrm"],
+            "json_data" : {
+                "data" : rawdata,
+                "progressive_render" : false
+            },
+            'contextmenu': {
+                'items': {
+                    'ccp' : false,
+                    'create' : false,
+                    'rename' : false,
+                    'remove' : false,
+                    'create1' : {
+                        'label' : "New Folder",
+                        'action' : function(obj) {
+                            callCreateDocumentTree(obj.attr('id'));
+                        }
+                    },
+                    'create2' : {
+                        'label' : "New Content in Folder",
+                        'action' : function(obj) {
+                            callCreateDocument(obj.attr('id'));
+                        }
+                    },
+                    'rename1' : {
+                        'label' : "Rename Folder",
+                        'action' : function(obj) {
+                            callRenameDocumentTree(obj.attr('id'));
+                        }
+                    },
+                    'delete1' : {
+                        'label' : "Delete Folder",
+                        'action' : function(obj) {
+                            callDeleteDocument(obj.attr('id'), obj.attr('contentId'), obj.attr('AssocType'), obj.attr('fromDate'));
+                        }
+                    },
+                }
+            }
+        });
+    });
+  }
 
-<#-------------------------------------------------------------------------------------call ofbiz function-->
-    function callDocument(ctx) {
+<#-------------------------------------------------------------------------------------callDocument function-->
+    function callDocument(contentId) {
         var tabitem='${tabButtonItem?if_exists}';
-        if(tabitem=="navigateContent")
-            listDocument='<@ofbizUrl>/views/ListDocument</@ofbizUrl>';
-        if(tabitem=="LookupContentTree")
-            listDocument='<@ofbizUrl>/views/ListContentTree</@ofbizUrl>';
-        if(tabitem=="LookupDetailContentTree")
-            listDocument='<@ofbizUrl>/views/ViewContentDetail</@ofbizUrl>';
-        var bindArgs = {
+        if (tabitem=="navigateContent")
+            listDocument = '<@ofbizUrl>/views/ListDocument</@ofbizUrl>';
+        if (tabitem=="LookupContentTree")
+            listDocument = '<@ofbizUrl>/views/ListContentTree</@ofbizUrl>';
+        if (tabitem=="LookupDetailContentTree")
+            listDocument = '<@ofbizUrl>/views/ViewContentDetail</@ofbizUrl>';
+
+        //jQuerry Ajax Request
+        jQuery.ajax({
             url: listDocument,
-            method: 'POST',
-            mimetype: 'text/html',
-            content: ctx,
-            error: function(type, data, evt) {
-                alert("An error occured loading content! : " + data);
-            },
-            load: function(type, data, evt) {
-                var innerPage = dojo.byId('Document');
-                innerPage.innerHTML = data;
-            }
-        };
-        dojo.io.bind(bindArgs);
-    }
-<#-------------------------------------------------------------------------------------callCreateFolder function-->
-    function callCreateDocumentTree(contentId) {
-        var bindArgs = {
+            type: 'POST',
+            data: {"contentId" : contentId},
+            error: function(msg) {
+                alert("An error occured loading content! : " + msg);
+            },
+            success: function(msg) {
+                jQuery('#Document').html(msg);
+            }
+        });
+     }
+<#-------------------------------------------------------------------------------------callCreateDocumentTree function-->
+      function callCreateDocumentTree(contentId) {
+        jQuery.ajax({
             url: editDocumentTreeUrl,
-            method: 'POST',
-            mimetype: 'text/html',
-            content: {  contentId: contentId,
-                        contentAssocTypeId:'TREE_CHILD'},
-            error: function(type, data, evt) {
-                alert("An error occured loading content! : " + data);
-            },
-             load: function(type, data, evt) {
-                var innerPage = dojo.byId('EditDocumentTree');
-                innerPage.innerHTML = data;
+            type: 'POST',
+            data: {contentId: contentId,
+                        contentAssocTypeId: 'TREE_CHILD'},
+            error: function(msg) {
+                alert("An error occured loading content! : " + msg);
+            },
+            success: function(msg) {
+                jQuery('#Document').html(msg);
             }
-        };
-        dojo.io.bind(bindArgs);
+        });
     }
 <#-------------------------------------------------------------------------------------callCreateSection function-->
-    function callCreateDocument(ctx) {
-        var bindArgs = {
+    function callCreateDocument(contentId) {
+        jQuery.ajax({
             url: editDocumentUrl,
-            method: 'POST',
-            mimetype: 'text/html',
-            content: {contentId: ctx},
-            error: function(type, data, evt) {
-                alert("An error occured loading content! : " + data);
-            },
-            load: function(type, data, evt) {
-                var innerPage = dojo.byId('Document');
-                innerPage.innerHTML = data;
+            type: 'POST',
+            data: {contentId: contentId},
+            error: function(msg) {
+                alert("An error occured loading content! : " + msg);
+            },
+            success: function(msg) {
+                jQuery('#Document').html(msg);
             }
-        };
-        dojo.io.bind(bindArgs);
+        });
     }
 <#-------------------------------------------------------------------------------------callEditSection function-->
-    function callEditDocument(ctx) {
-
-        var bindArgs = {
+    function callEditDocument(contentIdTo) {
+        jQuery.ajax({
             url: editDocumentUrl,
-            method: 'POST',
-            mimetype: 'text/html',
-            content: {contentIdTo: ctx},
-            error: function(type, data, evt) {
-                alert("An error occured loading content! : " + data);
-            },
-            load: function(type, data, evt) {
-                var innerPage = dojo.byId('Document');
-                innerPage.innerHTML = data;
+            type: 'POST',
+            data: {contentIdTo: contentIdTo},
+            error: function(msg) {
+                alert("An error occured loading content! : " + msg);
+            },
+            success: function(msg) {
+                jQuery('#Document').html(msg);
             }
-        };
-        dojo.io.bind(bindArgs);
+        });
 
     }
 <#-------------------------------------------------------------------------------------callDeleteItem function-->
-    function callDeleteDocument(contentIdTo,objstr) {
-        var ctx = new Array();
-        if (objstr != null && objstr.length > 0) {
-            var obj = objstr.split("|");
-            ctx['contentId'] = obj[0];
-            ctx['contentAssocTypeId'] = obj[1];
-            ctx['fromDate'] = obj[2];
-        }
-        ctx['contentIdTo']=contentIdTo;
-        var bindArgs = {
+    function callDeleteDocument(contentId, contentIdTo, contentAssocTypeId, fromDate) {
+        jQuery.ajax({
             url: deleteDocumentUrl,
-            method: 'POST',
-            mimetype: 'text/html',
-            content: ctx,
-            error: function(type, data, evt) {
-                alert("An error occured loading content! : " + data);
+            type: 'POST',
+            data: {contentId : contentId, contentIdTo : contentIdTo, contentAssocTypeId : contentAssocTypeId, fromDate : fromDate},
+            error: function(msg) {
+                alert("An error occured loading content! : " + msg);
             },
-            load: function(type, data, evt) {
+            success: function(msg) {
                 location.reload();
             }
-        };
-        dojo.io.bind(bindArgs);
+        });
     }
  <#-------------------------------------------------------------------------------------callRename function-->
     function callRenameDocumentTree(contentId) {
-        var bindArgs = {
+        jQuery.ajax({
             url: editDocumentTreeUrl,
-            method: 'POST',
-            mimetype: 'text/html',
-            content: {  contentId: contentId,
-                        contentAssocTypeId:'TREE_CHILD',
-                        rename: 'Y'
+            type: 'POST',
+            data: {  contentId: contentId,
+                     contentAssocTypeId:'TREE_CHILD',
+                     rename: 'Y'
                      },
-            error: function(type, data, evt) {
-                alert("An error occured loading content! : " + data);
+            error: function(msg) {
+                alert("An error occured loading content! : " + msg);
             },
-             load: function(type, data, evt) {
-                var innerPage = dojo.byId('EditDocumentTree');
-                innerPage.innerHTML = data;
+            success: function(msg) {
+                jQuery('#Document').html(msg);
             }
-        };
-        dojo.io.bind(bindArgs);
+        });
     }
  <#------------------------------------------------------pagination function -->
     function nextPrevDocumentList(url){
         url= '<@ofbizUrl>'+url+'</@ofbizUrl>';
-         var bindArgs = {
+         jQuery.ajax({
             url: url,
-            method: 'POST',
-            mimetype: 'text/html',
-            error: function(type, data, evt) {
-                alert("An error occured loading content! : " + data);
-            },
-            load: function(type, data, evt) {
-                var innerPage = dojo.byId('Document');
-                innerPage.innerHTML = data;
+            type: 'POST',
+            error: function(msg) {
+                alert("An error occured loading content! : " + msg);
+            },
+            success: function(msg) {
+                jQuery('#Document').html(msg);
             }
-        };
-        dojo.io.bind(bindArgs);
+        });
     }
+
 </script>
 
-<style type="text/css">
-.dojoContextMenu {
-    background-color: #ccc;
-    font-size: 10px;
-}
+<style>
 <#if tabButtonItem?has_content>
     <#if tabButtonItem=="LookupContentTree"||tabButtonItem=="LookupDetailContentTree">
-body{background:none;}
-.left-border{float:left;width:25%;}
-.contentarea{margin: 0 0 0 0.5em;padding:0 0 0 0.5em;}
-.leftonly{float:none;min-height:25em;}
+        body{background:none;}
+        .left-border{float:left;width:25%;}
+        .contentarea{margin: 0 0 0 0.5em;padding:0 0 0 0.5em;}
+        .leftonly{float:none;min-height:25em;}
     </#if>
 </#if>
 </style>
 
-<#-- looping macro -->
-<#macro fillTree assocList>
-  <#if (assocList?has_content)>
-    <#list assocList as assoc>
-        <#assign content  = delegator.findByPrimaryKey("Content",Static["org.ofbiz.base.util.UtilMisc"].toMap("contentId",assoc.contentIdTo))/>
-        <div dojoType="TreeNode" title="${content.contentName?default(assoc.contentIdTo)}" widgetId="${assoc.contentIdTo}"
-             object="${assoc.contentId}|${assoc.contentAssocTypeId}|${assoc.fromDate}">
-            <#assign assocChilds  = delegator.findByAnd("ContentAssoc",Static["org.ofbiz.base.util.UtilMisc"].toMap("contentId",assoc.contentIdTo,"contentAssocTypeId", "TREE_CHILD"))/>
-            <#if assocChilds?has_content>
-                <@fillTree assocList = assocChilds/>
-            </#if>
-        </div>
-    </#list>
-  </#if>
-</#macro>
-
-<dl dojoType="TreeContextMenu" id="contentContextMenu" style="font-size: 1em; color: #ccc;">
-    <dt dojoType="TreeMenuItem" id="NewDocumentTree" caption="${uiLabelMap.ContentNewFolder}"/>
-    <dt dojoType="TreeMenuItem" id="NewDocument" caption="${uiLabelMap.ContentNewContentInFolder}"/>
-    <#--<dt dojoType="TreeMenuItem" id="EditDocument" caption="Edit Document"/> -->
-    <dt dojoType="TreeMenuItem" id="RenameDocumentTree" caption="${uiLabelMap.ContentRenameFolder}"/>
-    <dt dojoType="TreeMenuItem" id="DeleteDocument" caption="${uiLabelMap.ContentDeleteFolder}"/>
-</dl>
-
-
-<dojo:TreeSelector widgetId="contentTreeSelector" eventNames="select:showDocument"></dojo:TreeSelector>
-<div dojoType="Tree" menu="contentContextMenu" widgetId="contentTree" selector="contentTreeSelector" toggler="fade" toggleDuration="500">
-    <#if (contentAssoc?has_content)>
-        <@fillTree assocList = contentAssoc/>
-    </#if>
-</div>
+<div id="tree"></div>
+
 

Modified: ofbiz/branches/jquery/applications/content/webapp/content/content/DisplayContentNav.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/jquery/applications/content/webapp/content/content/DisplayContentNav.ftl?rev=1036195&r1=1036194&r2=1036195&view=diff
==============================================================================
--- ofbiz/branches/jquery/applications/content/webapp/content/content/DisplayContentNav.ftl (original)
+++ ofbiz/branches/jquery/applications/content/webapp/content/content/DisplayContentNav.ftl Wed Nov 17 20:13:57 2010
@@ -17,217 +17,223 @@
   under the License.
   -->
 
-<script type="text/javascript">
+<script language="javascript" type="text/javascript" src="<@ofbizContentUrl>/images/jquery/plugins/jsTree/jquery.jstree.js</@ofbizContentUrl>"></script>
 
-    dojo.require("dojo.widget.*");
-    dojo.require("dojo.event.*");
-    dojo.require("dojo.io.*");
+<script type="application/javascript">
+<#-- some labels are not unescaped in the JSON object so we have to do this manuely -->
+function unescapeHtmlText(text) {
+    return jQuery('<div />').html(text).text()
+}
+
+jQuery(document).ready(createTree());
+
+/*creating the JSON Data*/
+var rawdata = [
+      <#if (contentAssoc?has_content)>
+          <@fillTree assocList = contentAssoc/>
+      </#if>
+
+      <#macro fillTree assocList>
+          <#if (assocList?has_content)>
+            <#list assocList as assoc>
+                <#assign content  = delegator.findByPrimaryKey("Content",Static["org.ofbiz.base.util.UtilMisc"].toMap("contentId",assoc.contentIdTo))/>
+                {
+                "data": {"title" : unescapeHtmlText("${content.contentName!assoc.contentIdTo}"), "attr": {"href": "javascript:void(0);", "onClick" : "callDocument('${assoc.contentIdTo}');"}},
+                <#assign assocChilds  = delegator.findByAnd("ContentAssoc",Static["org.ofbiz.base.util.UtilMisc"].toMap("contentId",assoc.contentIdTo,"contentAssocTypeId", "TREE_CHILD"))/>
+                    "attr": {"id" : "${assoc.contentIdTo}", "contentId" : "${assoc.contentId}", "AssocType" : "${assoc.contentAssocTypeId}", "fromDate" : "${assoc.fromDate}"},
+                <#if assocChilds?has_content>
+                    "children": [
+                        <@fillTree assocList = assocChilds/>
+                    ]
+                </#if>
+                <#if assoc_has_next>
+                },
+                <#else>
+                }
+                </#if>
+            </#list>
+          </#if>
+        </#macro>
+     ];
 
+ <#-------------------------------------------------------------------------------------define Requests-->
     var treeSelected = false;
     var editDocumentTreeUrl = '<@ofbizUrl>/views/EditDocumentTree</@ofbizUrl>';
     var listDocument =  '<@ofbizUrl>/views/ShowDocument</@ofbizUrl>';
     var editDocumentUrl = '<@ofbizUrl>/views/EditDocument</@ofbizUrl>';
     var deleteDocumentUrl = '<@ofbizUrl>removeDocumentFromTree</@ofbizUrl>';
-<#-------------------------------------------------------------------------------------Load function-->
-    dojo.addOnLoad(function() {
-        dojo.event.topic.subscribe("showDocument",
-            function(message) {
-                   treeSelected = true;
-                   var ctx = new Array();
-                   ctx['contentId'] = message.node.widgetId;
-                   callDocument(ctx);
-            }
-
-        );
-        dojo.event.topic.subscribe("NewDocumentTree/engage",
-            function (menuItem) {
-                var node = menuItem.getTreeNode();
-                callCreateDocumentTree(node.widgetId);
-            }
-
-        );
-        dojo.event.topic.subscribe("NewDocument/engage",
-            function (menuItem) {
-                var node = menuItem.getTreeNode();
-                callCreateDocument(node.widgetId);
-            }
-
-        );
-        dojo.event.topic.subscribe("EditDocument/engage",
-            function (menuItem) {
-                var node = menuItem.getTreeNode();
-                callEditDocument(node.widgetId);
-            }
-        );
-       dojo.event.topic.subscribe("RenameDocumentTree/engage",
-            function (menuItem) {
-                var node = menuItem.getTreeNode();
-                callRenameDocumentTree(node.widgetId);
-            }
-
-        );
-        dojo.event.topic.subscribe("DeleteDocument/engage",
-            function (menuItem) {
-                var node = menuItem.getTreeNode();
-                callDeleteDocument(node.widgetId, node.object);
-            }
-        );
-        }
-    );
-
-<#-------------------------------------------------------------------------------------call ofbiz function-->
-    function callDocument(ctx) {
-        var bindArgs = {
+
+ <#-------------------------------------------------------------------------------------create Tree-->
+  function createTree() {
+    jQuery(function () {
+        jQuery("#tree").jstree({
+            "plugins" : [ "themes", "json_data", "ui", "contextmenu", "crrm"],
+            "json_data" : {
+                "data" : rawdata,
+                "progressive_render" : false
+            },
+            'contextmenu': {
+                'items': {
+                    'ccp' : false,
+                    'create' : false,
+                    'rename' : false,
+                    'remove' : false,
+                    'create1' : {
+                        'label' : "New Folder",
+                        'action' : function(obj) {
+                            callCreateDocumentTree(obj.attr('id'));
+                        }
+                    },
+                    'create2' : {
+                        'label' : "New Content in Folder",
+                        'action' : function(obj) {
+                            callCreateDocument(obj.attr('id'));
+                        }
+                    },
+                    'rename1' : {
+                        'label' : "Rename Folder",
+                        'action' : function(obj) {
+                            callRenameDocumentTree(obj.attr('id'));
+                        }
+                    },
+                    'delete1' : {
+                        'label' : "Delete Folder",
+                        'action' : function(obj) {
+                            callDeleteDocument(obj.attr('id'), obj.attr('contentId'), obj.attr('AssocType'), obj.attr('fromDate'));
+                        }
+                    },
+                }
+            }
+        });
+    });
+  }
+
+<#-------------------------------------------------------------------------------------callDocument function-->
+    function callDocument(contentId) {
+        var tabitem='${tabButtonItem?if_exists}';
+        if (tabitem=="navigateContent")
+            listDocument = '<@ofbizUrl>/views/ListDocument</@ofbizUrl>';
+        if (tabitem=="LookupContentTree")
+            listDocument = '<@ofbizUrl>/views/ListContentTree</@ofbizUrl>';
+        if (tabitem=="LookupDetailContentTree")
+            listDocument = '<@ofbizUrl>/views/ViewContentDetail</@ofbizUrl>';
+
+        //jQuerry Ajax Request
+        jQuery.ajax({
             url: listDocument,
-            method: 'POST',
-            mimetype: 'text/html',
-            content: ctx,
-            error: function(type, data, evt) {
-                alert("An error occured loading content! : " + data);
-            },
-            load: function(type, data, evt) {
-                var innerPage = dojo.byId('Document');
-                innerPage.innerHTML = data;
-            }
-        };
-        dojo.io.bind(bindArgs);
-    }
-<#-------------------------------------------------------------------------------------callCreateFolder function-->
-    function callCreateDocumentTree(contentId) {
-        var bindArgs = {
+            type: 'POST',
+            data: {"contentId" : contentId},
+            error: function(msg) {
+                alert("An error occured loading content! : " + msg);
+            },
+            success: function(msg) {
+                jQuery('#Document').html(msg);
+            }
+        });
+     }
+<#-------------------------------------------------------------------------------------callCreateDocumentTree function-->
+      function callCreateDocumentTree(contentId) {
+        jQuery.ajax({
             url: editDocumentTreeUrl,
-            method: 'POST',
-            mimetype: 'text/html',
-            content: {  contentId: contentId,
-                        contentAssocTypeId:'TREE_CHILD'},
-            error: function(type, data, evt) {
-                alert("An error occured loading content! : " + data);
-            },
-             load: function(type, data, evt) {
-                var innerPage = dojo.byId('EditDocumentTree');
-                innerPage.innerHTML = data;
+            type: 'POST',
+            data: {  contentId: contentId,
+                        contentAssocTypeId: 'TREE_CHILD'},
+            error: function(msg) {
+                alert("An error occured loading content! : " + msg);
+            },
+            success: function(msg) {
+                jQuery('#Document').html(msg);
             }
-        };
-        dojo.io.bind(bindArgs);
+        });
     }
 <#-------------------------------------------------------------------------------------callCreateSection function-->
-    function callCreateDocument(ctx) {
-        var bindArgs = {
+    function callCreateDocument(contentId) {
+        jQuery.ajax({
             url: editDocumentUrl,
-            method: 'POST',
-            mimetype: 'text/html',
-            content: {contentId: ctx},
-            error: function(type, data, evt) {
-                alert("An error occured loading content! : " + data);
-            },
-            load: function(type, data, evt) {
-                var innerPage = dojo.byId('Document');
-                innerPage.innerHTML = data;
+            type: 'POST',
+            data: {contentId: contentId},
+            error: function(msg) {
+                alert("An error occured loading content! : " + msg);
+            },
+            success: function(msg) {
+                jQuery('#Document').html(msg);
             }
-        };
-        dojo.io.bind(bindArgs);
+        });
     }
 <#-------------------------------------------------------------------------------------callEditSection function-->
-    function callEditDocument(ctx) {
-
-        var bindArgs = {
+    function callEditDocument(contentIdTo) {
+        jQuery.ajax({
             url: editDocumentUrl,
-            method: 'POST',
-            mimetype: 'text/html',
-            content: {contentIdTo: ctx},
-            error: function(type, data, evt) {
-                alert("An error occured loading content! : " + data);
-            },
-            load: function(type, data, evt) {
-                var innerPage = dojo.byId('Document');
-                innerPage.innerHTML = data;
+            type: 'POST',
+            data: {contentIdTo: contentIdTo},
+            error: function(msg) {
+                alert("An error occured loading content! : " + msg);
+            },
+            success: function(msg) {
+                jQuery('#Document').html(msg);
             }
-        };
-        dojo.io.bind(bindArgs);
+        });
 
     }
 <#-------------------------------------------------------------------------------------callDeleteItem function-->
-    function callDeleteDocument(contentIdTo,objstr) {
-        var ctx = new Array();
-        if (objstr != null && objstr.length > 0) {
-            var obj = objstr.split("|");
-            ctx['contentId'] = obj[0];
-            ctx['contentAssocTypeId'] = obj[1];
-            ctx['fromDate'] = obj[2];
-        }
-        ctx['contentIdTo']=contentIdTo;
-        var bindArgs = {
+    function callDeleteDocument(contentId, contentIdTo, contentAssocTypeId, fromDate) {
+        jQuery.ajax({
             url: deleteDocumentUrl,
-            method: 'POST',
-            mimetype: 'text/html',
-            content: ctx,
-            error: function(type, data, evt) {
-                alert("An error occured loading content! : " + data);
+            type: 'POST',
+            data: {contentId : contentId, contentIdTo : contentIdTo, contentAssocTypeId : contentAssocTypeId, fromDate : fromDate},
+            error: function(msg) {
+                alert("An error occured loading content! : " + msg);
             },
-            load: function(type, data, evt) {
+            success: function(msg) {
                 location.reload();
             }
-        };
-        dojo.io.bind(bindArgs);
+        });
     }
  <#-------------------------------------------------------------------------------------callRename function-->
     function callRenameDocumentTree(contentId) {
-        var bindArgs = {
+        jQuery.ajax({
             url: editDocumentTreeUrl,
-            method: 'POST',
-            mimetype: 'text/html',
-            content: {  contentId: contentId,
-                        contentAssocTypeId:'TREE_CHILD',
-                        rename: 'Y'
+            type: 'POST',
+            data: {  contentId: contentId,
+                     contentAssocTypeId:'TREE_CHILD',
+                     rename: 'Y'
                      },
-            error: function(type, data, evt) {
-                alert("An error occured loading content! : " + data);
+            error: function(msg) {
+                alert("An error occured loading content! : " + msg);
             },
-             load: function(type, data, evt) {
-                var innerPage = dojo.byId('EditDocumentTree');
-                innerPage.innerHTML = data;
+            success: function(msg) {
+                jQuery('#Document').html(msg);
             }
-        };
-        dojo.io.bind(bindArgs);
+        });
     }
+ <#------------------------------------------------------pagination function -->
+    function nextPrevDocumentList(url){
+        url= '<@ofbizUrl>'+url+'</@ofbizUrl>';
+         jQuery.ajax({
+            url: url,
+            type: 'POST',
+            error: function(msg) {
+                alert("An error occured loading content! : " + msg);
+            },
+            success: function(msg) {
+                jQuery('#Document').html(msg);
+            }
+        });
+    }
+
 </script>
 
-<style type="text/css">
-.dojoContextMenu {
-    background-color: #ccc;
-    font-size: 10px;
-}
+<style>
+<#if tabButtonItem?has_content>
+    <#if tabButtonItem=="LookupContentTree"||tabButtonItem=="LookupDetailContentTree">
+        body{background:none;}
+        .left-border{float:left;width:25%;}
+        .contentarea{margin: 0 0 0 0.5em;padding:0 0 0 0.5em;}
+        .leftonly{float:none;min-height:25em;}
+    </#if>
+</#if>
 </style>
 
-<#-- looping macro -->
-<#macro fillTree assocList>
-  <#if (assocList?has_content)>
-    <#list assocList as assoc>
-        <#assign content  = delegator.findByPrimaryKey("Content",Static["org.ofbiz.base.util.UtilMisc"].toMap("contentId",assoc.contentIdTo))/>
-        <div dojoType="TreeNode" title="${content.contentName?default(assoc.contentIdTo)}" widgetId="${assoc.contentIdTo}"
-             object="${assoc.contentId}|${assoc.contentAssocTypeId}|${assoc.fromDate}">
-            <#assign assocChilds  = delegator.findByAnd("ContentAssoc",Static["org.ofbiz.base.util.UtilMisc"].toMap("contentId",assoc.contentIdTo,"contentAssocTypeId", "TREE_CHILD"))/>
-            <#if assocChilds?has_content>
-                <@fillTree assocList = assocChilds/>
-            </#if>
-        </div>
-    </#list>
-  </#if>
-</#macro>
-
-<dl dojoType="TreeContextMenu" id="contentContextMenu" style="font-size: 1em; color: #ccc;">
-    <dt dojoType="TreeMenuItem" id="NewDocumentTree" caption="${uiLabelMap.ContentNewFolder}"/>
-    <dt dojoType="TreeMenuItem" id="NewDocument" caption="${uiLabelMap.ContentNewContentInFolder}"/>
-    <#--<dt dojoType="TreeMenuItem" id="EditDocument" caption="Edit Document"/> -->
-    <dt dojoType="TreeMenuItem" id="RenameDocumentTree" caption="${uiLabelMap.ContentRenameFolder}"/>
-    <dt dojoType="TreeMenuItem" id="DeleteDocument" caption="${uiLabelMap.ContentDeleteFolder}"/>
-</dl>
-
-
-<dojo:TreeSelector widgetId="contentTreeSelector" eventNames="select:showDocument"></dojo:TreeSelector>
-<div dojoType="Tree" menu="contentContextMenu" widgetId="contentTree" selector="contentTreeSelector" toggler="fade" toggleDuration="500">
-    <#if (contentAssoc?has_content)>
-        <@fillTree assocList = contentAssoc/>
-    </#if>
-</div>
+<div id="tree"></div>
+
 

Modified: ofbiz/branches/jquery/applications/content/webapp/content/content/nav.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/jquery/applications/content/webapp/content/content/nav.ftl?rev=1036195&r1=1036194&r2=1036195&view=diff
==============================================================================
--- ofbiz/branches/jquery/applications/content/webapp/content/content/nav.ftl (original)
+++ ofbiz/branches/jquery/applications/content/webapp/content/content/nav.ftl Wed Nov 17 20:13:57 2010
@@ -16,80 +16,75 @@
   specific language governing permissions and limitations
   under the License.
   -->
+<script language="javascript" type="text/javascript" src="<@ofbizContentUrl>/images/jquery/plugins/jsTree/jquery.jstree.js</@ofbizContentUrl>"></script>
 
-<script type="text/javascript">
-
-    dojo.require("dojo.widget.*");
-    dojo.require("dojo.event.*");
-    dojo.require("dojo.io.*");
-
-    var treeSelected = false;
-
-    dojo.addOnLoad(function() {
-            dojo.event.topic.subscribe("showDataResources",
-             function(message) {
-                treeSelected = true;
-                var ctx = new Array();
-                ctx['dataCategoryId'] = message.node.widgetId;
-                callOfbiz('<@ofbizUrl>listDataResources</@ofbizUrl>', ctx);
-             }
-        );
-        var cmsdata = dojo.byId("cmsdata");
-    });
-
-
-    function callOfbiz(url, ctx) {
-        var bindArgs = {
-            url: url,
-            method: 'POST',
-            mimetype: 'text/html',
-            content: ctx,
-            error: function(type, data, evt) {
-                alert("An error occured loading content! : " + data);
-            },
-            load: function(type, data, evt) {
-                var innerPage = dojo.byId('cmscontent');
-                innerPage.innerHTML = data;
-            }
-        };
-        dojo.io.bind(bindArgs);
-    }
-</script>
-
-<style type="text/css">
-.dojoContextMenu {
-    background-color: #ccc;
-    font-size: 10px;
+<script type="application/javascript">
+<#-- some labels are not unescaped in the JSON object so we have to do this manuely -->
+function unescapeHtmlText(text) {
+    return jQuery('<div />').html(text).text()
 }
-</style>
 
-<#-- looping macro -->
-<#macro fillTree assocList>
-  <#if (assocList?has_content)>
-    <#list assocList as assoc>
-        <div dojoType="TreeNode" title="${assoc.categoryName?default(assoc.dataCategoryId)}" widgetId="${assoc.dataCategoryId}"
-                object="${assoc.dataCategoryId}">
-            <#assign assocs = assoc.getRelated("ChildDataCategory")?if_exists/>
-            <#if (assocs?has_content)>
-                <@fillTree assocList = assocs/>
-            </#if>
-        </div>
-    </#list>
-  </#if>
-</#macro>
-
-<!--dl dojoType="TreeContextMenu" id="contextMenu" style="font-size: 1em; color: #ccc;">
-    <dt dojoType="TreeMenuItem" id="newCat" caption="New Category"/>
-    <dt dojoType="TreeMenuItem" id="delCat" caption="Remove Category"/>
-    <dt dojoType="TreeMenuItem" id="editCat" caption="Edit Category"/>
-    <dt dojoType="TreeMenuItem" id="upLoad" caption="Upload file"/>
-</dl-->
+jQuery(document).ready(createTree());
 
-<dojo:TreeSelector widgetId="webCmsTreeSelector" eventNames="select:showDataResources"></dojo:TreeSelector>
-<div dojoType="Tree" widgetId="webCmsTree" selector="webCmsTreeSelector" toggler="fade" toggleDuration="500">
+<#-- creating the JSON Data -->
+var rawdata = [
     <#if (subCategories?has_content)>
         <@fillTree assocList = subCategories/>
     </#if>
-</div>
 
+      <#macro fillTree assocList>
+          <#if (assocList?has_content)>
+            <#list assocList as assoc>
+                {
+                "data": {"title" : unescapeHtmlText("${assoc.categoryName!assoc.dataCategoryId!}"), "attr": {"href": "javascript:void(0);", "onClick" : "callDocument('${assoc.dataCategoryId!}');"}},
+                <#assign assocs = assoc.getRelated("ChildDataCategory")?if_exists/>
+                <#if assocChilds?has_content>
+                    "children": [
+                        <@fillTree assocList = assocChilds/>
+                    ]
+                </#if>
+                <#if assoc_has_next>
+                },
+                <#else>
+                }
+                </#if>
+            </#list>
+          </#if>
+        </#macro>
+     ];
+
+ <#-------------------------------------------------------------------------------------define Requests-->
+  var listDocument =  '<@ofbizUrl>listDataResources</@ofbizUrl>';
+
+ <#-------------------------------------------------------------------------------------create Tree-->
+  function createTree() {
+    jQuery(function () {
+        jQuery("#tree").jstree({
+            "plugins" : [ "themes", "json_data", "ui", "crrm"],
+            "json_data" : {
+                "data" : rawdata,
+                "progressive_render" : false
+            }
+        });
+    });
+  }
+
+<#-------------------------------------------------------------------------------------callDocument function-->
+    function callDocument(dataCategoryId) {
+        //jQuerry Ajax Request
+        jQuery.ajax({
+            url: listDocument,
+            type: 'POST',
+            data: {"dataCategoryId" : dataCategoryId},
+            error: function(msg) {
+                alert("An error occured loading content! : " + msg);
+            },
+            success: function(msg) {
+                jQuery('#cmscontent').html(msg);
+            }
+        });
+     }
+
+</script>
 
+<div id="tree"></div>
\ No newline at end of file

Modified: ofbiz/branches/jquery/applications/content/webapp/content/website/WebSiteCMSContent.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/jquery/applications/content/webapp/content/website/WebSiteCMSContent.ftl?rev=1036195&r1=1036194&r2=1036195&view=diff
==============================================================================
--- ofbiz/branches/jquery/applications/content/webapp/content/website/WebSiteCMSContent.ftl (original)
+++ ofbiz/branches/jquery/applications/content/webapp/content/website/WebSiteCMSContent.ftl Wed Nov 17 20:13:57 2010
@@ -20,10 +20,11 @@
 <script type="text/javascript">
     function cmsSave() {
         var simpleFormAction = '<@ofbizUrl>/updateContentCms</@ofbizUrl>';
-        var editor = dojo.widget.byId("w_editor");
-        if (editor) {
-            var cmsdata = dojo.byId("cmsdata");
-            cmsdata.value = editor.getEditorContent();
+        var editor = jQuery("#cmseditor");
+        if (editor.length) {
+            var cmsdata = jQuery("#cmsdata");
+            var data = editor.elrte('val');
+            cmsdata.val(data);
         }
 
         // get the cmsform
@@ -39,11 +40,15 @@
             if (uploadValue == null || uploadValue == "") {
                 form.action = simpleFormAction;
             }
+
+            // if we have a file upload make a 'real' form submit, ajax submits won't work in this cases
+            form.submit();
+            return false;
         }
 
         // submit the form
         if (form != null) {
-            form.submit();
+            ajaxSubmitForm(form, "<#if content?has_content>${content.contentId!}</#if>");
         } else {
             alert("Cannot find the cmsform!");
         }
@@ -54,14 +59,14 @@
     function selectDataType(contentId) {
         var selectObject = document.forms['cmsdatatype'].elements['dataResourceTypeId'];
         var typeValue = selectObject.options[selectObject.selectedIndex].value;
-        callEditor(true, contentId, '', typeValue);
+        callDocument(true, contentId, '', typeValue);
     }
 </script>
 
 <#-- cms menu bar -->
 <div id="cmsmenu" style="margin-bottom: 8px;">
     <#if (content?has_content)>
-        <a href="javascript:void(0);" onclick="javascript:callEditor(true, '${content.contentId}', '', 'ELECTRONIC_TEXT');" class="tabButton">${uiLabelMap.ContentQuickSubContent}</a>
+        <a href="javascript:void(0);" onclick="javascript:callDocument(true, '${content.contentId}', '', 'ELECTRONIC_TEXT');" class="tabButton">${uiLabelMap.ContentQuickSubContent}</a>
         <a href="javascript:void(0);" onclick="javascript:callPathAlias('${content.contentId}');" class="tabButton">${uiLabelMap.ContentPathAlias}</a>
         <a href="javascript:void(0);" onclick="javascript:callMetaInfo('${content.contentId}');" class="tabButton">${uiLabelMap.ContentMetaTags}</a>
     </#if>
@@ -305,7 +310,7 @@
             <td colspan="2">
               <textarea id="cmsdata" name="textData" cols="40" rows="6" style="display: none;">
                 <#if (dataText?has_content)>
-                    ${dataText.textData}
+                    ${dataText.textData!}
                 </#if>
               </textarea>
             </td>
@@ -346,7 +351,13 @@
             <tr>
               <td colspan="2">
                 <div id="editorcontainer" class="nocolumns">
-                    <div id="cmseditor" style="margin: 0; width: 100%; border: 1px solid black;"></div>
+                    <div id="cmseditor" style="margin: 0; width: 100%; border: 1px solid black;">
+                    <#if (dataText?has_content)>
+                        ${dataText.textData!}
+                        <#--${dataText.textData!?replace("&lt;", "<", "rm")?replace("&gt;", ">", "rm")?replace("&amp;", "&", "rm")?replace("&quot;", '"', "rm")?replace("&apos;", "'")}
+                        ${dataText.textData!?replace("\\&lt;", "<", "rm")?replace("\\&gt;", ">", "rm")?replace("\\&amp;", "&", "rm")?replace("\\&quot;", '"', "rm")?replace("\\&apos;", "'")}-->
+                    </#if>
+                    </div>
                 </div>
               </td>
             </tr>

Modified: ofbiz/branches/jquery/applications/content/webapp/content/website/WebSiteCMSMeta.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/jquery/applications/content/webapp/content/website/WebSiteCMSMeta.ftl?rev=1036195&r1=1036194&r2=1036195&view=diff
==============================================================================
--- ofbiz/branches/jquery/applications/content/webapp/content/website/WebSiteCMSMeta.ftl (original)
+++ ofbiz/branches/jquery/applications/content/webapp/content/website/WebSiteCMSMeta.ftl Wed Nov 17 20:13:57 2010
@@ -29,7 +29,7 @@
 <#-- cms menu bar -->
 <div id="cmsmenu" style="margin-bottom: 8px;">
     <#if (content?has_content)>
-        <a href="javascript:void(0);" onclick="javascript:callEditor(true, '${content.contentId}', '', 'ELECTRONIC_TEXT');" class="tabButton">Quick Sub-Content</a>
+        <a href="javascript:void(0);" onclick="javascript:callDocument(true, '${content.contentId}', '', 'ELECTRONIC_TEXT');" class="tabButton">Quick Sub-Content</a>
         <a href="javascript:void(0);" onclick="javascript:callPathAlias('${content.contentId}');" class="tabButton">Path Alias</a>
         <a href="javascript:void(0);" onclick="javascript:callMetaInfo('${content.contentId}');" class="selected">Meta Tags</a>
     </#if>

Modified: ofbiz/branches/jquery/applications/content/webapp/content/website/WebSiteCMSNav.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/jquery/applications/content/webapp/content/website/WebSiteCMSNav.ftl?rev=1036195&r1=1036194&r2=1036195&view=diff
==============================================================================
--- ofbiz/branches/jquery/applications/content/webapp/content/website/WebSiteCMSNav.ftl (original)
+++ ofbiz/branches/jquery/applications/content/webapp/content/website/WebSiteCMSNav.ftl Wed Nov 17 20:13:57 2010
@@ -16,242 +16,404 @@
   specific language governing permissions and limitations
   under the License.
   -->
+<script language="javascript" type="text/javascript" src="<@ofbizContentUrl>/images/jquery/plugins/jsTree/jquery.jstree.js</@ofbizContentUrl>"></script>
+<script language="javascript" type="text/javascript" src="<@ofbizContentUrl>/images/jquery/plugins/elrteEditor/elrte.min.js</@ofbizContentUrl>"></script>
+
+<link href="/images/jquery/plugins/elrteEditor/css/elrte.full.css" rel="stylesheet" type="text/css">
 
 <script type="text/javascript">
-    //var djConfig = {
-    //    isDebug: false
-    //};
-
-    dojo.require("dojo.widget.*");
-    dojo.require("dojo.event.*");
-    dojo.require("dojo.io.*");
+    jQuery(document).ready(loadTrees());
 
-    var treeSelected = false;
     var contentRoot = '${contentRoot?if_exists}';
     var webSiteId = '${webSiteId?if_exists}';
     var editorUrl = '<@ofbizUrl>/views/WebSiteCMSContent</@ofbizUrl>';
     var aliasUrl = '<@ofbizUrl>/views/WebSiteCMSPathAlias</@ofbizUrl>';
     var metaUrl = '<@ofbizUrl>/views/WebSiteCMSMetaInfo</@ofbizUrl>';
 
-    dojo.addOnLoad(function() {
-        dojo.event.topic.subscribe("webCmsNodeSelected",
-             function(message) {
-                treeSelected = true;
-                callEditor(false, message.node.widgetId, message.node.object);
-             }
-        );
-        dojo.event.topic.subscribe("newLong/engage",
-            function (menuItem) {
-                var node = menuItem.getTreeNode();
-                callEditor(true, node.widgetId, '', 'ELECTRONIC_TEXT');
-            }
-        );
-        dojo.event.topic.subscribe("newShort/engage",
-            function (menuItem) {
-                var node = menuItem.getTreeNode();
-                callEditor(true, node.widgetId, '', 'SHORT_TEXT');
-            }
-        );
-        dojo.event.topic.subscribe("newUrl/engage",
-            function (menuItem) {
-                var node = menuItem.getTreeNode();
-                callEditor(true, node.widgetId, '', 'URL_RESOURCE');
-            }
-        );
-        dojo.event.topic.subscribe("newImage/engage",
-            function (menuItem) {
-                var node = menuItem.getTreeNode();
-                callEditor(true, node.widgetId, '', 'IMAGE_OBJECT');
+    function loadTrees() {
+        createSubsitesTree();
+        createMenusTree();
+        createErrorTree();
+    }
+
+    function cutNameLength(name) {
+        var leng = 27;
+        return name.substring(0, leng);
+    }
+
+<#-- creating the JSON Data -->
+var rawdata_subsites = [
+    <#if (subsites?has_content)>
+        <@fillTree assocList = subsites/>
+        <#macro fillTree assocList>
+              <#if (assocList?has_content)>
+                <#list assocList as assoc>
+                    <#assign content = assoc.getRelatedOne("ToContent")/>
+                    {
+                    "data": {"title" : cutNameLength("${content.contentName!assoc.contentIdTo}"), "attr": {"href": "javascript:void(0);", "onClick" : "callDocument('', '${assoc.contentIdTo}', '', '');"}},
+                    <#assign assocChilds  = content.getRelated("FromContentAssoc")?if_exists/>
+                        "attr": {"id" : "${assoc.contentIdTo}", "contentId" : "${assoc.contentId}", "fromDate" : "${assoc.fromDate}"},
+                    <#if assocChilds?has_content>
+                        "children": [
+                            <@fillTree assocList = assocChilds/>
+                        ]
+                    </#if>
+                    <#if assoc_has_next>
+                    },
+                    <#else>
+                    }
+                    </#if>
+                </#list>
+              </#if>
+        </#macro>
+    </#if>
+];
+
+var rawdata_menus = [
+    <#if (menus?has_content)>
+        <@fillTree assocList = menus/>
+        <#macro fillTree assocList>
+              <#if (assocList?has_content)>
+                <#list assocList as assoc>
+                    <#assign content = assoc.getRelatedOne("ToContent")/>
+                    {
+                    "data": {"title" : cutNameLength("${content.contentName!assoc.contentIdTo}"), "attr": {"href": "javascript:void(0);", "onClick" : "callDocument('${assoc.contentIdTo}');"}},
+                    <#assign assocChilds  = content.getRelated("FromContentAssoc")?if_exists/>
+                        "attr": {"id" : "${assoc.contentIdTo}", "contentId" : "${assoc.contentId}", "fromDate" : "${assoc.fromDate}"},
+                    <#if assocChilds?has_content>
+                        "children": [
+                            <@fillTree assocList = assocChilds/>
+                        ]
+                    </#if>
+                    <#if assoc_has_next>
+                    },
+                    <#else>
+                    }
+                    </#if>
+                </#list>
+              </#if>
+        </#macro>
+    </#if>
+];
+
+var rawdata_errors = [
+    <#if (errors?has_content)>
+        <@fillTree assocList = errors/>
+        <#macro fillTree assocList>
+              <#if (assocList?has_content)>
+                <#list assocList as assoc>
+                    <#assign content = assoc.getRelatedOne("ToContent")/>
+                    {
+                    "data": {"title" : cutNameLength("${content.contentName!assoc.contentIdTo}"), "attr": {"href": "javascript:void(0);", "onClick" : "callDocument('', '${assoc.contentIdTo}', '', '');"}},
+                    <#assign assocChilds  = content.getRelated("FromContentAssoc")?if_exists/>
+                        "attr": {"id" : "${assoc.contentIdTo}", "contentId" : "${assoc.contentId}", "fromDate" : "${assoc.fromDate}"},
+                    <#if assocChilds?has_content>
+                        "children": [
+                            <@fillTree assocList = assocChilds/>
+                        ]
+                    </#if>
+                    <#if assoc_has_next>
+                    },
+                    <#else>
+                    }
+                    </#if>
+                </#list>
+              </#if>
+        </#macro>
+    </#if>
+];
+
+<#-------------------------------------------------------------------------------------create Tree-->
+  function createSubsitesTree() {
+    jQuery(function () {
+        jQuery("#subsites").jstree({
+            "plugins" : [ "themes", "json_data", "ui", "contextmenu", "crrm"],
+            "core" : {
+                "html_titles" : true,
+            },
+            "json_data" : {
+                "data" : rawdata_subsites,
+                "progressive_render" : false
+            },
+            'contextmenu': {
+                'items': {
+                    'ccp' : false,
+                    'create' : false,
+                    'rename' : false,
+                    'remove' : false,
+                    'create1' : {
+                        'label' : "${uiLabelMap.CommonNew} ${uiLabelMap.ContentResourceLongText}",
+                        'action' : function(obj) {
+                            callDocument(true, obj.attr('id'), '', 'ELECTRONIC_TEXT');
+                        }
+                    },
+                    'create2' : {
+                        'label' : "${uiLabelMap.CommonNew} ${uiLabelMap.ContentResourceShortText}",
+                        'action' : function(obj) {
+                            callDocument(true, obj.attr('id'), '', 'SHORT_TEXT');
+                        }
+                    },
+                    'create3' : {
+                        'label' : "${uiLabelMap.CommonNew} ${uiLabelMap.ContentResourceUrlResource}",
+                        'action' : function(obj) {
+                            callDocument(true, obj.attr('id'), '', 'URL_RESOURCE');
+                        }
+                    },
+                    'create4' : {
+                        'label' : "${uiLabelMap.CommonNew} ${uiLabelMap.ContentDataResourceImage}",
+                        'action' : function(obj) {
+                            callDocument(true, obj.attr('id'), '', 'IMAGE_OBJECT');
+                        }
+                    },
+                    'create5' : {
+                        'label' : "${uiLabelMap.CommonNew} ${uiLabelMap.ContentResourceVideo}",
+                        'action' : function(obj) {
+                            callDocument(true, obj.attr('id'), '', 'VIDEO_OBJECT');
+                        }
+                    },
+                    'create6' : {
+                        'label' : "${uiLabelMap.CommonNew} ${uiLabelMap.ContentResourceAudio}",
+                        'action' : function(obj) {
+                            callDocument(true, obj.attr('id'), '', 'AUDIO_OBJECT');
+                        }
+                    },
+                    'create7' : {
+                        'label' : "${uiLabelMap.CommonNew} ${uiLabelMap.ContentResourceOther}",
+                        'action' : function(obj) {
+                            callDocument(true, obj.attr('id'), '', 'OTHER_OBJECT');
+                        }
+                    }
+                }
             }
-        );
-        dojo.event.topic.subscribe("newVideo/engage",
-            function (menuItem) {
-                var node = menuItem.getTreeNode();
-                callEditor(true, node.widgetId, '', 'VIDEO_OBJECT');
+        });
+    });
+  }
+
+  function createMenusTree() {
+    jQuery(function () {
+        jQuery("#menus").jstree({
+            "plugins" : [ "themes", "json_data", "ui", "contextmenu", "crrm"],
+            "core" : {
+                "html_titles" : true,
+            },
+            "json_data" : {
+                "data" : rawdata_menus,
+                "progressive_render" : false
+            },
+            'contextmenu': {
+                'items': {
+                    'ccp' : false,
+                    'create' : false,
+                    'rename' : false,
+                    'remove' : false,
+                    'create1' : {
+                        'label' : "${uiLabelMap.CommonNew} ${uiLabelMap.ContentResourceLongText}",
+                        'action' : function(obj) {
+                            callDocument(true, obj.attr('id'), '', 'ELECTRONIC_TEXT');
+                        }
+                    },
+                    'create2' : {
+                        'label' : "${uiLabelMap.CommonNew} ${uiLabelMap.ContentResourceShortText}",
+                        'action' : function(obj) {
+                            callDocument(true, obj.attr('id'), '', 'SHORT_TEXT');
+                        }
+                    },
+                    'create3' : {
+                        'label' : "${uiLabelMap.CommonNew} ${uiLabelMap.ContentResourceUrlResource}",
+                        'action' : function(obj) {
+                            callDocument(true, obj.attr('id'), '', 'URL_RESOURCE');
+                        }
+                    },
+                    'create4' : {
+                        'label' : "${uiLabelMap.CommonNew} ${uiLabelMap.ContentDataResourceImage}",
+                        'action' : function(obj) {
+                            callDocument(true, obj.attr('id'), '', 'IMAGE_OBJECT');
+                        }
+                    },
+                    'create5' : {
+                        'label' : "${uiLabelMap.CommonNew} ${uiLabelMap.ContentResourceVideo}",
+                        'action' : function(obj) {
+                            callDocument(true, obj.attr('id'), '', 'VIDEO_OBJECT');
+                        }
+                    },
+                    'create6' : {
+                        'label' : "${uiLabelMap.CommonNew} ${uiLabelMap.ContentResourceAudio}",
+                        'action' : function(obj) {
+                            callDocument(true, obj.attr('id'), '', 'AUDIO_OBJECT');
+                        }
+                    },
+                    'create7' : {
+                        'label' : "${uiLabelMap.CommonNew} ${uiLabelMap.ContentResourceOther}",
+                        'action' : function(obj) {
+                            callDocument(true, obj.attr('id'), '', 'OTHER_OBJECT');
+                        }
+                    }
+                }
             }
-        );
-        dojo.event.topic.subscribe("newAudio/engage",
-            function (menuItem) {
-                var node = menuItem.getTreeNode();
-                callEditor(true, node.widgetId, '', 'AUDIO_OBJECT');
+        });
+    });
+  }
+
+  function createErrorTree() {
+    jQuery(function () {
+        jQuery("#errors").jstree({
+            "plugins" : [ "themes", "json_data", "ui", "contextmenu", "crrm"],
+            "core" : {
+                "html_titles" : true,
+            },
+            "json_data" : {
+                "data" : rawdata_errors,
+                "progressive_render" : false
+            },
+            'contextmenu': {
+                'items': {
+                    'ccp' : false,
+                    'create' : false,
+                    'rename' : false,
+                    'remove' : false,
+                    'create1' : {
+                        'label' : "${uiLabelMap.CommonNew} ${uiLabelMap.ContentResourceLongText}",
+                        'action' : function(obj) {
+                            callDocument(true, obj.attr('id'), '', 'ELECTRONIC_TEXT');
+                        }
+                    },
+                    'create2' : {
+                        'label' : "${uiLabelMap.CommonNew} ${uiLabelMap.ContentResourceShortText}",
+                        'action' : function(obj) {
+                            callDocument(true, obj.attr('id'), '', 'SHORT_TEXT');
+                        }
+                    },
+                    'create3' : {
+                        'label' : "${uiLabelMap.CommonNew} ${uiLabelMap.ContentResourceUrlResource}",
+                        'action' : function(obj) {
+                            callDocument(true, obj.attr('id'), '', 'URL_RESOURCE');
+                        }
+                    },
+                    'create4' : {
+                        'label' : "${uiLabelMap.CommonNew} ${uiLabelMap.ContentDataResourceImage}",
+                        'action' : function(obj) {
+                            callDocument(true, obj.attr('id'), '', 'IMAGE_OBJECT');
+                        }
+                    },
+                    'create5' : {
+                        'label' : "${uiLabelMap.CommonNew} ${uiLabelMap.ContentResourceVideo}",
+                        'action' : function(obj) {
+                            callDocument(true, obj.attr('id'), '', 'VIDEO_OBJECT');
+                        }
+                    },
+                    'create6' : {
+                        'label' : "${uiLabelMap.CommonNew} ${uiLabelMap.ContentResourceAudio}",
+                        'action' : function(obj) {
+                            callDocument(true, obj.attr('id'), '', 'AUDIO_OBJECT');
+                        }
+                    },
+                    'create7' : {
+                        'label' : "${uiLabelMap.CommonNew} ${uiLabelMap.ContentResourceOther}",
+                        'action' : function(obj) {
+                            callDocument(true, obj.attr('id'), '', 'OTHER_OBJECT');
+                        }
+                    }
+                }
             }
-        );
-        dojo.event.topic.subscribe("newObject/engage",
-            function (menuItem) {
-                var node = menuItem.getTreeNode();
-                callEditor(true, node.widgetId, '', 'OTHER_OBJECT');
+        });
+    });
+  }
+<#-------------------------------------------------------------------------------------callDocument function-->
+    function callDocument(sub, contentId, objstr, dataResourceTypeId) {
+        var ctx = {};
+        ctx['contentRoot'] = contentRoot;
+        ctx['webSiteId'] = webSiteId;
+
+        if (sub && contentId) {
+            if (dataResourceTypeId) {
+                ctx['dataResourceTypeId'] = dataResourceTypeId;
             }
-        );
 
-        var cmsdata = dojo.byId("cmsdata");
-        if (cmsdata) {
-            createEditor(cmsdata.value);
-        } else {
-            createEditor();
-        }
-        //alert("On load called!");
-    });
+            ctx['contentIdFrom'] = contentId;
+            ctx['contentAssocTypeId'] = 'SUB_CONTENT';
 
-    function createEditor(text) {
-        var currentEditor = dojo.widget.byId("w_editor");
-        if (currentEditor) {
-            currentEditor.destroy(true);
         }
 
-        // display parent div
-        dojo.html.show("editorcontainer");
+        if (contentId != null && contentId.length) {
+            ctx['contentId'] = contentId;
+        }
 
-        // get the editor tag
-        var editorNode = dojo.byId("cmseditor");
+        //jQuerry Ajax Request
+        jQuery.ajax({
+            url: editorUrl,
+            type: 'POST',
+            data: ctx,
+            error: function(msg) {
+                alert("An error occured loading content! : " + msg);
+            },
+            success: function(msg) {
+                jQuery('#cmscontent').html(msg);
 
-        if (editorNode) {
-            if (text) {
-                editorNode.innerHTML = text;
+                // CREATE / LOAD Editor
+                createEditor();
             }
+        });
+     }
 
-            // create the widget
-            dojo.widget.createWidget("Editor2", { id: 'w_editor', minHeight: '300px',
-                    htmlEditing: true }, editorNode);
+<#-------------------------------------------------------------------------------------createEditor function-->
+    function createEditor() {
+        var opts = {
+            cssClass : 'el-rte',
+            height   : 350,
+            toolbar  : 'maxi',
+            doctype  : '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', //'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">',            
+            cssfiles : ['css/elrte-inner.css']
         }
+        jQuery('#cmseditor').elrte(opts);
     }
 
-    function callMetaInfo(contentId) {
-        var ctx = new Array();
-        ctx['contentId'] = contentId;
-        ctx['webSiteId'] = webSiteId;
+<#-------------------------------------------------------------------------------------destroyEditor function-->
+    function destroyEditor() {
+        // TODO
+    }
 
-        // deselect the tree
-        var tree = dojo.widget.byId("webCmsTreeSelector");
-        if (tree && treeSelected) {
-            tree.deselect();
-            treeSelected = false;
-        }
+<#-------------------------------------------------------------------------------------callMetaInfo function-->
+function callMetaInfo(contentId) {
+        var ctx = {"contentId" : contentId, "webSiteId" : webSiteId};
 
         // destroy the editor
-        var editor = dojo.widget.byId("w_editor");
-        if (editor) {
-            editor.destroy(true);
-        }
-        //dojo.html.hide("editorcontainer");
+        destroyEditor();
 
-        // get the meta-info screen
-        var bindArgs = {
+        jQuery.ajax({
             url: metaUrl,
-            method: 'POST',
-            mimetype: 'text/html',
-            content: ctx,
-            error: function(type, data, evt) {
-                alert("An error occured loading content! : " + data);
+            type: 'POST',
+            data: ctx,
+            error: function(msg) {
+                alert("An error occured loading content! : " + msg);
             },
-            load: function(type, data, evt) {
-                var innerPage = dojo.byId('cmscontent');
-                innerPage.innerHTML = data;
+            success: function(msg) {
+                jQuery('#cmscontent').html(msg);
             }
-        };
-        dojo.io.bind(bindArgs);
+        });
     }
 
+<#-------------------------------------------------------------------------------------callPathAlias function-->
     function callPathAlias(contentId) {
-        var ctx = new Array();
-        ctx['contentId'] = contentId;
-        ctx['webSiteId'] = webSiteId;
-
-        // deselect the tree
-        var tree = dojo.widget.byId("webCmsTreeSelector");
-        if (tree && treeSelected) {
-            tree.deselect();
-            treeSelected = false;
-        }
+        var ctx = {"contentId" : contentId, "webSiteId" : webSiteId};
 
         // destroy the editor
-        var editor = dojo.widget.byId("w_editor");
-        if (editor) {
-            editor.destroy(true);
-        }
-        //dojo.html.hide("editorcontainer");
+        destroyEditor();
 
         // get the alias screen
-        var bindArgs = {
-            url: aliasUrl,
-            method: 'POST',
-            mimetype: 'text/html',
-            content: ctx,
-            error: function(type, data, evt) {
-                alert("An error occured loading content! : " + data);
-            },
-            load: function(type, data, evt) {
-                var innerPage = dojo.byId('cmscontent');
-                innerPage.innerHTML = data;
-            }
-        };
-        dojo.io.bind(bindArgs);
-    }
-
-    function callEditor(sub, contentId, objstr, dataResourceTypeId) {
-        var ctx = new Array();
-        if (objstr != null && objstr.length > 0) {
-            var obj = objstr.split("|");
-            ctx['contentIdFrom'] = obj[0];
-            ctx['contentAssocTypeId'] = obj[1];
-            ctx['fromDate'] = obj[2];
-        }
-
-        ctx['contentRoot'] = contentRoot;
-        ctx['webSiteId'] = webSiteId;
-
-        if (sub && contentId) {
-            if (dataResourceTypeId) {
-                ctx['dataResourceTypeId'] = dataResourceTypeId;
-            }
-
-            ctx['contentIdFrom'] = contentId;
-            ctx['contentAssocTypeId'] = 'SUB_CONTENT';
-
-            // deselect the tree
-            var tree = dojo.widget.byId("webCmsTreeSelector");
-            if (tree && treeSelected) {
-                tree.deselect();
-                treeSelected = false;
-            }
-        } else {
-            if (contentId != null && contentId.length > 0) {
-                ctx['contentId'] = contentId;
-            } else {
-                // deselect the tree
-                var tree = dojo.widget.byId("webCmsTreeSelector");
-                if (tree && treeSelected) {
-                    tree.deselect();
-                    treeSelected = false;
-                }
-            }
-        }
-
-        var bindArgs = {
-            url: editorUrl,
-            method: 'POST',
-            mimetype: 'text/html',
-            content: ctx,
-            error: function(type, data, evt) {
-                alert("An error occured loading editor! : " + data.message);
+        jQuery.ajax({
+            url: metaUrl,
+            type: 'POST',
+            data: ctx,
+            error: function(msg) {
+                alert("An error occured loading content! : " + msg);
             },
-            load: function(type, data, evt) {
-                var editPage = dojo.byId('cmscontent');
-                editPage.innerHTML = data;
-
-                // load the data
-                var cmsdata = dojo.byId("cmsdata");
-
-                // create the editor
-                if (cmsdata) {
-                    createEditor(cmsdata.value);
-                } else {
-                    createEditor();
-                }
+            success: function(msg) {
+                jQuery('#cmscontent').html(msg);
             }
-        };
-        dojo.io.bind(bindArgs);
+        });
     }
 
+<#-------------------------------------------------------------------------------------saveMetaInfo function-->
     function saveMetaInfo(form) {
         // save title
         document.cmsmeta_title.objectInfo.value = form.title.value;
@@ -270,102 +432,66 @@
         ajaxSubmitForm(document.cmsmeta_metaKeywords);
     }
 
+<#-------------------------------------------------------------------------------------pathSave function-->
     function pathSave(contentId) {
-        //dojo.html.hide("submit");
-
         var form = document.cmspathform;
         if (form != null) {
             var url = form.action;
-            var bindArgs = {
+            jQuery.ajax({
                 url: url,
-                method: "POST",
-                mimetype: "text/json",
-                formNode: form,
-                error: function(type, data, evt) {
+                type: 'POST',
+                data: jQuery(form).serialize(),
+                error: function(msg) {
                     alert("An error occurred.");
                 },
-                load: function(type, data, evt) {
+                success: function(msg) {
                     callPathAlias(contentId);
                 }
-            };
-            dojo.io.bind(bindArgs);
+            });
         }
     }
 
+<#-------------------------------------------------------------------------------------pathRemove function-->
     function pathRemove(websiteId, pathAlias, contentId) {
         var remAliasUrl = '<@ofbizUrl>/removeWebSitePathAliasJson</@ofbizUrl>';
-        var ctx = new Array();
 
-        ctx['pathAlias'] = pathAlias;
-        ctx['webSiteId'] = webSiteId;
-
-        // get the alias screen
-        var bindArgs = {
-            url: remAliasUrl,
-            method: 'POST',
-            mimetype: 'text/html',
-            content: ctx,
-            error: function(type, data, evt) {
-                alert("An error occured! : " + data);
-            },
-            load: function(type, data, evt) {
-                callPathAlias(contentId);
-            }
-        };
-        dojo.io.bind(bindArgs);
+        jQuery.ajax({
+                url: remAliasUrl,
+                type: 'POST',
+                data: {"pathAlias" : pathAlias, "webSiteId" : webSiteId},
+                error: function(msg) {
+                    alert("An error occured! : " + msg);
+                },
+                success: function(msg) {
+                    callPathAlias(contentId);
+                }
+        });
     }
 
-    function ajaxSubmitForm(form) {
+<#-------------------------------------------------------------------------------------ajaxSubmitForm function-->
+    function ajaxSubmitForm(form, contentId) {
         if (form != null) {
             var url = form.action;
-            var bindArgs = {
+            jQuery.ajax({
                 url: url,
-                method: "POST",
-                mimetype: "text/json",
-                formNode: form,
-                error: function(type, data, evt) {
-                    alert("An error occurred submitting form.");
+                type: 'POST',
+                async: false,
+                data: jQuery(form).serialize(),
+                success: function(data) {
+                    // if the content id is set reload the contentScreen
+                    if (contentId && contentId.length) {
+                        callDocument('', contentId, '', '');
+                    }
                 },
-                load: function(type, data, evt) {
+                error: function(msg) {
+                    alert("An error occurred submitting form.");
                 }
-            };
-            dojo.io.bind(bindArgs);
+            });
         }
     }
+
 </script>
 
-<style type="text/css">
-.dojoContextMenu {
-    background-color: #ccc;
-    font-size: 10px;
-}
-</style>
-
-<#-- looping macro -->
-<#macro fillTree assocList>
-  <#if (assocList?has_content)>
-    <#list assocList as assoc>
-        <#assign thisContent = assoc.getRelatedOne("ToContent")/>
-        <div dojoType="TreeNode" title="${thisContent.contentName?default(assoc.contentIdTo)}" widgetId="${assoc.contentIdTo}"
-                object="${assoc.contentId}|${assoc.contentAssocTypeId}|${assoc.fromDate}">
-            <#assign assocs = thisContent.getRelated("FromContentAssoc")?if_exists/>
-            <#if (assocs?has_content)>
-                <@fillTree assocList = assocs/>
-            </#if>
-        </div>
-    </#list>
-  </#if>
-</#macro>
-
-<dl dojoType="TreeContextMenu" id="webCmsContextMenu" style="font-size: 1em; color: #ccc;">
-    <dt dojoType="TreeMenuItem" id="newLong" caption="New Long Text"/>
-    <dt dojoType="TreeMenuItem" id="newShort" caption="New Short Text"/>
-    <dt dojoType="TreeMenuItem" id="newUrl" caption="New URL"/>
-    <dt dojoType="TreeMenuItem" id="newImage" caption="New Image"/>
-    <dt dojoType="TreeMenuItem" id="newVideo" caption="New Video"/>
-    <dt dojoType="TreeMenuItem" id="newAudio" caption="New Audio"/>
-    <dt dojoType="TreeMenuItem" id="newObject" caption="New Object"/>
-</dl>
 
 <div class="label">
     ${uiLabelMap.ContentWebSiteContent}
@@ -375,24 +501,10 @@
 </div>
 <div>&nbsp;</div>
 
-<dojo:TreeSelector widgetId="webCmsTreeSelector" eventNames="select:webCmsNodeSelected"></dojo:TreeSelector>
-<div dojoType="Tree" menu="webCmsContextMenu" widgetId="webCmsTree" selector="webCmsTreeSelector" toggler="fade" toggleDuration="500">
-    <#if (subsites?has_content)>
-        <@fillTree assocList = subsites/>
-    </#if>
-</div>
+<div id="subsites"></div>
 <#if (!subsites?has_content)>
     <a href="javascript:void(0);" class="buttontext">${uiLabelMap.ContentWebSiteAddTree}</a>
 </#if>
-
-<div>&nbsp;</div>
-<div>&nbsp;</div>
-
-<dl dojoType="TreeContextMenu" id="webMenuContextMenu" style="font-size: 1em; color: #ccc;">
-    <dt dojoType="TreeMenuItem" id="newItem" caption="New Menu Item"/>
-    <dt dojoType="TreeMenuItem" id="newMenu" caption="New Menu"/>
-</dl>
-
 <div class="label">
     ${uiLabelMap.ContentWebSiteMenus}
 </div>
@@ -401,13 +513,7 @@
 </div>
 <div>&nbsp;</div>
 
-<dojo:TreeSelector widgetId="webMenuTreeSelector" eventNames="select:webMenuNodeSelected"></dojo:TreeSelector>
-<div dojoType="Tree" menu="webMenuContextMenu" widgetId="webMenuTree" selector="webMenuTreeSelector" toggler="fade" toggleDuration="500">
-    <#if (menus?has_content)>
-        ${menus}
-        <@fillTree assocList = menus/>
-    </#if>
-</div>
+<div id="menus"></div>
 <#if (!menus?has_content)>
     <a href="javascript:void(0);" class="buttontext">${uiLabelMap.ContentWebSiteAddMenu}</a>
 </#if>
@@ -415,10 +521,6 @@
 <div>&nbsp;</div>
 <div>&nbsp;</div>
 
-<dl dojoType="TreeContextMenu" id="webErrorContextMenu" style="font-size: 1em; color: #ccc;">
-    <dt dojoType="TreeMenuItem" id="newErrorPage" caption="New Error Page"/>
-</dl>
-
 <div class="label">
     ${uiLabelMap.ContentWebSiteErrors}
 </div>
@@ -426,14 +528,7 @@
     ${uiLabelMap.ContentWebSiteAddNewErrors}
 </div>
 <div>&nbsp;</div>
-
-<dojo:TreeSelector widgetId="webErrorTreeSelector" eventNames="select:webErrorNodeSelected"></dojo:TreeSelector>
-<div dojoType="Tree" menu="webErrorContextMenu" widgetId="webErrorTree" selector="webErrorTreeSelector" toggler="fade" toggleDuration="500">
-    <#if (errors?has_content)>
-        ${errors}
-        <@fillTree assocList = errors/>
-    </#if>
-</div>
+<div id="errors"></div>
 <#if (!errors?has_content)>
     <a href="javascript:void(0);" class="buttontext">${uiLabelMap.ContentWebSiteAddError}</a>
-</#if>
\ No newline at end of file
+</#if>

Modified: ofbiz/branches/jquery/applications/content/webapp/content/website/WebSiteCMSPathAlias.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/jquery/applications/content/webapp/content/website/WebSiteCMSPathAlias.ftl?rev=1036195&r1=1036194&r2=1036195&view=diff
==============================================================================
--- ofbiz/branches/jquery/applications/content/webapp/content/website/WebSiteCMSPathAlias.ftl (original)
+++ ofbiz/branches/jquery/applications/content/webapp/content/website/WebSiteCMSPathAlias.ftl Wed Nov 17 20:13:57 2010
@@ -20,7 +20,7 @@
 <#-- cms menu bar -->
 <div id="cmsmenu" style="margin-bottom: 8px;">
     <#if (content?has_content)>
-        <a href="javascript:void(0);" onclick="javascript:callEditor(true, '${content.contentId}', '', 'ELECTRONIC_TEXT');" class="tabButton">Quick Sub-Content</a>
+        <a href="javascript:void(0);" onclick="javascript:callDocument(true, '${content.contentId}', '', 'ELECTRONIC_TEXT');" class="tabButton">Quick Sub-Content</a>
         <a href="javascript:void(0);" onclick="javascript:callPathAlias('${content.contentId}');" class="selected">Path Alias</a>
         <a href="javascript:void(0);" onclick="javascript:callMetaInfo('${content.contentId}');" class="tabButton">Meta Tags</a>
     </#if>

Modified: ofbiz/branches/jquery/applications/content/widget/WebSiteScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jquery/applications/content/widget/WebSiteScreens.xml?rev=1036195&r1=1036194&r2=1036195&view=diff
==============================================================================
--- ofbiz/branches/jquery/applications/content/widget/WebSiteScreens.xml (original)
+++ ofbiz/branches/jquery/applications/content/widget/WebSiteScreens.xml Wed Nov 17 20:13:57 2010
@@ -146,7 +146,6 @@ under the License.
     <screen name="WebSiteCMS">
         <section>
             <actions>
-                <set field="layoutSettings.javaScripts[+0]" value="/images/dojo/dojo.js" global="true"/>
                 <set field="titleProperty" value="PageTitleEditWebSiteCMS"/>
                 <set field="tabButtonItem" value="WebSiteCMS"/>
                 <set field="labelTitleProperty" value="PageTitleEditWebSiteCMS"/>
@@ -221,6 +220,8 @@ under the License.
                 <entity-one entity-name="ElectronicText" value-field="dataText">
                     <field-map field-name="dataResourceId" from-field="content.dataResourceId"/>
                 </entity-one>
+                
+               <set field="dummy" value="${groovy: print('dataText'============== + dataText)"/>
                 <set field="parameters.fromDate" type="Timestamp" from-field="parameters.fromDate"/>
                 <entity-one entity-name="ContentAssoc" value-field="assoc">
                     <field-map field-name="contentId" from-field="parameters.contentIdFrom"/>

Modified: ofbiz/branches/jquery/applications/content/widget/content/ContentScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/jquery/applications/content/widget/content/ContentScreens.xml?rev=1036195&r1=1036194&r2=1036195&view=diff
==============================================================================
--- ofbiz/branches/jquery/applications/content/widget/content/ContentScreens.xml (original)
+++ ofbiz/branches/jquery/applications/content/widget/content/ContentScreens.xml Wed Nov 17 20:13:57 2010
@@ -81,7 +81,7 @@ under the License.
     <screen name="navigateContent">
         <section>
             <actions>
-                <set field="layoutSettings.javaScripts[+0]" value="/images/dojo/dojo.js" global="true"/>
+                <set field="layoutSettings.javaScripts[+0]" value="/images/jquery/jquery-1.4.2.min.js" global="true"/>
                 <set field="titleProperty" value="PageTitleNavigateContent"/>
                 <set field="tabButtonItem" value="navigateContent"/>
                 <set field="labelTitleProperty" value="PageTitleNavigateContent"/>
@@ -460,11 +460,10 @@ under the License.
             </widgets>
         </section>
     </screen>
-    
+
     <screen name="ListContentTree">
         <section>
             <actions>
-                <set field="layoutSettings.javaScripts[+0]" value="/images/dojo/dojo.js" global="true"/>
                 <property-map resource="ContentUiLabels" map-name="uiLabelMap" global="true"/>
                 <property-map resource="CommonUiLabels" map-name="uiLabelMap" global="true"/>
                 <set field="tabButtonItem" value="ListContentTree"/>
@@ -485,11 +484,10 @@ under the License.
             </widgets>
         </section>
     </screen>
-    
+
     <screen name="LookupContentTree">
         <section>
             <actions>
-                <set field="layoutSettings.javaScripts[+0]" value="/images/dojo/dojo.js" global="true"/>
                 <property-map resource="ContentUiLabels" map-name="uiLabelMap" global="true"/>
                 <property-map resource="CommonUiLabels" map-name="uiLabelMap" global="true"/>
                 <set field="title" value="${uiLabelMap.PageTitleLookupContent}"/>
@@ -520,15 +518,14 @@ under the License.
                             </widgets>
                         </section>
                     </decorator-section>
-                </decorator-screen>    
+                </decorator-screen>
             </widgets>
         </section>
     </screen>
-    
+
     <screen name="LookupDetailContentTree">
         <section>
             <actions>
-                <set field="layoutSettings.javaScripts[+0]" value="/images/dojo/dojo.js" global="true"/>
                 <property-map resource="ContentUiLabels" map-name="uiLabelMap" global="true"/>
                 <property-map resource="CommonUiLabels" map-name="uiLabelMap" global="true"/>
                 <set field="title" value="${uiLabelMap.PageTitleLookupContent}"/>
@@ -565,7 +562,7 @@ under the License.
             </widgets>
         </section>
     </screen>
-    
+
     <screen name="ViewContentDetail">
         <section>
             <actions>