mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
. Checkout of the "Define Web Content Forms" dialog
- Scrollable list of registered Form Templates - Add to List feature to add selected form template to data list - Remove Form Template - Fist pass of Form Template Details page . UISelectList component now support "rowIndex" property for single components rendered multiple times in a list - This allows command buttons etc. to be rendered multiple times but have access to the correct row data during event handling . Minor UI tidy ups to UIData based tables with "no items" . Some code cleanup, use of logger pattern git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@4270 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -807,9 +807,20 @@ create_website_step1_desc=Enter the information about the web project.
|
|||||||
website_dnsname=DNS name
|
website_dnsname=DNS name
|
||||||
validation_invalid_dns_name=Invalid website DNS name, a minimum of 2 alpha-numeric characters are accepted.
|
validation_invalid_dns_name=Invalid website DNS name, a minimum of 2 alpha-numeric characters are accepted.
|
||||||
website_forms=Form Templates
|
website_forms=Form Templates
|
||||||
|
website_selected_forms=Selected Web Content Forms
|
||||||
|
website_save_scripts=Save Scripts
|
||||||
|
website_save_scripts_info=Use the following scripts when saving changes
|
||||||
|
website_pre_script=Pre-script
|
||||||
|
website_post_script=Post-script
|
||||||
|
website_workflow=Workflow
|
||||||
|
website_workflow_info=Use the following workflow
|
||||||
|
form_template_details=Form Details
|
||||||
|
form_template_details_desc=Edit the details of this Form Template
|
||||||
|
form_template_conf_workflow=Configure Workflow
|
||||||
|
form_template_select_templates=Select Templates
|
||||||
create_website_step2_title=Step Two - Form Templates
|
create_website_step2_title=Step Two - Form Templates
|
||||||
create_website_step2_desc=Setup the forms you want to use in this project.
|
create_website_step2_desc=Setup the forms you want to use in this project.
|
||||||
website_select_form=Select Form
|
website_select_form=Select Form Templates to use
|
||||||
website_invite=Invite Users
|
website_invite=Invite Users
|
||||||
create_website_step3_title=Step Three - Invite Users
|
create_website_step3_title=Step Three - Invite Users
|
||||||
create_website_step3_desc=Select users and their roles.
|
create_website_step3_desc=Select users and their roles.
|
||||||
|
@@ -145,6 +145,10 @@
|
|||||||
<dialog name="editAvmFolderProperties" page="/jsp/wcm/edit-folder-properties.jsp"
|
<dialog name="editAvmFolderProperties" page="/jsp/wcm/edit-folder-properties.jsp"
|
||||||
managed-bean="EditFolderPropertiesDialog" icon="/images/icons/details_large.gif"
|
managed-bean="EditFolderPropertiesDialog" icon="/images/icons/details_large.gif"
|
||||||
title-id="edit_folder_properties" description-id="edit_folder_description" />
|
title-id="edit_folder_properties" description-id="edit_folder_description" />
|
||||||
|
|
||||||
|
<dialog name="formDetails" page="/jsp/wcm/create-website-wizard/form-details.jsp" managed-bean="FormDetailsDialog"
|
||||||
|
icon="/images/icons/webform_large.gif" title-id="form_template_details"
|
||||||
|
description-id="form_template_details_desc" />
|
||||||
</dialogs>
|
</dialogs>
|
||||||
</config>
|
</config>
|
||||||
|
|
||||||
|
@@ -16,12 +16,10 @@
|
|||||||
*/
|
*/
|
||||||
package org.alfresco.web.bean.wcm;
|
package org.alfresco.web.bean.wcm;
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.text.MessageFormat;
|
import java.text.MessageFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
@@ -33,7 +31,6 @@ import javax.transaction.UserTransaction;
|
|||||||
|
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.repo.avm.AVMNodeConverter;
|
import org.alfresco.repo.avm.AVMNodeConverter;
|
||||||
import org.alfresco.repo.avm.actions.StartAVMWorkflowAction;
|
|
||||||
import org.alfresco.service.cmr.action.Action;
|
import org.alfresco.service.cmr.action.Action;
|
||||||
import org.alfresco.service.cmr.action.ActionService;
|
import org.alfresco.service.cmr.action.ActionService;
|
||||||
import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
|
import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
|
||||||
|
@@ -40,7 +40,6 @@ public class CreateFolderDialog extends BaseDialogBean
|
|||||||
|
|
||||||
protected AVMService avmService;
|
protected AVMService avmService;
|
||||||
protected AVMBrowseBean avmBrowseBean;
|
protected AVMBrowseBean avmBrowseBean;
|
||||||
protected NodeService nodeService;
|
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
private String description;
|
private String description;
|
||||||
@@ -73,14 +72,6 @@ public class CreateFolderDialog extends BaseDialogBean
|
|||||||
this.avmService = avmService;
|
this.avmService = avmService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param nodeService The NodeService to set.
|
|
||||||
*/
|
|
||||||
public void setNodeService(NodeService nodeService)
|
|
||||||
{
|
|
||||||
this.nodeService = nodeService;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Returns the description.
|
* @return Returns the description.
|
||||||
*/
|
*/
|
||||||
|
@@ -18,14 +18,16 @@ package org.alfresco.web.bean.wcm;
|
|||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
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;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
import javax.faces.component.UISelectItem;
|
|
||||||
import javax.faces.context.FacesContext;
|
import javax.faces.context.FacesContext;
|
||||||
|
import javax.faces.event.ActionEvent;
|
||||||
|
import javax.faces.model.DataModel;
|
||||||
|
import javax.faces.model.ListDataModel;
|
||||||
|
|
||||||
import org.alfresco.error.AlfrescoRuntimeException;
|
import org.alfresco.error.AlfrescoRuntimeException;
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
@@ -46,7 +48,10 @@ 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.bean.wizard.BaseWizardBean;
|
import org.alfresco.web.bean.wizard.BaseWizardBean;
|
||||||
import org.alfresco.web.bean.wizard.InviteUsersWizard.UserGroupRole;
|
import org.alfresco.web.bean.wizard.InviteUsersWizard.UserGroupRole;
|
||||||
|
import org.alfresco.web.forms.Form;
|
||||||
|
import org.alfresco.web.forms.FormsService;
|
||||||
import org.alfresco.web.ui.common.component.UIListItem;
|
import org.alfresco.web.ui.common.component.UIListItem;
|
||||||
|
import org.alfresco.web.ui.common.component.UISelectList;
|
||||||
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.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
@@ -56,6 +61,7 @@ import org.apache.commons.logging.LogFactory;
|
|||||||
*/
|
*/
|
||||||
public class CreateWebsiteWizard extends BaseWizardBean
|
public class CreateWebsiteWizard extends BaseWizardBean
|
||||||
{
|
{
|
||||||
|
private static final String COMPONENT_FORMLIST = "form-list";
|
||||||
private static final String MSG_DESCRIPTION = "description";
|
private static final String MSG_DESCRIPTION = "description";
|
||||||
private static final String MSG_NAME = "name";
|
private static final String MSG_NAME = "name";
|
||||||
private static final String MSG_USERROLES = "create_website_summary_users";
|
private static final String MSG_USERROLES = "create_website_summary_users";
|
||||||
@@ -74,6 +80,18 @@ public class CreateWebsiteWizard extends BaseWizardBean
|
|||||||
protected AVMService avmService;
|
protected AVMService avmService;
|
||||||
protected PermissionService permissionService;
|
protected PermissionService permissionService;
|
||||||
|
|
||||||
|
/** datamodel for table of selected forms */
|
||||||
|
private DataModel formsDataModel = null;
|
||||||
|
|
||||||
|
/** transient list of form UIListItem objects */
|
||||||
|
private List<UIListItem> formsList = null;
|
||||||
|
|
||||||
|
/** list of forms wrapper objects */
|
||||||
|
private List<FormWrapper> forms = null;
|
||||||
|
|
||||||
|
/** Current form action dialog context */
|
||||||
|
private FormWrapper actionForm = null;
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------
|
||||||
// Wizard implementation
|
// Wizard implementation
|
||||||
@@ -89,6 +107,8 @@ public class CreateWebsiteWizard extends BaseWizardBean
|
|||||||
this.dnsName = null;
|
this.dnsName = null;
|
||||||
this.title = null;
|
this.title = null;
|
||||||
this.description = null;
|
this.description = null;
|
||||||
|
this.formsDataModel = null;
|
||||||
|
this.forms = new ArrayList<FormWrapper>();
|
||||||
|
|
||||||
// init the dependant bean we are using for the invite users pages
|
// init the dependant bean we are using for the invite users pages
|
||||||
InviteWebsiteUsersWizard wiz = getInviteUsersWizard();
|
InviteWebsiteUsersWizard wiz = getInviteUsersWizard();
|
||||||
@@ -216,6 +236,23 @@ public class CreateWebsiteWizard extends BaseWizardBean
|
|||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DataModel getFormsDataModel()
|
||||||
|
{
|
||||||
|
if (this.formsDataModel == null)
|
||||||
|
{
|
||||||
|
this.formsDataModel = new ListDataModel();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.formsDataModel.setWrappedData(this.forms);
|
||||||
|
|
||||||
|
return this.formsDataModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFormsDataModel(DataModel formsDataModel)
|
||||||
|
{
|
||||||
|
this.formsDataModel = formsDataModel;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -299,46 +336,76 @@ public class CreateWebsiteWizard extends BaseWizardBean
|
|||||||
new String[] {this.name, this.description, buf.toString()});
|
new String[] {this.name, this.description, buf.toString()});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return List of UI items to represent the available Forms for all websites
|
||||||
|
*/
|
||||||
public List<UIListItem> getFormsList()
|
public List<UIListItem> getFormsList()
|
||||||
{
|
{
|
||||||
List<UIListItem> forms = new ArrayList<UIListItem>();
|
Collection<Form> forms = FormsService.getInstance().getForms();
|
||||||
UIListItem item = new UIListItem();
|
List<UIListItem> items = new ArrayList<UIListItem>(forms.size());
|
||||||
item.setValue("0001");
|
for (Form form : forms)
|
||||||
item.setLabel("Company Press Release");
|
{
|
||||||
item.setDescription("Standard monthly press release form");
|
UIListItem item = new UIListItem();
|
||||||
item.setTooltip("Standard monthly press release form");
|
item.setValue(form.getName());
|
||||||
item.setImage(WebResources.IMAGE_SANDBOX_32);
|
item.setLabel(form.getName());
|
||||||
forms.add(item);
|
item.setDescription((String)this.nodeService.getProperty(
|
||||||
item = new UIListItem();
|
form.getNodeRef(), ContentModel.PROP_DESCRIPTION));
|
||||||
item.setValue("0002");
|
item.setImage(WebResources.IMAGE_WEBFORM_32);
|
||||||
item.setLabel("Company Site Note");
|
items.add(item);
|
||||||
item.setDescription("Main site footer node");
|
}
|
||||||
item.setTooltip("Basic footer node addition form");
|
this.formsList = items;
|
||||||
item.setImage(WebResources.IMAGE_SANDBOX_32);
|
return items;
|
||||||
forms.add(item);
|
|
||||||
item = new UIListItem();
|
|
||||||
item.setValue("0003");
|
|
||||||
item.setLabel("Index Generator");
|
|
||||||
item.setDescription("Complete site index");
|
|
||||||
item.setTooltip("Complete site index generation form");
|
|
||||||
item.setImage(WebResources.IMAGE_SANDBOX_32);
|
|
||||||
forms.add(item);
|
|
||||||
return forms;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String[] getFormsSelectedValue()
|
/**
|
||||||
|
* Action handler called when the Add to List button is pressed for a form template
|
||||||
|
*/
|
||||||
|
public void addForm(ActionEvent event)
|
||||||
{
|
{
|
||||||
return testValue;
|
UISelectList selectList = (UISelectList)event.getComponent().findComponent(COMPONENT_FORMLIST);
|
||||||
|
int index = selectList.getRowIndex();
|
||||||
|
if (index != -1)
|
||||||
|
{
|
||||||
|
this.forms.add(new FormWrapper((String)this.formsList.get(index).getValue()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFormsSelectedValue(String[] value)
|
/**
|
||||||
|
* Remove a template form from the selected list
|
||||||
|
*/
|
||||||
|
public void removeForm(ActionEvent event)
|
||||||
{
|
{
|
||||||
testValue = value;
|
FormWrapper wrapper = (FormWrapper)this.formsDataModel.getRowData();
|
||||||
|
if (wrapper != null)
|
||||||
|
{
|
||||||
|
this.forms.remove(wrapper);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private String[] testValue = new String[] {"0001"};
|
/**
|
||||||
|
* Action method to navigate to setup a form dialog for the current row context
|
||||||
|
*/
|
||||||
|
public void setupFormAction(ActionEvent event)
|
||||||
|
{
|
||||||
|
setActionForm( (FormWrapper)this.formsDataModel.getRowData() );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the current action form for dialog context
|
||||||
|
*/
|
||||||
|
public FormWrapper getActionForm()
|
||||||
|
{
|
||||||
|
return this.actionForm;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param actionForm For dialog context
|
||||||
|
*/
|
||||||
|
public void setActionForm(FormWrapper actionForm)
|
||||||
|
{
|
||||||
|
this.actionForm = actionForm;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the InviteWebsiteUsersWizard delegate bean
|
* @return the InviteWebsiteUsersWizard delegate bean
|
||||||
*/
|
*/
|
||||||
@@ -596,4 +663,51 @@ public class CreateWebsiteWizard extends BaseWizardBean
|
|||||||
logger.debug(" " + name + ": " + props.get(name));
|
logger.debug(" " + name + ": " + props.get(name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrapper class for a configurable template Form instance in the UI
|
||||||
|
*/
|
||||||
|
public static class FormWrapper
|
||||||
|
{
|
||||||
|
private String name;
|
||||||
|
private String title;
|
||||||
|
private String description;
|
||||||
|
|
||||||
|
FormWrapper(String name)
|
||||||
|
{
|
||||||
|
this.name = name;
|
||||||
|
this.title = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName()
|
||||||
|
{
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTitle()
|
||||||
|
{
|
||||||
|
return this.title;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTitle(String title)
|
||||||
|
{
|
||||||
|
this.title = title;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription()
|
||||||
|
{
|
||||||
|
return this.description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDescription(String description)
|
||||||
|
{
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDetails()
|
||||||
|
{
|
||||||
|
return "Using workflow 'default-workflow', <none> pre-script, <none> post-script, no templates selected.";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
183
source/java/org/alfresco/web/bean/wcm/FormDetailsDialog.java
Normal file
183
source/java/org/alfresco/web/bean/wcm/FormDetailsDialog.java
Normal file
@@ -0,0 +1,183 @@
|
|||||||
|
/*
|
||||||
|
* 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 java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.faces.context.FacesContext;
|
||||||
|
|
||||||
|
import org.alfresco.service.cmr.avm.AVMService;
|
||||||
|
import org.alfresco.web.bean.dialog.BaseDialogBean;
|
||||||
|
import org.alfresco.web.ui.common.component.UIListItem;
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Kevin Roast
|
||||||
|
*/
|
||||||
|
public class FormDetailsDialog extends BaseDialogBean
|
||||||
|
{
|
||||||
|
private static final Log logger = LogFactory.getLog(FormDetailsDialog.class);
|
||||||
|
|
||||||
|
protected AVMService avmService;
|
||||||
|
protected CreateWebsiteWizard websiteWizard;
|
||||||
|
|
||||||
|
private String title;
|
||||||
|
private String description;
|
||||||
|
private String preScript;
|
||||||
|
private String postScript;
|
||||||
|
private String[] workflowSelectedValue;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.alfresco.web.bean.dialog.BaseDialogBean#init(java.util.Map)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void init(Map<String, String> parameters)
|
||||||
|
{
|
||||||
|
super.init(parameters);
|
||||||
|
this.title = null;
|
||||||
|
this.description = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param avmService The avmService to set.
|
||||||
|
*/
|
||||||
|
public void setAvmService(AVMService avmService)
|
||||||
|
{
|
||||||
|
this.avmService = avmService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param wizard The Create Website Wizard to set.
|
||||||
|
*/
|
||||||
|
public void setCreateWebsiteWizard(CreateWebsiteWizard wizard)
|
||||||
|
{
|
||||||
|
this.websiteWizard = wizard;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Returns the description.
|
||||||
|
*/
|
||||||
|
public String getDescription()
|
||||||
|
{
|
||||||
|
if (this.description == null)
|
||||||
|
{
|
||||||
|
this.description = this.websiteWizard.getActionForm().getDescription();
|
||||||
|
}
|
||||||
|
return this.description;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param description The description to set.
|
||||||
|
*/
|
||||||
|
public void setDescription(String description)
|
||||||
|
{
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Returns the title.
|
||||||
|
*/
|
||||||
|
public String getTitle()
|
||||||
|
{
|
||||||
|
if (this.title == null)
|
||||||
|
{
|
||||||
|
this.title = this.websiteWizard.getActionForm().getTitle();
|
||||||
|
}
|
||||||
|
return this.title;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param title The title to set.
|
||||||
|
*/
|
||||||
|
public void setTitle(String title)
|
||||||
|
{
|
||||||
|
this.title = title;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Returns the post-save Script.
|
||||||
|
*/
|
||||||
|
public String getPostScript()
|
||||||
|
{
|
||||||
|
return this.postScript;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param postScript The post-save Script to set.
|
||||||
|
*/
|
||||||
|
public void setPostScript(String postScript)
|
||||||
|
{
|
||||||
|
this.postScript = postScript;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Returns the pre-save Script.
|
||||||
|
*/
|
||||||
|
public String getPreScript()
|
||||||
|
{
|
||||||
|
return this.preScript;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param preScript The pre-save Script to set.
|
||||||
|
*/
|
||||||
|
public void setPreScript(String preScript)
|
||||||
|
{
|
||||||
|
this.preScript = preScript;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Returns the workflow Selected Value.
|
||||||
|
*/
|
||||||
|
public String[] getWorkflowSelectedValue()
|
||||||
|
{
|
||||||
|
return this.workflowSelectedValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param workflowSelectedValue The workflow Selected Value to set.
|
||||||
|
*/
|
||||||
|
public void setWorkflowSelectedValue(String[] workflowSelectedValue)
|
||||||
|
{
|
||||||
|
this.workflowSelectedValue = workflowSelectedValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<UIListItem> getWorkflowList()
|
||||||
|
{
|
||||||
|
List<UIListItem> items = new ArrayList<UIListItem>();
|
||||||
|
|
||||||
|
return items;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------
|
||||||
|
// Dialog implementation
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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
|
||||||
|
{
|
||||||
|
// TODO: push values from title/description etc. back into action FormWrapper!
|
||||||
|
return outcome;
|
||||||
|
}
|
||||||
|
}
|
@@ -16,34 +16,56 @@
|
|||||||
*/
|
*/
|
||||||
package org.alfresco.web.forms;
|
package org.alfresco.web.forms;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.io.StringWriter;
|
||||||
|
import java.io.Writer;
|
||||||
import java.lang.reflect.Constructor;
|
import java.lang.reflect.Constructor;
|
||||||
import java.util.*;
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import javax.faces.context.FacesContext;
|
import javax.faces.context.FacesContext;
|
||||||
import javax.xml.parsers.*;
|
import javax.xml.parsers.DocumentBuilder;
|
||||||
import javax.xml.transform.*;
|
import javax.xml.parsers.DocumentBuilderFactory;
|
||||||
|
import javax.xml.parsers.ParserConfigurationException;
|
||||||
|
import javax.xml.transform.OutputKeys;
|
||||||
|
import javax.xml.transform.Transformer;
|
||||||
|
import javax.xml.transform.TransformerException;
|
||||||
|
import javax.xml.transform.TransformerFactory;
|
||||||
import javax.xml.transform.dom.DOMSource;
|
import javax.xml.transform.dom.DOMSource;
|
||||||
import javax.xml.transform.stream.StreamResult;
|
import javax.xml.transform.stream.StreamResult;
|
||||||
|
|
||||||
|
import org.alfresco.error.AlfrescoRuntimeException;
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.model.WCMModel;
|
import org.alfresco.model.WCMModel;
|
||||||
import org.alfresco.repo.avm.*;
|
import org.alfresco.repo.avm.AVMNodeConverter;
|
||||||
import org.alfresco.service.ServiceRegistry;
|
|
||||||
import org.alfresco.service.cmr.avm.AVMNotFoundException;
|
import org.alfresco.service.cmr.avm.AVMNotFoundException;
|
||||||
import org.alfresco.service.cmr.avm.AVMService;
|
import org.alfresco.service.cmr.avm.AVMService;
|
||||||
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
||||||
import org.alfresco.service.cmr.model.*;
|
import org.alfresco.service.cmr.model.FileFolderService;
|
||||||
import org.alfresco.service.cmr.repository.AssociationRef;
|
import org.alfresco.service.cmr.repository.AssociationRef;
|
||||||
import org.alfresco.service.cmr.repository.ContentReader;
|
import org.alfresco.service.cmr.repository.ContentReader;
|
||||||
import org.alfresco.service.cmr.repository.ContentService;
|
import org.alfresco.service.cmr.repository.ContentService;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.cmr.repository.NodeService;
|
import org.alfresco.service.cmr.repository.NodeService;
|
||||||
import org.alfresco.service.cmr.search.*;
|
import org.alfresco.service.cmr.search.ResultSet;
|
||||||
|
import org.alfresco.service.cmr.search.ResultSetRow;
|
||||||
|
import org.alfresco.service.cmr.search.SearchParameters;
|
||||||
|
import org.alfresco.service.cmr.search.SearchService;
|
||||||
import org.alfresco.service.namespace.NamespaceService;
|
import org.alfresco.service.namespace.NamespaceService;
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
import org.alfresco.web.app.Application;
|
import org.alfresco.web.app.Application;
|
||||||
import org.alfresco.web.bean.repository.Repository;
|
import org.alfresco.web.bean.repository.Repository;
|
||||||
import org.alfresco.web.bean.wcm.AVMConstants;
|
import org.alfresco.web.bean.wcm.AVMConstants;
|
||||||
import org.alfresco.web.forms.xforms.*;
|
|
||||||
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;
|
||||||
@@ -134,28 +156,22 @@ public final class FormsService
|
|||||||
*/
|
*/
|
||||||
public Collection<Form> getForms()
|
public Collection<Form> getForms()
|
||||||
{
|
{
|
||||||
try
|
final SearchParameters sp = new SearchParameters();
|
||||||
{
|
sp.addStore(Repository.getStoreRef());
|
||||||
final SearchParameters sp = new SearchParameters();
|
sp.setLanguage(SearchService.LANGUAGE_LUCENE);
|
||||||
sp.addStore(Repository.getStoreRef());
|
sp.setQuery("ASPECT:\"" + WCMModel.ASPECT_FORM + "\"");
|
||||||
sp.setLanguage(SearchService.LANGUAGE_LUCENE);
|
if (LOGGER.isDebugEnabled())
|
||||||
sp.setQuery("ASPECT:\"" + WCMModel.ASPECT_FORM + "\"");
|
|
||||||
LOGGER.debug("running query [" + sp.getQuery() + "]");
|
LOGGER.debug("running query [" + sp.getQuery() + "]");
|
||||||
final ResultSet rs = this.searchService.query(sp);
|
final ResultSet rs = this.searchService.query(sp);
|
||||||
|
if (LOGGER.isDebugEnabled())
|
||||||
LOGGER.debug("received " + rs.length() + " results");
|
LOGGER.debug("received " + rs.length() + " results");
|
||||||
final Collection<Form> result = new LinkedList<Form>();
|
final Collection<Form> result = new LinkedList<Form>();
|
||||||
for (ResultSetRow row : rs)
|
for (ResultSetRow row : rs)
|
||||||
{
|
|
||||||
final NodeRef nodeRef = row.getNodeRef();
|
|
||||||
result.add(this.newForm(nodeRef));
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
catch (RuntimeException re)
|
|
||||||
{
|
{
|
||||||
LOGGER.error(re);
|
final NodeRef nodeRef = row.getNodeRef();
|
||||||
throw re;
|
result.add(this.newForm(nodeRef));
|
||||||
}
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -165,35 +181,28 @@ public final class FormsService
|
|||||||
*/
|
*/
|
||||||
public Form getForm(final String name)
|
public Form getForm(final String name)
|
||||||
{
|
{
|
||||||
try
|
final SearchParameters sp = new SearchParameters();
|
||||||
{
|
sp.addStore(Repository.getStoreRef());
|
||||||
final SearchParameters sp = new SearchParameters();
|
sp.setLanguage(SearchService.LANGUAGE_LUCENE);
|
||||||
sp.addStore(Repository.getStoreRef());
|
sp.setQuery("ASPECT:\"" + WCMModel.ASPECT_FORM +
|
||||||
sp.setLanguage(SearchService.LANGUAGE_LUCENE);
|
"\" AND @" + Repository.escapeQName(ContentModel.PROP_TITLE) +
|
||||||
sp.setQuery("ASPECT:\"" + WCMModel.ASPECT_FORM +
|
":\"" + name + "\"");
|
||||||
"\" AND @" + Repository.escapeQName(ContentModel.PROP_TITLE) +
|
if (LOGGER.isDebugEnabled())
|
||||||
":\"" + name + "\"");
|
|
||||||
LOGGER.debug("running query [" + sp.getQuery() + "]");
|
LOGGER.debug("running query [" + sp.getQuery() + "]");
|
||||||
final ResultSet rs = this.searchService.query(sp);
|
final ResultSet rs = this.searchService.query(sp);
|
||||||
NodeRef result = null;
|
NodeRef result = null;
|
||||||
for (ResultSetRow row : rs)
|
for (ResultSetRow row : rs)
|
||||||
{
|
|
||||||
final NodeRef nr = row.getNodeRef();
|
|
||||||
if (this.nodeService.getProperty(nr, ContentModel.PROP_TITLE).equals(name))
|
|
||||||
{
|
|
||||||
result = nr;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (result == null && LOGGER.isDebugEnabled())
|
|
||||||
LOGGER.debug("unable to find tempalte type " + name);
|
|
||||||
return result != null ? this.newForm(result) : null;
|
|
||||||
}
|
|
||||||
catch (RuntimeException re)
|
|
||||||
{
|
{
|
||||||
LOGGER.error(re);
|
final NodeRef nr = row.getNodeRef();
|
||||||
throw re;
|
if (this.nodeService.getProperty(nr, ContentModel.PROP_TITLE).equals(name))
|
||||||
|
{
|
||||||
|
result = nr;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
if (result == null && LOGGER.isDebugEnabled())
|
||||||
|
LOGGER.debug("unable to find tempalte type " + name);
|
||||||
|
return result != null ? this.newForm(result) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -216,13 +225,16 @@ public final class FormsService
|
|||||||
*/
|
*/
|
||||||
private Form newForm(final NodeRef schemaNodeRef)
|
private Form newForm(final NodeRef schemaNodeRef)
|
||||||
{
|
{
|
||||||
LOGGER.debug("creating form for " + schemaNodeRef);
|
if (LOGGER.isDebugEnabled())
|
||||||
|
LOGGER.debug("creating form for " + schemaNodeRef);
|
||||||
final String title = (String)
|
final String title = (String)
|
||||||
this.nodeService.getProperty(schemaNodeRef, ContentModel.PROP_TITLE);
|
this.nodeService.getProperty(schemaNodeRef, ContentModel.PROP_TITLE);
|
||||||
LOGGER.debug("title is " + title);
|
if (LOGGER.isDebugEnabled())
|
||||||
|
LOGGER.debug("title is " + title);
|
||||||
final String schemaRootTagName = (String)
|
final String schemaRootTagName = (String)
|
||||||
this.nodeService.getProperty(schemaNodeRef, WCMModel.PROP_SCHEMA_ROOT_ELEMENT_NAME);
|
this.nodeService.getProperty(schemaNodeRef, WCMModel.PROP_SCHEMA_ROOT_ELEMENT_NAME);
|
||||||
LOGGER.debug("root tag name is " + schemaRootTagName);
|
if (LOGGER.isDebugEnabled())
|
||||||
|
LOGGER.debug("root tag name is " + schemaRootTagName);
|
||||||
final Form tt = new FormImpl(title, schemaNodeRef, schemaRootTagName);
|
final Form tt = new FormImpl(title, schemaNodeRef, schemaRootTagName);
|
||||||
for (AssociationRef assoc : this.nodeService.getTargetAssocs(schemaNodeRef,
|
for (AssociationRef assoc : this.nodeService.getTargetAssocs(schemaNodeRef,
|
||||||
WCMModel.ASSOC_RENDERING_ENGINES))
|
WCMModel.ASSOC_RENDERING_ENGINES))
|
||||||
@@ -237,14 +249,17 @@ public final class FormsService
|
|||||||
final Constructor c = formDataRendererType.getConstructor(NodeRef.class, NodeService.class, ContentService.class);
|
final Constructor c = formDataRendererType.getConstructor(NodeRef.class, NodeService.class, ContentService.class);
|
||||||
final RenderingEngine tom = (RenderingEngine)
|
final RenderingEngine tom = (RenderingEngine)
|
||||||
c.newInstance(tomNodeRef, this.nodeService, this.contentService);
|
c.newInstance(tomNodeRef, this.nodeService, this.contentService);
|
||||||
LOGGER.debug("loaded form data renderer type " + tom.getClass().getName() +
|
if (LOGGER.isDebugEnabled())
|
||||||
" for extension " + tom.getFileExtensionForRendition() +
|
{
|
||||||
", " + tomNodeRef);
|
LOGGER.debug("loaded form data renderer type " + tom.getClass().getName() +
|
||||||
|
" for extension " + tom.getFileExtensionForRendition() +
|
||||||
|
", " + tomNodeRef);
|
||||||
|
}
|
||||||
tt.addRenderingEngine(tom);
|
tt.addRenderingEngine(tom);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.error(e);
|
throw new AlfrescoRuntimeException(e.getMessage(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return tt;
|
return tt;
|
||||||
@@ -303,8 +318,9 @@ public final class FormsService
|
|||||||
props = new HashMap<QName, Serializable>(1, 1.0f);
|
props = new HashMap<QName, Serializable>(1, 1.0f);
|
||||||
props.put(ContentModel.PROP_TITLE, renditionFileName);
|
props.put(ContentModel.PROP_TITLE, renditionFileName);
|
||||||
nodeService.addAspect(renditionNodeRef, ContentModel.ASPECT_TITLED, props);
|
nodeService.addAspect(renditionNodeRef, ContentModel.ASPECT_TITLED, props);
|
||||||
|
|
||||||
LOGGER.debug("generated " + renditionFileName + " using " + re);
|
if (LOGGER.isDebugEnabled())
|
||||||
|
LOGGER.debug("generated " + renditionFileName + " using " + re);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -362,7 +378,8 @@ public final class FormsService
|
|||||||
re.render(formInstanceData, parameters, out);
|
re.render(formInstanceData, parameters, out);
|
||||||
out.close();
|
out.close();
|
||||||
|
|
||||||
LOGGER.debug("generated " + renditionFileName + " using " + re);
|
if (LOGGER.isDebugEnabled())
|
||||||
|
LOGGER.debug("generated " + renditionFileName + " using " + re);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -398,14 +415,14 @@ public final class FormsService
|
|||||||
if (LOGGER.isDebugEnabled())
|
if (LOGGER.isDebugEnabled())
|
||||||
{
|
{
|
||||||
LOGGER.debug("writing out a document for " +
|
LOGGER.debug("writing out a document for " +
|
||||||
(n instanceof Document
|
(n instanceof Document
|
||||||
? ((Document)n).getDocumentElement()
|
? ((Document)n).getDocumentElement()
|
||||||
: n).getNodeName() +
|
: n).getNodeName() +
|
||||||
" to " + (output instanceof StringWriter
|
" to " + (output instanceof StringWriter
|
||||||
? "string"
|
? "string"
|
||||||
: output));
|
: output));
|
||||||
final StringWriter sw = new StringWriter();
|
final StringWriter sw = new StringWriter();
|
||||||
t.transform(new DOMSource(n), new StreamResult(sw));
|
t.transform(new DOMSource(n), new StreamResult(sw));
|
||||||
LOGGER.debug(sw.toString());
|
LOGGER.debug(sw.toString());
|
||||||
}
|
}
|
||||||
t.transform(new DOMSource(n), new StreamResult(output));
|
t.transform(new DOMSource(n), new StreamResult(output));
|
||||||
|
@@ -121,7 +121,8 @@ public class XSLTRenderingEngine
|
|||||||
final FormDataFunctions ef = XSLTRenderingEngine.getFormDataFunctions();
|
final FormDataFunctions ef = XSLTRenderingEngine.getFormDataFunctions();
|
||||||
path = XSLTRenderingEngine.toAVMPath(ec, path);
|
path = XSLTRenderingEngine.toAVMPath(ec, path);
|
||||||
final Map<String, Document> resultMap = ef.parseXMLDocuments(formName, path);
|
final Map<String, Document> resultMap = ef.parseXMLDocuments(formName, path);
|
||||||
LOGGER.debug("received " + resultMap.size() + " documents in " + path);
|
if (LOGGER.isDebugEnabled())
|
||||||
|
LOGGER.debug("received " + resultMap.size() + " documents in " + path);
|
||||||
|
|
||||||
// create a root document for rooting all the results. we do this
|
// create a root document for rooting all the results. we do this
|
||||||
// so that each document root element has a common parent node
|
// so that each document root element has a common parent node
|
||||||
@@ -154,7 +155,8 @@ public class XSLTRenderingEngine
|
|||||||
|
|
||||||
public void detach()
|
public void detach()
|
||||||
{
|
{
|
||||||
LOGGER.debug("detaching NodeIterator");
|
if (LOGGER.isDebugEnabled())
|
||||||
|
LOGGER.debug("detaching NodeIterator");
|
||||||
resultMap.clear();
|
resultMap.clear();
|
||||||
documents.clear();
|
documents.clear();
|
||||||
this.detached = true;
|
this.detached = true;
|
||||||
@@ -189,7 +191,8 @@ public class XSLTRenderingEngine
|
|||||||
public Node nextNode()
|
public Node nextNode()
|
||||||
throws DOMException
|
throws DOMException
|
||||||
{
|
{
|
||||||
LOGGER.debug("NodeIterator.nextNode(" + index + ")");
|
if (LOGGER.isDebugEnabled())
|
||||||
|
LOGGER.debug("NodeIterator.nextNode(" + index + ")");
|
||||||
if (this.detached)
|
if (this.detached)
|
||||||
throw new DOMException(DOMException.INVALID_STATE_ERR, null);
|
throw new DOMException(DOMException.INVALID_STATE_ERR, null);
|
||||||
if (index == documents.size())
|
if (index == documents.size())
|
||||||
@@ -200,7 +203,8 @@ public class XSLTRenderingEngine
|
|||||||
public Node previousNode()
|
public Node previousNode()
|
||||||
throws DOMException
|
throws DOMException
|
||||||
{
|
{
|
||||||
LOGGER.debug("NodeIterator.previousNode(" + index + ")");
|
if (LOGGER.isDebugEnabled())
|
||||||
|
LOGGER.debug("NodeIterator.previousNode(" + index + ")");
|
||||||
if (this.detached)
|
if (this.detached)
|
||||||
throw new DOMException(DOMException.INVALID_STATE_ERR, null);
|
throw new DOMException(DOMException.INVALID_STATE_ERR, null);
|
||||||
if (index == -1)
|
if (index == -1)
|
||||||
@@ -337,14 +341,15 @@ public class XSLTRenderingEngine
|
|||||||
}
|
}
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
LOGGER.debug("loading " + uri);
|
if (LOGGER.isDebugEnabled())
|
||||||
|
LOGGER.debug("loading " + uri);
|
||||||
final Document d = ts.parseXML(uri.toURL().openStream());
|
final Document d = ts.parseXML(uri.toURL().openStream());
|
||||||
LOGGER.debug("loaded " + ts.writeXMLToString(d));
|
if (LOGGER.isDebugEnabled())
|
||||||
|
LOGGER.debug("loaded " + ts.writeXMLToString(d));
|
||||||
return new DOMSource(d);
|
return new DOMSource(d);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.warn(e);
|
|
||||||
throw new TransformerException("unable to load " + uri, e);
|
throw new TransformerException("unable to load " + uri, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -29,6 +29,10 @@ import javax.faces.component.UIInput;
|
|||||||
import javax.faces.context.FacesContext;
|
import javax.faces.context.FacesContext;
|
||||||
import javax.faces.context.ResponseWriter;
|
import javax.faces.context.ResponseWriter;
|
||||||
import javax.faces.el.ValueBinding;
|
import javax.faces.el.ValueBinding;
|
||||||
|
import javax.faces.event.AbortProcessingException;
|
||||||
|
import javax.faces.event.FacesEvent;
|
||||||
|
import javax.faces.event.FacesListener;
|
||||||
|
import javax.faces.event.PhaseId;
|
||||||
|
|
||||||
import org.alfresco.web.ui.common.Utils;
|
import org.alfresco.web.ui.common.Utils;
|
||||||
|
|
||||||
@@ -47,10 +51,12 @@ import org.alfresco.web.ui.common.Utils;
|
|||||||
*
|
*
|
||||||
* @author Kevin Roast
|
* @author Kevin Roast
|
||||||
*/
|
*/
|
||||||
public class UISelectList extends UIInput
|
public class UISelectList extends UIInput implements NamingContainer
|
||||||
{
|
{
|
||||||
private Boolean multiSelect;
|
private Boolean multiSelect;
|
||||||
private Boolean activeSelect;
|
private Boolean activeSelect;
|
||||||
|
private int rowIndex = -1;
|
||||||
|
private int itemCount;
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------
|
||||||
@@ -82,6 +88,7 @@ public class UISelectList extends UIInput
|
|||||||
super.restoreState(context, values[0]);
|
super.restoreState(context, values[0]);
|
||||||
this.multiSelect = (Boolean)values[1];
|
this.multiSelect = (Boolean)values[1];
|
||||||
this.activeSelect = (Boolean)values[2];
|
this.activeSelect = (Boolean)values[2];
|
||||||
|
this.itemCount = (Integer)values[3];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -89,14 +96,107 @@ public class UISelectList extends UIInput
|
|||||||
*/
|
*/
|
||||||
public Object saveState(FacesContext context)
|
public Object saveState(FacesContext context)
|
||||||
{
|
{
|
||||||
Object values[] = new Object[3];
|
Object values[] = new Object[4];
|
||||||
// standard component attributes are saved by the super class
|
// standard component attributes are saved by the super class
|
||||||
values[0] = super.saveState(context);
|
values[0] = super.saveState(context);
|
||||||
values[1] = this.multiSelect;
|
values[1] = this.multiSelect;
|
||||||
values[2] = this.activeSelect;
|
values[2] = this.activeSelect;
|
||||||
|
values[3] = this.itemCount;
|
||||||
return (values);
|
return (values);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the client Id for this naming container component - based on the current row context.
|
||||||
|
* This allows a single component rendered multiple times in a list to dynamically base
|
||||||
|
* their ID on the current row - so that the 'correct' component is decoded and event is
|
||||||
|
* queued with the current row value.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getClientId(FacesContext context)
|
||||||
|
{
|
||||||
|
String clientId = super.getClientId(context);
|
||||||
|
int rowIndex = getRowIndex();
|
||||||
|
if (rowIndex == -1)
|
||||||
|
{
|
||||||
|
return clientId;
|
||||||
|
}
|
||||||
|
return clientId + "_" + rowIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Override the processing of child component decodes - we set the current row context so any
|
||||||
|
* events queued by child components wrapped in FacesEventWrapper have current row value.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void processDecodes(FacesContext context)
|
||||||
|
{
|
||||||
|
if (!isRendered())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
setRowIndex(-1);
|
||||||
|
for (Iterator itr=getChildren().iterator(); itr.hasNext(); /**/)
|
||||||
|
{
|
||||||
|
UIComponent child = (UIComponent)itr.next();
|
||||||
|
if (child instanceof UIListItem == false && child instanceof UIListItems == false)
|
||||||
|
{
|
||||||
|
for (int i=0; i<this.itemCount; i++)
|
||||||
|
{
|
||||||
|
setRowIndex(i);
|
||||||
|
child.processDecodes(context);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setRowIndex(-1);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
decode(context);
|
||||||
|
}
|
||||||
|
catch (RuntimeException e)
|
||||||
|
{
|
||||||
|
context.renderResponse();
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Override event queueing from child components - wrap and add current row value
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void queueEvent(FacesEvent event)
|
||||||
|
{
|
||||||
|
super.queueEvent(new FacesEventWrapper(event, getRowIndex(), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Override event broadcasting to look for event wrappers to set the current row context
|
||||||
|
* correctly for components that have been rendered multiple times in the list.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void broadcast(FacesEvent event) throws AbortProcessingException
|
||||||
|
{
|
||||||
|
if (event instanceof FacesEventWrapper)
|
||||||
|
{
|
||||||
|
FacesEvent originalEvent = ((FacesEventWrapper)event).getWrappedFacesEvent();
|
||||||
|
int eventRowIndex = ((FacesEventWrapper)event).getRowIndex();
|
||||||
|
int currentRowIndex = getRowIndex();
|
||||||
|
setRowIndex(eventRowIndex);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
originalEvent.getComponent().broadcast(originalEvent);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
setRowIndex(currentRowIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
super.broadcast(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see javax.faces.component.UIComponentBase#decode(javax.faces.context.FacesContext)
|
* @see javax.faces.component.UIComponentBase#decode(javax.faces.context.FacesContext)
|
||||||
*/
|
*/
|
||||||
@@ -159,6 +259,8 @@ public class UISelectList extends UIInput
|
|||||||
out.write('>');
|
out.write('>');
|
||||||
|
|
||||||
// get the child components and look for compatible ListItem objects
|
// get the child components and look for compatible ListItem objects
|
||||||
|
this.itemCount = 0;
|
||||||
|
setRowIndex(-1);
|
||||||
for (Iterator i = getChildren().iterator(); i.hasNext(); /**/)
|
for (Iterator i = getChildren().iterator(); i.hasNext(); /**/)
|
||||||
{
|
{
|
||||||
UIComponent child = (UIComponent)i.next();
|
UIComponent child = (UIComponent)i.next();
|
||||||
@@ -177,8 +279,10 @@ public class UISelectList extends UIInput
|
|||||||
{
|
{
|
||||||
requestMap.put(var, item);
|
requestMap.put(var, item);
|
||||||
}
|
}
|
||||||
|
setRowIndex(this.itemCount);
|
||||||
renderItem(context, out, item);
|
renderItem(context, out, item);
|
||||||
}
|
}
|
||||||
|
this.itemCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -192,10 +296,13 @@ public class UISelectList extends UIInput
|
|||||||
{
|
{
|
||||||
requestMap.put(var, item);
|
requestMap.put(var, item);
|
||||||
}
|
}
|
||||||
|
setRowIndex(this.itemCount);
|
||||||
renderItem(context, out, item);
|
renderItem(context, out, item);
|
||||||
}
|
}
|
||||||
|
this.itemCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
setRowIndex(-1);
|
||||||
if (var != null)
|
if (var != null)
|
||||||
{
|
{
|
||||||
requestMap.remove(var);
|
requestMap.remove(var);
|
||||||
@@ -318,6 +425,37 @@ public class UISelectList extends UIInput
|
|||||||
// ------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------
|
||||||
// Strongly typed property accessors
|
// Strongly typed property accessors
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return current row index
|
||||||
|
*/
|
||||||
|
public int getRowIndex()
|
||||||
|
{
|
||||||
|
return this.rowIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the transient current row index. Setting this value causes all child components to
|
||||||
|
* have their ID values reset - so that cached clientID values are regenerated when next requested.
|
||||||
|
*
|
||||||
|
* @param rowIndex
|
||||||
|
*/
|
||||||
|
public void setRowIndex(int rowIndex)
|
||||||
|
{
|
||||||
|
this.rowIndex = rowIndex;
|
||||||
|
for (Iterator itr=getChildren().iterator(); itr.hasNext(); /**/)
|
||||||
|
{
|
||||||
|
UIComponent child = (UIComponent)itr.next();
|
||||||
|
if (child instanceof UIListItem == false && child instanceof UIListItems == false)
|
||||||
|
{
|
||||||
|
// forces a reset of the clientId for the component
|
||||||
|
// This is then regenerated - relative to this naming container which itself uses the
|
||||||
|
// current row index as part of the Id. This is what facilities the correct component
|
||||||
|
// rendering submit script and then identified during the decode() phase.
|
||||||
|
child.setId(child.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the multi-select rendering flag
|
* Get the multi-select rendering flag
|
||||||
*
|
*
|
||||||
@@ -399,4 +537,61 @@ public class UISelectList extends UIInput
|
|||||||
UIForm form = Utils.getParentForm(context, component);
|
UIForm form = Utils.getParentForm(context, component);
|
||||||
return form.getClientId(context) + NamingContainer.SEPARATOR_CHAR + "selectlist";
|
return form.getClientId(context) + NamingContainer.SEPARATOR_CHAR + "selectlist";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrapper for a FacesEvent to hold current row value when the event was fired
|
||||||
|
*/
|
||||||
|
private static class FacesEventWrapper extends FacesEvent
|
||||||
|
{
|
||||||
|
private FacesEvent wrappedFacesEvent;
|
||||||
|
private int rowIndex;
|
||||||
|
|
||||||
|
public FacesEventWrapper(FacesEvent facesEvent, int rowIndex, UISelectList redirectComponent)
|
||||||
|
{
|
||||||
|
super(redirectComponent);
|
||||||
|
wrappedFacesEvent = facesEvent;
|
||||||
|
this.rowIndex = rowIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PhaseId getPhaseId()
|
||||||
|
{
|
||||||
|
return wrappedFacesEvent.getPhaseId();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPhaseId(PhaseId phaseId)
|
||||||
|
{
|
||||||
|
wrappedFacesEvent.setPhaseId(phaseId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void queue()
|
||||||
|
{
|
||||||
|
wrappedFacesEvent.queue();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
return wrappedFacesEvent.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isAppropriateListener(FacesListener faceslistener)
|
||||||
|
{
|
||||||
|
return wrappedFacesEvent.isAppropriateListener(faceslistener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void processListener(FacesListener faceslistener)
|
||||||
|
{
|
||||||
|
wrappedFacesEvent.processListener(faceslistener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public FacesEvent getWrappedFacesEvent()
|
||||||
|
{
|
||||||
|
return wrappedFacesEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getRowIndex()
|
||||||
|
{
|
||||||
|
return rowIndex;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -24,4 +24,5 @@ public class WebResources extends org.alfresco.web.ui.repo.WebResources
|
|||||||
// Image paths
|
// Image paths
|
||||||
public static final String IMAGE_SANDBOX_32 = "/images/icons/sandbox_large.gif";
|
public static final String IMAGE_SANDBOX_32 = "/images/icons/sandbox_large.gif";
|
||||||
public static final String IMAGE_USERSANDBOX_32 = "/images/icons/user_sandbox_large.gif";
|
public static final String IMAGE_USERSANDBOX_32 = "/images/icons/user_sandbox_large.gif";
|
||||||
|
public static final String IMAGE_WEBFORM_32 = "/images/icons/webform_large.gif";
|
||||||
}
|
}
|
||||||
|
@@ -2513,6 +2513,27 @@
|
|||||||
</managed-property>
|
</managed-property>
|
||||||
</managed-bean>
|
</managed-bean>
|
||||||
|
|
||||||
|
<managed-bean>
|
||||||
|
<description>
|
||||||
|
The bean that backs up the Form Template Details dialog
|
||||||
|
</description>
|
||||||
|
<managed-bean-name>FormDetailsDialog</managed-bean-name>
|
||||||
|
<managed-bean-class>org.alfresco.web.bean.wcm.FormDetailsDialog</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>nodeService</property-name>
|
||||||
|
<value>#{NodeService}</value>
|
||||||
|
</managed-property>
|
||||||
|
<managed-property>
|
||||||
|
<property-name>createWebsiteWizard</property-name>
|
||||||
|
<value>#{CreateWebsiteWizard}</value>
|
||||||
|
</managed-property>
|
||||||
|
</managed-bean>
|
||||||
|
|
||||||
<!-- ==================== COMPONENT GENERATOR BEANS ==================== -->
|
<!-- ==================== COMPONENT GENERATOR BEANS ==================== -->
|
||||||
<managed-bean>
|
<managed-bean>
|
||||||
<description>
|
<description>
|
||||||
|
@@ -563,7 +563,9 @@ a.topToolbarLinkHighlight, a.topToolbarLinkHighlight:link, a.topToolbarLinkHighl
|
|||||||
.selectListTable
|
.selectListTable
|
||||||
{
|
{
|
||||||
border: 1px solid #999999;
|
border: 1px solid #999999;
|
||||||
padding: 2px;
|
padding-top: 2px;
|
||||||
|
padding-left: 2px;
|
||||||
|
padding-right: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.selectListItem
|
.selectListItem
|
||||||
|
BIN
source/web/images/icons/webform_large.gif
Normal file
BIN
source/web/images/icons/webform_large.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 918 B |
@@ -162,7 +162,7 @@ else
|
|||||||
cellpadding="2"
|
cellpadding="2"
|
||||||
styleClass="selectedItems"
|
styleClass="selectedItems"
|
||||||
rowClasses="selectedItemsHeader,selectedItemsRow">
|
rowClasses="selectedItemsHeader,selectedItemsRow">
|
||||||
<h:outputText styleClass="selectedItemsHeader" id="no-items-name" value="#{msg.name}" />
|
<h:outputText id="no-items-name" value="#{msg.name}" />
|
||||||
<h:outputText styleClass="selectedItemsRow" id="no-items-msg" value="#{msg.no_selected_items}" />
|
<h:outputText styleClass="selectedItemsRow" id="no-items-msg" value="#{msg.no_selected_items}" />
|
||||||
</h:panelGrid>
|
</h:panelGrid>
|
||||||
</a:panel>
|
</a:panel>
|
||||||
|
@@ -40,7 +40,8 @@
|
|||||||
|
|
||||||
function checkButtonState()
|
function checkButtonState()
|
||||||
{
|
{
|
||||||
if (document.getElementById("wizard:wizard-body:name").value.length == 0)
|
if (document.getElementById("wizard:wizard-body:name").value.length == 0 ||
|
||||||
|
document.getElementById("wizard:wizard-body:dnsname").value.length < 2)
|
||||||
{
|
{
|
||||||
document.getElementById("wizard:next-button").disabled = true;
|
document.getElementById("wizard:next-button").disabled = true;
|
||||||
document.getElementById("wizard:finish-button").disabled = true;
|
document.getElementById("wizard:finish-button").disabled = true;
|
||||||
|
152
source/web/jsp/wcm/create-website-wizard/form-details.jsp
Normal file
152
source/web/jsp/wcm/create-website-wizard/form-details.jsp
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
<%--
|
||||||
|
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" %>
|
||||||
|
|
||||||
|
<%@ page buffer="32kb" contentType="text/html;charset=UTF-8" %>
|
||||||
|
<%@ page isELIgnored="false" %>
|
||||||
|
|
||||||
|
<h:panelGrid columns="1" cellpadding="2" cellpadding="2" width="100%">
|
||||||
|
<%-- Form properties --%>
|
||||||
|
<h:panelGroup>
|
||||||
|
<f:verbatim>
|
||||||
|
<table cellpadding="3" cellspacing="2" border="0" width="100%">
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" class="wizardSectionHeading">
|
||||||
|
</f:verbatim>
|
||||||
|
<h:outputText value="#{msg.properties}"/>
|
||||||
|
<f:verbatim>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
</f:verbatim>
|
||||||
|
<h:outputText value="#{msg.title}:" />
|
||||||
|
<f:verbatim>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</f:verbatim>
|
||||||
|
<h:inputText id="title" value="#{DialogManager.bean.title}" size="35" maxlength="1024" />
|
||||||
|
<f:verbatim>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
</f:verbatim>
|
||||||
|
<h:outputText value="#{msg.description}:"/>
|
||||||
|
<f:verbatim>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</f:verbatim>
|
||||||
|
<h:inputText id="description" value="#{DialogManager.bean.description}" size="35" maxlength="1024" />
|
||||||
|
<f:verbatim>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</f:verbatim>
|
||||||
|
</h:panelGroup>
|
||||||
|
|
||||||
|
<%-- Save scripts --%>
|
||||||
|
<h:panelGroup>
|
||||||
|
<f:verbatim>
|
||||||
|
<table cellpadding="3" cellspacing="2" border="0" width="100%">
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" class="wizardSectionHeading">
|
||||||
|
</f:verbatim>
|
||||||
|
<h:outputText value="#{msg.website_save_scripts}"/>
|
||||||
|
<f:verbatim>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2">
|
||||||
|
</f:verbatim>
|
||||||
|
<h:outputText value="#{msg.website_save_scripts_info}:" />
|
||||||
|
<f:verbatim>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
</f:verbatim>
|
||||||
|
<h:outputText value="#{msg.website_pre_script}:"/>
|
||||||
|
<f:verbatim>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</f:verbatim>
|
||||||
|
<h:selectOneMenu id="pre-script" value="#{DialogManager.bean.preScript}">
|
||||||
|
<f:selectItems value="#{TemplateSupportBean.scriptFiles}" />
|
||||||
|
</h:selectOneMenu>
|
||||||
|
<f:verbatim>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
</f:verbatim>
|
||||||
|
<h:outputText value="#{msg.website_post_script}:"/>
|
||||||
|
<f:verbatim>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</f:verbatim>
|
||||||
|
<h:selectOneMenu id="post-script" value="#{DialogManager.bean.postScript}">
|
||||||
|
<f:selectItems value="#{TemplateSupportBean.scriptFiles}" />
|
||||||
|
</h:selectOneMenu>
|
||||||
|
<f:verbatim>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</f:verbatim>
|
||||||
|
</h:panelGroup>
|
||||||
|
|
||||||
|
<%-- Workflow --%>
|
||||||
|
<h:panelGroup>
|
||||||
|
<f:verbatim>
|
||||||
|
<table cellpadding="3" cellspacing="2" border="0" width="100%">
|
||||||
|
<tr>
|
||||||
|
<td class="wizardSectionHeading">
|
||||||
|
</f:verbatim>
|
||||||
|
<h:outputText value="#{msg.website_workflow}"/>
|
||||||
|
<f:verbatim>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
</f:verbatim>
|
||||||
|
<h:outputText value="#{msg.website_workflow_info}:" />
|
||||||
|
<f:verbatim>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
</f:verbatim>
|
||||||
|
<%-- Workflow selection list - scrollable DIV area --%>
|
||||||
|
<h:panelGroup>
|
||||||
|
<f:verbatim><div style="height:108px;*height:112px;width:300px;overflow:auto" class='selectListTable'></f:verbatim>
|
||||||
|
<a:selectList id="workflow-list" multiSelect="false" style="width:276px" itemStyleClass="selectListItem"
|
||||||
|
value="#{DialogManager.bean.workflowSelectedValue}">
|
||||||
|
<a:listItems value="#{DialogManager.bean.workflowList}" />
|
||||||
|
</a:selectList>
|
||||||
|
<f:verbatim></div></f:verbatim>
|
||||||
|
</h:panelGroup>
|
||||||
|
<f:verbatim>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</f:verbatim>
|
||||||
|
</h:panelGroup>
|
||||||
|
|
||||||
|
</h:panelGrid>
|
@@ -22,25 +22,55 @@
|
|||||||
<%@ page buffer="32kb" contentType="text/html;charset=UTF-8" %>
|
<%@ page buffer="32kb" contentType="text/html;charset=UTF-8" %>
|
||||||
<%@ page isELIgnored="false" %>
|
<%@ page isELIgnored="false" %>
|
||||||
|
|
||||||
<h:panelGrid columns="1" cellpadding="2" cellpadding="3" width="100%">
|
<h:panelGrid columns="1" cellpadding="2" cellpadding="2" width="100%">
|
||||||
|
<%-- Form selection list - scrollable DIV area --%>
|
||||||
<h:outputText styleClass="mainSubText" value="#{msg.website_select_form}:" />
|
<h:outputText styleClass="mainSubText" value="#{msg.website_select_form}:" />
|
||||||
<a:selectList multiSelect="true" activeSelect="false" value="#{WizardManager.bean.formsSelectedValue}"
|
<h:panelGroup>
|
||||||
styleClass="selectListTable" itemStyleClass="selectListItem">
|
<f:verbatim><div style="height:108px;*height:112px;width:300px;overflow:auto" class='selectListTable'></f:verbatim>
|
||||||
<a:listItems value="#{WizardManager.bean.formsList}" />
|
<a:selectList id="form-list" activeSelect="true" style="width:276px" itemStyleClass="selectListItem">
|
||||||
</a:selectList>
|
<a:listItems value="#{WizardManager.bean.formsList}" />
|
||||||
|
<h:commandButton value="#{msg.add_to_list_button}" styleClass="dialogControls" actionListener="#{WizardManager.bean.addForm}" />
|
||||||
|
</a:selectList>
|
||||||
|
<f:verbatim></div></f:verbatim>
|
||||||
|
</h:panelGroup>
|
||||||
|
|
||||||
<h:outputText styleClass="mainSubText" value="#{msg.website_select_form}:" />
|
<%-- Selected Form table, with configuration buttons and info text --%>
|
||||||
<a:selectList multiSelect="false" activeSelect="false"
|
<h:outputText styleClass="mainSubText" style="padding-top:4px" value="#{msg.website_selected_forms}:" />
|
||||||
styleClass="selectListTable" itemStyleClass="selectListItem">
|
<h:dataTable value="#{WizardManager.bean.formsDataModel}" var="row"
|
||||||
<a:listItems value="#{WizardManager.bean.formsList}" />
|
rowClasses="selectedItemsRow,selectedItemsRowAlt"
|
||||||
</a:selectList>
|
styleClass="selectedItems" headerClass="selectedItemsHeader"
|
||||||
|
cellspacing="0" cellpadding="4"
|
||||||
|
rendered="#{WizardManager.bean.formsDataModel.rowCount != 0}">
|
||||||
|
<h:column>
|
||||||
|
<f:facet name="header">
|
||||||
|
<h:outputText value="#{msg.title}" />
|
||||||
|
</f:facet>
|
||||||
|
<h:outputText value="#{row.title}" />
|
||||||
|
</h:column>
|
||||||
|
<h:column>
|
||||||
|
<f:facet name="header">
|
||||||
|
<h:outputText value="#{msg.details}" />
|
||||||
|
</f:facet>
|
||||||
|
<h:outputText value="#{row.details}" />
|
||||||
|
</h:column>
|
||||||
|
<h:column>
|
||||||
|
<f:facet name="header">
|
||||||
|
<h:outputText value="#{msg.configure}" />
|
||||||
|
</f:facet>
|
||||||
|
<h:commandButton value="#{msg.form_template_details}" style="margin:2px" styleClass="dialogControls" action="dialog:formDetails" actionListener="#{WizardManager.bean.setupFormAction}" />
|
||||||
|
<h:commandButton value="#{msg.form_template_conf_workflow}" style="margin:2px" styleClass="dialogControls" action="dialog:formWorkflow" actionListener="#{WizardManager.bean.setupFormAction}" />
|
||||||
|
<h:commandButton value="#{msg.form_template_select_templates}" style="margin:2px" styleClass="dialogControls" action="dialog:formTemplates" actionListener="#{WizardManager.bean.setupFormAction}" />
|
||||||
|
</h:column>
|
||||||
|
<h:column>
|
||||||
|
<a:actionLink actionListener="#{WizardManager.bean.removeForm}" image="/images/icons/delete.gif"
|
||||||
|
value="#{msg.remove}" showLink="false" style="padding-left:6px" />
|
||||||
|
</h:column>
|
||||||
|
</h:dataTable>
|
||||||
|
|
||||||
<h:outputText styleClass="mainSubText" value="#{msg.website_select_form}:" />
|
<a:panel id="no-items" rendered="#{WizardManager.bean.formsDataModel.rowCount == 0}">
|
||||||
<a:selectList var="r" multiSelect="false" activeSelect="true"
|
<h:panelGrid columns="1" cellpadding="2" styleClass="selectedItems" rowClasses="selectedItemsHeader,selectedItemsRow">
|
||||||
styleClass="selectListTable" itemStyleClass="selectListItem">
|
<h:outputText id="no-items-name" value="#{msg.name}" />
|
||||||
<a:listItems value="#{WizardManager.bean.formsList}" />
|
<h:outputText styleClass="selectedItemsRow" id="no-items-msg" value="#{msg.no_selected_items}" />
|
||||||
<h:commandButton value="Add to List" styleClass="dialogControls">
|
</h:panelGrid>
|
||||||
<f:param name="id" value="#{r.value}" />
|
</a:panel>
|
||||||
</h:commandButton>
|
|
||||||
</a:selectList>
|
|
||||||
</h:panelGrid>
|
</h:panelGrid>
|
||||||
|
@@ -54,7 +54,7 @@ License.
|
|||||||
|
|
||||||
<a:panel id="no-items" rendered="#{InviteWebsiteUsersWizard.userRolesDataModel.rowCount == 0}">
|
<a:panel id="no-items" rendered="#{InviteWebsiteUsersWizard.userRolesDataModel.rowCount == 0}">
|
||||||
<h:panelGrid columns="1" cellpadding="2" styleClass="selectedItems" rowClasses="selectedItemsHeader,selectedItemsRow">
|
<h:panelGrid columns="1" cellpadding="2" styleClass="selectedItems" rowClasses="selectedItemsHeader,selectedItemsRow">
|
||||||
<h:outputText styleClass="selectedItemsHeader" id="no-items-name" value="#{msg.name}" />
|
<h:outputText id="no-items-name" value="#{msg.name}" />
|
||||||
<h:outputText styleClass="selectedItemsRow" id="no-items-msg" value="#{msg.no_selected_items}" />
|
<h:outputText styleClass="selectedItemsRow" id="no-items-msg" value="#{msg.no_selected_items}" />
|
||||||
</h:panelGrid>
|
</h:panelGrid>
|
||||||
</a:panel>
|
</a:panel>
|
||||||
|
Reference in New Issue
Block a user