You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by bu...@apache.org on 2010/10/16 08:58:25 UTC

svn commit: r1023197 - in /ofbiz/trunk: framework/common/config/ framework/widget/dtd/ framework/widget/src/org/ofbiz/widget/screen/ framework/widget/templates/ themes/tomahawk/webapp/tomahawk/css/

Author: buscob
Date: Sat Oct 16 06:58:25 2010
New Revision: 1023197

URL: http://svn.apache.org/viewvc?rev=1023197&view=rev
Log:
Improved include-portal-page widget.
- Changed edit-mode attribute to conf-mode
- Added a use-private attribute. This is "true" by default but can be set to "fasle" if the include-portal-page must render a specific PortalPage without checking if a derived private PortalPage copy exists (i.e. in PortalPageAdmin screens)
- Fixed Portlet attributes retrieval. After each portlet rendering the attributes are removed from the context so that another instance of the same portlet in the same PortalPage that has no attribute value specified falls back to default values and not to the values of the previous portlet.
- The up/down/left/right portlet icons use the same service used for the Portlet Drag and Drop. (This is not working yet. Needs a next commit)
- Few portlet style and labels updates

Modified:
    ofbiz/trunk/framework/common/config/CommonUiLabels.xml
    ofbiz/trunk/framework/widget/dtd/widget-screen.xsd
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenRenderer.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java
    ofbiz/trunk/framework/widget/templates/htmlScreenMacroLibrary.ftl
    ofbiz/trunk/themes/tomahawk/webapp/tomahawk/css/style.css

Modified: ofbiz/trunk/framework/common/config/CommonUiLabels.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/config/CommonUiLabels.xml?rev=1023197&r1=1023196&r2=1023197&view=diff
==============================================================================
--- ofbiz/trunk/framework/common/config/CommonUiLabels.xml (original)
+++ ofbiz/trunk/framework/common/config/CommonUiLabels.xml Sat Oct 16 06:58:25 2010
@@ -195,6 +195,10 @@
         <value xml:lang="zh">新建</value>
         <value xml:lang="zh_CN">添加一个</value>
     </property>
+    <property key="CommonAddAColumnToThisPortalPage">
+        <value xml:lang="en">Add a new column to this portal</value>
+        <value xml:lang="it">Aggiunge una nuova colonna a questa pagina</value>
+    </property>
     <property key="CommonAddAPortlet">
         <value xml:lang="en">Add A Portlet...</value>
         <value xml:lang="fr">Ajouter un portlet...</value>
@@ -264,6 +268,7 @@
     <property key="CommonAddPortletToPage">
         <value xml:lang="en">Add a portlet to portal page</value>
         <value xml:lang="fr">Ajouter une portlet à la page</value>
+        <value xml:lang="it">Aggiunge un portlet in questa colonna</value>
     </property>
     <property key="CommonAddProblem">
         <value xml:lang="ar">مشكل أثناء الإضافة</value>
@@ -1913,6 +1918,18 @@
         <value xml:lang="zh">删除全部</value>
         <value xml:lang="zh_CN">删除所有</value>
     </property>
+    <property key="CommonDeleteColumn">
+        <value xml:lang="en">Delete Column</value>
+        <value xml:lang="it">Elimina colonna</value>
+    </property>
+    <property key="CommonDeleteThisColumn">
+        <value xml:lang="en">Delete this column</value>
+        <value xml:lang="it">Elimina questa colonna</value>
+    </property>
+    <property key="CommonDeleteThisPortlet">
+        <value xml:lang="en">Delete this portlet</value>
+        <value xml:lang="it">Elimina questo portlet</value>
+    </property>
     <property key="CommonDepth">
         <value xml:lang="ar">عمق</value>
         <value xml:lang="de">Tiefe</value>
@@ -6685,10 +6702,10 @@
         <value xml:lang="zh">设置为当前</value>
     </property>
     <property key="CommonSetColumnWidth">
-        <value xml:lang="en">Set Column Width...</value>
+        <value xml:lang="en">Set Column Width</value>
         <value xml:lang="fr">Définir la largeur de colonne ...</value>
         <value xml:lang="hi_IN">कॉलम की चौड़ाई स्थापित करे...</value>
-        <value xml:lang="it">Larghezza colonna...</value>
+        <value xml:lang="it">Imposta larghezza colonna</value>
         <value xml:lang="zh">设置列宽度...</value>
     </property>
     <property key="CommonSetNowEmpty">

Modified: ofbiz/trunk/framework/widget/dtd/widget-screen.xsd
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-screen.xsd?rev=1023197&r1=1023196&r2=1023197&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/dtd/widget-screen.xsd (original)
+++ ofbiz/trunk/framework/widget/dtd/widget-screen.xsd Sat Oct 16 06:58:25 2010
@@ -1095,8 +1095,17 @@ under the License.
     </xs:element>
     <xs:attributeGroup name="attlist.include-portal-page">
         <xs:attribute type="xs:string" name="id"/>
-        <xs:attribute name="edit-mode" default="false">
-            <xs:annotation><xs:documentation>Show the portal in edit mode.</xs:documentation></xs:annotation>
+        <xs:attribute name="conf-mode" default="false">
+            <xs:annotation><xs:documentation>Show the portal in configuration mode.</xs:documentation></xs:annotation>
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="use-private" default="true">
+            <xs:annotation><xs:documentation>If a derived private PortalPage exists for the actual UserLogin than show the private PortalPage instead of the original.</xs:documentation></xs:annotation>
             <xs:simpleType>
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="true"/>

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenRenderer.java?rev=1023197&r1=1023196&r2=1023197&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenRenderer.java Sat Oct 16 06:58:25 2010
@@ -59,7 +59,6 @@ import org.ofbiz.widget.html.HtmlScreenR
 import org.ofbiz.widget.menu.MenuStringRenderer;
 import org.ofbiz.widget.screen.ModelScreenWidget;
 import org.ofbiz.widget.screen.ScreenStringRenderer;
-import org.ofbiz.widget.WidgetPortalPageWorker;
 
 import freemarker.core.Environment;
 import freemarker.template.Template;
@@ -781,9 +780,19 @@ public class MacroScreenRenderer impleme
     }
 
     public void renderPortalPageBegin(Appendable writer, Map<String, Object> context, ModelScreenWidget.PortalPage portalPage) throws GeneralException, IOException {
-        String portalPageId = portalPage.getId(context);
+        String portalPageId = portalPage.getActualPortalPageId();
         String originalPortalPageId = portalPage.getOriginalPortalPageId();
-        String editMode = portalPage.getEditMode(context);
+        String confMode = portalPage.getConfMode(context);
+
+        Map<String, String> uiLabelMap = UtilGenerics.cast(context.get("uiLabelMap"));
+        String addColumnLabel = "";
+        String addColumnHint = "";
+        if (uiLabelMap == null) {
+            Debug.logWarning("Could not find uiLabelMap in context", module);
+        } else {
+            addColumnLabel = (String) uiLabelMap.get("CommonAddColumn");
+            addColumnHint = (String) uiLabelMap.get("CommonAddAColumnToThisPortalPage");
+        }
 
         StringWriter sr = new StringWriter();
         sr.append("<@renderPortalPageBegin ");
@@ -791,44 +800,49 @@ public class MacroScreenRenderer impleme
         sr.append(originalPortalPageId);
         sr.append("\" portalPageId=\"");
         sr.append(portalPageId);
-        sr.append("\" editMode=\"");
-        sr.append(editMode);
+        sr.append("\" confMode=\"");
+        sr.append(confMode);
+        sr.append("\" addColumnLabel=\"");
+        sr.append(addColumnLabel);
+        sr.append("\" addColumnHint=\"");
+        sr.append(addColumnHint);
         sr.append("\" />");
         executeMacro(writer, sr.toString());
     }
 
     public void renderPortalPageEnd(Appendable writer, Map<String, Object> context, ModelScreenWidget.PortalPage portalPage) throws GeneralException, IOException {
-        String editMode = portalPage.getEditMode(context);
-        HttpServletRequest request = (HttpServletRequest) context.get("request");
-
-        String actualRequest = request.getRequestURL().toString();
-        if (actualRequest.indexOf("?") < 0) {
-            actualRequest += "?";
-        } else if (!actualRequest.endsWith("?")) {
-            actualRequest += "&amp;";
-        }
-        String editOnURL = actualRequest+"editmode=true";
-        String editOffURL = actualRequest+"editmode=false";
-        
         StringWriter sr = new StringWriter();
-        sr.append("<@renderPortalPageEnd ");
-        sr.append("editMode=\"");
-        sr.append(editMode);
-        sr.append("\" editOnURL=\"");
-        sr.append(editOnURL);
-        sr.append("\" editOffURL=\"");
-        sr.append(editOffURL);
-        sr.append("\" />");
+        sr.append("<@renderPortalPageEnd/>");
         executeMacro(writer, sr.toString());
     }
 
     public void renderPortalPageColumnBegin(Appendable writer, Map<String, Object> context, ModelScreenWidget.PortalPage portalPage, GenericValue portalPageColumn) throws GeneralException, IOException {
-        String portalPageId = portalPage.getId(context);
+        String portalPageId = portalPage.getActualPortalPageId();
         String originalPortalPageId = portalPage.getOriginalPortalPageId();
         String columnSeqId = portalPageColumn.getString("columnSeqId");
         String columnWidthPercentage = portalPageColumn.getString("columnWidthPercentage");
         String columnWidthPixels = portalPageColumn.getString("columnWidthPixels");
-        String editMode = portalPage.getEditMode(context);
+        String confMode = portalPage.getConfMode(context);
+
+        Map<String, String> uiLabelMap = UtilGenerics.cast(context.get("uiLabelMap"));
+        String delColumnLabel = "";
+        String delColumnHint = "";
+        String addPortletLabel = "";
+        String addPortletHint = "";
+        String colWidthLabel = "";
+        String setColumnSizeHint = "";
+        
+        if (uiLabelMap == null) {
+            Debug.logWarning("Could not find uiLabelMap in context", module);
+        } else {
+            delColumnLabel = (String) uiLabelMap.get("CommonDeleteColumn");
+            delColumnHint = (String) uiLabelMap.get("CommonDeleteThisColumn");
+
+            addPortletLabel = (String) uiLabelMap.get("CommonAddAPortlet");
+            addPortletHint = (String) uiLabelMap.get("CommonAddPortletToPage");
+            colWidthLabel = (String) uiLabelMap.get("CommonWidth");
+            setColumnSizeHint = (String) uiLabelMap.get("CommonSetColumnWidth");
+        }
 
         StringWriter sr = new StringWriter();
         sr.append("<@renderPortalPageColumnBegin ");
@@ -848,8 +862,20 @@ public class MacroScreenRenderer impleme
             sr.append(columnWidthPercentage);
             sr.append("%\"");
         }
-        sr.append(" editMode=\"");
-        sr.append(editMode);
+        sr.append(" confMode=\"");
+        sr.append(confMode);
+        sr.append("\" delColumnLabel=\"");
+        sr.append(delColumnLabel);
+        sr.append("\" delColumnHint=\"");
+        sr.append(delColumnHint);
+        sr.append("\" addPortletLabel=\"");
+        sr.append(addPortletLabel);
+        sr.append("\" addPortletHint=\"");
+        sr.append(addPortletHint);
+        sr.append("\" colWidthLabel=\"");
+        sr.append(colWidthLabel);
+        sr.append("\" setColumnSizeHint=\"");
+        sr.append(setColumnSizeHint);
         sr.append("\" />");
         executeMacro(writer, sr.toString());
     }   
@@ -861,13 +887,30 @@ public class MacroScreenRenderer impleme
     }
 
     public void renderPortalPagePortletBegin(Appendable writer, Map<String, Object> context, ModelScreenWidget.PortalPage portalPage, GenericValue portalPortlet) throws GeneralException, IOException {
-        String portalPageId = portalPage.getId(context);
+        String portalPageId = portalPage.getActualPortalPageId();
         String originalPortalPageId = portalPage.getOriginalPortalPageId();
         String portalPortletId = portalPortlet.getString("portalPortletId");
         String portletSeqId = portalPortlet.getString("portletSeqId");
-        String editMode = portalPage.getEditMode(context);
+        String confMode = portalPage.getConfMode(context);
         String editFormName = portalPortlet.getString("editFormName");
         String editFormLocation = portalPortlet.getString("editFormLocation");
+        
+        String prevPortletId = (String) context.get("prevPortletId");
+        String prevPortletSeqId = (String) context.get("prevPortletSeqId");
+        String nextPortletId = (String) context.get("nextPortletId");
+        String nextPortletSeqId = (String) context.get("nextPortletSeqId");
+        String prevColumnSeqId = (String) context.get("prevColumnSeqId");
+        String nextColumnSeqId = (String) context.get("nextColumnSeqId");
+        
+        Map<String, String> uiLabelMap = UtilGenerics.cast(context.get("uiLabelMap"));
+        String delPortletHint = "";
+        String editAttributeHint = "";
+        if (uiLabelMap == null) {
+            Debug.logWarning("Could not find uiLabelMap in context", module);
+        } else {
+            delPortletHint = (String) uiLabelMap.get("CommonDeleteThisPortlet");
+            editAttributeHint = (String) uiLabelMap.get("CommonEditPortletAttributes");
+        }
 
         StringWriter sr = new StringWriter();
         sr.append("<@renderPortalPagePortletBegin ");
@@ -879,8 +922,24 @@ public class MacroScreenRenderer impleme
         sr.append(portalPortletId);
         sr.append("\" portletSeqId=\"");
         sr.append(portletSeqId);
-        sr.append("\" editMode=\"");
-        sr.append(editMode);
+        sr.append("\" prevPortletId=\"");
+        sr.append(prevPortletId);
+        sr.append("\" prevPortletSeqId=\"");
+        sr.append(prevPortletSeqId);
+        sr.append("\" nextPortletId=\"");
+        sr.append(nextPortletId);
+        sr.append("\" nextPortletSeqId=\"");
+        sr.append(nextPortletSeqId);
+        sr.append("\" prevColumnSeqId=\"");
+        sr.append(prevColumnSeqId);
+        sr.append("\" nextColumnSeqId=\"");
+        sr.append(nextColumnSeqId);
+        sr.append("\" delPortletHint=\"");
+        sr.append(delPortletHint);
+        sr.append("\" editAttributeHint=\"");
+        sr.append(editAttributeHint);
+        sr.append("\" confMode=\"");
+        sr.append(confMode);
         sr.append("\"");
         if (UtilValidate.isNotEmpty(editFormName) && UtilValidate.isNotEmpty(editFormLocation)) {
             sr.append(" editAttribute=\"true\"");
@@ -890,12 +949,12 @@ public class MacroScreenRenderer impleme
     }
 
     public void renderPortalPagePortletEnd(Appendable writer, Map<String, Object> context, ModelScreenWidget.PortalPage portalPage, GenericValue portalPortlet) throws GeneralException, IOException {
-        String editMode = portalPage.getEditMode(context);
+        String confMode = portalPage.getConfMode(context);
 
         StringWriter sr = new StringWriter();
         sr.append("<@renderPortalPagePortletEnd ");
-        sr.append(" editMode=\"");
-        sr.append(editMode);
+        sr.append(" confMode=\"");
+        sr.append(confMode);
         sr.append("\" />");
         executeMacro(writer, sr.toString());
     }

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java?rev=1023197&r1=1023196&r2=1023197&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java Sat Oct 16 06:58:25 2010
@@ -49,6 +49,7 @@ import org.ofbiz.widget.ModelWidget;
 import org.ofbiz.widget.ModelWidgetAction;
 import org.ofbiz.widget.WidgetFactory;
 import org.ofbiz.widget.WidgetWorker;
+import org.ofbiz.widget.PortalPageWorker;
 import org.ofbiz.widget.form.FormFactory;
 import org.ofbiz.widget.form.FormStringRenderer;
 import org.ofbiz.widget.form.ModelForm;
@@ -1585,13 +1586,16 @@ public abstract class ModelScreenWidget 
     public static class PortalPage extends ModelScreenWidget {
         public static final String TAG_NAME = "include-portal-page";
         protected FlexibleStringExpander idExdr;
-        protected FlexibleStringExpander editModeExdr;
+        protected FlexibleStringExpander confModeExdr;
         protected String originalPortalPageId;
+        protected String actualPortalPageId;
+        protected Boolean usePrivate;
 
         public PortalPage(ModelScreen modelScreen, Element portalPageElement) {
             super(modelScreen, portalPageElement);
             this.idExdr = FlexibleStringExpander.getInstance(portalPageElement.getAttribute("id"));
-            this.editModeExdr = FlexibleStringExpander.getInstance(portalPageElement.getAttribute("edit-mode"));
+            this.confModeExdr = FlexibleStringExpander.getInstance(portalPageElement.getAttribute("conf-mode"));
+            this.usePrivate = !("false".equals(portalPageElement.getAttribute("use-private")));
         }
 
         @Override
@@ -1606,62 +1610,106 @@ public abstract class ModelScreenWidget 
                 String expandedPortalPageId = getId(context);
 
                 if (UtilValidate.isNotEmpty(expandedPortalPageId)) {
-                    portalPage = delegator.findByPrimaryKeyCache("PortalPage", UtilMisc.toMap("portalPageId", expandedPortalPageId));
+                    if (usePrivate) {
+                        portalPage = PortalPageWorker.getPortalPage(expandedPortalPageId, context);
+                    }
+                    else {
+                        portalPage = delegator.findByPrimaryKeyCache("PortalPage", UtilMisc.toMap("portalPageId", expandedPortalPageId));
+                    }
                     if (portalPage == null) {
                         String errMsg = "Could not find PortalPage with portalPageId [" + expandedPortalPageId + "] ";
                         Debug.logError(errMsg, module);
                         throw new RuntimeException(errMsg);
                     } else {
+                        actualPortalPageId = portalPage.getString("portalPageId");
                         originalPortalPageId = portalPage.getString("originalPortalPageId");
                         portalPageColumns = delegator.getRelatedCache("PortalPageColumn", portalPage);
-                        portalPagePortlets = delegator.findByAndCache("PortalPagePortletView", UtilMisc.toMap("portalPageId", expandedPortalPageId), UtilMisc.toList("sequenceNum"));
                     }
                 } else {
                     String errMsg = "portalPageId is empty.";
                     Debug.logError(errMsg, module);
                     return;
                 }
+
                 // Renders the portalPage header
                 screenStringRenderer.renderPortalPageBegin(writer, context, this);
                 
+                // First column has no previous column
+                String prevColumnSeqId = "";
+                
+                // Iterates through the PortalPage columns
                 ListIterator <GenericValue>columnsIterator = portalPageColumns.listIterator();
                 while(columnsIterator.hasNext()) {
                     GenericValue columnValue = columnsIterator.next();
-
+                    String columnSeqId = columnValue.getString("columnSeqId");
+                    
                     // Renders the portalPageColumn header
                     screenStringRenderer.renderPortalPageColumnBegin(writer, context, this, columnValue);
+
+                    // Get the Portlets located in the current column
+                    portalPagePortlets = delegator.findByAnd("PortalPagePortletView", UtilMisc.toMap("portalPageId", portalPage.getString("portalPageId"), "columnSeqId", columnSeqId), UtilMisc.toList("sequenceNum"));
+                    
+                    // First Portlet in a Column has no previous Portlet
+                    String prevPortletId = "";
+                    String prevPortletSeqId = "";
+
+                    // If this is not the last column, get the next columnSeqId
+                    String nextColumnSeqId = "";
+                    if (columnsIterator.hasNext()) {
+                        nextColumnSeqId = portalPageColumns.get(columnsIterator.nextIndex()).getString("columnSeqId");
+                    }
                     
+                    // Iterates through the Portlets in the Column
                     ListIterator <GenericValue>portletsIterator = portalPagePortlets.listIterator();
                     while(portletsIterator.hasNext()) {
                         GenericValue portletValue = portletsIterator.next();
 
-                        String portletColumnSeqId = portletValue.getString("columnSeqId");
-                        String columnSeqId = columnValue.getString("columnSeqId");
-                            
-                        if ((columnSeqId != null) && (portletColumnSeqId != null)) {
-                            if (columnSeqId.equals(portletColumnSeqId)) {
-                                // Retrieves portlet's attributes
-                                portletAttributes = delegator.findList("PortletAttribute",
-                                        EntityCondition.makeCondition(UtilMisc.toMap("portalPageId", portletValue.get("portalPageId"), "portalPortletId", portletValue.get("portalPortletId"), "portletSeqId", portletValue.get("portletSeqId"))),
-                                        null, null, null, false);
-
-
-                                ListIterator <GenericValue>attributesIterator = portletAttributes.listIterator();
-
-                                while (attributesIterator.hasNext()) {
-                                    GenericValue attribute = attributesIterator.next();
-                                    context.put(attribute.getString("attrName"), attribute.getString("attrValue"));
-                                }
-                                
-                                // Renders the portalPagePortlet
-                                screenStringRenderer.renderPortalPagePortletBegin(writer, context, this, portletValue);
-                                screenStringRenderer.renderPortalPagePortletBody(writer, context, this, portletValue);
-                                screenStringRenderer.renderPortalPagePortletEnd(writer, context, this, portletValue);
-                            }
+                        // If not the last portlet in the column, get the next nextPortletId and nextPortletSeqId
+                        String nextPortletId = "";
+                        String nextPortletSeqId = "";
+                        if (portletsIterator.hasNext()) {
+                            nextPortletId = portalPagePortlets.get(portletsIterator.nextIndex()).getString("portalPortletId");
+                            nextPortletSeqId = portalPagePortlets.get(portletsIterator.nextIndex()).getString("portletSeqId");
+                        }
+
+                        // Set info to allow portlet movement in the page
+                        context.put("prevPortletId", prevPortletId);
+                        context.put("prevPortletSeqId", prevPortletSeqId);
+                        context.put("nextPortletId", nextPortletId);
+                        context.put("nextPortletSeqId", nextPortletSeqId);
+                        context.put("prevColumnSeqId", prevColumnSeqId);
+                        context.put("nextColumnSeqId", nextColumnSeqId);
+                       
+                        // Get portlet's attributes
+                        portletAttributes = delegator.findList("PortletAttribute",
+                            EntityCondition.makeCondition(UtilMisc.toMap("portalPageId", portletValue.get("portalPageId"), "portalPortletId", portletValue.get("portalPortletId"), "portletSeqId", portletValue.get("portletSeqId"))),
+                            null, null, null, false);
+                        ListIterator <GenericValue>attributesIterator = portletAttributes.listIterator();
+                        while (attributesIterator.hasNext()) {
+                            GenericValue attribute = attributesIterator.next();
+                            context.put(attribute.getString("attrName"), attribute.getString("attrValue"));
                         }
+                        
+                        // Renders the portalPagePortlet
+                        screenStringRenderer.renderPortalPagePortletBegin(writer, context, this, portletValue);
+                        screenStringRenderer.renderPortalPagePortletBody(writer, context, this, portletValue);
+                        screenStringRenderer.renderPortalPagePortletEnd(writer, context, this, portletValue);
+
+                        // Remove the portlet's attributes so that these are not available for other portlets
+                        while (attributesIterator.hasPrevious()) {
+                            GenericValue attribute = attributesIterator.previous();
+                            context.remove(attribute.getString("attrName"));
+                        }
+                        
+                        // Uses the actual portlet as prevPortlet for next iteration
+                        prevPortletId = (String) portletValue.get("portalPortletId");
+                        prevPortletSeqId = (String) portletValue.get("portletSeqId");
                     }
                     // Renders the portalPageColumn footer
                     screenStringRenderer.renderPortalPageColumnEnd(writer, context, this, columnValue);
+
+                    // Uses the actual columnSeqId as prevColumnSeqId for next iteration
+                    prevColumnSeqId = columnSeqId;
                 }
                 // Renders the portalPage footer
                 screenStringRenderer.renderPortalPageEnd(writer, context, this);
@@ -1684,8 +1732,16 @@ public abstract class ModelScreenWidget 
             return this.originalPortalPageId;
         }
         
-        public String getEditMode(Map<String, Object> context) {
-            return this.editModeExdr.expandString(context);
+        public String getActualPortalPageId() {
+            return this.actualPortalPageId;
+        }
+
+        public String getConfMode(Map<String, Object> context) {
+            return this.confModeExdr.expandString(context);
+        }
+
+        public String getUsePrivate() {
+            return Boolean.toString(this.usePrivate);
         }
 
         @Override

Modified: ofbiz/trunk/framework/widget/templates/htmlScreenMacroLibrary.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/templates/htmlScreenMacroLibrary.ftl?rev=1023197&r1=1023196&r2=1023197&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/templates/htmlScreenMacroLibrary.ftl (original)
+++ ofbiz/trunk/framework/widget/templates/htmlScreenMacroLibrary.ftl Sat Oct 16 06:58:25 2010
@@ -159,10 +159,9 @@ ${menuString}
     <li class="${paginateFirstStyle?default("nav-first")}<#if !firstLinkUrl?has_content> disabled</#if>"><#if firstLinkUrl?has_content><a href="${firstLinkUrl}">${paginateFirstLabel}</a><#else>${paginateFirstLabel}</#if></li>
 </#macro>
 
-<#macro renderPortalPageBegin originalPortalPageId portalPageId editMode="false" addColumnLabel="Add column" addColumnHint="Add a new column to this portal">
-  <#if editMode == "true">
-    <script src="/images/myportal.js" type="text/javascript"></script>
-    <a class="buttontext" href="javascript:document.addColumn_${portalPageId}.submit()" title="${addColumnHint}">${addColumnLabel}</a> PortalPageId: ${portalPageId}
+<#macro renderPortalPageBegin originalPortalPageId portalPageId confMode="false" addColumnLabel="Add column" addColumnHint="Add a new column to this portal">
+  <#if confMode == "true">
+    <a class="buttontext" href="javascript:document.addColumn_${portalPageId}.submit()" title="${addColumnHint}">${addColumnLabel}</a> <b>PortalPageId: ${portalPageId}</b>
     <form method="post" action="addPortalPageColumn" name="addColumn_${portalPageId}">
       <input name="portalPageId" value="${portalPageId}" type="hidden"/>
     </form>
@@ -171,21 +170,16 @@ ${menuString}
     <tr>
 </#macro>
 
-<#macro renderPortalPageEnd editMode="false" editOnURL="#" editOffURL="#" editOnLabel="Edit ON" editOffLabel="Edit OFF" editOnHint="Enable portal page editing" editOffHint="Disable portal page editing">
+<#macro renderPortalPageEnd>
     </tr>
   </table>
-  <#if editMode == "true">
-    <a class="buttontext" href="${editOffURL}" title="${editOffHint}">${editOffLabel}</a>
-  <#else>
-    <a class="buttontext" href="${editOnURL}" title="${editOnHint}">${editOnLabel}</a>
-  </#if>
 </#macro>
 
-<#macro renderPortalPageColumnBegin originalPortalPageId portalPageId columnSeqId editMode="false" width="auto" delColumnLabel="Remove column" delColumnHint="Delete this column" addPortletLabel="Add portlet" addPortletHint="Add a new portlet to this column" setColumnSizeHint="Set column size">
+<#macro renderPortalPageColumnBegin originalPortalPageId portalPageId columnSeqId confMode="false" width="auto" delColumnLabel="Delete column" delColumnHint="Delete this column" addPortletLabel="Add portlet" addPortletHint="Add a new portlet to this column" colWidthLabel="Col. width:" setColumnSizeHint="Set column size">
   <#assign columnKey = portalPageId+columnSeqId>
   <#assign columnKeyFields = '<input name="portalPageId" value="' + portalPageId + '" type="hidden"/><input name="columnSeqId" value="' + columnSeqId + '" type="hidden"/>'>
-  <td style="vertical-align: top; <#if width?has_content> width:${width};</#if>" id="portalColumn_${columnSeqId}">
-    <#if editMode == "true">
+  <td class="portal-column<#if confMode == "true">-config</#if>" style="vertical-align: top; <#if width?has_content> width:${width};</#if>" id="portalColumn_${columnSeqId}">
+    <#if confMode == "true">
       <div class="portal-column-config-title-bar">
         <ul>
           <li>
@@ -204,10 +198,11 @@ ${menuString}
             <form method="post" action="editPortalPageColumnWidth" name="setColumnSize_${columnKey}">
               ${columnKeyFields}
             </form>
-            <a class="buttontext" href="javascript:document.setColumnSize_${columnKey}.submit()" title="${setColumnSizeHint}">${width}</a>
+            <a class="buttontext" href="javascript:document.setColumnSize_${columnKey}.submit()" title="${setColumnSizeHint}">${colWidthLabel}: ${width}</a>
           </li>
         </ul>
       </div>
+      <br class="clear"/>
     </#if>
 </#macro>
 
@@ -215,11 +210,11 @@ ${menuString}
   </td>
 </#macro>
 
-<#macro renderPortalPagePortletBegin originalPortalPageId portalPageId portalPortletId portletSeqId editMode="false" delPortletHint="Remove this portlet" editAttribute="false" editAttributeHint="Edit portlet parameters">
+<#macro renderPortalPagePortletBegin originalPortalPageId portalPageId portalPortletId portletSeqId prevPortletId="" prevPortletSeqId="" nextPortletId="" nextPortletSeqId="" prevColumnSeqId="" nextColumnSeqId="" confMode="false" delPortletHint="Remove this portlet" editAttribute="false" editAttributeHint="Edit portlet parameters">
   <#assign portletKey = portalPageId+portalPortletId+portletSeqId>
   <#assign portletKeyFields = '<input name="portalPageId" value="' + portalPageId + '" type="hidden"/><input name="portalPortletId" value="' + portalPortletId + '" type="hidden"/><input name="portletSeqId" value="' + portletSeqId  + '" type="hidden"/>'>
   <div id="PP_${portletKey}" name="portalPortlet" class="noClass">
-    <#if editMode == "true">
+    <#if confMode == "true">
       <div class="portlet-config" id="PPCFG_${portletKey}">
         <div class="portlet-config-title-bar">
           <ul>
@@ -238,15 +233,63 @@ ${menuString}
                 <a href="javascript:document.editPortlet_${portletKey}.submit()" title="${editAttributeHint}">&nbsp;&nbsp;&nbsp;</a>
               </li>
             </#if>
+            <#if prevColumnSeqId?has_content>
+              <li class="move-left">
+                <form method="post" action="updatePortletSeqDragDrop" name="movePortletLeft_${portletKey}">
+                  <input name="o_portalPageId" value="${portalPageId}" type="hidden"/>
+                  <input name="o_portalPortletId" value="${portalPortletId}" type="hidden"/>
+                  <input name="o_portletSeqId" value="${portletSeqId}" type="hidden"/>
+                  <input name="destinationColumn" value="${prevColumnSeqId}" type="hidden"/>
+                  <input name="mode" value="DRAGDROPBOTTOM" type="hidden"/>
+                </form>
+                <a href="javascript:document.movePortletLeft_${portletKey}.submit()">&nbsp;&nbsp;&nbsp;</a></li>
+            </#if>            
+            <#if nextColumnSeqId?has_content>
+              <li class="move-right">
+                <form method="post" action="updatePortletSeqDragDrop" name="movePortletRight_${portletKey}">
+                  <input name="o_portalPageId" value="${portalPageId}" type="hidden"/>
+                  <input name="o_portalPortletId" value="${portalPortletId}" type="hidden"/>
+                  <input name="o_portletSeqId" value="${portletSeqId}" type="hidden"/>
+                  <input name="destinationColumn" value="${nextColumnSeqId}" type="hidden"/>
+                  <input name="mode" value="DRAGDROPBOTTOM" type="hidden"/>
+                </form>
+                <a href="javascript:document.movePortletRight_${portletKey}.submit()">&nbsp;&nbsp;&nbsp;</a></li>
+            </#if>            
+            <#if prevPortletId?has_content>
+              <li class="move-up">
+                <form method="post" action="updatePortletSeqDragDrop" name="movePortletUp_${portletKey}">
+                  <input name="o_portalPageId" value="${portalPageId}" type="hidden"/>
+                  <input name="o_portalPortletId" value="${portalPortletId}" type="hidden"/>
+                  <input name="o_portletSeqId" value="${portletSeqId}" type="hidden"/>
+                  <input name="d_portalPageId" value="${portalPageId}" type="hidden"/>
+                  <input name="d_portalPortletId" value="${prevPortletId}" type="hidden"/>
+                  <input name="d_portletSeqId" value="${prevPortletSeqId}" type="hidden"/>
+                  <input name="mode" value="DRAGDROPBEFORE" type="hidden"/>
+                </form>
+                <a href="javascript:document.movePortletUp_${portletKey}.submit()">&nbsp;&nbsp;&nbsp;</a></li>
+            </#if>            
+            <#if nextPortletId?has_content>
+              <li class="move-down">
+                <form method="post" action="updatePortletSeqDragDrop" name="movePortletDown_${portletKey}">
+                  <input name="o_portalPageId" value="${portalPageId}" type="hidden"/>
+                  <input name="o_portalPortletId" value="${portalPortletId}" type="hidden"/>
+                  <input name="o_portletSeqId" value="${portletSeqId}" type="hidden"/>
+                  <input name="d_portalPageId" value="${portalPageId}" type="hidden"/>
+                  <input name="d_portalPortletId" value="${nextPortletId}" type="hidden"/>
+                  <input name="d_portletSeqId" value="${nextPortletSeqId}" type="hidden"/>
+                  <input name="mode" value="DRAGDROPAFTER" type="hidden"/>
+                </form>
+                <a href="javascript:document.movePortletDown_${portletKey}.submit()">&nbsp;&nbsp;&nbsp;</a></li>
+            </#if>            
           </ul>
           <br class="clear"/>
         </div>
       </#if>
 </#macro>
 
-<#macro renderPortalPagePortletEnd editMode="false">
+<#macro renderPortalPagePortletEnd confMode="false">
   </div>
-  <#if editMode == "true">
+  <#if confMode == "true">
     </div>
   </#if>
 </#macro>

Modified: ofbiz/trunk/themes/tomahawk/webapp/tomahawk/css/style.css
URL: http://svn.apache.org/viewvc/ofbiz/trunk/themes/tomahawk/webapp/tomahawk/css/style.css?rev=1023197&r1=1023196&r2=1023197&view=diff
==============================================================================
--- ofbiz/trunk/themes/tomahawk/webapp/tomahawk/css/style.css (original)
+++ ofbiz/trunk/themes/tomahawk/webapp/tomahawk/css/style.css Sat Oct 16 06:58:25 2010
@@ -2279,14 +2279,11 @@ color: #000000;
 
 /* == Portlet configuration screenlet == */
 .portlet-config {
-background-color: #FFEC6F;
-border: 2px solid #FFEC6F;
+background-color: #FFFF99;
 margin-bottom: 5px;
 }
 
 .portlet-config-title-bar .title {
-color: #555555;
-background-color: #CFC05A;
 float: left;
 }
 
@@ -2366,6 +2363,17 @@ font-weight: bold;
 float: right;
 }
 
+.portal-column-config-title-bar {
+padding-left: 5px;
+}
+
+.portal-column-config-title-bar ul li {
+float: left;
+}
+.portal-column-config {
+background: #FFFFFF;
+}
+
 /***********************************************
 Webtools
 ***********************************************/