. Fix to issue with Create Web Content form initialised with the correct form template in the drop-down

. UI action and dialog framework for Snapshot Sandbox action

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@4395 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Kevin Roast
2006-11-20 15:00:35 +00:00
parent 19facbdd97
commit 97cb403335
12 changed files with 148 additions and 24 deletions

View File

@@ -867,6 +867,8 @@ sandbox_submitall=Submit All
sandbox_submitselected=Submit Selected sandbox_submitselected=Submit Selected
sandbox_revertselected=Undo Selected sandbox_revertselected=Undo Selected
sandbox_icon=Browse Website sandbox_icon=Browse Website
sandbox_snapshot=Create Snapshot
sandbox_snapshot_info=Create a snaphost of this sandbox.
import_website_content=Import Website Content import_website_content=Import Website Content
title_browse_sandbox=Browse Sandbox title_browse_sandbox=Browse Sandbox
sandbox_info=Use this view to browse the files and folders within the sandbox for a web project. sandbox_info=Use this view to browse the files and folders within the sandbox for a web project.

View File

@@ -118,6 +118,10 @@
<!-- --> <!-- -->
<!-- WCM Dialogs --> <!-- WCM Dialogs -->
<dialog name="snapshotSandbox" page="/jsp/wcm/snapshot-sandbox.jsp" managed-bean="SnapshotSandboxDialog"
icon="/images/icons/create_snapshot_large.gif" title-id="sandbox_snapshot"
description-id="sandbox_snapshot_info" />
<dialog name="deleteAvmFile" page="/jsp/dialog/delete.jsp" managed-bean="DeleteFileDialog" <dialog name="deleteAvmFile" page="/jsp/dialog/delete.jsp" managed-bean="DeleteFileDialog"
icon="/images/icons/delete_large.gif" title-id="delete_file" icon="/images/icons/delete_large.gif" title-id="delete_file"
description-id="delete_avm_file_info" /> description-id="delete_avm_file_info" />

View File

@@ -880,8 +880,7 @@ public class AVMBrowseBean implements IContextListener
if (node != null) if (node != null)
{ {
Map<String, Serializable> args = new HashMap<String, Serializable>(1, 1.0f); Map<String, Serializable> args = new HashMap<String, Serializable>(1, 1.0f);
List<Pair<Integer, String>> versionPaths = List<Pair<Integer, String>> versionPaths = new ArrayList<Pair<Integer, String>>();
new ArrayList<Pair<Integer, String>>();
versionPaths.add(new Pair<Integer, String>(-1, path)); versionPaths.add(new Pair<Integer, String>(-1, path));
args.put(AVMUndoSandboxListAction.PARAM_NODE_LIST, (Serializable)versionPaths); args.put(AVMUndoSandboxListAction.PARAM_NODE_LIST, (Serializable)versionPaths);
Action action = this.actionService.createAction(AVMUndoSandboxListAction.NAME, args); Action action = this.actionService.createAction(AVMUndoSandboxListAction.NAME, args);
@@ -926,8 +925,7 @@ public class AVMBrowseBean implements IContextListener
// calcluate the list of differences between the user store and the staging area // calcluate the list of differences between the user store and the staging area
List<AVMDifference> diffs = this.avmSyncService.compare(-1, store + ":/", -1, getStagingStore() + ":/"); List<AVMDifference> diffs = this.avmSyncService.compare(-1, store + ":/", -1, getStagingStore() + ":/");
List<Pair<Integer, String>> versionPaths = List<Pair<Integer, String>> versionPaths = new ArrayList<Pair<Integer, String>>();
new ArrayList<Pair<Integer, String>>();
for (AVMDifference diff : diffs) for (AVMDifference diff : diffs)
{ {
versionPaths.add(new Pair<Integer, String>(-1, diff.getSourcePath())); versionPaths.add(new Pair<Integer, String>(-1, diff.getSourcePath()));
@@ -974,8 +972,7 @@ public class AVMBrowseBean implements IContextListener
tx = Repository.getUserTransaction(context, false); tx = Repository.getUserTransaction(context, false);
tx.begin(); tx.begin();
List<Pair<Integer, String>> versionPaths = List<Pair<Integer, String>> versionPaths = new ArrayList<Pair<Integer, String>>();
new ArrayList<Pair<Integer, String>>();
for (AVMNodeDescriptor node : selected) for (AVMNodeDescriptor node : selected)
{ {
versionPaths.add(new Pair<Integer, String>(-1, node.getPath())); versionPaths.add(new Pair<Integer, String>(-1, node.getPath()));
@@ -1016,7 +1013,7 @@ public class AVMBrowseBean implements IContextListener
{ {
UIActionLink link = (UIActionLink)event.getComponent(); UIActionLink link = (UIActionLink)event.getComponent();
Map<String, String> params = link.getParameterMap(); Map<String, String> params = link.getParameterMap();
String id = params.get("form-id"); String id = params.get(UIUserSandboxes.PARAM_FORM_ID);
// pass form ID to the wizard - to be picked up in init() // pass form ID to the wizard - to be picked up in init()
FacesContext fc = FacesContext.getCurrentInstance(); FacesContext fc = FacesContext.getCurrentInstance();

View File

@@ -22,7 +22,6 @@ import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -36,18 +35,26 @@ import org.alfresco.config.Config;
import org.alfresco.config.ConfigElement; import org.alfresco.config.ConfigElement;
import org.alfresco.config.ConfigService; import org.alfresco.config.ConfigService;
import org.alfresco.model.ContentModel; import org.alfresco.model.ContentModel;
import org.alfresco.model.WCMModel;
import org.alfresco.repo.avm.AVMNodeConverter; import org.alfresco.repo.avm.AVMNodeConverter;
import org.alfresco.repo.content.MimetypeMap; import org.alfresco.repo.content.MimetypeMap;
import org.alfresco.service.cmr.avm.AVMService; import org.alfresco.service.cmr.avm.AVMService;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QName;
import org.alfresco.service.namespace.RegexQNamePattern;
import org.alfresco.web.app.Application; import org.alfresco.web.app.Application;
import org.alfresco.web.bean.content.BaseContentWizard; import org.alfresco.web.bean.content.BaseContentWizard;
import org.alfresco.web.bean.repository.Node;
import org.alfresco.web.bean.repository.Repository; import org.alfresco.web.bean.repository.Repository;
import org.alfresco.web.data.IDataContainer; import org.alfresco.web.data.IDataContainer;
import org.alfresco.web.data.QuickSort; import org.alfresco.web.data.QuickSort;
import org.alfresco.web.forms.*; import org.alfresco.web.forms.Form;
import org.alfresco.web.forms.FormInstanceData;
import org.alfresco.web.forms.FormInstanceDataImpl;
import org.alfresco.web.forms.FormProcessor;
import org.alfresco.web.forms.FormsService;
import org.alfresco.web.forms.Rendition;
import org.alfresco.web.ui.wcm.component.UIUserSandboxes;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.w3c.dom.Document; import org.w3c.dom.Document;
@@ -104,11 +111,13 @@ public class CreateWebContentWizard extends BaseContentWizard
this.mimeType = MimetypeMap.MIMETYPE_XML; this.mimeType = MimetypeMap.MIMETYPE_XML;
// check for a form ID being passed in as a parameter // check for a form ID being passed in as a parameter
if (this.parameters.get("form-id") != null) if (this.parameters.get(UIUserSandboxes.PARAM_FORM_ID) != null)
{ {
// it is used to init the dialog to a specific template // it is used to init the dialog to a specific template
String formId = parameters.get("form-id"); String webFormId = parameters.get(UIUserSandboxes.PARAM_FORM_ID);
Form form = FormsService.getInstance().getForm(new NodeRef(Repository.getStoreRef(), formId)); NodeRef webFormRef = new NodeRef(Repository.getStoreRef(), webFormId);
String formName = (String)this.nodeService.getProperty(webFormRef, ContentModel.PROP_FORMNAME);
Form form = FormsService.getInstance().getForm(formName);
if (form != null) if (form != null)
{ {
this.formName = form.getName(); this.formName = form.getName();
@@ -226,20 +235,32 @@ public class CreateWebContentWizard extends BaseContentWizard
} }
/** /**
* @return the available forms that can be created. * @return the available forms from this web project that can be created.
*/ */
public List<SelectItem> getFormChoices() public List<SelectItem> getFormChoices()
{ {
final Collection<Form> ttl = FormsService.getInstance().getForms(); Node website = this.avmBrowseBean.getWebsite();
final List<SelectItem> sil = new ArrayList<SelectItem>(ttl.size()); if (website == null)
for (Form tt : ttl)
{ {
sil.add(new SelectItem(tt.getName(), tt.getName())); throw new IllegalStateException("CreateWebContentWizard must be called within a Web Project context!");
}
List<ChildAssociationRef> webFormRefs = this.nodeService.getChildAssocs(
website.getNodeRef(), ContentModel.ASSOC_WEBFORM, RegexQNamePattern.MATCH_ALL);
List<SelectItem> items = new ArrayList<SelectItem>(webFormRefs.size());
for (ChildAssociationRef ref : webFormRefs)
{
String formName = (String)this.nodeService.getProperty(ref.getChildRef(), ContentModel.PROP_FORMNAME);
Form form = FormsService.getInstance().getForm(formName);
if (form != null)
{
items.add(new SelectItem(formName, formName));
}
} }
final QuickSort sorter = new QuickSort(sil, "label", true, IDataContainer.SORT_CASEINSENSITIVE); final QuickSort sorter = new QuickSort(items, "label", true, IDataContainer.SORT_CASEINSENSITIVE);
sorter.sort(); sorter.sort();
return sil;
return items;
} }
/** /**

View File

@@ -0,0 +1,62 @@
/*
* Copyright (C) 2005 Alfresco, Inc.
*
* Licensed under the Mozilla Public License version 1.1
* with a permitted attribution clause. You may obtain a
* copy of the License at
*
* http://www.alfresco.org/legal/license.txt
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific
* language governing permissions and limitations under the
* License.
*/
package org.alfresco.web.bean.wcm;
import javax.faces.context.FacesContext;
import org.alfresco.service.cmr.avm.AVMService;
import org.alfresco.web.bean.dialog.BaseDialogBean;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* @author Kevin Roast
*/
public class SnapshotSandboxDialog extends BaseDialogBean
{
private static final Log logger = LogFactory.getLog(SnapshotSandboxDialog.class);
protected AVMService avmService;
protected AVMBrowseBean avmBrowseBean;
/**
* @param avmBrowseBean The avmBrowseBean to set.
*/
public void setAvmBrowseBean(AVMBrowseBean avmBrowseBean)
{
this.avmBrowseBean = avmBrowseBean;
}
/**
* @param avmService The avmService to set.
*/
public void setAvmService(AVMService avmService)
{
this.avmService = avmService;
}
/**
* @see org.alfresco.web.bean.dialog.BaseDialogBean#finishImpl(javax.faces.context.FacesContext, java.lang.String)
*/
@Override
protected String finishImpl(FacesContext context, String outcome) throws Exception
{
return null;
}
}

View File

@@ -107,6 +107,8 @@ public class UIUserSandboxes extends SelfRenderingComponent
private static final String SPACE_ICON = "/images/icons/" + BrowseBean.SPACE_SMALL_DEFAULT + ".gif"; private static final String SPACE_ICON = "/images/icons/" + BrowseBean.SPACE_SMALL_DEFAULT + ".gif";
public static final String PARAM_FORM_ID = "form-id";
/** website to show sandboxes for */ /** website to show sandboxes for */
private NodeRef value; private NodeRef value;
@@ -690,7 +692,7 @@ public class UIUserSandboxes extends SelfRenderingComponent
// create content action passes the ID of the Form to uses // create content action passes the ID of the Form to uses
Map<String, String> params = new HashMap<String, String>(1, 1.0f); Map<String, String> params = new HashMap<String, String>(1, 1.0f);
// setup a data-binding param for the Form ID // setup a data-binding param for the Form ID
params.put("form-id", "#{" + REQUEST_FORM_REF + ".id}"); params.put(PARAM_FORM_ID, "#{" + REQUEST_FORM_REF + ".id}");
action = createAction(fc, userStorePrefix, username, ACT_CREATE_FORM_CONTENT, action = createAction(fc, userStorePrefix, username, ACT_CREATE_FORM_CONTENT,
"/images/icons/new_content.gif", "#{AVMBrowseBean.createFormContent}", null, null, params); "/images/icons/new_content.gif", "#{AVMBrowseBean.createFormContent}", null, null, params);
} }

View File

@@ -2290,6 +2290,23 @@
</managed-property> </managed-property>
</managed-bean> </managed-bean>
<managed-bean>
<description>
The bean that backs up the Snapshot Sandbox Dialog
</description>
<managed-bean-name>SnapshotSandboxDialog</managed-bean-name>
<managed-bean-class>org.alfresco.web.bean.wcm.SnapshotSandboxDialog</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>avmService</property-name>
<value>#{AVMService}</value>
</managed-property>
<managed-property>
<property-name>avmBrowseBean</property-name>
<value>#{AVMBrowseBean}</value>
</managed-property>
</managed-bean>
<managed-bean> <managed-bean>
<description> <description>
The bean that backs up the Delete AVM File Dialog The bean that backs up the Delete AVM File Dialog

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -106,8 +106,7 @@
<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 id="actPreview" value="#{msg.sandbox_preview}" image="/images/icons/preview_website.gif" showLink="false" href="#{AVMBrowseBean.stagingPreviewUrl}" target="new" /> <a:actionLink id="actPreview" value="#{msg.sandbox_preview}" image="/images/icons/preview_website.gif" showLink="false" href="#{AVMBrowseBean.stagingPreviewUrl}" target="new" />
<%-- TODO: add this action back once we can create in a specific sub-folder --%> <a:actionLink id="actSnap" value="#{msg.sandbox_snapshot}" image="/images/icons/create_snapshot.gif" showLink="false" actionListener="#{AVMBrowseBean.setupSandboxAction}" action="dialog:snapshotSandbox" />
<%--<a:actionLink id="actCreate" value="#{msg.sandbox_create}" image="/images/icons/new_content.gif" showLink="false" actionListener="#{AVMBrowseBean.setupSandboxAction}" action="wizard:createWebContent" />--%>
<a:actionLink id="actBrowse" 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>

View File

@@ -94,7 +94,7 @@
<h:outputText value=""/> <h:outputText value=""/>
<h:outputText value="#{msg.form}:"/> <h:outputText value="#{msg.form}:"/>
<h:selectOneMenu value="#{WizardManager.bean.formName}"> <h:selectOneMenu value="#{WizardManager.bean.formName}" disabled="#{WizardManager.bean.formSelectDisabled}">
<f:selectItems value="#{WizardManager.bean.formChoices}" /> <f:selectItems value="#{WizardManager.bean.formChoices}" />
</h:selectOneMenu> </h:selectOneMenu>
</h:panelGrid> </h:panelGrid>

View File

@@ -0,0 +1,20 @@
<%--
Copyright (C) 2005 Alfresco, Inc.
Licensed under the Mozilla Public License version 1.1
with a permitted attribution clause. You may obtain a
copy of the License at
http://www.alfresco.org/legal/license.txt
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
either express or implied. See the License for the specific
language governing permissions and limitations under the
License.
--%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="/WEB-INF/alfresco.tld" prefix="a" %>
<%@ taglib uri="/WEB-INF/repo.tld" prefix="r" %>