You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by ta...@apache.org on 2006/12/05 23:52:36 UTC
svn commit: r482815 [2/2] - in
/portals/jetspeed-2/trunk/applications/j2-admin/src:
java/org/apache/jetspeed/portlets/site/ webapp/WEB-INF/
webapp/WEB-INF/velocity/ webapp/WEB-INF/view/ webapp/WEB-INF/view/site/
webapp/images/
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/view/site/site-view.vm
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/view/site/site-view.vm?view=auto&rev=482815
==============================================================================
--- portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/view/site/site-view.vm (added)
+++ portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/view/site/site-view.vm Tue Dec 5 14:52:32 2006
@@ -0,0 +1,1694 @@
+#set($rc = $renderRequest.getAttribute("org.apache.jetspeed.request.RequestContext"))
+#set($req = $rc.Request)
+#set($app = $renderRequest.getContextPath())
+#set($rooturl = "${req.scheme}://${req.serverName}:${req.serverPort}${req.contextPath}/")
+
+ <div dojoType="dialog" id="DeleteResourceDialog" bgColor="grey" bgOpacity="0.5" toggle="fade" toggleDuration="250">
+ <form onsubmit="return false;">
+ <table>
+ <tr>
+ <td>Confirm Deletion of <span id='del.kind'></span> <span id='del.name'></span>:</td><td> </td>
+ </tr>
+ <tr>
+ <td colspan="2" align="right" class="buttonboxright">
+ <button dojoType="Button" onClick="dojo.widget.byId( 'DeleteResourceDialog' ).hide();" >Cancel</button>
+ <button dojoType="Button" onClick="dojo.widget.byId( 'DeleteResourceDialog' ).hide(); deleteResource();">Delete</button>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </div>
+
+ <div dojoType="dialog" id="NewResourceDialog" bgColor="grey" bgOpacity="0.5" toggle="fade" toggleDuration="250" class="constraints">
+ <form onsubmit="return false;">
+ <table>
+ <tr>
+ <td class="permissions" colspan='2'>Create new <span id='res.kind'></span>:</td><td> </td>
+ </tr>
+ <tr>
+ <td class="permissions">Name</td>
+ <td class="permissions">
+ <input type="text" id="res.name" class="medium" required="true" onChange="validateResourceName()"/>
+ <input type='hidden' id='res.parent' />
+ </td>
+ </tr>
+ <tr>
+ <td class="permissions">Title</td>
+ <td class="permissions">
+ <input type="text" id="res.title" class="medium" required="true" onChange="validateNewField()"/>
+ </td>
+ </tr>
+ <tr>
+ <td class="permissions">Short Title</td>
+ <td class="permissions">
+ <input type="text" id="res.short-title" class="medium" />
+ </td>
+ </tr>
+ <tr id="res.link">
+ <td class="permissions">URL</td>
+ <td class="permissions">
+ <input type="text" id="res.url" class="medium" onChange="validateNewField()"/>
+ </td>
+ </tr>
+ <tr>
+ <td align='right'>
+ <button widgetId='res.save' dojoType="Button" onClick="dojo.widget.byId( 'NewResourceDialog' ).hide(); createResource();">Create</button>
+ </td>
+ <td align='right'>
+ <button dojoType="Button" onClick="dojo.widget.byId( 'NewResourceDialog' ).hide();" >Cancel</button>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </div>
+
+ <div dojoType="dialog" id="NewOwnerDialog" bgColor="grey" bgOpacity="0.5" toggle="fade" toggleDuration="250" class="constraints">
+ <form onsubmit="return false;">
+ <table>
+ <tr>
+ <td class="permissions" colspan='2'>Owner Constraint:</td><td> </td>
+ </tr>
+ <tr>
+ <td class="permissions">Name</td>
+ <td class="permissions">
+ <input type="text" id="owner.name" class="medium" required="true" onChange="validateOwnerName()"/>
+ </td>
+ </tr>
+ <tr>
+ <td align='right'>
+ <button widgetId='owner.save' dojoType="Button" onClick="dojo.widget.byId( 'NewOwnerDialog' ).hide(); createOwner();">Save</button>
+ </td>
+ <td align='right'>
+ <button dojoType="Button" onClick="dojo.widget.byId( 'NewOwnerDialog' ).hide();" >Cancel</button>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </div>
+
+<div dojoType="TreeRPCController"
+ RPCUrl="${rooturl}/ajaxapi?action=getfolderlist"
+ widgetId="treeController"
+ DNDController="create">
+</div>
+
+<div dojoType="TreeSelector" widgetId="treeSelector" eventNames="select:nodeSelected"></div>
+
+<div dojoType="TreeContextMenu" toggle="explode" contextMenuForWindow="false" widgetId="treeContextMenu">
+ <div dojoType="TreeMenuItem" treeActions="remove" iconSrc="$app/images/delete.png" caption="Remove" widgetId="treeContextMenuRemove"></div>
+ <div dojoType="TreeMenuItem" treeActions="newFolder" iconSrc="$app/images/folder_new.gif" caption="New Folder" widgetId="treeContextMenuNewFolder"></div>
+ <div dojoType="TreeMenuItem" treeActions="newPage" iconSrc="$app/images/page_new.gif" caption="New Page" widgetId="treeContextMenuNewPage"></div>
+ <div dojoType="TreeMenuItem" treeActions="newLink" iconSrc="$app/images/link_add.png" caption="New Link" widgetId="treeContextMenuNewLink"></div>
+ <div dojoType="TreeMenuItem" treeActions="copy" iconSrc="$app/images/mouse_add.png" caption="Copy" widgetId="treeContextMenuCopy"></div>
+ <div dojoType="TreeMenuItem" treeActions="move" iconSrc="$app/images/move.gif" caption="Move" widgetId="treeContextMenuMove"></div>
+</div>
+
+<script type="text/javascript">
+function getNewMetaPrototype()
+{
+ return { name: "", language: "", value: "" };
+}
+function getNewSecurityPrototype()
+{
+ return { name: "", kind: "" };
+}
+function createNewInformation(kind)
+{
+ return { kind: kind, modified: false}
+}
+var FolderHandler = function()
+{
+ this.populate = function(data)
+ {
+ document.getElementById("rhs").style.display = "block";
+ dojo.widget.byId("rhs").show();
+ elementToInput("finfo", "name", data);
+ elementToInput("finfo", "path", data);
+ titlesToInput("finfo", "title", "short-title", data);
+ elementToInput("finfo", "default-page", data);
+ attributeToSelect("finfo", "defaults", "layout-decorator", data);
+ attributeToSelect("finfo", "defaults", "portlet-decorator", data);
+ attributeToCheckbox("finfo", "folder", "hidden", data);
+ window.information = createNewInformation("finfo");
+ populateMetadata("metadata", data, "folder");
+ populateSecurity("security", data, "folder");
+ document.getElementById("divFolderButtons").style.display = "block";
+ }
+ this.failure = function(data)
+ {
+ }
+}
+var PageHandler = function()
+{
+ this.populate = function(data)
+ {
+ document.getElementById("rhs").style.display = "block";
+ dojo.widget.byId("rhs").show();
+ elementToInput("pinfo", "name", data);
+ elementToInput("pinfo", "path", data);
+ titlesToInput("pinfo", "title", "short-title", data);
+ attributeToSelect("pinfo", "defaults", "layout-decorator", data);
+ attributeToSelect("pinfo", "defaults", "portlet-decorator", data);
+ attributeToSelect("pinfo", "defaults", "theme", data);
+ attributeToCheckbox("pinfo", "page", "hidden", data);
+ window.information = createNewInformation("pinfo");
+ populateMetadata("metadata", data, "page");
+ populateSecurity("security", data, "page");
+ document.getElementById("divFolderButtons").style.display = "none";
+ }
+ this.failure = function(data)
+ {
+ }
+}
+var LinkHandler = function()
+{
+ this.populate = function(data)
+ {
+ document.getElementById("rhs").style.display = "block";
+ dojo.widget.byId("rhs").show();
+ elementToInput("linfo", "name", data);
+ elementToInput("linfo", "path", data);
+ titlesToInput("linfo", "title", "short-title", data);
+ elementToInput("linfo", "url", data);
+ elementToSelect("linfo", "target", data);
+ attributeToCheckbox("linfo", "link", "hidden", data);
+ window.information = createNewInformation("linfo");
+ populateMetadata("metadata", data, "link");
+ populateSecurity("security", data, "link");
+ document.getElementById("divFolderButtons").style.display = "none";
+ }
+ this.failure = function(data)
+ {
+ }
+}
+function editResource(node)
+{
+ if (node == null)
+ {
+ alert("Please select a resource in the portal site tree.");
+ return;
+ }
+ determineSave();
+ if ( node.object == "Folder" )
+ {
+ var names = new Array("folder");
+ var values = new Array(node.widgetId);
+ ajaxInvoke("getfolder", names, values, new FolderHandler() );
+ dojo.widget.byId( "saveFInfoButton" ).setDisabled(true);
+ dojo.widget.byId( "revertFInfoButton" ).setDisabled(true);
+ displayTabs( [ "infoTabFolder", "securityTab", "metaTab", "menusTab", "orderTab" ] );
+ }
+ if ( node.object == "Page" )
+ {
+ var names = new Array("page", "fragments");
+ var values = new Array(node.widgetId, "false");
+ ajaxInvoke("getpage", names, values, new PageHandler() );
+ dojo.widget.byId( "savePInfoButton" ).setDisabled(true);
+ dojo.widget.byId( "revertPInfoButton" ).setDisabled(true);
+ displayTabs( [ "infoTabPage", "securityTab", "metaTab" ] );
+ }
+ else if ( node.object == "Link" )
+ {
+ var names = new Array("link");
+ var values = new Array(node.widgetId);
+ ajaxInvoke("getlink", names, values, new LinkHandler() );
+ dojo.widget.byId( "saveLInfoButton" ).setDisabled(true);
+ dojo.widget.byId( "revertLInfoButton" ).setDisabled(true);
+ displayTabs( [ "infoTabLinks", "securityTab", "metaTab" ] );
+ }
+}
+function validateNewField()
+{
+ dojo.widget.byId("res.save").setDisabled(disableNewSave());
+}
+function validateResourceName()
+{
+ var name = dojo.byId("res.name").value;
+ var kind = dojo.byId("res.kind").innerHTML;
+ if (name != null && dojo.string.trim(name).length > 0)
+ {
+ name = dojo.string.trim(name.toLowerCase());
+ if (kind == "Page")
+ {
+ var regex = new RegExp(".*\.psml");
+ if (!name.match(regex))
+ {
+ name = name + ".psml";
+ dojo.byId("res.name").value = name;
+ }
+ }
+ else if (kind == "Link")
+ {
+ var regex = new RegExp(".*\.link");
+ if (!name.match(regex))
+ {
+ name = name + ".link";
+ dojo.byId("res.name").value = name;
+ }
+ }
+ if (isDupe(kind, name))
+ {
+ alert(kind + " name " + name + " is already in use. Please chose another name.");
+ dojo.widget.byId("res.save").setDisabled(true);
+ }
+ }
+ dojo.widget.byId("res.save").setDisabled(disableNewSave());
+}
+function disableNewSave()
+{
+ var title = dojo.byId("res.title").value;
+ var name = dojo.byId("res.name").value;
+ var kind = dojo.byId("res.kind").innerHTML;
+ var disabled = false;
+ if (name == null || dojo.string.trim(name) == "" ||
+ title == null || dojo.string.trim(title) == "")
+ disabled = true;
+ if (kind == "Link")
+ {
+ var url = dojo.byId("res.url").value;
+ if (url == null || dojo.string.trim(url) == "")
+ disabled = true;
+ }
+ return disabled;
+}
+function isDupe(kind, name)
+{
+ var selector = dojo.widget.byId('treeSelector');
+ var parent = selector.selectedNode;
+ for(var i=0; i<parent.children.length; i++)
+ {
+ var child = parent.children[i];
+ if (child.object == kind && child.title == name)
+ {
+ return true;
+ }
+ }
+ return false;
+}
+function createResource()
+{
+ var selector = dojo.widget.byId('treeSelector');
+ if (selector.selectedNode == null)
+ {
+ alert("Please select a resource");
+ return;
+ }
+ var parent = selector.selectedNode;
+ if (selector.selectedNode.isFolder == false)
+ parent = selector.selectedNode.parent;
+
+ var node = new dojo.widget.TreeNode();
+ node.isFolder = false;
+ node.object = document.getElementById("res.kind").innerHTML;
+ var sep = "/";
+ if (parent.widgetId.substring(parent.widgetId.length-1) == "/")
+ sep = "";
+ node.widgetId = parent.widgetId + sep + document.getElementById("res.name").value;
+ node.title = document.getElementById("res.name").value;
+ node.childIconSrc = "$app/images/" + node.object.toLowerCase() + ".gif";
+ node.isFolder = (node.object == "Folder");
+ // create new Node
+ var action = "update" + node.object.toLowerCase();
+ var names = new Array();
+ var values = new Array();
+ names[0] = "method";
+ values[0] = "add";
+ names[1] = "path";
+ values[1] = escape(node.widgetId);
+ names[2] = "name";
+ values[2] = escape(node.title);
+ names[3] = "title";
+ values[3] = escape(document.getElementById("res.title").value);
+ names[4] = "defaultLayout";
+ values[4] = escape(document.getElementById("defaultLayout").value);
+ var index = 5;
+ var stitle = document.getElementById("res.short-title").value;
+ if (stitle != null && stitle != "")
+ {
+ names[index] = "short-title";
+ values[index] = escape(stitle);
+ index = index + 1;
+ }
+ if (node.object == "Link")
+ {
+ names[index] = "url";
+ values[index] = escape(document.getElementById("res.url").value);
+ index = index + 1;
+ }
+ ajaxInvoke(action, names, values, new ResourceAddHandler(parent, node) );
+}
+function deleteResource()
+{
+ var selector = dojo.widget.manager.getWidgetById('treeSelector');
+ if (selector.selectedNode == null)
+ {
+ alert("Please select a resource");
+ return;
+ }
+ var node = selector.selectedNode;
+ var parent = selector.selectedNode.parent;
+ if (node.title == "/")
+ {
+ alert("Please do not delete the root folder!");
+ return;
+ }
+ var kind = document.getElementById("res.kind").innerHTML;
+
+ var action = "update" + node.object.toLowerCase();
+ var names = new Array();
+ var values = new Array();
+ names[0] = "method";
+ values[0] = "remove";
+ names[1] = "path";
+ values[1] = escape(node.widgetId);
+ ajaxInvoke(action, names, values, new ResourceDeleteHandler(parent, node) );
+}
+var ResourceAddHandler = function(parent, node)
+{
+ this.parent = parent;
+ this.node = node;
+ this.populate = function(data)
+ {
+ // insert in sorted order
+ for(var i=0; i<parent.children.length; i++)
+ {
+ var child = parent.children[i];
+ if (child.object == node.object)
+ {
+ if (child.title > node.title)
+ {
+ break;
+ }
+ }
+ else
+ {
+ if (node.object == "Folder")
+ break;
+ if (node.object == "Page" && child.object == "Link")
+ break;
+ }
+ }
+ var controller = dojo.widget.byId('treeController');
+ var res = controller.createChild(parent, i, node);
+ var selector = dojo.widget.byId('treeSelector');
+ selector.select({ source: parent, event: {} });
+ editResource(parent);
+ }
+ this.failure = function(data)
+ {
+ }
+}
+var ResourceDeleteHandler = function(parent, node)
+{
+ this.parent = parent;
+ this.node = node;
+ this.populate = function(data)
+ {
+ var controller = dojo.widget.byId('treeController');
+ var res = controller.removeNode(node);
+ var selector = dojo.widget.byId('treeSelector');
+ selector.select({ source: parent, event: {} });
+ editResource(parent);
+ }
+ this.failure = function(data)
+ {
+ }
+}
+function moveResource(node)
+{
+ if (node == null)
+ {
+ alert("Please select a resource in the portal site tree.");
+ return;
+ }
+ alert("MOVE not implemented");
+}
+function copyResource(node)
+{
+ if (node == null)
+ {
+ alert("Please select a resource in the portal site tree.");
+ return;
+ }
+ alert("COPY not implemented");
+}
+function removeResource(xnode)
+{
+ var selector = dojo.widget.byId('treeSelector');
+ var node = selector.selectedNode;
+ if (node == null)
+ {
+ selector.select({ source: xnode, event: {} });
+ node = xnode;
+ }
+ var parent = selector.selectedNode.parent;
+ if (node.title == "/")
+ {
+ alert("Please do not delete the root folder!");
+ return;
+ }
+
+ document.getElementById("res.parent").value = node.widgetId;
+ document.getElementById("res.name").value = "";
+ document.getElementById("res.title").value = "";
+ document.getElementById("res.short-title").value = "";
+ document.getElementById("del.kind").innerHTML = node.object;
+ document.getElementById("del.name").innerHTML = node.title;
+ dojo.widget.byId("res.save").setDisabled(true);
+ dojo.widget.byId( "DeleteResourceDialog" ).show();
+}
+function viewResource(xnode)
+{
+ var selector = dojo.widget.byId('treeSelector');
+ var node = selector.selectedNode;
+ if (node == null)
+ {
+ selector.select({ source: xnode, event: {} });
+ node = xnode;
+ }
+ if (node.object == "Link")
+ {
+ var url = document.getElementById("linfo.url").value;
+ window.open(url, 'w-' + node.title);
+ }
+ else
+ {
+ var servletPath = "${req.ServletPath}";
+ var regex = new RegExp("/portal.*");
+ if (servletPath.match(regex))
+ servletPath = "portal";
+ else
+ {
+ if (servletPath == "/")
+ servletPath = "portal";
+ else
+ servletPath = "desktop";
+ }
+ window.open("${rooturl}" + servletPath + node.widgetId, 'w-' + node.title);
+ }
+}
+function newResource(kind, xnode)
+{
+ var selector = dojo.widget.byId('treeSelector');
+ var node = selector.selectedNode;
+ if (node == null)
+ {
+ selector.select({ source: xnode, event: {} });
+ node = xnode;
+ }
+ document.getElementById("res.parent").value = node.widgetId;
+ document.getElementById("res.name").value = "";
+ document.getElementById("res.title").value = "";
+ document.getElementById("res.short-title").value = "";
+ document.getElementById("res.kind").innerHTML = kind;
+ if (kind == "Link")
+ document.getElementById("res.link").style.display = "";
+ else
+ document.getElementById("res.link").style.display = "none";
+ dojo.widget.byId("res.save").setDisabled(true);
+ dojo.widget.byId( "NewResourceDialog" ).show();
+}
+// single click node handler
+var TreeNodeSelectionHandler = function(notUsed)
+{
+ //this.name = eventName;
+ this.run = function(message)
+ {
+ editResource(message.node);
+ }
+}
+// subscribe to node selected (single left-click) event on tree
+dojo.addOnLoad(function()
+{
+ dojo.event.topic.subscribe("nodeSelected", new TreeNodeSelectionHandler("notUsed"), 'run');
+});
+/* setup context menu actions */
+dojo.addOnLoad(function()
+{
+ dojo.event.topic.subscribe('treeContextMenuRemove/engage',
+ function (menuItem)
+ {
+ removeResource(menuItem.getTreeNode());
+ });
+ dojo.event.topic.subscribe('treeContextMenuNewFolder/engage',
+ function (menuItem)
+ {
+ newResource("Folder", menuItem.getTreeNode());
+ });
+ dojo.event.topic.subscribe('treeContextMenuNewPage/engage',
+ function (menuItem)
+ {
+ newResource("Page", menuItem.getTreeNode());
+ });
+ dojo.event.topic.subscribe('treeContextMenuNewLink/engage',
+ function (menuItem)
+ {
+ newResource("Link", menuItem.getTreeNode());
+ });
+ dojo.event.topic.subscribe('treeContextMenuCopy/engage',
+ function (menuItem)
+ {
+ copyResource(menuItem.getTreeNode());
+ });
+ dojo.event.topic.subscribe('treeContextMenuMove/engage',
+ function (menuItem)
+ {
+ moveResource(menuItem.getTreeNode());
+ });
+});
+</script>
+
+#macro (TraverseFolders $f)
+ <div isFolder='true' object='Folder' dojoType="TreeNode" widgetId="$f.Path" title="$f.Name" childIconSrc="$app/images/folder.gif">
+ #foreach($subf in $f.Folders.iterator())
+## DST: MIGHT NEED TO LAZY LOAD FOR PERFORMANCE
+## #TraverseFolders($subf)
+ <div isFolder='true' object='Folder' dojoType="TreeNode" widgetId="$subf.Path" title="$subf.Name" childIconSrc="$app/images/folder.gif"></div>
+ #end
+ #foreach($p in $f.Pages.iterator())
+ <div object='Page' dojoType="TreeNode" widgetId="$p.Path" title="$p.Name" childIconSrc="$app/images/page.gif" actionsDisabled="newPage,newFolder,newLink"></div>
+ #end
+ #foreach($link in $f.Links.iterator())
+ <div object='Link' dojoType="TreeNode" widgetId="$link.Path" title="$link.Name" childIconSrc="$app/images/link.gif" actionsDisabled="newPage,newFolder,newLink,customize"></div>
+ #end
+ </div>
+#end
+
+#macro (FolderTreeView $f)
+<div dojoType="Tree" widgetId="siteTree" DNDMode="between" selector="treeSelector"
+ actionsDisabled="customize,move,delete" toggler="fade" DNDAcceptTypes="siteTree" controller="treeController" menu='treeContextMenu'>
+#TraverseFolders($f)
+</div>
+#end
+
+<!-- state -->
+<input type="hidden" id="site.path"/>
+<input type="hidden" id="site.kind"/>
+<input type="hidden" id="defaultLayout" value="$!defaultLayout"/>
+
+<!-- Start Site View Layout -->
+<div dojoType="LayoutContainer" style="width: 100%; height: 500px; border: 1px solid gray;">
+
+<!-- Start LHS -->
+<div dojoType="LayoutContainer" widgetId="lhs" layoutAlign="left" style="width: 32%; border: 1px solid gray; ">
+
+<div dojoType="ContentPane" widgetId="lhs2" style="width: 100%; height: 100%; overflow:auto;">
+#FolderTreeView($folders)
+</div>
+</div>
+<!-- Start RHS -->
+<div dojoType="LayoutContainer" id="rhs" widgetId="rhs" layoutAlign="client" style="display:none; border: 1px solid gray; width: 68%">
+<!-- Start Main Tab Container -->
+<div id="mainTabContainer" dojoType="TabContainer" selectedChild="infoTabFolder" doLayout="false">
+<div id="infoTabFolder" dojoType="ContentPane" label="Information">
+ <table class="formAnswer" style="width: 100%;">
+ <tr>
+ <td class="emphasise">Name</td>
+ <td width="100%">
+ <input type="text" DISABLED id="finfo.name" class="long" required="true" onChange="updateInfoFields()"/>
+ <input type="hidden" id="finfo.path"/>
+ </td>
+ </tr>
+ <tr>
+ <td class="emphasise">Title</td>
+ <td width="100%">
+ <input type="text" id="finfo.title" class="long" required="true" onChange="updateInfoFields()"/>
+ </td>
+ </tr>
+ <tr>
+ <td class="emphasise">Short Title</td>
+ <td>
+ <input type="text" id="finfo.short-title" class="medium" onChange="updateInfoFields()"/>
+ </td>
+ </tr>
+ <tr>
+ <td class="emphasise">Default Page</td>
+ <td>
+ <input type="text" id="finfo.default-page" class="medium" onChange="updateInfoFields()"/>
+ </td>
+ </tr>
+ <tr>
+ <td class="emphasise">Page Decorator</td>
+ <td>
+ <select id="finfo.layout-decorator" onChange="updateInfoFields()">
+ <option selected value=""></option>
+#foreach ($dec in $page-decorations)
+ <option value="$dec">$dec</option>
+#end
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="emphasise">Portlet Decorator</td>
+ <td>
+ <select id="finfo.portlet-decorator" onChange="updateInfoFields()">
+ <option selected value=""></option>
+#foreach ($dec in $portlet-decorations)
+ <option value="$dec">$dec</option>
+#end
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="emphasise">Hidden</td>
+ <td>
+ <input type="checkbox" id="finfo.hidden" onChange="updateInfoFields()"/>
+ </td>
+ </tr>
+ </table>
+<div dojoType="LayoutContainer" widgetId="FEditorControls" minHeight="20" layoutAlign="bottom" style="width: 20%; height: 55px">
+ <div class="buttonbox">
+ <button widgetId="saveFInfoButton" dojoType="Button" onclick="saveInfo()">Save</button>
+ <button widgetId="revertFInfoButton" dojoType="Button" onclick="revertInfo()">Revert</button>
+ </div>
+</div>
+
+</div> <!-- End Tab Information -->
+
+<div id="infoTabPage" dojoType="ContentPane" label="Information">
+ <table class="formAnswer" style="width: 100%;">
+ <tr>
+ <td class="emphasise">Name</td>
+ <td width="100%">
+ <input DISABLED type="text" id="pinfo.name" class="long" required="true" onChange="updateInfoFields()"/>
+ <input type="hidden" id="pinfo.path"/>
+ </td>
+ </tr>
+ <tr>
+ <td class="emphasise">Title</td>
+ <td width="100%">
+ <input type="text" id="pinfo.title" class="long" required="true" onChange="updateInfoFields()"/>
+ </td>
+ </tr>
+ <tr>
+ <td class="emphasise">Short Title</td>
+ <td>
+ <input type="text" id="pinfo.short-title" class="medium" onChange="updateInfoFields()"/>
+ </td>
+ </tr>
+ <tr>
+ <td class="emphasise">Page Decorator</td>
+ <td>
+ <select id="pinfo.layout-decorator" onChange="updateInfoFields()">
+ <option selected value=""></option>
+#foreach ($dec in $page-decorations)
+ <option value="$dec">$dec</option>
+#end
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="emphasise">Portlet Decorator</td>
+ <td>
+ <select id="pinfo.portlet-decorator" onChange="updateInfoFields()">
+ <option selected value=""></option>
+#foreach ($dec in $portlet-decorations)
+ <option value="$dec">$dec</option>
+#end
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="emphasise">Desktop Theme</td>
+ <td>
+ <select id="pinfo.theme" onChange="updateInfoFields()">
+ <option selected value=""></option>
+#foreach ($dec in $themes)
+ <option value="$dec">$dec</option>
+#end
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="emphasise">Hidden</td>
+ <td>
+ <input type="checkbox" id="pinfo.hidden" onChange="updateInfoFields()" />
+ </td>
+ </tr>
+ </table>
+
+<div dojoType="LayoutContainer" widgetId="PEditorControls" minHeight="20" layoutAlign="bottom" style="width: 20%; height: 55px">
+ <div class="buttonbox">
+ <button widgetId="savePInfoButton" dojoType="Button" onclick="saveInfo()">Save</button>
+ <button widgetId="revertPInfoButton" dojoType="Button" onclick="revertInfo()">Revert</button>
+ </div>
+</div>
+
+</div> <!-- End Tab Information -->
+
+<div id="infoTabLinks" dojoType="ContentPane" label="Information">
+ <table class="formAnswer" style="width: 100%;">
+ <tr>
+ <td class="emphasise">Name</td>
+ <td width="100%">
+ <input DISABLED type="text" id="linfo.name" class="long" required="true" onChange="updateInfoFields()"/>
+ <input type="hidden" id="linfo.path"/>
+ </td>
+ </tr>
+ <tr>
+ <td class="emphasise">Title</td>
+ <td width="100%">
+ <input type="text" id="linfo.title" class="long" required="true" onChange="updateInfoFields()"/>
+ </td>
+ </tr>
+ <tr>
+ <td class="emphasise">Short Title</td>
+ <td>
+ <input type="text" id="linfo.short-title" class="medium" onChange="updateInfoFields()"/>
+ </td>
+ </tr>
+ <tr>
+ <td class="emphasise">URL</td>
+ <td>
+ <input type="text" id="linfo.url" class="long" required="true" onChange="updateInfoFields()"/>
+ </td>
+ </tr>
+ <tr>
+ <td class="emphasise">Target Window</td>
+ <td>
+ <select id="linfo.target" onChange="updateInfoFields()">
+ <option value="blank">New</option>
+ <option value="self">Self</option>
+ <option value="parent">Parent</option>
+ <option value="top">Top</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="emphasise">Hidden</td>
+ <td>
+ <input type="checkbox" id="linfo.hidden" onChange="updateInfoFields()" />
+ </td>
+ </tr>
+ </table>
+
+<div dojoType="LayoutContainer" widgetId="LEditorControls" minHeight="20" layoutAlign="bottom" style="width: 20%; height: 55px">
+ <div class="buttonbox">
+ <button widgetId="saveLInfoButton" dojoType="Button" onclick="saveInfo()">Save</button>
+ <button widgetId="revertLInfoButton" dojoType="Button" onclick="revertInfo()">Revert</button>
+ </div>
+</div>
+
+</div> <!-- End Tab Information Link -->
+
+
+<div id="securityTab" dojoType="ContentPane" label="Security">
+<table dojoType="jetspeed:EditorTable" widgetId="securityTable" class="permissions" headClass="fixedHeader" tbodyClass="scrollContent" enableMultipleSelect="true" enableAlternateRows="true" rowAlternateClass="alternateRow" templateCssPath="/j2-admin/css/security-permissions.css" cellpadding="0" cellspacing="0" border="0">
+ <col width="70%"></col>
+ <col width="25%"></col>
+ <thead>
+ <tr>
+ <th field="name" dataType="String">Security Constraint</th>
+ <th field="kind" dataType="String">Constraint Type</th>
+ </tr>
+ </thead>
+ <tbody>
+ </tbody>
+</table>
+<table>
+ <tr>
+ <td>Security Constraint</td>
+ <td>
+ <select id="security.list" onChange="updateSecurityRow('security.list')">
+ <option selected value=""></option>
+#foreach ($sec in $allSecurityRefs)
+ <option value="$sec.Name">$sec.Name</option>
+#end
+ </select>
+ </td>
+ <td><button widgetId="security.owner" dojoType="Button" onclick="enterOwner()">Owner</button></td>
+ </tr>
+ <td></td>
+ <td></td>
+ </tr>
+</table>
+<div dojoType="LayoutContainer" widgetId="securityControls" minHeight="20" layoutAlign="bottom" style="width: 100%; height: 25px; margin-left:60px;">
+ <div class="buttonbox">
+ <button widgetId="securityNewButton" dojoType="Button" onclick="newEntry()">New</button>
+ <button widgetId="securityDeleteButton" dojoType="Button" onclick="deleteEntry()">Delete</button>
+ <button widgetId="securitySaveButton" dojoType="Button" onclick="saveEntry()">Save</button>
+ <button widgetId="securityRevertButton" dojoType="Button" onclick="revertEntry()">Revert</button>
+ </div>
+</div>
+</div> <!-- End Tab Security -->
+
+<div id="metaTab" dojoType="ContentPane" label="Metadata">
+
+<table dojoType="jetspeed:EditorTable" widgetId="metaTable" class="permissions" headClass="fixedHeader" tbodyClass="scrollContent" enableMultipleSelect="true" enableAlternateRows="true" rowAlternateClass="alternateRow" templateCssPath="/j2-admin/css/security-permissions.css" cellpadding="0" cellspacing="0" border="0">
+ <col width="35%"></col>
+ <col width="15%"></col>
+ <col width="45%"></col>
+ <thead>
+ <tr>
+ <th field="name" dataType="String">Name</th>
+ <th field="language" dataType="String">Language</th>
+ <th field="value" dataType="String">Value</th>
+ </tr>
+ </thead>
+ <tbody>
+ </tbody>
+</table>
+<table>
+ <tr>
+ <td >Name</td>
+ <td >
+ <input type="text" id="meta.name" class="long" required="true" onChange="updateMetaRow('meta.name')"/>
+ </td>
+ </tr>
+ <tr>
+ <td >Language</td>
+ <td >
+ <input type="text" id="meta.language" class="medium" required="true" onChange="updateMetaRow('meta.language')"/>
+ </td>
+ </tr>
+ <tr>
+ <td >Value</td>
+ <td >
+ <input type="text" id="meta.value" class="long" required="true" onChange="updateMetaRow('meta.value')"/>
+ </td>
+ </tr>
+</table>
+<div dojoType="LayoutContainer" widgetId="metaControls" minHeight="20" layoutAlign="bottom" style="width: 100%; height: 25px; margin-left:60px;">
+ <div class="buttonbox">
+ <button widgetId="metaNewButton" dojoType="Button" onclick="newEntry()">New</button>
+ <button widgetId="metaDeleteButton" dojoType="Button" onclick="deleteEntry()">Delete</button>
+ <button widgetId="metaSaveButton" dojoType="Button" onclick="saveEntry()">Save</button>
+ <button widgetId="metaRevertButton" dojoType="Button" onclick="revertEntry()">Revert</button>
+ </div>
+</div>
+</div> <!-- End Tab Metadata -->
+
+<div id="menusTab" dojoType="ContentPane" label="Menus">
+<p>Coming soon...</p>
+</div> <!-- End Tab Menus -->
+
+<div id="orderTab" dojoType="ContentPane" label="Order">
+<p>Coming soon...</p>
+</div> <!-- End Tab Order -->
+
+</div> <!-- End Tab Container -->
+
+<div dojoType="LayoutContainer" widgetId="MajorActions" minHeight="20" layoutAlign="bottom" style="width: 20%; height: 55px">
+ <div class="buttonbox">
+ <button widgetId="buttonView" dojoType="Button" onclick="viewResource()">View</button>
+ <button widgetId="buttonRemove" dojoType="Button" onclick="removeResource()">Remove</button>
+ <div id='divFolderButtons'>
+ <button widgetId="buttonAddPage" dojoType="Button" onclick="newResource('Page')">Add Page</button>
+ <button widgetId="buttonAddFolder" dojoType="Button" onclick="newResource('Folder')">Add Folder</button>
+ <button widgetId="buttonAddLink" dojoType="Button" onclick="newResource('Link')">Add Link</button>
+ </div>
+ </div>
+</div>
+
+</div> <!-- End RHS -->
+</div> <!-- End Site View Layout -->
+
+<script type="text/javascript">
+// var starttime=new Date().getTime();
+
+var siteViewAllTabIds = [ "infoTabFolder", "infoTabPage", "infoTabLinks", "securityTab", "metaTab", "menusTab", "orderTab" ];
+var siteViewAllTabWidgets = {};
+function displayTabs( tabIdList )
+{
+ var tabContainer = dojo.widget.byId( "mainTabContainer" );
+ for ( var i = 0 ; i < siteViewAllTabIds.length; i++ )
+ {
+ if ( siteViewAllTabWidgets[ siteViewAllTabIds[i] ] == null )
+ siteViewAllTabWidgets[ siteViewAllTabIds[i] ] = dojo.widget.byId( siteViewAllTabIds[i] );
+
+ var removeTab = siteViewAllTabWidgets[ siteViewAllTabIds[i] ];
+ if ( removeTab && ! removeTab.js_removed )
+ {
+ removeTab.js_removed = true;
+ tabContainer.removeChild( removeTab );
+ }
+ }
+ if ( tabIdList != null && tabIdList.length > 0 )
+ {
+ for ( var i = 0 ; i < tabIdList.length; i++ )
+ {
+ var displayTab = siteViewAllTabWidgets[ tabIdList[i] ];
+ if ( displayTab )
+ {
+ delete displayTab.js_removed;
+ tabContainer.addChild( displayTab );
+ }
+ }
+ tabContainer.selectChild( siteViewAllTabWidgets[ tabIdList[0] ] );
+ }
+}
+//javascript: displayTabs( [ "infoTab", "menusTab" ] )
+//javascript: alert( jetspeed.printobj( siteViewAllTabWidgets ) )
+
+function retrieveElementValue(elementName, xml)
+{
+ var path = xml.getElementsByTagName(elementName);
+ if (path != null)
+ {
+ if (path.length > 0 && path[0].firstChild != null)
+ {
+ var value = path[0].firstChild.nodeValue;
+ return value;
+ }
+ }
+ return "";
+}
+function retrieveAttributeValue(elementName, attributeName, xml)
+{
+ var path = xml.getElementsByTagName(elementName);
+ if (path != null && path.length > 0)
+ {
+ var namedItem = path[0].attributes.getNamedItem(attributeName);
+ if (namedItem != null)
+ {
+ return namedItem.value;
+ }
+ }
+ return "";
+}
+function attributeToCheckbox(prefix, elementName, attributeName, xml)
+{
+ var widget = dojo.byId(prefix + "." + attributeName);
+ if (widget != null)
+ {
+ var isChecked = retrieveAttributeValue(elementName, attributeName, xml);
+ widget.checked = (isChecked == "true");
+ }
+ return (isChecked == "true");
+}
+function elementToInput(prefix, elementName, xml)
+{
+ var widget = document.getElementById(prefix + "." + elementName);
+ if (widget != null)
+ {
+ widget.value = retrieveElementValue(elementName, xml);
+ }
+}
+function titlesToInput(prefix, titleName, shortName, xml)
+{
+ var title = retrieveElementValue(titleName, xml);
+ var shortTitle = retrieveElementValue(shortName, xml);
+ if (title == shortTitle)
+ shortTitle = "";
+ var titleWidget = document.getElementById(prefix + "." + titleName);
+ var shortWidget = document.getElementById(prefix + "." + shortName);
+ titleWidget.value = title;
+ shortWidget.value = shortTitle;
+}
+function elementToSelect(prefix, elementName, xml)
+{
+ var el = document.getElementById(prefix + "." + elementName);
+ if (el != null)
+ {
+ var value = retrieveElementValue(elementName, xml);
+ for (var ix=0; ix<el.options.length; ix++)
+ {
+ if (el.options[ix].value == value)
+ {
+ el.options[ix].selected = true;
+ break;
+ }
+ }
+ }
+}
+function attributeToSelect(prefix, elementName, attributeName, xml)
+{
+ var el = document.getElementById(prefix + "." + attributeName);
+ if (el != null)
+ {
+ var value = retrieveAttributeValue(elementName, attributeName, xml);
+ for (var ix=0; ix<el.options.length; ix++)
+ {
+ if (el.options[ix].value == value)
+ {
+ el.options[ix].selected = true;
+ break;
+ }
+ }
+ }
+}
+function ajaxInvoke(action, names, values, handler)
+{
+ var contextPath = document.location.protocol + "/" + "/" + document.location.host + "$req.ContextPath";
+ var requestUrl = contextPath + "/ajaxapi?action=" + action;
+ if (names != null)
+ {
+ for (var ix=0; ix<names.length; ix++)
+ {
+ requestUrl = requestUrl + "&" + names[ix] + "=" + values[ix];
+ }
+ }
+ var mimeType = "text/xml";
+ dojo.io.bind({
+ url: requestUrl,
+ mimetype: mimeType,
+ load: function( type, data, evt )
+ {
+ var success = false;
+ var statusElmt = data.getElementsByTagName( "status" );
+ if ( statusElmt != null )
+ {
+ var successVal = statusElmt[0].firstChild.nodeValue;
+ if ( successVal == "success" )
+ {
+ handler.populate(data);
+ success = true;
+ }
+ }
+ if ( ! success )
+ {
+ var textContent = dojo.dom.innerXML( data );
+ if ( ! textContent )
+ textContent = ( data != null ? "!= null (IE no XMLSerializer)" : "null" );
+ // dojo.raise( "saveEntrySubmit failure url=" + requestUrl + " xml-content=" + textContent );
+ if (data instanceof XMLDocument)
+ {
+ var reason = retrieveElementValue("reason", data);
+ alert("Portal Communication Failure: " + reason);
+ handler.failure(reason);
+ }
+ else
+ alert("Unknown Portal Communication Failure");
+ }
+ },
+ error: function( type, error )
+ {
+ var msg = "Portal Communication Error: " + requestUrl + " type: " + type + jetspeed.url.formatBindError( error );
+ // dojo.raise(msg);
+ alert(msg);
+ handler.failure(msg);
+ }
+ });
+}
+dojo.addOnLoad(function()
+{
+ var metaTable = dojo.widget.byId("metaTable");
+ dojo.event.connect( "around", metaTable, "onUISelect", "okToChangeSelectionOrExit" );
+ dojo.event.connect(metaTable, "onSelect", function(e) {
+ processTableRowEvent(e, "metaTable");
+ });
+ dojo.event.connect(metaTable, "updateEditor", updateEditor );
+ dojo.event.connect(metaTable, "saveEntrySubmit", saveMetaEntrySubmit );
+ dojo.event.connect(metaTable, "clearAndDisableEditor", clearAndDisableEditor );
+
+ var securityTable = dojo.widget.byId("securityTable");
+ dojo.event.connect( "around", securityTable, "onUISelect", "okToChangeSelectionOrExit" );
+ dojo.event.connect(securityTable, "onSelect", function(e) {
+ processTableRowEvent(e, "securityTable");
+ });
+ dojo.event.connect(securityTable, "updateEditor", updateEditor );
+ dojo.event.connect(securityTable, "saveEntrySubmit", saveSecurityEntrySubmit );
+ dojo.event.connect(securityTable, "clearAndDisableEditor", clearAndDisableEditor );
+});
+// General Table Functions
+function processTableRowEvent(e, tableName)
+{
+ var tableWidget = dojo.widget.byId( tableName );
+ tableWidget.processTableRowEvent(e);
+ if (tableName == "metaTable")
+ {
+ dojo.byId("meta.name").disabled = false;
+ dojo.byId("meta.language").disabled = false;
+ dojo.byId("meta.value").disabled = false;
+ changeButtonState("meta", false, false, true, true);
+ }
+ else if (tableName == "securityTable")
+ {
+ var row = tableWidget.getSelectedRow() ;
+ if (row.kind == "Owner")
+ {
+ dojo.byId("security.list").disabled = true;
+ dojo.widget.byId("security.owner").disabled = false;
+ }
+ else if (row.kind == "Security Reference")
+ {
+ dojo.byId("security.list").disabled = false;
+ dojo.widget.byId("security.owner").disabled = true;
+ }
+ else
+ {
+ dojo.byId("security.list").disabled = true;
+ dojo.widget.byId("security.owner").disabled = true;
+ }
+ changeButtonState("security", false, false, true, true);
+ }
+}
+function clearAndDisableEditor()
+{
+ var currentTabName = dojo.widget.byId( "mainTabContainer" ).selectedChildWidget.widgetId;
+ if (currentTabName == "metaTab")
+ {
+ resetMeta();
+ }
+ else if (currentTabName == "securityTab")
+ {
+ resetSecurity();
+ }
+}
+// Info Functions
+function updateInfoFields()
+{
+ window.information.modified = true;
+ var currentTabName = dojo.widget.byId( "mainTabContainer" ).selectedChildWidget.widgetId;
+ if (currentTabName == "infoTabFolder")
+ {
+ dojo.widget.byId( "saveFInfoButton" ).setDisabled(false);
+ dojo.widget.byId( "revertFInfoButton" ).setDisabled(false);
+ }
+ else if (currentTabName == "infoTabPage")
+ {
+ dojo.widget.byId( "savePInfoButton" ).setDisabled(false);
+ dojo.widget.byId( "revertPInfoButton" ).setDisabled(false);
+ }
+ else
+ {
+ dojo.widget.byId( "saveLInfoButton" ).setDisabled(false);
+ dojo.widget.byId( "revertLInfoButton" ).setDisabled(false);
+ }
+}
+function newEntry()
+{
+ var tTableWidget = getTableWidget();
+ tTableWidget.newEntry();
+ if (tTableWidget.js_type == "metadata")
+ {
+ dojo.byId("meta.name").value = "";
+ dojo.byId("meta.language").value = "";
+ dojo.byId("meta.value").value = "";
+ dojo.byId("meta.name").disabled = false;
+ dojo.byId("meta.language").disabled = false;
+ dojo.byId("meta.value").disabled = false;
+ changeButtonState("meta", true, true, true, false);
+ }
+ else if (tTableWidget.js_type == "security")
+ {
+ dojo.byId("security.list").options[0].selected = true;
+ dojo.byId("security.list").disabled = false;
+ dojo.widget.byId("security.owner").setDisabled(false);
+ changeButtonState("security", true, true, true, false);
+ }
+}
+function deleteEntry()
+{
+ var tTableWidget = getTableWidget();
+ tTableWidget.deleteEntry();
+ if (tTableWidget.js_type == "metadata")
+ {
+ resetMeta();
+ }
+ else if (tTableWidget.js_type == "security")
+ {
+ resetSecurity();
+ }
+}
+function saveEntry()
+{
+ var tTableWidget = getTableWidget();
+ tTableWidget.saveEntry();
+}
+function revertEntry()
+{
+ var tTableWidget = getTableWidget();
+ tTableWidget.revertEntry();
+ if (tTableWidget.js_type == "metadata")
+ {
+ resetMeta();
+ }
+ else if (tTableWidget.js_type == "security")
+ {
+ resetSecurity();
+ }
+}
+function okToChangeSelectionOrExit(invocation)
+{
+ var tTableWidget = getTableWidget();
+ return tTableWidget.okToChangeSelectionOrExit(invocation);
+}
+// Meta Functions
+function resetMeta()
+{
+ var metaName = dojo.byId("meta.name");
+ metaName.value = "";
+ metaName.disabled = true;
+ var metaLanguage = dojo.byId("meta.language");
+ metaLanguage.value = "";
+ metaLanguage.disabled = true;
+ var metaValue = dojo.byId("meta.value");
+ metaValue.value = "";
+ metaValue.disabled = true;
+ changeButtonState("meta", false, true, true, true);
+}
+function populateMetadata(xmlName, xml, kind)
+{
+ dojo.byId("site.kind").value = kind;
+ elementToInput("site", "path", xml);
+ var metaTable = dojo.widget.byId("metaTable");
+ metaTable.getNewEntryPrototype = getNewMetaPrototype;
+ var data = [] ;
+ var path = xml.getElementsByTagName(xmlName);
+ if (path != null && path.length > 0)
+ {
+ for (ix=0; ix < path.length; ix++)
+ {
+ var name = path[ix].attributes.getNamedItem("name").value;
+ var lang = path[ix].attributes.getNamedItem("xml:lang").value;
+ var value = path[ix].firstChild.nodeValue;
+ data.push( { name: name, language: lang, value: value, Id: ix + 1} );
+ }
+ }
+ metaTable.js_masterdata = data;
+ metaTable.js_type = "metadata";
+ // metaTable.saveWarningDialogWidgetId = "SaveWarningDialog";
+ metaTable.parseData( metaTable.js_masterdata );
+ metaTable.render( true );
+ resetMeta();
+}
+function updateMetaRow(field)
+{
+ var tTableWidget = getTableWidget();
+ var selectedRowData = tTableWidget.getSelectedRow() ;
+ if ( selectedRowData != null )
+ {
+ if (field == "meta.name")
+ selectedRowData.name = dojo.byId(field).value;
+ else if (field == "meta.language")
+ selectedRowData.language = dojo.byId(field).value;
+ else
+ selectedRowData.value = dojo.byId(field).value;
+ tTableWidget.setModified(selectedRowData);
+ tTableWidget.updateClonedData( selectedRowData, tTableWidget.selected[0] );
+ tTableWidget.render(true);
+ tTableWidget.showSelections();
+ changeButtonState("meta", true, true, false, false);
+ }
+}
+// Security Functions
+function resetSecurity()
+{
+ var securityList = dojo.byId("security.list");
+ securityList.value = "";
+ securityList.disabled = true;
+ dojo.widget.byId("security.owner").setDisabled(true);
+ changeButtonState("security", false, true, true, true);
+}
+function populateSecurity(xmlName, xml, kind)
+{
+ dojo.byId("site.kind").value = kind;
+ elementToInput("site", "path", xml);
+ var securityTable = dojo.widget.byId("securityTable");
+ securityTable.getNewEntryPrototype = getNewSecurityPrototype;
+ var data = [] ;
+ var count = 0;
+ var path = xml.getElementsByTagName("security-ref");
+ if (path != null && path.length > 0)
+ {
+ for (ix=0; ix < path.length; ix++)
+ {
+ var refName = path[ix].firstChild.nodeValue;
+ count = ix + 1;
+ data.push( { name: refName, kind: "Security Reference", Id: count } );
+ }
+ }
+ path = xml.getElementsByTagName("security-owner");
+ if (path != null && path.length > 0)
+ {
+ var owner = path[0].firstChild.nodeValue;
+ count = count + 1;
+ data.push( { name: owner, kind: "Owner", Id: count } );
+ }
+ dojo.widget.byId("security.owner").setDisabled(true);
+ path = xml.getElementsByTagName("security-def");
+ if (path != null && path.length > 0)
+ {
+ for (ix = 0; ix < path.length; ix++)
+ {
+ count = count + 1;
+ var secid = path[ix].attributes.getNamedItem("id").value;
+ data.push( { name: "Definition editing not yet supported.", kind: "Security Definition", Id: "r" + secid } );
+ }
+ }
+ securityTable.js_masterdata = data;
+ securityTable.js_type = "security";
+ securityTable.parseData( securityTable.js_masterdata );
+ securityTable.render( true );
+ resetSecurity();
+ //dojo.debug("dump sec: "+ securityTable.debugTableData());
+}
+
+function updateSecurityRow(field)
+{
+ var tTableWidget = getTableWidget();
+ var selectedRowData = tTableWidget.getSelectedRow() ;
+ if ( selectedRowData != null )
+ {
+ if (field == "security.list")
+ {
+ selectedRowData.name = dojo.byId(field).value;
+ selectedRowData.kind = "Security Reference";
+ }
+ else if (field == "owner.name")
+ {
+ selectedRowData.name = dojo.byId(field).value;
+ selectedRowData.kind = "Owner";
+ }
+ tTableWidget.setModified(selectedRowData);
+ tTableWidget.updateClonedData( selectedRowData, tTableWidget.selected[0] );
+ tTableWidget.render(true);
+ tTableWidget.showSelections();
+ changeButtonState("security", true, true, false, false);
+ }
+}
+function createOwner()
+{
+ updateSecurityRow("owner.name");
+}
+function changeButtonState(prefix, newState, deleteState, saveState, revertState)
+{
+ dojo.widget.byId(prefix + "NewButton").setDisabled(newState);
+ dojo.widget.byId(prefix + "DeleteButton").setDisabled(deleteState);
+ dojo.widget.byId(prefix + "SaveButton").setDisabled(saveState);
+ dojo.widget.byId(prefix + "RevertButton").setDisabled(revertState);
+}
+function getTableWidget( containedInTab )
+{
+ if ( ! containedInTab )
+ containedInTab = dojo.widget.byId( "mainTabContainer" ).selectedChildWidget;
+ if ( ! containedInTab )
+ alert( "no selected mainTabContainer child widget" );
+ var tableWidgetId = containedInTab.widgetId + "le";
+ var tableWidget = dojo.widget.byId( tableWidgetId );
+ if ( ! tableWidget )
+ alert( "no table widget " + tableWidgetId + " could be found" );
+ return tableWidget;
+}
+function updateEditor( rowData, tTableWidget )
+{
+ if ( ! tTableWidget )
+ tTableWidget = getTableWidget();
+ if (tTableWidget.js_type == "metadata")
+ {
+ dojo.byId("meta.name").value = rowData.name;
+ dojo.byId("meta.language").value = rowData.language;
+ dojo.byId("meta.value").value = rowData.value;
+ }
+ else if (tTableWidget.js_type == "security")
+ {
+ if (rowData.kind == "Security Reference")
+ {
+ dojo.widget.byId("security.owner").setDisabled(true);
+ var el = dojo.byId("security.list");
+ for (var ix=0; ix < el.options.length; ix++)
+ {
+ if (el.options[ix].value == rowData.name)
+ {
+ el.options[ix].selected = true;
+ break;
+ }
+ }
+ }
+ }
+}
+function checkForChanges()
+{
+ var tTableWidget = getTableWidget();
+ return tTableWidget.checkForChanges();
+}
+function saveMetaEntrySubmit(selectedRowData, removeEntry)
+{
+ var tTableWidget = getTableWidget();
+ if (tTableWidget.js_type == "metadata")
+ {
+ changeButtonState("meta", false, false, true, true);
+ var table = getTableWidget();
+ var rowData = table.getSelectedRow();
+ var names = new Array();
+ var values = new Array();
+ names[0] = "method";
+ if (removeEntry)
+ values[0] = "remove-meta";
+ else
+ values[0] = (rowData.__isNew)? "add-meta" : "update-meta";
+ names[1] = "path";
+ values[1] = escape(dojo.byId("site.path").value);
+ names[2] = "name";
+ values[2] = escape(rowData.name);
+ names[3] = "lang";
+ values[3] = escape(rowData.language);
+ names[4] = "value";
+ values[4] = escape(rowData.value);
+ if (rowData.__isNew == null)
+ {
+ var tId = rowData.Id;
+ var masterData = table.getData( table.js_masterdata, tId );
+ names[5] = "oldname";
+ values[5] = escape(masterData.name);
+ names[6] = "oldlang";
+ values[6] = escape(masterData.language);
+ }
+ var kind = dojo.byId("site.kind").value;
+ var action = "update" + kind;
+ ajaxInvoke(action, names, values, new EmptyHandler() );
+ }
+}
+function saveSecurityEntrySubmit(selectedRowData, removeEntry)
+{
+ var tTableWidget = getTableWidget();
+ if (tTableWidget.js_type == "security")
+ {
+ changeButtonState("security", false, false, true, true);
+ var table = getTableWidget();
+ var rowData = selectedRowData; // table.getSelectedRow();
+ var names = new Array();
+ var values = new Array();
+ if (rowData.kind == "Security Definition")
+ {
+ // only support delete thus far
+ names[0] = "method";
+ values[0] = "remove-secdef";
+ names[1] = "path";
+ values[1] = escape(dojo.byId("site.path").value);
+ names[2] = "id";
+ values[2] = escape(rowData.Id);
+ }
+ else
+ {
+ names[0] = "method";
+ if (removeEntry)
+ values[0] = "remove-secref";
+ else
+ values[0] = (rowData.__isNew)? "add-secref" : "update-secref";
+ names[1] = "path";
+ values[1] = escape(dojo.byId("site.path").value);
+ names[2] = "name";
+ values[2] = escape(rowData.name);
+ if (rowData.__isNew == null)
+ {
+ var tId = rowData.Id;
+ var masterData = table.getData( table.js_masterdata, tId );
+ names[3] = "oldname";
+ values[3] = escape(masterData.name);
+ }
+ names[4] = "kind";
+ values[4] = rowData.kind;
+ }
+ var kind = dojo.byId("site.kind").value;
+ var action = "update" + kind;
+ ajaxInvoke(action, names, values, new EmptyHandler() );
+ }
+}
+function saveInfo()
+{
+ var currentTabName = dojo.widget.byId( "mainTabContainer" ).selectedChildWidget.widgetId;
+ var names = new Array();
+ var values = new Array();
+ names[0] = "method";
+ values[0] = "info";
+ if (currentTabName == "infoTabFolder")
+ {
+ names[1] = "path";
+ values[1] = escape(dojo.byId("finfo.path").value);
+ names[2] = "name";
+ values[2] = escape(dojo.byId("finfo.name").value);
+ names[3] = "title";
+ values[3] = escape(dojo.byId("finfo.title").value);
+ names[4] = "short-title";
+ values[4] = escape(dojo.byId("finfo.short-title").value);
+ names[5] = "layout-decorator";
+ values[5] = escape(dojo.byId("finfo.layout-decorator").value);
+ names[6] = "portlet-decorator";
+ values[6] = escape(dojo.byId("finfo.portlet-decorator").value);
+ names[7] = "default-page";
+ values[7] = escape(dojo.byId("finfo.default-page").value);
+ if (dojo.byId("finfo.hidden").checked)
+ {
+ names[8] = "hidden";
+ values[8] = "true";
+ }
+ ajaxInvoke("updatefolder", names, values, new UpdateInfoHandler() );
+ }
+ else if (currentTabName == "infoTabPage")
+ {
+ names[1] = "path";
+ values[1] = escape(dojo.byId("pinfo.path").value);
+ names[2] = "name";
+ values[2] = escape(dojo.byId("pinfo.name").value);
+ names[3] = "title";
+ values[3] = escape(dojo.byId("pinfo.title").value);
+ names[4] = "short-title";
+ values[4] = escape(dojo.byId("pinfo.short-title").value);
+ names[5] = "layout-decorator";
+ values[5] = escape(dojo.byId("pinfo.layout-decorator").value);
+ names[6] = "portlet-decorator";
+ values[6] = escape(dojo.byId("pinfo.portlet-decorator").value);
+ names[7] = "theme";
+ values[7] = escape(dojo.byId("pinfo.theme").value);
+ if (dojo.byId("pinfo.hidden").checked)
+ {
+ names[8] = "hidden";
+ values[8] = "true";
+ }
+ ajaxInvoke("updatepage", names, values, new UpdateInfoHandler() );
+ }
+ else if (currentTabName == "infoTabLinks")
+ {
+ names[1] = "path";
+ values[1] = escape(dojo.byId("linfo.path").value);
+ names[2] = "name";
+ values[2] = escape(dojo.byId("linfo.name").value);
+ names[3] = "title";
+ values[3] = escape(dojo.byId("linfo.title").value);
+ names[4] = "short-title";
+ values[4] = escape(dojo.byId("linfo.short-title").value);
+ names[5] = "url";
+ values[5] = escape(dojo.byId("linfo.url").value);
+ names[6] = "target";
+ values[6] = escape(dojo.byId("linfo.target").value);
+ if (dojo.byId("linfo.hidden").checked)
+ {
+ names[7] = "hidden";
+ values[7] = "true";
+ }
+ ajaxInvoke("updatelink", names, values, new UpdateInfoHandler() );
+ }
+}
+
+function revertInfo()
+{
+ editResource(dojo.widget.manager.getWidgetById('treeSelector').selectedNode);
+}
+var EmptyHandler = function()
+{
+ this.populate = function(data)
+ {
+ }
+ this.failure = function(data)
+ {
+ }
+}
+var UpdateInfoHandler = function()
+{
+ this.populate = function(data)
+ {
+ window.information.modified = false;
+ var node = dojo.widget.manager.getWidgetById('treeSelector').selectedNode;
+ if ( node.object == "Folder" )
+ {
+ dojo.widget.byId( "saveFInfoButton" ).setDisabled(true);
+ dojo.widget.byId( "revertFInfoButton" ).setDisabled(true);
+ }
+ else if ( node.object == "Page" )
+ {
+ dojo.widget.byId( "savePInfoButton" ).setDisabled(true);
+ dojo.widget.byId( "revertPInfoButton" ).setDisabled(true);
+ }
+ else if ( node.object == "Link" )
+ {
+ dojo.widget.byId( "saveLInfoButton" ).setDisabled(true);
+ dojo.widget.byId( "revertLInfoButton" ).setDisabled(true);
+ }
+ }
+ this.failure = function(data)
+ {
+ window.information.modified = false;
+ }
+}
+function determineSave(invocation)
+{
+ var tab = dojo.widget.byId( "mainTabContainer").selectedChildWidget;
+ if (tab == null)
+ {
+ if (invocation)
+ invocation.proceed();
+ return;
+ }
+ var currentTabName = dojo.widget.byId("mainTabContainer").selectedChildWidget.widgetId;
+ if (currentTabName.substr(0,4) == "info")
+ {
+ if (window.information && window.information.modified)
+ {
+ saveInfo();
+ }
+ }
+ else if (currentTabName.substr(0,4) == "meta" || currentTabName.substr(0,4) == "secu")
+ {
+ if (checkForChanges())
+ {
+ saveEntry();
+ }
+ }
+ if (invocation)
+ invocation.proceed();
+}
+function enterOwner()
+{
+ var tableWidget = getTableWidget();
+ var row = tableWidget.getSelectedRow() ;
+ var path = "";
+ if (row.__isNew == null)
+ {
+ path = row.name;
+ }
+ else
+ {
+ path = dojo.byId("site.path").value;
+ if (path.substr(0,7) == "/_user/")
+ {
+ path = path.substr(7);
+ var end = path.indexOf("/");
+ if (end != -1)
+ {
+ path = path.substr(0,end);
+ }
+ }
+ else
+ {
+ path = "";
+ }
+ }
+ document.getElementById("owner.name").value = path;
+ dojo.widget.byId("owner.save").setDisabled(path == "");
+ dojo.widget.byId( "NewOwnerDialog" ).show();
+}
+function validateOwnerName()
+{
+ var name = dojo.byId("owner.name").value;
+ var disabled = false;
+ if (name == null || dojo.string.trim(name) == "")
+ disabled = true;
+ dojo.widget.byId("owner.save").setDisabled(disabled);
+}
+function addListeners()
+{
+ var tabContainer = dojo.widget.byId("mainTabContainer");
+ dojo.event.connect("around", tabContainer, "selectChild", function(invocation)
+ {
+ determineSave(invocation);
+ });
+ var siteTree = dojo.widget.byId("siteTree");
+ dojo.event.connect("around", siteTree, "nodeSelected", function(invocation)
+ {
+ determineSave(invocation);
+ });
+}
+dojo.addOnLoad( window.addListeners );
+</script>
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/application_edit.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/application_edit.png?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/application_edit.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/base.gif
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/base.gif?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/base.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/create.gif
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/create.gif?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/create.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/createsmall.gif
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/createsmall.gif?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/createsmall.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/cut.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/cut.png?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/cut.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/cut_red.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/cut_red.png?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/cut_red.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/delete.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/delete.png?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/delete.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/down.gif
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/down.gif?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/down.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/downsmall.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/downsmall.png?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/downsmall.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/edit.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/edit.png?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/edit.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/folder.gif
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/folder.gif?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/folder.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/folder_new.gif
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/folder_new.gif?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/folder_new.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/icon_link.gif
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/icon_link.gif?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/icon_link.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/lightning_go.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/lightning_go.png?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/lightning_go.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/link.gif
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/link.gif?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/link.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/link_add.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/link_add.png?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/link_add.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/link_break.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/link_break.png?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/link_break.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/loading.jpg
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/loading.jpg?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/loading.jpg
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/lock.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/lock.png?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/lock.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/mouse_add.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/mouse_add.png?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/mouse_add.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/mouse_delete.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/mouse_delete.png?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/mouse_delete.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/move.gif
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/move.gif?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/move.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/new.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/new.png?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/new.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/note.gif
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/note.gif?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/note.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/page.gif
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/page.gif?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/page.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/page_edit.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/page_edit.png?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/page_edit.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/page_new.gif
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/page_new.gif?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/page_new.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/page_white_go.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/page_white_go.png?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/page_white_go.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/plus.gif
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/plus.gif?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/plus.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/recyclebin.gif
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/recyclebin.gif?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/recyclebin.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/removesmall.gif
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/removesmall.gif?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/removesmall.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/table_edit.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/table_edit.png?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/table_edit.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/test.html
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/test.html?view=auto&rev=482815
==============================================================================
--- portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/test.html (added)
+++ portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/test.html Tue Dec 5 14:52:32 2006
@@ -0,0 +1,92 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<title>Dojo Tree Widget Test</title>
+
+<script type="text/javascript">
+ var djConfig = {isDebug: true};
+ //var djConfig = {isDebug: true, debugAtAllCosts: true };
+</script>
+<script type="text/javascript" src="../../../dojo.js"></script>
+<script type="text/javascript">
+ dojo.require("dojo.lang.*");
+ dojo.require("dojo.widget.*");
+ dojo.require("dojo.widget.Tree");
+ dojo.hostenv.writeIncludes();
+</script>
+</head>
+<body>
+
+<h2>Show root expanders, show gridlines, with icons (fade). Also node with HTML title.</h2>
+
+<div dojoType="Tree" toggle="fade">
+ <div dojoType="TreeNode" title="<span style='color:blue;font-style:italic'>HTML title</span>" childIconSrc="../../../src/widget/templates/images/treenode_node.gif">
+ <div dojoType="TreeNode" title="Item 1.1" childIconSrc="../../../src/widget/templates/images/treenode_node.gif"></div>
+ <div dojoType="TreeNode" title="Item 1.2" childIconSrc="../../../src/widget/templates/images/treenode_node.gif">
+ <div dojoType="TreeNode" title="Item 1.2.1" childIconSrc="../../../src/widget/templates/images/treenode_node.gif">
+ <div dojoType="TreeNode" title="Item 1.2.1.1" childIconSrc="../../../src/widget/templates/images/treenode_node.gif"></div>
+ </div>
+ <div dojoType="TreeNode" title="Item 1.2.2" childIconSrc="../../../src/widget/templates/images/treenode_node.gif"></div>
+ </div>
+ <div dojoType="TreeNode" title="Item 1.3" childIconSrc="../../../src/widget/templates/images/treenode_node.gif">
+ <div dojoType="TreeNode" title="Item 1.3.1" childIconSrc="../../../src/widget/templates/images/treenode_node.gif"></div>
+ <div dojoType="TreeNode" title="Item 1.3.2" childIconSrc="../../../src/widget/templates/images/treenode_node.gif"></div>
+ </div>
+ <div dojoType="TreeNode" title="Item 1.4" childIconSrc="../../../src/widget/templates/images/treenode_node.gif">
+ <div dojoType="TreeNode" title="Item 1.4.1" childIconSrc="../../../src/widget/templates/images/treenode_node.gif"></div>
+ </div>
+ </div>
+ <div dojoType="TreeNode" title="Item 2" childIconSrc="../../../src/widget/templates/images/treenode_node.gif"></div>
+</div>
+
+<h2>Hide root expanders, show gridlines</h2>
+
+<div dojoType="Tree" showRootGrid="false">
+ <div dojoType="TreeNode" title="Item 1">
+ <div dojoType="TreeNode" title="Item 1.1">
+ <div dojoType="TreeNode" title="Item 1.2"></div>
+ </div>
+ </div>
+ <div dojoType="TreeNode" title="Item 2">
+ <div dojoType="TreeNode" title="Item 2.1"></div>
+ </div>
+
+ <div dojoType="TreeNode" title="Item 3"></div>
+</div>
+
+<h2>Show root expanders, hide gridlines (wipe)</h2>
+
+<div dojoType="Tree" showGrid="false" toggle="wipe" toggleDuration="500">
+ <div dojoType="TreeNode" title="Item 1">
+ <div dojoType="TreeNode" title="Item 1.1">
+ <div dojoType="TreeNode" title="Item 1.2"></div>
+ </div>
+ </div>
+ <div dojoType="TreeNode" title="Item 2">
+ <div dojoType="TreeNode" title="Item 2.1"></div>
+ <div dojoType="TreeNode" title="Item 2.2"></div>
+ <div dojoType="TreeNode" title="Item 2.3"></div>
+ <div dojoType="TreeNode" title="Item 2.4"></div>
+ <div dojoType="TreeNode" title="Item 2.5"></div>
+ </div>
+ <div dojoType="TreeNode" title="Item 3"></div>
+</div>
+
+
+<h2>Hide root expanders, hide gridlines</h2>
+
+<div dojoType="Tree" showGrid="false" showRootGrid="false">
+ <div dojoType="TreeNode" title="Item 1">
+ <div dojoType="TreeNode" title="Item 1.1">
+ <div dojoType="TreeNode" title="Item 1.2"></div>
+ </div>
+ </div>
+ <div dojoType="TreeNode" title="Item 2">
+ <div dojoType="TreeNode" title="Item 2.1"></div>
+ </div>
+ <div dojoType="TreeNode" title="Item 3"></div>
+</div>
+
+</body>
+</html>
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/up.gif
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/up.gif?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/up.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/upsmall.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/upsmall.png?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/upsmall.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/wand.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/wand.png?view=auto&rev=482815
==============================================================================
Binary file - no diff available.
Propchange: portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/images/wand.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org