- Fix to ui issue with generated components IDs when viewing multiple websites (JSF hell!)
 - Added Preview Website action to the website browse page

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@3921 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Kevin Roast
2006-09-25 15:14:04 +00:00
parent c9f6f17756
commit 1b9ca2ac8b
4 changed files with 66 additions and 25 deletions

View File

@@ -226,13 +226,6 @@ public class AVMBrowseBean implements IContextListener
this.actionService = actionService; this.actionService = actionService;
} }
public String getStagingStore()
{
Node websiteNode = this.navigator.getCurrentNode();
String storeRoot = (String)websiteNode.getProperties().get(ContentModel.PROP_AVMSTORE);
return AVMConstants.buildAVMStagingStoreName(storeRoot);
}
/** /**
* Summary text for the staging store: * Summary text for the staging store:
* Created On: xx/yy/zz * Created On: xx/yy/zz
@@ -268,11 +261,32 @@ public class AVMBrowseBean implements IContextListener
return summary.toString(); return summary.toString();
} }
public String getPreviewUrl() /**
* @return the current staging store name
*/
public String getStagingStore()
{
Node websiteNode = this.navigator.getCurrentNode();
String storeRoot = (String)websiteNode.getProperties().get(ContentModel.PROP_AVMSTORE);
return AVMConstants.buildAVMStagingStoreName(storeRoot);
}
/**
* @return Preview URL for the current Staging store
*/
public String getStagingPreviewUrl()
{ {
return AVMConstants.buildAVMStoreUrl(getStagingStore()); return AVMConstants.buildAVMStoreUrl(getStagingStore());
} }
/**
* @return Preview URL for the current User Sandbox store
*/
public String getSandboxPreviewUrl()
{
return AVMConstants.buildAVMStoreUrl(getSandbox());
}
/** /**
* @param foldersRichList The foldersRichList to set. * @param foldersRichList The foldersRichList to set.
*/ */

View File

@@ -55,6 +55,8 @@ import org.alfresco.web.ui.common.component.UIActionLink;
import org.alfresco.web.ui.common.converter.ByteSizeConverter; import org.alfresco.web.ui.common.converter.ByteSizeConverter;
import org.alfresco.web.ui.repo.component.UIActions; import org.alfresco.web.ui.repo.component.UIActions;
import org.alfresco.web.ui.wcm.WebResources; import org.alfresco.web.ui.wcm.WebResources;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.jsf.FacesContextUtils; import org.springframework.web.jsf.FacesContextUtils;
/** /**
@@ -62,6 +64,8 @@ import org.springframework.web.jsf.FacesContextUtils;
*/ */
public class UIUserSandboxes extends SelfRenderingComponent public class UIUserSandboxes extends SelfRenderingComponent
{ {
private static Log logger = LogFactory.getLog(UIUserSandboxes.class);
private static final String ACTIONS_FILE = "avm_file_modified"; private static final String ACTIONS_FILE = "avm_file_modified";
private static final String ACTIONS_FOLDER = "avm_folder_modified"; private static final String ACTIONS_FOLDER = "avm_folder_modified";
private static final String ACTIONS_DELETED = "avm_deleted_modified"; private static final String ACTIONS_DELETED = "avm_deleted_modified";
@@ -201,6 +205,9 @@ public class UIUserSandboxes extends SelfRenderingComponent
// check it exists before we render the view // check it exists before we render the view
if (avmService.getAVMStore(mainStore) != null) if (avmService.getAVMStore(mainStore) != null)
{ {
if (logger.isDebugEnabled())
logger.debug("Building sandbox view for user store: " + mainStore);
// for each user sandbox, generate an outer panel table // for each user sandbox, generate an outer panel table
PanelGenerator.generatePanelStart(out, PanelGenerator.generatePanelStart(out,
context.getExternalContext().getRequestContextPath(), context.getExternalContext().getRequestContextPath(),
@@ -306,14 +313,15 @@ public class UIUserSandboxes extends SelfRenderingComponent
ResourceBundle bundle = Application.getBundle(fc); ResourceBundle bundle = Application.getBundle(fc);
// build the paths to the stores to compare // build the paths to the stores to compare
String userStore = AVMConstants.buildAVMUserMainStoreName(storeRoot, username) + ":/"; String userStorePrefix = AVMConstants.buildAVMUserMainStoreName(storeRoot, username);
String userStore = userStorePrefix + ":/";
String stagingStore = AVMConstants.buildAVMStagingStoreName(storeRoot) + ":/"; String stagingStore = AVMConstants.buildAVMStagingStoreName(storeRoot) + ":/";
// get the UIActions component responsible for rendering context related user actions // get the UIActions component responsible for rendering context related user actions
// TODO: we may need a component per user instance? (or use evaluators for roles...) // TODO: we may need a component per user instance? (or use evaluators for roles...)
UIActions uiFileActions = aquireUIActions(ACTIONS_FILE); UIActions uiFileActions = aquireUIActions(ACTIONS_FILE, userStorePrefix);
UIActions uiFolderActions = aquireUIActions(ACTIONS_FOLDER); UIActions uiFolderActions = aquireUIActions(ACTIONS_FOLDER, userStorePrefix);
UIActions uiDeletedActions = aquireUIActions(ACTIONS_DELETED); UIActions uiDeletedActions = aquireUIActions(ACTIONS_DELETED, userStorePrefix);
// use the sync service to get the list of diffs between the stores // use the sync service to get the list of diffs between the stores
List<AVMDifference> diffs = avmSyncService.compare(-1, userStore, -1, stagingStore); List<AVMDifference> diffs = avmSyncService.compare(-1, userStore, -1, stagingStore);
@@ -473,24 +481,31 @@ public class UIUserSandboxes extends SelfRenderingComponent
* *
* @return UIActions component * @return UIActions component
*/ */
private UIActions aquireUIActions(String id) private UIActions aquireUIActions(String id, String store)
{ {
UIActions uiActions = null; UIActions uiActions = null;
String componentId = id + '_' + store;
if (logger.isDebugEnabled())
logger.debug("Find UIActions component id: " + componentId);
for (UIComponent component : (List<UIComponent>)getChildren()) for (UIComponent component : (List<UIComponent>)getChildren())
{ {
if (id.equals(component.getId())) if (componentId.equals(component.getId()))
{ {
if (logger.isDebugEnabled())
logger.debug("...found UIActions component id: " + componentId);
uiActions = (UIActions)component; uiActions = (UIActions)component;
break; break;
} }
} }
if (uiActions == null) if (uiActions == null)
{ {
if (logger.isDebugEnabled())
logger.debug("...creating UIActions component id: " + componentId);
javax.faces.application.Application facesApp = FacesContext.getCurrentInstance().getApplication(); javax.faces.application.Application facesApp = FacesContext.getCurrentInstance().getApplication();
uiActions = (UIActions)facesApp.createComponent(COMPONENT_ACTIONS); uiActions = (UIActions)facesApp.createComponent(COMPONENT_ACTIONS);
uiActions.setShowLink(false); uiActions.setShowLink(false);
uiActions.getAttributes().put("styleClass", "inlineAction"); uiActions.getAttributes().put("styleClass", "inlineAction");
uiActions.setId(id); uiActions.setId(componentId);
uiActions.setParent(this); uiActions.setParent(this);
uiActions.setValue(id); uiActions.setValue(id);
@@ -516,7 +531,7 @@ public class UIUserSandboxes extends SelfRenderingComponent
private UIActionLink aquireAction(FacesContext fc, String store, String username, private UIActionLink aquireAction(FacesContext fc, String store, String username,
String name, String icon, String actionListener, String outcome, String url) String name, String icon, String actionListener, String outcome, String url)
{ {
UIActionLink action = findAction(name, username); UIActionLink action = findAction(name, store, username);
if (action == null) if (action == null)
{ {
action = createAction(fc, store, username, name, icon, actionListener, outcome, url); action = createAction(fc, store, username, name, icon, actionListener, outcome, url);
@@ -528,19 +543,24 @@ public class UIUserSandboxes extends SelfRenderingComponent
* Locate a child UIActionLink component by name. * Locate a child UIActionLink component by name.
* *
* @param name Of the action component to find * @param name Of the action component to find
* @param store Store the action component is tied to
* @param username Username of the user owner of the action * @param username Username of the user owner of the action
* *
* @return UIActionLink component if found, else null if not created yet * @return UIActionLink component if found, else null if not created yet
*/ */
private UIActionLink findAction(String name, String username) private UIActionLink findAction(String name, String store, String username)
{ {
UIActionLink action = null; UIActionLink action = null;
String actionId = getId() + name + username; String actionId = name + '_' + store;
if (logger.isDebugEnabled())
logger.debug("Finding action Id: " + actionId);
for (UIComponent component : (List<UIComponent>)getChildren()) for (UIComponent component : (List<UIComponent>)getChildren())
{ {
if (actionId.equals(component.getId())) if (actionId.equals(component.getId()))
{ {
action = (UIActionLink)component; action = (UIActionLink)component;
if (logger.isDebugEnabled())
logger.debug("...found action Id: " + actionId);
break; break;
} }
} }
@@ -567,8 +587,11 @@ public class UIUserSandboxes extends SelfRenderingComponent
javax.faces.application.Application facesApp = fc.getApplication(); javax.faces.application.Application facesApp = fc.getApplication();
UIActionLink control = (UIActionLink)facesApp.createComponent(UIActions.COMPONENT_ACTIONLINK); UIActionLink control = (UIActionLink)facesApp.createComponent(UIActions.COMPONENT_ACTIONLINK);
String id = name + '_' + store;
if (logger.isDebugEnabled())
logger.debug("...creating action Id: " + id);
control.setRendererType(UIActions.RENDERER_ACTIONLINK); control.setRendererType(UIActions.RENDERER_ACTIONLINK);
control.setId(getId() + name + username); control.setId(id);
control.setValue(Application.getMessage(fc, name)); control.setValue(Application.getMessage(fc, name));
control.setShowLink(false); control.setShowLink(false);
control.setImage(icon); control.setImage(icon);
@@ -579,10 +602,12 @@ public class UIUserSandboxes extends SelfRenderingComponent
actionListener, UIActions.ACTION_CLASS_ARGS)); actionListener, UIActions.ACTION_CLASS_ARGS));
UIParameter param = (UIParameter)facesApp.createComponent(ComponentConstants.JAVAX_FACES_PARAMETER); UIParameter param = (UIParameter)facesApp.createComponent(ComponentConstants.JAVAX_FACES_PARAMETER);
param.setId(id + "_1");
param.setName("store"); param.setName("store");
param.setValue(store); param.setValue(store);
control.getChildren().add(param); control.getChildren().add(param);
param = (UIParameter)facesApp.createComponent(ComponentConstants.JAVAX_FACES_PARAMETER); param = (UIParameter)facesApp.createComponent(ComponentConstants.JAVAX_FACES_PARAMETER);
param.setId(id + "_2");
param.setName("username"); param.setName("username");
param.setValue(username); param.setValue(username);
control.getChildren().add(param); control.getChildren().add(param);

View File

@@ -75,6 +75,8 @@
<div class="mainSubText"><h:outputText value="#{NavigationBean.nodeProperties.description}" id="msg4" /></div> <div class="mainSubText"><h:outputText value="#{NavigationBean.nodeProperties.description}" id="msg4" /></div>
</td> </td>
<td align=right> <td align=right>
<a:actionLink value="#{msg.sandbox_preview}" image="/images/icons/preview_website.gif" href="#{AVMBrowseBean.sandboxPreviewUrl}" target="new" />
&nbsp;
<a:actionLink value="#{msg.sandbox_create}" image="/images/icons/new_content.gif" action="wizard:createWebContent" /> <a:actionLink value="#{msg.sandbox_create}" image="/images/icons/new_content.gif" action="wizard:createWebContent" />
</td> </td>
</tr> </tr>

View File

@@ -105,9 +105,9 @@
<td align=left width=32><a:actionLink image="/images/icons/sandbox_large.gif" showLink="false" value="#{msg.staging_sandbox}" actionListener="#{AVMBrowseBean.setupSandboxAction}" action="browseSandbox" /></td> <td align=left width=32><a:actionLink image="/images/icons/sandbox_large.gif" showLink="false" value="#{msg.staging_sandbox}" actionListener="#{AVMBrowseBean.setupSandboxAction}" action="browseSandbox" /></td>
<td align=left><h:outputText value="#{msg.staging_sandbox}" styleClass="mainSubTitle" /></td> <td align=left><h:outputText value="#{msg.staging_sandbox}" styleClass="mainSubTitle" /></td>
<td align=right> <td align=right>
<a:actionLink value="#{msg.sandbox_preview}" image="/images/icons/preview_website.gif" showLink="false" actionListener="#{AVMBrowseBean.setupSandboxAction}" href="#{AVMBrowseBean.previewUrl}" target="new" /> <a:actionLink id="actPreview" value="#{msg.sandbox_preview}" image="/images/icons/preview_website.gif" showLink="false" href="#{AVMBrowseBean.stagingPreviewUrl}" target="new" />
<a:actionLink value="#{msg.sandbox_create}" image="/images/icons/new_content.gif" showLink="false" actionListener="#{AVMBrowseBean.setupSandboxAction}" action="wizard:createWebContent" /> <a:actionLink id="actCreate" value="#{msg.sandbox_create}" image="/images/icons/new_content.gif" showLink="false" actionListener="#{AVMBrowseBean.setupSandboxAction}" action="wizard:createWebContent" />
<a:actionLink value="#{msg.sandbox_browse}" image="/images/icons/space_small.gif" showLink="false" actionListener="#{AVMBrowseBean.setupSandboxAction}" action="browseSandbox" /> <a:actionLink id="actBrowse" value="#{msg.sandbox_browse}" image="/images/icons/space_small.gif" showLink="false" actionListener="#{AVMBrowseBean.setupSandboxAction}" action="browseSandbox" />
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -133,7 +133,7 @@
<a:panel id="sandboxes-panel" border="white" bgcolor="white" titleBorder="blue" titleBgcolor="#D3E6FE" styleClass="mainSubTitle" label="#{msg.user_sandboxes}"> <a:panel id="sandboxes-panel" border="white" bgcolor="white" titleBorder="blue" titleBgcolor="#D3E6FE" styleClass="mainSubTitle" label="#{msg.user_sandboxes}">
<%-- User Sandboxes List --%> <%-- User Sandboxes List --%>
<w:userSandboxes binding="#{AVMBrowseBean.userSandboxes}" value="#{NavigationBean.currentNode.nodeRef}" /> <w:userSandboxes id="sandboxes" binding="#{AVMBrowseBean.userSandboxes}" value="#{NavigationBean.currentNode.nodeRef}" />
</a:panel> </a:panel>