Author: roy.russo(a)jboss.com
Date: 2006-12-13 17:16:24 -0500 (Wed, 13 Dec 2006)
New Revision: 5851
Modified:
trunk/core/src/main/org/jboss/portal/core/portlet/dashboard/Configurator.java
trunk/core/src/resources/portal-core-war/WEB-INF/jsp/dashboard/editpage.jsp
Log:
ui prettification of dashboards
Modified: trunk/core/src/main/org/jboss/portal/core/portlet/dashboard/Configurator.java
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/portlet/dashboard/Configurator.java 2006-12-13
18:38:05 UTC (rev 5850)
+++
trunk/core/src/main/org/jboss/portal/core/portlet/dashboard/Configurator.java 2006-12-13
22:16:24 UTC (rev 5851)
@@ -33,6 +33,7 @@
import org.jboss.portal.theme.LayoutService;
import org.jboss.portal.theme.PortalLayout;
import org.jboss.portal.theme.ThemeConstants;
+import org.jboss.portal.theme.ThemeService;
import org.jboss.portlet.JBossActionRequest;
import org.jboss.portlet.JBossActionResponse;
import org.jboss.portlet.JBossPortlet;
@@ -41,9 +42,9 @@
import javax.portlet.PortletException;
import javax.portlet.PortletRequestDispatcher;
-import javax.portlet.PortletSecurityException;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
@@ -67,6 +68,8 @@
private LayoutService layoutService;
+ private ThemeService themeService;
+
public void init()
throws PortletException
{
@@ -78,6 +81,8 @@
layoutService =
(LayoutService)getPortletContext().getAttribute("LayoutService");
+ themeService =
(ThemeService)getPortletContext().getAttribute("ThemeService");
+
if (instanceContainer == null)
{
throw new PortletException("No InstanceContainer found");
@@ -90,6 +95,10 @@
{
throw new PortletException("No LayoutService found");
}
+ if (themeService == null)
+ {
+ throw new PortletException("No ThemeService found");
+ }
}
private PortalObjectId dashboardId = PortalObjectId.parse("/dashboard",
PortalObjectId.CANONICAL_FORMAT);
@@ -106,6 +115,7 @@
String errorMessage = (String)req.getParameter("errorMsg");
+ // load portal + page for editting.
Portal portal =
(Portal)portalObjectContainer.getObject(dashboardId).getChild(req.getUser().getUserName());
Page page;
if (req.getParameter("editPageSelect") != null)
@@ -118,6 +128,7 @@
page = (Page)portal.getDefaultPage();
}
+ // load insances this user has access to.
List available_instances = (List)instanceContainer.getInstances();
resp.setContentType("text/html");
@@ -126,6 +137,7 @@
Map windowMap = getWindows(page);
List regions = new ArrayList(windowMap.keySet());
+ regions.remove("unknown");
Collections.sort(regions);
req.setAttribute("windowMap", windowMap);
@@ -137,7 +149,7 @@
log.error(errorMessage, e);
}
- // page select box
+ // loads avabailable pages for user to edit.
List pages = new ArrayList();
for (Iterator j = portal.getChildren().iterator(); j.hasNext();)
{
@@ -148,10 +160,27 @@
}
}
+ // load available layouts/themes
+ Collection layouts = layoutService.getLayouts();
+ for (Iterator iterator = layouts.iterator(); iterator.hasNext();)
+ {
+ PortalLayout layout = (PortalLayout)iterator.next();
+ layout.getLayoutInfo().getName();
+ }
+ Collection themes = themeService.getThemes();
+
+ // Get the current layout and theme
+ String layoutId = page.getDeclaredProperty(ThemeConstants.PORTAL_PROP_LAYOUT);
+ PortalLayout currentLayout = layoutService.getLayout(layoutId, true);
+ String themeId = page.getProperty(ThemeConstants.PORTAL_PROP_THEME);
+
+ // dispatch
req.setAttribute("available_instances", available_instances);
req.setAttribute("pages", pages);
req.setAttribute("currentPage", page.getName());
-
+ req.setAttribute("layouts", layouts);
+ req.setAttribute("currentLayout",
currentLayout.getLayoutInfo().getName());
+ req.setAttribute("themes", themes);
if (errorMessage != null)
{
req.setAttribute("errorMsg", errorMessage);
@@ -333,6 +362,31 @@
actionResponse.setRenderParameter("op", "editPage");
}
+ else if ("assignLayout".equals(op))
+ {
+ String selectedLayout = actionRequest.getParameter("layout");
+
+ PortalLayout checkLayout = layoutService.getLayout(selectedLayout, true);
+ if (checkLayout != null)
+ {
+ page.setDeclaredProperty(ThemeConstants.PORTAL_PROP_LAYOUT,
checkLayout.getLayoutInfo().getName());
+ }
+
+ actionResponse.setRenderParameter("editPageSelect", editPage);
+ }
+ else if ("assignTheme".equals(op))
+ {
+ String selectedLayout = actionRequest.getParameter("theme");
+
+ PortalLayout checkLayout = layoutService.getLayout(selectedLayout, true);
+
+ if (checkLayout != null)
+ {
+ page.setDeclaredProperty(ThemeConstants.PORTAL_PROP_LAYOUT,
checkLayout.getLayoutInfo().getName());
+ }
+
+ actionResponse.setRenderParameter("editPageSelect", editPage);
+ }
else
{
actionResponse.setRenderParameter("editPageSelect", editPage);
Modified: trunk/core/src/resources/portal-core-war/WEB-INF/jsp/dashboard/editpage.jsp
===================================================================
--- trunk/core/src/resources/portal-core-war/WEB-INF/jsp/dashboard/editpage.jsp 2006-12-13
18:38:05 UTC (rev 5850)
+++ trunk/core/src/resources/portal-core-war/WEB-INF/jsp/dashboard/editpage.jsp 2006-12-13
22:16:24 UTC (rev 5851)
@@ -1,7 +1,10 @@
<%@ page import="org.jboss.portal.core.model.instance.Instance" %>
<%@ page import="org.jboss.portal.core.model.portal.Page" %>
<%@ page import="org.jboss.portal.core.model.portal.Window" %>
+<%@ page import="org.jboss.portal.theme.PortalLayout" %>
+<%@ page import="org.jboss.portal.theme.PortalTheme" %>
<%@ page import="java.util.ArrayList" %>
+<%@ page import="java.util.Collection" %>
<%@ page import="java.util.Collections" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="java.util.List" %>
@@ -21,7 +24,13 @@
Map windowMap = (Map)request.getAttribute("windowMap");
String currentPage = (String)request.getAttribute("currentPage");
+ String currentLayout = (String)request.getAttribute("currentLayout");
+ String currentTheme = (String)request.getAttribute("currentTheme");
+
String errorMessage = (String)request.getAttribute("errorMsg");
+
+ Collection layouts = (Collection)request.getAttribute("layouts");
+ Collection themes = (Collection)request.getAttribute("themes");
%>
<script type="text/javascript" language="JavaScript">
@@ -43,11 +52,16 @@
this.document.instancesform.sortRegion.value = region;
}
- function newPage(op)
+ function switchLayout(op)
{
this.document.instancesform.op.value = op;
}
+ function switchTheme(op)
+ {
+ this.document.instancesform.op.value = op;
+ }
+
function debug()
{
//alert("OP: '" + this.instancesForm.op.value + "' toRegion:
'" + this.instancesForm.toRegion.value + "' fromRegion: '" +
this.instancesForm.fromRegion.value + "' sortRegion: '" +
this.instancesForm.sortRegion.value + "'");
@@ -67,144 +81,201 @@
%>
<table width="100%">
-<th colspan="2" class="portlet-section-header"
align="center">Edit Page '<%= currentPage %>'</th>
+<th colspan="2" class="portlet-section-header"
align="center">Personal Dashboard Editor</th>
<tr>
- <td class="portlet-section-body" align="left">
- Use this to manage the content on your page. You can control the page title, select
number of columns, and add,
- order, or remove portlets.
+ <td class="portlet-section-body" align="center">
+ <table width="500">
+ <tr>
+ <td align="left">
+ Use this tool to manage the content and appearance of your dashboard
pages. <br/>
+ You can control the page titles, column layouts, page themes,
+ and add,
+ order, or remove portlets.
+ </td>
+ <td>
+ <table class="bottombuttonbar">
+ <tr>
+ <td align="left"
valign="top"><b>Create a New Page:</b><br/>Page
name:
+ <form name="createpageform"
action="<portlet:actionURL><portlet:param name="op"
value="newpage"></portlet:param>
+ </portlet:actionURL>" method="POST"
style="padding:0;margin:0">
+ <input type="text"
class="portlet-form-input-field" name="pagename"><input
type="submit"
+
name="save"
+
value="Save"
+
class="portlet-form-button"/>
+ </form>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
</td>
</tr>
+<th colspan="2" class="portlet-section-header"
align="center">Currently editing page '<%= currentPage
%>'</th>
<tr>
- <td>
- <hr/>
- </td>
-</tr>
-<tr>
- <td class="portlet-section-body"
align="left"><b>Select a page to edit:</b><br/>
-
+ <td class="portlet-section-body" align="center">
<form action="<portlet:actionURL><portlet:param
name="op" value="editPage"></portlet:param>
</portlet:actionURL>" method="POST"
style="padding:0;margin:0">
- <select name="editPageSelect">
- <%
- for (int i = 0; i < pages.size(); i++)
+ Select: <select name="editPageSelect">
+ <%
+ for (int i = 0; i < pages.size(); i++)
+ {
+ Page onePage = (Page)pages.get(i);
+ String selected = "";
+ if (onePage.getName().equals(currentPage))
{
- Page onePage = (Page)pages.get(i);
- if (onePage.getName().equals(currentPage))
- {
- %>
- <option selected="true" value="<%= onePage.getName()
%>"><%= onePage.getName() %>
- </option>
- <%
+ selected = " selected=\"true\" ";
+ }
+ %>
+ <option <%= selected %> value="<%= onePage.getName()
%>"><%= onePage.getName() %>
+ </option>
+ <%
}
- else
- {
- %>
- <option value="<%= onePage.getName() %>"><%=
onePage.getName() %>
- </option>
- <%
- }
- }
- %>
- </select>
+ %>
+ </select>
<input type="submit" name="submit" value="Go"
class="portlet-form-button"/>
</form>
+
+ <br/>
</td>
</tr>
-<tr>
+<!--<tr>
<td>
<hr/>
</td>
-</tr>
+</tr>-->
<tr>
- <td>
- <form action="<portlet:actionURL>
+<td>
+<form action="<portlet:actionURL>
</portlet:actionURL>" name="instancesform"
method="POST" onsubmit="debug();">
- <input type="hidden" name="op" value=""/>
- <input type="hidden" name="toRegion"
value=""/>
- <input type="hidden" name="fromRegion"
value=""/>
- <input type="hidden" name="sortRegion"
value=""/>
- <input type="hidden" name="editPageSelect"
value="<%= currentPage %>"/>
- <table width="100%">
- <tr>
- <td valign="top" class="portlet-section-alternate"
width="250">
- <table>
- <tr>
- <td valign="top">
- <b>Title and Layout</b>
- <br/>
- Title the page and select the number of columns for the
layout
- <hr/>
- <b>Page Title:</b><br/>
- <input type="text"
class="portlet-form-input-field" name="pagename">
- <br/>
- <input type="submit" name="save"
value="Save" class="portlet-form-button"
- onclick="newPage('newpage');"/>
- </td>
- </tr>
- </table>
- </td>
- <td class="portlet-section-body" valign="top"
align="right"><b>Available Content</b><br/>
- <select name="available_instances"
multiple="true" size="20">
- <%
- for (int i = 0; i < available_instances.size(); i++)
- {
- Instance instance = (Instance)available_instances.get(i);
- %>
- <option value="<%= instance.getId() %>"><%=
instance.getId()%>
- </option>
- <%
- }
- %>
- </select>
- </td>
- <td>
- <table>
- <%
- List regions = new ArrayList(windowMap.keySet());
- Collections.sort(regions);
- for (Iterator i = regions.iterator(); i.hasNext();)
+<input type="hidden" name="op" value=""/>
+<input type="hidden" name="toRegion" value=""/>
+<input type="hidden" name="fromRegion" value=""/>
+<input type="hidden" name="sortRegion" value=""/>
+<input type="hidden" name="editPageSelect" value="<%=
currentPage %>"/>
+<table width="100%">
+<tr>
+<td valign="top" width="250">
+ <table class="bottombuttonbar">
+ <tr>
+ <td valign="top">
+ <b>Theme and Layout</b>
+ <br/>
+ Apply a theme to your page, or select the number of columns for the layout.
+ <hr/>
+ </td>
+ </tr>
+ <tr>
+ <td>
+
+ <select name="layout">
+ <%
+ for (Iterator iterator = layouts.iterator(); iterator.hasNext();)
+ {
+ PortalLayout layout = (PortalLayout)iterator.next();
+ String selected = "";
+ if (layout.getLayoutInfo().getName().equals(currentLayout))
{
- String region = (String)i.next();
- TreeSet windows = (TreeSet)windowMap.get(region);
- %>
- <tr>
- <td>
- <input type="submit"
class="portlet-form-button" name=">"
value=">"
- onclick="assignPortlet('copy','<%=
region %>');"/><br/><input
- type="submit" class="portlet-form-button"
name="<" value="<"
- onclick="unassignPortlet('remove','<%= region
%>');"/></td>
- <td class="portlet-section-body"
valign="top">
- <b><%= region %> Column</b><br/>
- <select name="<%= region %>_instances"
multiple="true" size="6">
- <%
- for (Iterator j = windows.iterator(); j.hasNext();)
- {
- Window window = (Window)j.next();
- %>
- <option value="<%= window.getName()
%>"><%= window.getInstanceRef() %>
- </option>
- <%
- }
- %>
- </select>
- </td>
- <td>
- <input type="submit"
class="portlet-form-button" name="Up" value="Up"
- onclick="sortPortlet('up','<%= region
%>');"/><br/><input
- type="submit" class="portlet-form-button"
name="Down" value="Down"
- onclick="sortPortlet('down','<%= region
%>');"/>
- </td>
- </tr>
- <%
+ selected = " selected=\"true\" ";
}
- %>
- </table>
- </tr>
- </table>
- </form>
- </td>
+ %>
+ <option <%=selected %>
+ value="<%= layout.getLayoutInfo().getName()
%>"><%= layout.getLayoutInfo().getName() %>
+ </option>
+ <%
+ }
+ %>
+ </select> <input type="submit"
class="portlet-form-button" name="Select" value="Select"
+
onclick="switchLayout('assignLayout');"/>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <select name="theme">
+ <%
+ for (Iterator iterator = themes.iterator(); iterator.hasNext();)
+ {
+ PortalTheme theme = (PortalTheme)iterator.next();
+ String selected = "";
+ if (theme.getThemeInfo().getName().equals(currentTheme))
+ {
+ selected = " selected=\"true\" ";
+ }
+ %>
+ <option <%=selected %>
+ value="<%= theme.getThemeInfo().getName() %>"><%=
theme.getThemeInfo().getName() %>
+ </option>
+ <%
+ }
+ %>
+ </select> <input type="submit"
class="portlet-form-button" name="Select" value="Select"
+ onclick="switchTheme('assignTheme');"/>
+ </td>
+ </tr>
+ </table>
+</td>
+<td class="portlet-section-body" valign="top"
align="right"><b>Available Content</b><br/>
+ <select name="available_instances" multiple="true"
size="20">
+ <%
+ for (int i = 0; i < available_instances.size(); i++)
+ {
+ Instance instance = (Instance)available_instances.get(i);
+ %>
+ <option value="<%= instance.getId() %>"><%=
instance.getId()%>
+ </option>
+ <%
+ }
+ %>
+ </select>
+</td>
+<td>
+<table>
+ <%
+ List regions = new ArrayList(windowMap.keySet());
+ Collections.sort(regions);
+ for (Iterator i = regions.iterator(); i.hasNext();)
+ {
+ String region = (String)i.next();
+ TreeSet windows = (TreeSet)windowMap.get(region);
+ %>
+ <tr>
+ <td>
+ <input type="submit" class="portlet-form-button"
name=">" value=">"
+ onclick="assignPortlet('copy','<%= region
%>');"/><br/><input
+ type="submit" class="portlet-form-button"
name="<" value="<"
+ onclick="unassignPortlet('remove','<%= region
%>');"/></td>
+ <td class="portlet-section-body" valign="top">
+ <b><%= region %> Column</b><br/>
+ <select name="<%= region %>_instances"
multiple="true" size="6">
+ <%
+ for (Iterator j = windows.iterator(); j.hasNext();)
+ {
+ Window window = (Window)j.next();
+ %>
+ <option value="<%= window.getName() %>"><%=
window.getInstanceRef() %>
+ </option>
+ <%
+ }
+ %>
+ </select>
+ </td>
+ <td>
+ <input type="submit" class="portlet-form-button"
name="Up" value="Up"
+ onclick="sortPortlet('up','<%= region
%>');"/><br/><input
+ type="submit" class="portlet-form-button"
name="Down" value="Down"
+ onclick="sortPortlet('down','<%= region
%>');"/>
+ </td>
+ </tr>
+ <%
+ }
+ %>
+</table>
</tr>
</table>
+</form>
+</td>
+</tr>
+</table>
<hr/>
<%
if (!"default".equals(currentPage))
@@ -216,7 +287,7 @@
<form action="<portlet:actionURL><portlet:param
name="op" value="delete"></portlet:param>
</portlet:actionURL>" method="POST"
style="padding:0;margin:0">
<input type="hidden" name="pagename"
value="<%= currentPage %>"/>
- <input type="submit" name="submit" value="Delete
this Page"/>
+ <input type="submit" name="submit" value="Delete
this Page" class="portlet-form-button"/>
<br/>
<font color="red">You cannot undo this action!</font>
</form>