diff --git a/config/alfresco/web-client-config-dialogs.xml b/config/alfresco/web-client-config-dialogs.xml
index 5a349fe7ad..6d6a9aced2 100644
--- a/config/alfresco/web-client-config-dialogs.xml
+++ b/config/alfresco/web-client-config-dialogs.xml
@@ -414,8 +414,8 @@
description-id="change_password_description" error-message-id="error_wizard" />
+ icon="/images/icons/details_large.gif" description-id="deleteditem_details_description"
+ show-ok-button="false" />
+ icon="/images/icons/file_large.gif" title-id="system_info" show-ok-button="false"/>
diff --git a/source/java/org/alfresco/web/bean/ShowSystemInfoDialog.java b/source/java/org/alfresco/web/bean/ShowSystemInfoDialog.java
index 690abb61c7..d8506cfb55 100644
--- a/source/java/org/alfresco/web/bean/ShowSystemInfoDialog.java
+++ b/source/java/org/alfresco/web/bean/ShowSystemInfoDialog.java
@@ -29,40 +29,54 @@ import javax.faces.context.FacesContext;
import org.alfresco.web.app.Application;
import org.alfresco.web.bean.dialog.BaseDialogBean;
+/**
+ * Implementation for the SystemInfo dialog.
+ *
+ * @author gavinc
+ */
public class ShowSystemInfoDialog extends BaseDialogBean
{
- private final static String MSG_CURRENT_USER = "current_user";
- private static final String LBL_CLOSE = "close";
+ private static final String MSG_CURRENT_USER = "current_user";
+ private static final String MSG_CLOSE = "close";
+ private static final String MSG_VERSION = "version";
- private NavigationBean navigationBean;
+ protected AboutBean aboutBean;
- @Override
- protected String finishImpl(FacesContext context, String outcome) throws Exception
- {
- return null;
- }
+ @Override
+ protected String finishImpl(FacesContext context, String outcome) throws Exception
+ {
+ return null;
+ }
- public NavigationBean getNavigationBean()
- {
- return navigationBean;
- }
+ public void setAboutBean(AboutBean aboutBean)
+ {
+ this.aboutBean = aboutBean;
+ }
- public void setNavigationBean(NavigationBean navigationBean)
- {
- this.navigationBean = navigationBean;
- }
+ @Override
+ public String getContainerSubTitle()
+ {
+ return Application.getMessage(FacesContext.getCurrentInstance(), MSG_CURRENT_USER) + ": " +
+ this.navigator.getCurrentUser().getUserName();
+ }
- @Override
- public String getContainerDescription()
- {
- return Application.getMessage(FacesContext.getCurrentInstance(), MSG_CURRENT_USER) + " '" + navigationBean.getCurrentUser().getUserName() + "'";
- }
+ @Override
+ public String getContainerDescription()
+ {
+ StringBuilder builder = new StringBuilder(Application.getMessage(
+ FacesContext.getCurrentInstance(), MSG_VERSION));
+ builder.append(": ");
+ builder.append(this.aboutBean.getEdition());
+ builder.append(" - v");
+ builder.append(this.aboutBean.getVersion());
+
+ return builder.toString();
+ }
- @Override
- public String getCancelButtonLabel()
- {
-
- return Application.getMessage(FacesContext.getCurrentInstance(), LBL_CLOSE);
- }
+ @Override
+ public String getCancelButtonLabel()
+ {
+ return Application.getMessage(FacesContext.getCurrentInstance(), MSG_CLOSE);
+ }
}
diff --git a/source/java/org/alfresco/web/bean/TrashcanItemDetailsDialog.java b/source/java/org/alfresco/web/bean/TrashcanItemDetailsDialog.java
index 4213c46739..c1c3a489cd 100644
--- a/source/java/org/alfresco/web/bean/TrashcanItemDetailsDialog.java
+++ b/source/java/org/alfresco/web/bean/TrashcanItemDetailsDialog.java
@@ -33,43 +33,40 @@ import org.alfresco.web.bean.repository.Node;
public class TrashcanItemDetailsDialog extends TrashcanDialog
{
- private static final String MSG_DETAILS_OF = "details_of";
- private static final String MSG_ORIGINAL_LOCATION = "original_location";
- private static final String MSG_DELETEDITEM_DETAILS_DESCR = "deleteditem_details_description";
+ private static final String MSG_DETAILS_OF = "details_of";
+ private static final String MSG_ORIGINAL_LOCATION = "original_location";
+ private static final String MSG_CLOSE = "close";
- private static final String MSG_CLOSE = "close";
+ @Override
+ protected String finishImpl(FacesContext context, String outcome) throws Exception
+ {
+ return null;
+ }
- @Override
- protected String finishImpl(FacesContext context, String outcome) throws Exception
- {
- return null;
-
- }
-
- @Override
- public String getContainerDescription()
- {
- Path path = (Path) property.getItem().getProperties().get("locationPath");
- return Application.getMessage(FacesContext.getCurrentInstance(), MSG_ORIGINAL_LOCATION) + ": " + path.toDisplayPath(nodeService) + "\n"
- + Application.getMessage(FacesContext.getCurrentInstance(), MSG_DELETEDITEM_DETAILS_DESCR);
-
- }
-
- @Override
- public String getContainerTitle()
- {
- return Application.getMessage(FacesContext.getCurrentInstance(), MSG_DETAILS_OF) + " '" + property.getItem().getName() + "'";
- }
-
- public Node getItem()
- {
- return property.getItem();
- }
-
- @Override
- public String getCancelButtonLabel()
- {
- return Application.getMessage(FacesContext.getCurrentInstance(), MSG_CLOSE);
- }
+ @Override
+ public String getContainerTitle()
+ {
+ return Application.getMessage(FacesContext.getCurrentInstance(), MSG_DETAILS_OF) + " '" +
+ property.getItem().getName() + "'";
+ }
+
+ @Override
+ public String getContainerSubTitle()
+ {
+ Path path = (Path) property.getItem().getProperties().get("locationPath");
+
+ return Application.getMessage(FacesContext.getCurrentInstance(), MSG_ORIGINAL_LOCATION) + ": " +
+ path.toDisplayPath(nodeService);
+ }
+ @Override
+ public String getCancelButtonLabel()
+ {
+ return Application.getMessage(FacesContext.getCurrentInstance(), MSG_CLOSE);
+ }
+
+ public Node getItem()
+ {
+ return property.getItem();
+ }
}
diff --git a/source/java/org/alfresco/web/bean/groups/AddUsersDialog.java b/source/java/org/alfresco/web/bean/groups/AddUsersDialog.java
index b850b83846..408ee6ad55 100644
--- a/source/java/org/alfresco/web/bean/groups/AddUsersDialog.java
+++ b/source/java/org/alfresco/web/bean/groups/AddUsersDialog.java
@@ -53,199 +53,214 @@ import org.alfresco.web.ui.common.Utils;
import org.alfresco.web.ui.common.component.UIGenericPicker;
/**
+ * Implementation of the add user dialog.
+ *
* @author YanO
- */
-/**
- * @author Administrator
+ * @author gavinc
*/
public class AddUsersDialog extends GroupsDialog
{
- private static final String BUTTON_FINISH = "finish_button";
+ private static final String BUTTON_FINISH = "finish_button";
- /** selected users to be added to a group */
- private List usersForGroup;
+ /** selected users to be added to a group */
+ private List usersForGroup;
- /** datamodel for table of users added to group */
- private DataModel usersDataModel = null;
+ /** datamodel for table of users added to group */
+ private DataModel usersDataModel = null;
- @Override
- public void init(Map parameters)
- {
- super.init(parameters);
- usersForGroup = new ArrayList();
- }
+ @Override
+ public void init(Map parameters)
+ {
+ super.init(parameters);
+ usersForGroup = new ArrayList();
+ }
- @Override
- protected String finishImpl(FacesContext context, String outcome) throws Exception
- {
- try
- {
- // add each selected user to the current group in turn
- for (UserAuthorityDetails wrapper : this.usersForGroup)
+ @Override
+ protected String finishImpl(FacesContext context, String outcome) throws Exception
+ {
+ try
+ {
+ // add each selected user to the current group in turn
+ for (UserAuthorityDetails wrapper : this.usersForGroup)
+ {
+ properties.getAuthService().addAuthority(properties.getActionGroup(), wrapper.getAuthority());
+ }
+ }
+ catch (Throwable err)
+ {
+ Utils.addErrorMessage(MessageFormat.format(Application.getMessage(
+ FacesContext.getCurrentInstance(), Repository.ERROR_GENERIC), err.getMessage()), err);
+ outcome = null;
+ }
+ setActionGroup(null);
+ return outcome;
+ }
+
+ @Override
+ public String getContainerSubTitle()
+ {
+ return properties.getActionGroupName();
+ }
+
+ @Override
+ public boolean getFinishButtonDisabled()
+ {
+ return false;
+ }
+
+ @Override
+ public String getFinishButtonLabel()
+ {
+ return Application.getMessage(FacesContext.getCurrentInstance(), BUTTON_FINISH);
+ }
+
+ /**
+ * Query callback method executed by the Generic Picker component. This
+ * method is part of the contract to the Generic Picker, it is up to the
+ * backing bean to execute whatever query is appropriate and return the
+ * results.
+ *
+ * @param filterIndex Index of the filter drop-down selection
+ * @param contains Text from the contains textbox
+ * @return An array of SelectItem objects containing the results to display
+ * in the picker.
+ */
+ public SelectItem[] pickerCallback(int filterIndex, final String contains)
+ {
+ final FacesContext context = FacesContext.getCurrentInstance();
+
+ UserTransaction tx = null;
+ try
+ {
+ RetryingTransactionHelper txHelper = Repository.getRetryingTransactionHelper(context);// getUserTransaction(context);
+ return txHelper.doInTransaction(new RetryingTransactionCallback()
+ {
+ public SelectItem[] execute() throws Exception
{
- properties.getAuthService().addAuthority(properties.getActionGroup(), wrapper.getAuthority());
+ SelectItem[] items;
+
+ // build xpath to match available User/Person objects
+ ServiceRegistry services = Repository.getServiceRegistry(context);
+ NodeRef peopleRef = properties.getPersonService().getPeopleContainer();
+ String xpath = "*[like(@" + NamespaceService.CONTENT_MODEL_PREFIX + ":" + "firstName, '%" + contains +
+ "%', false)" + " or " + "like(@" + NamespaceService.CONTENT_MODEL_PREFIX + ":" +
+ "lastName, '%" + contains + "%', false)]";
+
+ List nodes = services.getSearchService().selectNodes(peopleRef, xpath, null,
+ services.getNamespaceService(), false);
+
+ ArrayList itemList = new ArrayList(nodes.size());
+ for (NodeRef personRef : nodes)
+ {
+ String username = (String) nodeService.getProperty(personRef, ContentModel.PROP_USERNAME);
+ if (PermissionService.GUEST_AUTHORITY.equals(username) == false)
+ {
+ String firstName = (String) nodeService.getProperty(personRef, ContentModel.PROP_FIRSTNAME);
+ String lastName = (String) nodeService.getProperty(personRef, ContentModel.PROP_LASTNAME);
+
+ SelectItem item = new SortableSelectItem(username, firstName + " " + lastName, lastName);
+ itemList.add(item);
+ }
+ }
+ items = new SelectItem[itemList.size()];
+ itemList.toArray(items);
+ return items;
}
- }
- catch (Throwable err)
- {
- Utils.addErrorMessage(MessageFormat.format(Application.getMessage(FacesContext.getCurrentInstance(), Repository.ERROR_GENERIC), err.getMessage()), err);
- outcome = null;
- }
- setActionGroup(null);
- return outcome;
- }
-
- @Override
- public boolean getFinishButtonDisabled()
- {
- return false;
- }
-
- /**
- * Query callback method executed by the Generic Picker component. This method is part of the contract to the Generic Picker, it is up to the backing bean to execute whatever
- * query is appropriate and return the results.
- *
- * @param filterIndex Index of the filter drop-down selection
- * @param contains Text from the contains textbox
- * @return An array of SelectItem objects containing the results to display in the picker.
- */
- public SelectItem[] pickerCallback(int filterIndex, final String contains)
- {
- final FacesContext context = FacesContext.getCurrentInstance();
-
- UserTransaction tx = null;
- try
- {
- RetryingTransactionHelper txHelper = Repository.getRetryingTransactionHelper(context);// getUserTransaction(context);
- return txHelper.doInTransaction(new RetryingTransactionCallback()
+ });
+ }
+ catch (Exception err)
+ {
+ Utils.addErrorMessage(MessageFormat.format(Application.getMessage(
+ FacesContext.getCurrentInstance(), Repository.ERROR_GENERIC), err.getMessage()), err);
+ try
+ {
+ if (tx != null)
{
- public SelectItem[] execute() throws Exception
- {
- SelectItem[] items;
-
- // build xpath to match available User/Person objects
- ServiceRegistry services = Repository.getServiceRegistry(context);
- NodeRef peopleRef = properties.getPersonService().getPeopleContainer();
- String xpath = "*[like(@" + NamespaceService.CONTENT_MODEL_PREFIX + ":" + "firstName, '%" + contains + "%', false)" + " or " + "like(@"
- + NamespaceService.CONTENT_MODEL_PREFIX + ":" + "lastName, '%" + contains + "%', false)]";
-
- List nodes = services.getSearchService().selectNodes(peopleRef, xpath, null, services.getNamespaceService(), false);
-
- ArrayList itemList = new ArrayList(nodes.size());
- for (NodeRef personRef : nodes)
- {
- String username = (String) nodeService.getProperty(personRef, ContentModel.PROP_USERNAME);
- if (PermissionService.GUEST_AUTHORITY.equals(username) == false)
- {
- String firstName = (String) nodeService.getProperty(personRef, ContentModel.PROP_FIRSTNAME);
- String lastName = (String) nodeService.getProperty(personRef, ContentModel.PROP_LASTNAME);
-
- SelectItem item = new SortableSelectItem(username, firstName + " " + lastName, lastName);
- itemList.add(item);
- }
- }
- items = new SelectItem[itemList.size()];
- itemList.toArray(items);
- return items;
- }
- });
- }
- catch (Exception err)
- {
- Utils.addErrorMessage(MessageFormat.format(Application.getMessage(FacesContext.getCurrentInstance(), Repository.ERROR_GENERIC), err.getMessage()), err);
- try
- {
- if (tx != null)
- {
- tx.rollback();
- }
+ tx.rollback();
}
- catch (Exception tex)
+ }
+ catch (Exception tex)
+ {
+ }
+ return new SelectItem[0];
+ }
+ }
+
+ /**
+ * Add the selected User to the list for adding to a Group
+ */
+ public void addSelectedUsers(ActionEvent event)
+ {
+ UIGenericPicker picker = (UIGenericPicker) event.getComponent().findComponent("picker");
+ String[] results = picker.getSelectedResults();
+ if (results != null)
+ {
+ for (int i = 0; i < results.length; i++)
+ {
+ String authority = results[i];
+
+ // check for same authority so not added twice
+ boolean foundExisting = false;
+ for (int n = 0; n < this.usersForGroup.size(); n++)
{
+ UserAuthorityDetails wrapper = this.usersForGroup.get(n);
+ if (authority.equals(wrapper.getAuthority()))
+ {
+ foundExisting = true;
+ break;
+ }
}
- return new SelectItem[0];
- }
- }
- /**
- * Add the selected User to the list for adding to a Group
- */
- public void addSelectedUsers(ActionEvent event)
- {
- UIGenericPicker picker = (UIGenericPicker) event.getComponent().findComponent("picker");
- String[] results = picker.getSelectedResults();
- if (results != null)
- {
- for (int i = 0; i < results.length; i++)
+ if (foundExisting == false)
{
- String authority = results[i];
+ StringBuilder label = new StringBuilder(48);
- // check for same authority so not added twice
- boolean foundExisting = false;
- for (int n = 0; n < this.usersForGroup.size(); n++)
- {
- UserAuthorityDetails wrapper = this.usersForGroup.get(n);
- if (authority.equals(wrapper.getAuthority()))
- {
- foundExisting = true;
- break;
- }
- }
+ // build a display label showing the user person name
+ if (properties.getPersonService().personExists(authority) == true)
+ {
+ // found a Person with a User authority
+ NodeRef ref = properties.getPersonService().getPerson(authority);
+ String firstName = (String) this.nodeService.getProperty(ref, ContentModel.PROP_FIRSTNAME);
+ String lastName = (String) this.nodeService.getProperty(ref, ContentModel.PROP_LASTNAME);
- if (foundExisting == false)
- {
- StringBuilder label = new StringBuilder(48);
+ // build a sensible label for display
+ label.append(firstName).append(' ').append(lastName);
- // build a display label showing the user person name
- if (properties.getPersonService().personExists(authority) == true)
- {
- // found a Person with a User authority
- NodeRef ref = properties.getPersonService().getPerson(authority);
- String firstName = (String) this.nodeService.getProperty(ref, ContentModel.PROP_FIRSTNAME);
- String lastName = (String) this.nodeService.getProperty(ref, ContentModel.PROP_LASTNAME);
-
- // build a sensible label for display
- label.append(firstName).append(' ').append(lastName);
-
- // add a wrapper object with the details to the results list for display
- UserAuthorityDetails userDetails = new UserAuthorityDetails(label.toString(), authority);
- this.usersForGroup.add(userDetails);
- }
- }
+ // add a wrapper object with the details to the results list
+ // for display
+ UserAuthorityDetails userDetails = new UserAuthorityDetails(label.toString(), authority);
+ this.usersForGroup.add(userDetails);
+ }
}
- }
- }
+ }
+ }
+ }
- /**
- * Action handler called when the Remove button is pressed to remove a user from the results list
- */
- public void removeUserSelection(ActionEvent event)
- {
- UserAuthorityDetails wrapper = (UserAuthorityDetails) this.usersDataModel.getRowData();
- if (wrapper != null)
- {
- this.usersForGroup.remove(wrapper);
- }
- }
+ /**
+ * Action handler called when the Remove button is pressed to remove a user
+ * from the results list
+ */
+ public void removeUserSelection(ActionEvent event)
+ {
+ UserAuthorityDetails wrapper = (UserAuthorityDetails) this.usersDataModel.getRowData();
+ if (wrapper != null)
+ {
+ this.usersForGroup.remove(wrapper);
+ }
+ }
- /**
- * @return Returns the usersDataModel.
- */
- public DataModel getUsersDataModel()
- {
- if (this.usersDataModel == null)
- {
- this.usersDataModel = new ListDataModel();
- }
+ /**
+ * @return Returns the usersDataModel.
+ */
+ public DataModel getUsersDataModel()
+ {
+ if (this.usersDataModel == null)
+ {
+ this.usersDataModel = new ListDataModel();
+ }
- this.usersDataModel.setWrappedData(this.usersForGroup);
+ this.usersDataModel.setWrappedData(this.usersForGroup);
- return this.usersDataModel;
- }
-
- @Override
- public String getFinishButtonLabel()
- {
- return Application.getMessage(FacesContext.getCurrentInstance(), BUTTON_FINISH);
- }
+ return this.usersDataModel;
+ }
}
diff --git a/source/java/org/alfresco/web/bean/groups/CreateGroupDialog.java b/source/java/org/alfresco/web/bean/groups/CreateGroupDialog.java
index 926a71853b..1912660ce3 100644
--- a/source/java/org/alfresco/web/bean/groups/CreateGroupDialog.java
+++ b/source/java/org/alfresco/web/bean/groups/CreateGroupDialog.java
@@ -41,62 +41,81 @@ import org.alfresco.web.ui.common.Utils;
public class CreateGroupDialog extends GroupsDialog
{
- private static final String MSG_ERR_EXISTS = "groups_err_exists";
+ private static final String MSG_ERR_EXISTS = "groups_err_exists";
+ private static final String MSG_BUTTON_NEW_GROUP = "new_group";
- private static final String BUTTON_NEW_GROUP = "new_group";
+ @Override
+ public void init(Map parameters)
+ {
+ super.init(parameters);
+ properties.setName("");
+ }
- @Override
- protected String finishImpl(FacesContext context, String outcome) throws Exception
- {
- try
- {
- // create new Group using Authentication Service
- String groupName = properties.getAuthService().getName(AuthorityType.GROUP, properties.getName());
- if (properties.getAuthService().authorityExists(groupName) == false)
- {
- properties.getAuthService().createAuthority(AuthorityType.GROUP, properties.getActionGroup(), properties.getName());
- }
- else
- {
- Utils.addErrorMessage(Application.getMessage(context, MSG_ERR_EXISTS));
- outcome = null;
- }
- }
- catch (Throwable err)
- {
- Utils.addErrorMessage(MessageFormat.format(Application.getMessage(context, Repository.ERROR_GENERIC), err.getMessage()), err);
+ @Override
+ protected String finishImpl(FacesContext context, String outcome) throws Exception
+ {
+ try
+ {
+ // create new Group using Authentication Service
+ String groupName = properties.getAuthService().getName(AuthorityType.GROUP, properties.getName());
+ if (properties.getAuthService().authorityExists(groupName) == false)
+ {
+ properties.getAuthService().createAuthority(AuthorityType.GROUP, properties.getActionGroup(), properties.getName());
+ }
+ else
+ {
+ Utils.addErrorMessage(Application.getMessage(context, MSG_ERR_EXISTS));
outcome = null;
- }
-
- if (outcome == null)
- {
- isFinished = false;
- }
-
- return outcome;
- }
+ }
+ }
+ catch (Throwable err)
+ {
+ Utils.addErrorMessage(MessageFormat.format(Application.getMessage(
+ context, Repository.ERROR_GENERIC), err.getMessage()), err);
+ outcome = null;
+ }
- @Override
- public void init(Map parameters)
- {
- super.init(parameters);
- properties.setName("");
- }
+ if (outcome == null)
+ {
+ isFinished = false;
+ }
- public void validateGroupName(FacesContext context, UIComponent component, Object value) throws ValidatorException
- {
- String name = (String) value;
- if (name.indexOf('\'') != -1 || name.indexOf('"') != -1 || name.indexOf('\\') != -1)
- {
- String err = MessageFormat.format(Application.getMessage(context, "groups_err_group_name"), new Object[] { "', \", \\" });
- throw new ValidatorException(new FacesMessage(err));
- }
- }
+ return outcome;
+ }
- @Override
- public String getFinishButtonLabel()
- {
- return Application.getMessage(FacesContext.getCurrentInstance(), BUTTON_NEW_GROUP);
- }
+ @Override
+ public String getFinishButtonLabel()
+ {
+ return Application.getMessage(FacesContext.getCurrentInstance(), MSG_BUTTON_NEW_GROUP);
+ }
+
+ @Override
+ public String getContainerSubTitle()
+ {
+ String subtitle = null;
+
+ if (properties.getActionGroup() != null)
+ {
+ subtitle = properties.getActionGroupName();
+ }
+ else
+ {
+ subtitle = properties.getGroupName();
+ }
+
+ return subtitle;
+ }
+
+ public void validateGroupName(FacesContext context, UIComponent component, Object value) throws ValidatorException
+ {
+ String name = (String) value;
+
+ if (name.indexOf('\'') != -1 || name.indexOf('"') != -1 || name.indexOf('\\') != -1)
+ {
+ String err = MessageFormat.format(Application.getMessage(context, "groups_err_group_name"),
+ new Object[] { "', \", \\" });
+ throw new ValidatorException(new FacesMessage(err));
+ }
+ }
}
diff --git a/source/web/WEB-INF/faces-config-beans.xml b/source/web/WEB-INF/faces-config-beans.xml
index e195d35696..d29d58a936 100644
--- a/source/web/WEB-INF/faces-config-beans.xml
+++ b/source/web/WEB-INF/faces-config-beans.xml
@@ -4999,9 +4999,13 @@
session
- navigationBean
+ navigator
#{NavigationBean}
+
+ aboutBean
+ #{AboutBean}
+