gatein SVN: r1373 - in portal/trunk: portlet/exoadmin/src/main/java/org/exoplatform/navigation/webui/component and 2 other directories.
by do-not-reply@jboss.org
Author: julien_viet
Date: 2010-01-19 10:19:58 -0500 (Tue, 19 Jan 2010)
New Revision: 1373
Added:
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/page/PageQueryAccessList.java
Modified:
portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/DataStorage.java
portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/DataStorageImpl.java
portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/Query.java
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/navigation/webui/component/UIPageManagementPortlet.java
portal/trunk/webui/core/src/main/java/org/exoplatform/webui/core/UIRepeater.java
portal/trunk/webui/core/src/main/java/org/exoplatform/webui/core/UIVirtualList.java
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageBrowser.java
Log:
GTNPORTAL-536 : Page Management application replication
Modified: portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/DataStorage.java
===================================================================
--- portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/DataStorage.java 2010-01-19 13:59:59 UTC (rev 1372)
+++ portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/DataStorage.java 2010-01-19 15:19:58 UTC (rev 1373)
@@ -20,6 +20,7 @@
package org.exoplatform.portal.config;
import org.exoplatform.commons.utils.LazyPageList;
+import org.exoplatform.commons.utils.ListAccess;
import org.exoplatform.portal.application.PortletPreferences;
import org.exoplatform.portal.config.model.ApplicationState;
import org.exoplatform.portal.config.model.ApplicationType;
@@ -109,6 +110,10 @@
public <T> LazyPageList<T> find(Query<T> q, Comparator<T> sortComparator) throws Exception;
+ public <T> ListAccess<T> find2(Query<T> q) throws Exception;
+
+ public <T> ListAccess<T> find2(Query<T> q, Comparator<T> sortComparator) throws Exception;
+
public Container getSharedLayout() throws Exception;
public Dashboard loadDashboard(String dashboardId) throws Exception;
Modified: portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/DataStorageImpl.java
===================================================================
--- portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/DataStorageImpl.java 2010-01-19 13:59:59 UTC (rev 1372)
+++ portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/DataStorageImpl.java 2010-01-19 15:19:58 UTC (rev 1373)
@@ -166,12 +166,12 @@
protected abstract O create(D d);
- LazyPageList<O> execute() throws Exception
+ ListAccess<O> execute() throws Exception
{
Query<D> delegateQ = new Query<D>(q, dataType);
LazyPageList<D> r = delegate.find(delegateQ, null);
final List<D> list = r.getAll();
- ListAccess<O> access = new ListAccess<O>()
+ return new ListAccess<O>()
{
public int getSize() throws Exception
{
@@ -188,13 +188,22 @@
return pages;
}
};
- return new LazyPageList<O>(access, r.getPageSize());
}
}
+ public <T> ListAccess<T> find2(Query<T> q) throws Exception
+ {
+ return find2(q, null);
+ }
+
public <T> LazyPageList<T> find(Query<T> q, Comparator<T> sortComparator) throws Exception
{
+ return new LazyPageList<T>(find2(q, sortComparator), 10);
+ }
+
+ public <T> ListAccess<T> find2(Query<T> q, Comparator<T> sortComparator) throws Exception
+ {
Class<T> type = q.getClassType();
if (type == Page.class)
{
@@ -206,7 +215,7 @@
return new Page(pageData);
}
};
- return (LazyPageList<T>)bilto.execute();
+ return (ListAccess<T>)bilto.execute();
}
else if (type == PageNavigation.class)
{
@@ -218,7 +227,7 @@
return new PageNavigation(page);
}
};
- return (LazyPageList<T>)bilto.execute();
+ return (ListAccess<T>)bilto.execute();
}
else if (type == PortalConfig.class)
{
@@ -230,7 +239,7 @@
return new PortalConfig(portalData);
}
};
- return (LazyPageList<T>)bilto.execute();
+ return (ListAccess<T>)bilto.execute();
}
else
{
Modified: portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/Query.java
===================================================================
--- portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/Query.java 2010-01-19 13:59:59 UTC (rev 1372)
+++ portal/trunk/component/portal/src/main/java/org/exoplatform/portal/config/Query.java 2010-01-19 15:19:58 UTC (rev 1373)
@@ -19,6 +19,8 @@
package org.exoplatform.portal.config;
+import java.io.Serializable;
+
/**
* Created by The eXo Platform SARL .
* Author : Tuan Nguyen
@@ -26,7 +28,7 @@
* Date: Jun 14, 2003
* Time: 1:12:22 PM
*/
-public class Query<T>
+public class Query<T> implements Serializable
{
private String ownerType_;
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/navigation/webui/component/UIPageManagementPortlet.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/navigation/webui/component/UIPageManagementPortlet.java 2010-01-19 13:59:59 UTC (rev 1372)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/navigation/webui/component/UIPageManagementPortlet.java 2010-01-19 15:19:58 UTC (rev 1373)
@@ -20,6 +20,7 @@
package org.exoplatform.navigation.webui.component;
import org.exoplatform.portal.webui.page.UIPageBrowser;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.core.UIPortletApplication;
import org.exoplatform.webui.core.lifecycle.UIApplicationLifecycle;
@@ -32,6 +33,7 @@
*/
@ComponentConfig(lifecycle = UIApplicationLifecycle.class)
+@Serialized
public class UIPageManagementPortlet extends UIPortletApplication
{
public UIPageManagementPortlet() throws Exception
Modified: portal/trunk/webui/core/src/main/java/org/exoplatform/webui/core/UIRepeater.java
===================================================================
--- portal/trunk/webui/core/src/main/java/org/exoplatform/webui/core/UIRepeater.java 2010-01-19 13:59:59 UTC (rev 1372)
+++ portal/trunk/webui/core/src/main/java/org/exoplatform/webui/core/UIRepeater.java 2010-01-19 15:19:58 UTC (rev 1373)
@@ -22,6 +22,7 @@
import org.exoplatform.commons.utils.PageList;
import org.exoplatform.portal.config.NoSuchDataException;
import org.exoplatform.util.ReflectionUtil;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.bean.UIDataFeed;
import org.exoplatform.webui.config.annotation.ComponentConfig;
@@ -35,6 +36,7 @@
* @see UIPageIterator
*/
@ComponentConfig(template = "system:/groovy/webui/core/UIRepeater.gtmpl")
+@Serialized
public class UIRepeater extends UIComponent implements UIDataFeed
{
Modified: portal/trunk/webui/core/src/main/java/org/exoplatform/webui/core/UIVirtualList.java
===================================================================
--- portal/trunk/webui/core/src/main/java/org/exoplatform/webui/core/UIVirtualList.java 2010-01-19 13:59:59 UTC (rev 1372)
+++ portal/trunk/webui/core/src/main/java/org/exoplatform/webui/core/UIVirtualList.java 2010-01-19 15:19:58 UTC (rev 1373)
@@ -22,6 +22,7 @@
import org.exoplatform.commons.utils.PageList;
import org.exoplatform.portal.config.NoSuchDataException;
import org.exoplatform.webui.application.WebuiRequestContext;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.bean.UIDataFeed;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.EventConfig;
@@ -29,6 +30,7 @@
import org.exoplatform.webui.event.EventListener;
@ComponentConfig(template = "system:/groovy/webui/core/UIVirtualList.gtmpl", events = {@EventConfig(listeners = UIVirtualList.LoadNextActionListener.class)})
+@Serialized
public class UIVirtualList extends UIComponentDecorator
{
Added: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/page/PageQueryAccessList.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/page/PageQueryAccessList.java (rev 0)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/page/PageQueryAccessList.java 2010-01-19 15:19:58 UTC (rev 1373)
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.exoplatform.portal.webui.page;
+
+import org.exoplatform.commons.utils.ListAccess;
+import org.exoplatform.commons.utils.PageListAccess;
+import org.exoplatform.container.ExoContainer;
+import org.exoplatform.container.PortalContainer;
+import org.exoplatform.portal.config.DataStorage;
+import org.exoplatform.portal.config.Query;
+import org.exoplatform.portal.config.model.Page;
+
+import java.util.Comparator;
+
+/**
+ * @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
+ * @version $Revision$
+ */
+public class PageQueryAccessList extends PageListAccess<Page, Query<Page>>
+{
+
+ public PageQueryAccessList(Query<Page> state, int pageSize)
+ {
+ super(state, pageSize);
+ }
+
+ @Override
+ protected ListAccess<Page> create(Query<Page> state) throws Exception
+ {
+ ExoContainer container = PortalContainer.getInstance();
+ DataStorage service = (DataStorage)container.getComponentInstance(DataStorage.class);
+ return service.find2(state, new Comparator<Page>()
+ {
+ public int compare(Page page1, Page page2)
+ {
+ return page1.getName().compareTo(page2.getName());
+ }
+ });
+ }
+}
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageBrowser.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageBrowser.java 2010-01-19 13:59:59 UTC (rev 1372)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/page/UIPageBrowser.java 2010-01-19 15:19:58 UTC (rev 1373)
@@ -21,6 +21,7 @@
import org.exoplatform.commons.utils.LazyPageList;
import org.exoplatform.commons.utils.ObjectPageList;
+import org.exoplatform.commons.utils.PageList;
import org.exoplatform.portal.application.PortalRequestContext;
import org.exoplatform.portal.config.DataStorage;
import org.exoplatform.portal.config.Query;
@@ -41,6 +42,7 @@
import org.exoplatform.portal.webui.workspace.UIWorkingWorkspace;
import org.exoplatform.web.application.ApplicationMessage;
import org.exoplatform.webui.application.WebuiRequestContext;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.ComponentConfigs;
import org.exoplatform.webui.config.annotation.EventConfig;
@@ -84,12 +86,13 @@
@EventConfig(listeners = UIPageForm.SelectMembershipActionListener.class, phase = Phase.DECODE),
@EventConfig(listeners = UIMaskWorkspace.CloseActionListener.class, phase = Phase.DECODE)}, initParams = @ParamConfig(name = "PageTemplate", value = "system:/WEB-INF/conf/uiconf/portal/webui/page/PageTemplate.groovy")),
@ComponentConfig(type = UIFormInputSet.class, id = "PermissionSetting", template = "system:/groovy/webui/core/UITabSelector.gtmpl", events = {@EventConfig(listeners = UIFormInputSet.SelectComponentActionListener.class)})})
+@Serialized
public class UIPageBrowser extends UISearch
{
- public static String[] BEAN_FIELD = {"pageId", "title", "accessPermissions", "editPermission"};
+ public static final String[] BEAN_FIELD = {"pageId", "title", "accessPermissions", "editPermission"};
- public static String[] ACTIONS = {"EditInfo", "Delete"};
+ public static final String[] ACTIONS = {"EditInfo", "Delete"};
private boolean showAddNewPage = false;
@@ -137,19 +140,14 @@
{
lastQuery_ = new Query<Page>(null, null, null, null, Page.class);
}
- LazyPageList<Page> pagelist = null;
+/*
try
{
- pagelist = service.find(lastQuery_, new Comparator<Page>()
- {
- public int compare(Page page1, Page page2)
- {
- return page1.getName().compareTo(page2.getName());
- }
- });
+*/
//pagelist.setPageSize(10);
//pageIterator.setPageList(pagelist);
- virtualList.dataBind(pagelist);
+ virtualList.dataBind(new PageQueryAccessList(lastQuery_, 10));
+/*
}
catch (RepositoryException e)
{
@@ -160,8 +158,11 @@
Util.getPortalRequestContext().addUIComponentToUpdateByAjax(uiApp.getUIPopupMessages());
return;
}
+*/
+
+
UIRepeater repeater = (UIRepeater)virtualList.getDataFeed();
- LazyPageList datasource = (LazyPageList)repeater.getDataSource();
+ PageList datasource = repeater.getDataSource();
if (datasource.getAvailable() > 0)
return;
UIApplication uiApp = Util.getPortalRequestContext().getUIApplication();
14 years, 11 months
gatein SVN: r1371 - in portal/trunk: portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component and 5 other directories.
by do-not-reply@jboss.org
Author: julien_viet
Date: 2010-01-19 08:46:24 -0500 (Tue, 19 Jan 2010)
New Revision: 1371
Added:
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/FindMembershipByGroupPageList.java
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/FindMembershipTypesPageList.java
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/FindUsersPageList.java
Modified:
portal/trunk/component/common/src/main/java/org/exoplatform/commons/utils/EmptySerializablePageList.java
portal/trunk/component/common/src/main/java/org/exoplatform/commons/utils/PageListAccess.java
portal/trunk/component/common/src/main/java/org/exoplatform/commons/utils/Safe.java
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIAccountEditInputSet.java
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupDetail.java
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupEditMembershipForm.java
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupExplorer.java
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupForm.java
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupInfo.java
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupManagement.java
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupMembershipForm.java
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIListMembershipType.java
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIListUsers.java
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIMembershipManagement.java
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIMembershipTypeForm.java
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIOrganizationPortlet.java
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIUserInGroup.java
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIUserInfo.java
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIUserManagement.java
portal/trunk/webui/core/src/main/java/org/exoplatform/webui/core/UISearch.java
portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/UISearchForm.java
portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/validator/EmailAddressValidator.java
portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/validator/ExpressionValidator.java
portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/validator/PasswordStringLengthValidator.java
portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/validator/ResourceValidator.java
portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/validator/SpecialCharacterValidator.java
portal/trunk/webui/eXo/src/main/java/org/exoplatform/webui/organization/UIUserMembershipSelector.java
portal/trunk/webui/eXo/src/main/java/org/exoplatform/webui/organization/UIUserProfileInputSet.java
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/ReplicatingStateManager.java
Log:
GTNPORTAL-535 : User and group management portlet replication
Modified: portal/trunk/component/common/src/main/java/org/exoplatform/commons/utils/EmptySerializablePageList.java
===================================================================
--- portal/trunk/component/common/src/main/java/org/exoplatform/commons/utils/EmptySerializablePageList.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/component/common/src/main/java/org/exoplatform/commons/utils/EmptySerializablePageList.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -32,7 +32,7 @@
private static final EmptySerializablePageList instance = new EmptySerializablePageList();
/** . */
- private final ListAccess<E> listAccess = new ListAccess<E>()
+ private transient final ListAccess<E> listAccess = new ListAccess<E>()
{
public E[] load(int index, int length) throws Exception, IllegalArgumentException
{
@@ -60,4 +60,9 @@
// Cast OK
return (PageList<E>)instance;
}
+
+ private Object readResolve()
+ {
+ return instance;
+ }
}
Modified: portal/trunk/component/common/src/main/java/org/exoplatform/commons/utils/PageListAccess.java
===================================================================
--- portal/trunk/component/common/src/main/java/org/exoplatform/commons/utils/PageListAccess.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/component/common/src/main/java/org/exoplatform/commons/utils/PageListAccess.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -25,7 +25,7 @@
* @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
* @version $Revision$
*/
-public abstract class PageListAccess<E, S extends Serializable> extends AbstractSerializablePageList<E> implements Serializable
+public abstract class PageListAccess<E, S> extends AbstractSerializablePageList<E> implements Serializable
{
/** The state that recreates the list. */
@@ -50,12 +50,12 @@
}
@Override
- protected ListAccess<E> connect() throws Exception
+ protected final ListAccess<E> connect() throws Exception
{
return create(state);
}
- protected abstract ListAccess<E> create(S state);
+ protected abstract ListAccess<E> create(S state) throws Exception;
// Serialization
Modified: portal/trunk/component/common/src/main/java/org/exoplatform/commons/utils/Safe.java
===================================================================
--- portal/trunk/component/common/src/main/java/org/exoplatform/commons/utils/Safe.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/component/common/src/main/java/org/exoplatform/commons/utils/Safe.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -24,6 +24,8 @@
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.lang.reflect.UndeclaredThrowableException;
/**
* A class that contains utility method that make the caller not worry much about the unexpectable expected such as
@@ -110,4 +112,41 @@
IOTools.safeClose(is);
}
}
+
+ // THIS CODE IS TEMPORARY
+
+ /** . */
+ private static final Field listAccessField;
+
+ static
+ {
+ try
+ {
+ listAccessField = LazyList.class.getDeclaredField("listAccess");
+ listAccessField.setAccessible(true);
+ }
+ catch (NoSuchFieldException e)
+ {
+ throw new Error(e);
+ }
+ }
+
+ public static <E> ListAccess<E> unwrap(PageList<E> pageList)
+ {
+ LazyPageList<E> lazyPageList = (LazyPageList<E>)pageList;
+
+ //
+ try
+ {
+ // Get LazyList first
+ LazyList<E> lazyList = (LazyList<E>)lazyPageList.getAll();
+
+ // Now get list access
+ return (ListAccess<E>)listAccessField.get(lazyList);
+ }
+ catch (Exception e)
+ {
+ throw new UndeclaredThrowableException(e);
+ }
+ }
}
Added: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/FindMembershipByGroupPageList.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/FindMembershipByGroupPageList.java (rev 0)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/FindMembershipByGroupPageList.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.exoplatform.organization.webui.component;
+
+import org.exoplatform.commons.utils.ListAccess;
+import org.exoplatform.commons.utils.ListAccessImpl;
+import org.exoplatform.commons.utils.PageListAccess;
+import org.exoplatform.container.ExoContainer;
+import org.exoplatform.container.PortalContainer;
+import org.exoplatform.services.organization.Group;
+import org.exoplatform.services.organization.Membership;
+import org.exoplatform.services.organization.MembershipHandler;
+import org.exoplatform.services.organization.OrganizationService;
+
+import java.util.List;
+
+/**
+ * @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
+ * @version $Revision$
+ */
+public class FindMembershipByGroupPageList extends PageListAccess<Membership, String>
+{
+
+ public FindMembershipByGroupPageList(String groupId, int pageSize)
+ {
+ super(groupId, pageSize);
+ }
+
+ @Override
+ protected ListAccess<Membership> create(String state) throws Exception
+ {
+ ExoContainer container = PortalContainer.getInstance();
+ OrganizationService service = (OrganizationService)container.getComponentInstance(OrganizationService.class);
+ MembershipHandler handler = service.getMembershipHandler();
+ Group group = service.getGroupHandler().findGroupById(state);
+ List<Membership> memberships = (List<Membership>)handler.findMembershipsByGroup(group);
+ return new ListAccessImpl<Membership>(Membership.class, memberships);
+ }
+}
Added: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/FindMembershipTypesPageList.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/FindMembershipTypesPageList.java (rev 0)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/FindMembershipTypesPageList.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.exoplatform.organization.webui.component;
+
+import org.exoplatform.commons.utils.ListAccess;
+import org.exoplatform.commons.utils.ListAccessImpl;
+import org.exoplatform.commons.utils.StatelessPageList;
+import org.exoplatform.container.ExoContainer;
+import org.exoplatform.container.PortalContainer;
+import org.exoplatform.services.organization.MembershipType;
+import org.exoplatform.services.organization.OrganizationService;
+
+import java.util.List;
+
+/**
+ * @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
+ * @version $Revision$
+ */
+public class FindMembershipTypesPageList extends StatelessPageList<MembershipType>
+{
+
+ public FindMembershipTypesPageList(int pageSize)
+ {
+ super(pageSize);
+ }
+
+ @Override
+ protected ListAccess<MembershipType> connect() throws Exception
+ {
+ ExoContainer container = PortalContainer.getInstance();
+ OrganizationService service = (OrganizationService)container.getComponentInstance(OrganizationService.class);
+ List<MembershipType> memberships = (List<MembershipType>)service.getMembershipTypeHandler().findMembershipTypes();
+ return new ListAccessImpl<MembershipType>(MembershipType.class, memberships);
+ }
+}
Added: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/FindUsersPageList.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/FindUsersPageList.java (rev 0)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/FindUsersPageList.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.exoplatform.organization.webui.component;
+
+import org.exoplatform.commons.utils.ListAccess;
+import org.exoplatform.commons.utils.PageList;
+import org.exoplatform.commons.utils.PageListAccess;
+import org.exoplatform.commons.utils.Safe;
+import org.exoplatform.container.ExoContainer;
+import org.exoplatform.container.PortalContainer;
+import org.exoplatform.services.organization.OrganizationService;
+import org.exoplatform.services.organization.Query;
+import org.exoplatform.services.organization.User;
+
+/**
+ * @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
+ * @version $Revision$
+ */
+public class FindUsersPageList extends PageListAccess<User, Query>
+{
+ public FindUsersPageList(Query state, int pageSize)
+ {
+ super(state, pageSize);
+ }
+
+ protected ListAccess<User> create(Query state) throws Exception
+ {
+ ExoContainer container = PortalContainer.getInstance();
+ OrganizationService service = (OrganizationService)container.getComponentInstance(OrganizationService.class);
+ PageList<User> pageList = service.getUserHandler().findUsers(state);
+ return Safe.unwrap(pageList);
+ }
+}
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIAccountEditInputSet.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIAccountEditInputSet.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIAccountEditInputSet.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -25,6 +25,7 @@
import org.exoplatform.services.organization.User;
import org.exoplatform.web.application.ApplicationMessage;
import org.exoplatform.webui.application.WebuiRequestContext;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.core.UIApplication;
import org.exoplatform.webui.form.UIFormCheckBoxInput;
import org.exoplatform.webui.form.UIFormInputBase;
@@ -39,6 +40,7 @@
import org.exoplatform.webui.organization.UIUserProfileInputSet;
/** Created by The eXo Platform SARL Author : dang.tung tungcnw(a)gmail.com Jun 25, 2008 */
+@Serialized
public class UIAccountEditInputSet extends UIFormInputSet
{
@@ -50,6 +52,10 @@
final static String CHANGEPASS = "changePassword";
+ public UIAccountEditInputSet()
+ {
+ }
+
public UIAccountEditInputSet(String name) throws Exception
{
super(name);
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupDetail.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupDetail.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupDetail.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -20,6 +20,7 @@
package org.exoplatform.organization.webui.component;
import org.exoplatform.webui.application.WebuiRequestContext;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.core.UIContainer;
@@ -31,6 +32,7 @@
* 10:07:15 AM
*/
@ComponentConfig()
+@Serialized
public class UIGroupDetail extends UIContainer
{
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupEditMembershipForm.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupEditMembershipForm.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupEditMembershipForm.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -26,6 +26,7 @@
import org.exoplatform.services.organization.OrganizationService;
import org.exoplatform.services.organization.User;
import org.exoplatform.web.application.ApplicationMessage;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.core.UIApplication;
@@ -51,6 +52,7 @@
@ComponentConfig(lifecycle = UIFormLifecycle.class, template = "system:/groovy/webui/form/UIForm.gtmpl", events = {
@EventConfig(listeners = UIGroupEditMembershipForm.SaveActionListener.class),
@EventConfig(listeners = UIGroupEditMembershipForm.CancelActionListener.class)})
+@Serialized
public class UIGroupEditMembershipForm extends UIForm
{
@@ -60,9 +62,9 @@
private final static String MEMBER_SHIP = "membership";
- private Membership membership;
+ private String membershipId;
- private Group group;
+ private String groupId;
public UIGroupEditMembershipForm() throws Exception
{
@@ -72,8 +74,8 @@
public void setValue(Membership memberShip, Group selectedGroup) throws Exception
{
- this.membership = memberShip;
- this.group = selectedGroup;
+ this.membershipId = memberShip.getId();
+ this.groupId = selectedGroup.getId();
getUIStringInput(USER_NAME).setValue(memberShip.getUserName());
OrganizationService service = getApplicationComponent(OrganizationService.class);
List<?> collection = (List<?>)service.getMembershipTypeHandler().findMembershipTypes();
@@ -96,8 +98,9 @@
UIApplication uiApp = event.getRequestContext().getUIApplication();
UIPopupWindow uiPopup = uiForm.getParent();
OrganizationService service = uiForm.getApplicationComponent(OrganizationService.class);
- String userName = uiForm.membership.getUserName();
- Group group = uiForm.group;
+ Membership formMembership = service.getMembershipHandler().findMembership(uiForm.membershipId);
+ String userName = formMembership.getUserName();
+ Group group = service.getGroupHandler().findGroupById(uiForm.groupId);
User user = service.getUserHandler().findUserByName(userName);
MembershipHandler memberShipHandler = service.getMembershipHandler();
String memberShipType = uiForm.getUIFormSelectBox(MEMBER_SHIP).getValue();
@@ -111,7 +114,7 @@
uiApp.addMessage(new ApplicationMessage("UIGroupEditMembershipForm.msg.membership-exist", null));
return;
}
- memberShipHandler.removeMembership(uiForm.membership.getId(), true);
+ memberShipHandler.removeMembership(uiForm.membershipId, true);
memberShipHandler.linkMembership(user, group, membershipType, true);
}
catch (Exception e)
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupExplorer.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupExplorer.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupExplorer.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -22,6 +22,7 @@
import org.exoplatform.services.organization.Group;
import org.exoplatform.services.organization.OrganizationService;
import org.exoplatform.webui.application.WebuiRequestContext;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.core.UIBreadcumbs;
@@ -43,6 +44,7 @@
* 10:07:15 AM
*/
@ComponentConfig(events = @EventConfig(listeners = UIGroupExplorer.ChangeNodeActionListener.class))
+@Serialized
public class UIGroupExplorer extends UIContainer
{
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupForm.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupForm.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupForm.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -25,6 +25,7 @@
import org.exoplatform.services.organization.OrganizationService;
import org.exoplatform.services.organization.User;
import org.exoplatform.web.application.ApplicationMessage;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.core.UIApplication;
@@ -43,10 +44,11 @@
@ComponentConfig(lifecycle = UIFormLifecycle.class, template = "system:/groovy/webui/form/UIFormWithTitle.gtmpl", events = {
@EventConfig(listeners = UIGroupForm.SaveActionListener.class),
@EventConfig(phase = Phase.DECODE, listeners = UIGroupForm.BackActionListener.class)})
+@Serialized
public class UIGroupForm extends UIForm
{
- private Group group_;
+ private String groupId;
private String componentName_ = "AddGroup";
@@ -62,22 +64,24 @@
StringLengthValidator.class, 0, 255));
}
- public Group getGroup()
+ public String getGroupId()
{
- return group_;
+ return groupId;
}
public void setGroup(Group group) throws Exception
{
- this.group_ = group;
- if (group_ == null)
+ if (group != null)
{
+ this.groupId = group.getId();
+ getUIStringInput(GROUP_NAME).setEditable(UIFormStringInput.DISABLE);
+ invokeGetBindingBean(group);
+ }
+ else
+ {
getUIStringInput(GROUP_NAME).setEditable(UIFormStringInput.ENABLE);
reset();
- return;
}
- getUIStringInput(GROUP_NAME).setEditable(UIFormStringInput.DISABLE);
- invokeGetBindingBean(group_);
}
public String getName()
@@ -100,9 +104,10 @@
OrganizationService service = uiGroupForm.getApplicationComponent(OrganizationService.class);
UIGroupExplorer uiGroupExplorer = uiGroupManagement.getChild(UIGroupExplorer.class);
- Group currentGroup = uiGroupForm.getGroup();
- if (currentGroup != null)
+ String currentGroupId = uiGroupForm.getGroupId();
+ if (currentGroupId != null)
{
+ Group currentGroup = service.getGroupHandler().findGroupById(currentGroupId);
uiGroupForm.invokeSetBindingBean(currentGroup);
if (currentGroup.getLabel() == null || currentGroup.getLabel().trim().length() == 0)
{
@@ -131,12 +136,15 @@
}
//UIGroupExplorer uiGroupExplorer = uiGroupManagement.getChild(UIGroupExplorer.class) ;
- String currentGroupId = null;
- currentGroup = uiGroupExplorer.getCurrentGroup();
+ Group currentGroup = uiGroupExplorer.getCurrentGroup();
if (currentGroup != null)
{
currentGroupId = currentGroup.getId();
}
+ else
+ {
+ currentGroupId = null;
+ }
String groupName = "/" + uiGroupForm.getUIStringInput(GROUP_NAME).getValue();
GroupHandler groupHandler = service.getGroupHandler();
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupInfo.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupInfo.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupInfo.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -20,6 +20,7 @@
package org.exoplatform.organization.webui.component;
import org.exoplatform.services.organization.Group;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.core.UIContainer;
@@ -31,6 +32,7 @@
* 10:08:51 AM
*/
@ComponentConfig(template = "app:/groovy/organization/webui/component/UIGroupInfoContainer.gtmpl")
+@Serialized
public class UIGroupInfo extends UIContainer
{
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupManagement.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupManagement.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupManagement.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -25,6 +25,7 @@
import org.exoplatform.services.organization.OrganizationService;
import org.exoplatform.web.application.ApplicationMessage;
import org.exoplatform.webui.application.WebuiRequestContext;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.core.UIApplication;
@@ -54,6 +55,7 @@
@EventConfig(listeners = UIGroupManagement.EditGroupActionListener.class)
})
+@Serialized
public class UIGroupManagement extends UIContainer
{
@@ -140,7 +142,7 @@
return;
}
UIGroupForm groupForm = uiGroupManagement.findFirstComponentOfType(UIGroupForm.class);
- if (groupForm.getGroup() != null)
+ if (groupForm.getGroupId() != null)
{
uiApp.addMessage(new ApplicationMessage("UIGroupManagement.msg.Delete", null));
return;
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupMembershipForm.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupMembershipForm.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIGroupMembershipForm.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -26,6 +26,7 @@
import org.exoplatform.services.organization.OrganizationService;
import org.exoplatform.services.organization.User;
import org.exoplatform.web.application.ApplicationMessage;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.ComponentConfigs;
import org.exoplatform.webui.config.annotation.EventConfig;
@@ -65,6 +66,7 @@
@EventConfig(listeners = UIPopupWindow.CloseActionListener.class, name = "ClosePopup"),
@EventConfig(listeners = UIGroupMembershipForm.CloseActionListener.class, name = "Close", phase = Phase.DECODE),
@EventConfig(listeners = UIGroupMembershipForm.AddActionListener.class, name = "Add", phase = Phase.DECODE)})})
+@Serialized
public class UIGroupMembershipForm extends UIForm
{
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIListMembershipType.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIListMembershipType.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIListMembershipType.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -25,6 +25,7 @@
import org.exoplatform.services.organization.OrganizationService;
import org.exoplatform.web.application.ApplicationMessage;
import org.exoplatform.webui.application.WebuiRequestContext;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.core.UIApplication;
@@ -42,6 +43,7 @@
@ComponentConfig(events = {
@EventConfig(listeners = UIListMembershipType.EditMembershipActionListener.class),
@EventConfig(listeners = UIListMembershipType.DeleteMembershipActionListener.class, confirm = "UIListMembershipType.deleteMemberShip")})
+@Serialized
public class UIListMembershipType extends UIContainer
{
@@ -70,17 +72,7 @@
@SuppressWarnings("unchecked")
public void loadData() throws Exception
{
- StatelessPageList<MembershipType> pla = new StatelessPageList<MembershipType>(5)
- {
- @Override
- protected ListAccess<MembershipType> connect() throws Exception
- {
- OrganizationService service = getApplicationComponent(OrganizationService.class);
- List<MembershipType> memberships = (List<MembershipType>)service.getMembershipTypeHandler().findMembershipTypes();
- return new ListAccessImpl<MembershipType>(MembershipType.class, memberships);
- }
- };
- getChild(UIGrid.class).getUIPageIterator().setPageList(pla);
+ getChild(UIGrid.class).getUIPageIterator().setPageList(new FindMembershipTypesPageList(5));
}
public void processRender(WebuiRequestContext context) throws Exception
@@ -121,8 +113,8 @@
UIMembershipManagement membership = uiMembership.getParent();
UIMembershipTypeForm uiForm = membership.findFirstComponentOfType(UIMembershipTypeForm.class);
- MembershipType existMembershipType = uiForm.getMembershipType();
- if (existMembershipType != null && existMembershipType.getName().equals(name))
+ String existMembershipTypeName = uiForm.getMembershipTypeName();
+ if (existMembershipTypeName != null && existMembershipTypeName.equals(name))
{
UIApplication uiApp = event.getRequestContext().getUIApplication();
uiApp.addMessage(new ApplicationMessage("UIMembershipList.msg.InUse", null));
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIListUsers.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIListUsers.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIListUsers.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -19,12 +19,12 @@
package org.exoplatform.organization.webui.component;
-import org.exoplatform.commons.utils.PageList;
import org.exoplatform.portal.config.UserACL;
import org.exoplatform.portal.webui.util.Util;
import org.exoplatform.services.organization.OrganizationService;
import org.exoplatform.services.organization.Query;
import org.exoplatform.web.application.ApplicationMessage;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.core.UIApplication;
@@ -41,7 +41,8 @@
import org.exoplatform.webui.form.UIFormSelectBox;
import org.exoplatform.webui.form.UIFormStringInput;
-import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
/**
@@ -55,29 +56,28 @@
@EventConfig(listeners = UIListUsers.ViewUserInfoActionListener.class),
@EventConfig(listeners = UIListUsers.SelectUserActionListener.class),
@EventConfig(listeners = UIListUsers.DeleteUserActionListener.class, confirm = "UIListUsers.deleteUser")})
+@Serialized
public class UIListUsers extends UISearch
{
- public static String USER_NAME = "userName";
+ public static final String USER_NAME = "userName";
- public static String LAST_NAME = "lastName";
+ public static final String LAST_NAME = "lastName";
- public static String FIRST_NAME = "firstName";
+ public static final String FIRST_NAME = "firstName";
- public static String EMAIL = "email";
+ public static final String EMAIL = "email";
- private static String[] USER_BEAN_FIELD = {USER_NAME, LAST_NAME, FIRST_NAME, EMAIL};
+ private static final String[] USER_BEAN_FIELD = {USER_NAME, LAST_NAME, FIRST_NAME, EMAIL};
- private static String[] USER_ACTION = {"ViewUserInfo", "DeleteUser"};
+ private static final String[] USER_ACTION = {"ViewUserInfo", "DeleteUser"};
- private static List<SelectItemOption<String>> OPTIONS_ = new ArrayList<SelectItemOption<String>>(4);
- static
- {
- OPTIONS_.add(new SelectItemOption<String>(USER_NAME, USER_NAME));
- OPTIONS_.add(new SelectItemOption<String>(LAST_NAME, LAST_NAME));
- OPTIONS_.add(new SelectItemOption<String>(FIRST_NAME, FIRST_NAME));
- OPTIONS_.add(new SelectItemOption<String>(EMAIL, EMAIL));
- }
+ private final static List<SelectItemOption<String>> OPTIONS_ = Collections.unmodifiableList(Arrays.asList(
+ new SelectItemOption<String>(USER_NAME, USER_NAME),
+ new SelectItemOption<String>(LAST_NAME, LAST_NAME),
+ new SelectItemOption<String>(FIRST_NAME, FIRST_NAME),
+ new SelectItemOption<String>(EMAIL, EMAIL)
+ ));
private Query lastQuery_;
@@ -108,10 +108,7 @@
public void search(Query query) throws Exception
{
lastQuery_ = query;
- OrganizationService service = getApplicationComponent(OrganizationService.class);
- PageList pageList = service.getUserHandler().findUsers(query);
- pageList.setPageSize(10);
- grid_.getUIPageIterator().setPageList(pageList);
+ grid_.getUIPageIterator().setPageList(new FindUsersPageList(query, 10));
UIPageIterator pageIterator = grid_.getUIPageIterator();
if (pageIterator.getAvailable() == 0)
{
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIMembershipManagement.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIMembershipManagement.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIMembershipManagement.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -21,6 +21,7 @@
import org.exoplatform.services.organization.MembershipType;
import org.exoplatform.webui.application.WebuiRequestContext;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.core.UIContainer;
@@ -31,6 +32,7 @@
* Jun 23, 2006 10:07:15 AM
*/
@ComponentConfig()
+@Serialized
public class UIMembershipManagement extends UIContainer
{
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIMembershipTypeForm.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIMembershipTypeForm.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIMembershipTypeForm.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -22,6 +22,7 @@
import org.exoplatform.services.organization.MembershipType;
import org.exoplatform.services.organization.OrganizationService;
import org.exoplatform.web.application.ApplicationMessage;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.core.UIApplication;
@@ -40,12 +41,13 @@
@ComponentConfig(lifecycle = UIFormLifecycle.class, template = "system:/groovy/webui/form/UIFormWithTitle.gtmpl", events = {
@EventConfig(listeners = UIMembershipTypeForm.SaveActionListener.class),
@EventConfig(listeners = UIMembershipTypeForm.ResetActionListener.class, phase = Phase.DECODE)})
+@Serialized
public class UIMembershipTypeForm extends UIForm
{
private static String MEMBERSHIP_TYPE_NAME = "name", DESCRIPTION = "description";
- private MembershipType membershipType_;
+ private String membershipTypeName;
public UIMembershipTypeForm() throws Exception
{
@@ -58,20 +60,23 @@
public void setMembershipType(MembershipType membershipType) throws Exception
{
- membershipType_ = membershipType;
- if (membershipType_ == null)
+ if (membershipType == null)
{
getUIStringInput(MEMBERSHIP_TYPE_NAME).setEditable(UIFormStringInput.ENABLE);
return;
}
- getUIStringInput(MEMBERSHIP_TYPE_NAME).setEditable(UIFormStringInput.DISABLE);
- invokeGetBindingBean(membershipType_);
+ else
+ {
+ membershipTypeName = membershipType.getName();
+ getUIStringInput(MEMBERSHIP_TYPE_NAME).setEditable(UIFormStringInput.DISABLE);
+ }
+ invokeGetBindingBean(membershipType);
}
- public MembershipType getMembershipType()
+ public String getMembershipTypeName()
{
- return membershipType_;
- };
+ return membershipTypeName;
+ }
static public class SaveActionListener extends EventListener<UIMembershipTypeForm>
{
@@ -81,7 +86,7 @@
UIMembershipManagement uiMembershipManagement = uiForm.getParent();
OrganizationService service = uiForm.getApplicationComponent(OrganizationService.class);
- MembershipType mt = uiForm.getMembershipType();
+ MembershipType mt = service.getMembershipTypeHandler().findMembershipType(uiForm.membershipTypeName);
if (mt != null)
{
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIOrganizationPortlet.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIOrganizationPortlet.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIOrganizationPortlet.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -21,6 +21,7 @@
import org.exoplatform.portal.webui.portal.UIPortalComponentActionListener.ViewChildActionListener;
import org.exoplatform.services.organization.Query;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.core.UIPortletApplication;
@@ -41,6 +42,7 @@
@EventConfig(listeners = ViewChildActionListener.class)}
)
+@Serialized
public class UIOrganizationPortlet extends UIPortletApplication
{
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIUserInGroup.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIUserInGroup.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIUserInGroup.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -19,7 +19,7 @@
package org.exoplatform.organization.webui.component;
-import org.exoplatform.commons.utils.ObjectPageList;
+import org.exoplatform.commons.utils.EmptySerializablePageList;
import org.exoplatform.commons.utils.PageList;
import org.exoplatform.services.organization.Group;
import org.exoplatform.services.organization.Membership;
@@ -28,6 +28,7 @@
import org.exoplatform.services.organization.User;
import org.exoplatform.services.organization.UserHandler;
import org.exoplatform.webui.application.WebuiRequestContext;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.ComponentConfigs;
import org.exoplatform.webui.config.annotation.EventConfig;
@@ -38,6 +39,7 @@
import org.exoplatform.webui.event.Event;
import org.exoplatform.webui.event.EventListener;
+import java.io.Serializable;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Iterator;
@@ -55,6 +57,7 @@
@EventConfig(listeners = UIUserInGroup.DeleteUserActionListener.class, confirm = "UIUserInGroup.confirm.deleteUser"),
@EventConfig(listeners = UIUserInGroup.EditActionListener.class)}),
@ComponentConfig(type = org.exoplatform.organization.webui.component.UIUserInGroup.UIGridUser.class, id = "UIGridUser", template = "system:/groovy/webui/core/UIGrid.gtmpl")})
+@Serialized
public class UIUserInGroup extends UIContainer
{
@@ -123,14 +126,14 @@
PageList pageList = null;
if (group == null)
{
- pageList = new ObjectPageList(new ArrayList<Object>(), 10);
+ pageList = EmptySerializablePageList.get();
}
else
{
OrganizationService service = getApplicationComponent(OrganizationService.class);
MembershipHandler handler = service.getMembershipHandler();
List<?> memberships = (List<?>)handler.findMembershipsByGroup(group);
- pageList = new ObjectPageList(memberships, 10);
+ pageList = new FindMembershipByGroupPageList(group.getId(), 10);
}
UIGridUser uiGrid = getChild(UIGridUser.class);
pageList.setPageSize(5);
@@ -220,6 +223,7 @@
}
}
+ @Serialized
static public class UIGridUser extends UIGrid
{
@@ -269,19 +273,28 @@
}
- static public class MembershipUser
+ static public class MembershipUser implements Serializable
{
- private User user;
-
private String mtype;
+ private String userName;
+
+ private String firstName;
+
+ private String lastName;
+
+ private String email;
+
private String id;
public MembershipUser(User user, String mtype, String id)
{
this.mtype = mtype;
- this.user = user;
+ this.userName = user.getUserName();
+ this.firstName = user.getFirstName();
+ this.lastName = user.getLastName();
+ this.email = user.getEmail();
this.id = id;
}
@@ -295,34 +308,24 @@
this.mtype = mtype;
}
- public User getUser()
- {
- return user;
- }
-
- public void setUser(User user)
- {
- this.user = user;
- }
-
public String getUserName()
{
- return user.getUserName();
+ return userName;
}
public String getFirstName()
{
- return user.getFirstName();
+ return firstName;
}
public String getLastName()
{
- return user.getLastName();
+ return lastName;
}
public String getEmail()
{
- return user.getEmail();
+ return email;
}
public String getId()
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIUserInfo.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIUserInfo.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIUserInfo.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -23,6 +23,7 @@
import org.exoplatform.services.organization.Query;
import org.exoplatform.services.organization.User;
import org.exoplatform.webui.application.WebuiRequestContext;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.core.UIPopupWindow;
@@ -41,6 +42,7 @@
@EventConfig(listeners = UIUserInfo.SaveActionListener.class),
@EventConfig(listeners = UIUserInfo.BackActionListener.class, phase = Phase.DECODE),
@EventConfig(listeners = UIUserInfo.ToggleChangePasswordActionListener.class, phase = Phase.DECODE)})
+@Serialized
public class UIUserInfo extends UIFormTabPane
{
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIUserManagement.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIUserManagement.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/organization/webui/component/UIUserManagement.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -20,6 +20,7 @@
package org.exoplatform.organization.webui.component;
import org.exoplatform.webui.application.WebuiRequestContext;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.core.UIContainer;
@@ -33,6 +34,7 @@
* 10:07:15 AM
*/
@ComponentConfig()
+@Serialized
public class UIUserManagement extends UIContainer
{
Modified: portal/trunk/webui/core/src/main/java/org/exoplatform/webui/core/UISearch.java
===================================================================
--- portal/trunk/webui/core/src/main/java/org/exoplatform/webui/core/UISearch.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/webui/core/src/main/java/org/exoplatform/webui/core/UISearch.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -19,6 +19,7 @@
package org.exoplatform.webui.core;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.core.model.SelectItemOption;
import org.exoplatform.webui.form.UIFormInputSet;
@@ -36,6 +37,7 @@
* @see UISearchForm
*/
@ComponentConfig()
+@Serialized
abstract public class UISearch extends UIContainer
{
Modified: portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/UISearchForm.java
===================================================================
--- portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/UISearchForm.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/UISearchForm.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -19,6 +19,7 @@
package org.exoplatform.webui.form;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.core.UISearch;
@@ -38,6 +39,7 @@
* Represents a search form
*/
@ComponentConfig(lifecycle = UIFormLifecycle.class, template = "system:/groovy/webui/form/UISearchForm.gtmpl", events = @EventConfig(listeners = UISearchForm.QuickSearchActionListener.class))
+@Serialized
public class UISearchForm extends UIForm
{
/**
Modified: portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/validator/EmailAddressValidator.java
===================================================================
--- portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/validator/EmailAddressValidator.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/validator/EmailAddressValidator.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -20,6 +20,7 @@
package org.exoplatform.webui.form.validator;
import org.exoplatform.web.application.ApplicationMessage;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.core.UIComponent;
import org.exoplatform.webui.exception.MessageException;
import org.exoplatform.webui.form.UIForm;
@@ -33,6 +34,7 @@
*
* Validates whether an email is in the correct format
*/
+@Serialized
public class EmailAddressValidator implements Validator
{
Modified: portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/validator/ExpressionValidator.java
===================================================================
--- portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/validator/ExpressionValidator.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/validator/ExpressionValidator.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -20,6 +20,7 @@
package org.exoplatform.webui.form.validator;
import org.exoplatform.web.application.ApplicationMessage;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.core.UIComponent;
import org.exoplatform.webui.exception.MessageException;
import org.exoplatform.webui.form.UIForm;
@@ -33,12 +34,18 @@
*
* Validates whether this value matches one regular expression.
*/
+@Serialized
public class ExpressionValidator implements Validator
{
private String expression_;
private String key_;
+ // For @Serialized needs
+ public ExpressionValidator()
+ {
+ }
+
public ExpressionValidator(final String expression)
{
expression_ = expression;
Modified: portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/validator/PasswordStringLengthValidator.java
===================================================================
--- portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/validator/PasswordStringLengthValidator.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/validator/PasswordStringLengthValidator.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -20,6 +20,7 @@
package org.exoplatform.webui.form.validator;
import org.exoplatform.web.application.ApplicationMessage;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.core.UIComponent;
import org.exoplatform.webui.exception.MessageException;
import org.exoplatform.webui.form.UIForm;
@@ -33,6 +34,7 @@
*
* Validates whether this value has a length between min and max
*/
+@Serialized
public class PasswordStringLengthValidator implements Validator
{
/**
@@ -45,6 +47,11 @@
*/
private Integer max_ = 0;
+ // For @Serialized needs
+ public PasswordStringLengthValidator()
+ {
+ }
+
public PasswordStringLengthValidator(Integer max)
{
max_ = max;
Modified: portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/validator/ResourceValidator.java
===================================================================
--- portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/validator/ResourceValidator.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/validator/ResourceValidator.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -20,6 +20,7 @@
package org.exoplatform.webui.form.validator;
import org.exoplatform.web.application.ApplicationMessage;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.core.UIComponent;
import org.exoplatform.webui.exception.MessageException;
import org.exoplatform.webui.form.UIForm;
@@ -33,6 +34,7 @@
*
* Validates whether the value is composed of letters, numbers or '_'
*/
+@Serialized
public class ResourceValidator implements Validator
{
Modified: portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/validator/SpecialCharacterValidator.java
===================================================================
--- portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/validator/SpecialCharacterValidator.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/validator/SpecialCharacterValidator.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -20,6 +20,7 @@
package org.exoplatform.webui.form.validator;
import org.exoplatform.web.application.ApplicationMessage;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.core.UIComponent;
import org.exoplatform.webui.exception.MessageException;
import org.exoplatform.webui.form.UIForm;
@@ -31,6 +32,7 @@
* tungcnw(a)gmail.com
* Dec 12, 2007
*/
+@Serialized
public class SpecialCharacterValidator implements Validator
{
Modified: portal/trunk/webui/eXo/src/main/java/org/exoplatform/webui/organization/UIUserMembershipSelector.java
===================================================================
--- portal/trunk/webui/eXo/src/main/java/org/exoplatform/webui/organization/UIUserMembershipSelector.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/webui/eXo/src/main/java/org/exoplatform/webui/organization/UIUserMembershipSelector.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -26,6 +26,7 @@
import org.exoplatform.services.organization.MembershipTypeHandler;
import org.exoplatform.services.organization.OrganizationService;
import org.exoplatform.services.organization.User;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.core.UIGrid;
@@ -36,6 +37,7 @@
import org.exoplatform.webui.form.UIForm;
import org.exoplatform.webui.form.UIFormPopupWindow;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -50,6 +52,7 @@
@ComponentConfig(template = "system:/groovy/organization/webui/component/UIUserMembershipSelector.gtmpl", events = {
@EventConfig(listeners = UIUserMembershipSelector.SelectMembershipActionListener.class),
@EventConfig(listeners = UIUserMembershipSelector.DeleteMembershipActionListener.class, phase = Phase.DECODE, confirm = "UIUserMembershipSelector.deleteMembership")})
+@Serialized
public class UIUserMembershipSelector extends UISelector<String>
{
@@ -59,9 +62,9 @@
private boolean isAdminRole_ = false;
- public static String[] BEAN_FIELD = {"userName", "groupId", "membershipType"};
+ public static final String[] BEAN_FIELD = {"userName", "groupId", "membershipType"};
- public static String[] ACTIONS = {"DeleteMembership"};
+ public static final String[] ACTIONS = {"DeleteMembership"};
public UIUserMembershipSelector() throws Exception
{
@@ -198,7 +201,7 @@
}
}
- static public class Membership
+ static public class Membership implements Serializable
{
private String groupId_;
Modified: portal/trunk/webui/eXo/src/main/java/org/exoplatform/webui/organization/UIUserProfileInputSet.java
===================================================================
--- portal/trunk/webui/eXo/src/main/java/org/exoplatform/webui/organization/UIUserProfileInputSet.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/webui/eXo/src/main/java/org/exoplatform/webui/organization/UIUserProfileInputSet.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -27,6 +27,7 @@
import org.exoplatform.web.application.ApplicationMessage;
import org.exoplatform.webui.application.WebuiRequestContext;
import org.exoplatform.webui.application.portlet.PortletRequestContext;
+import org.exoplatform.webui.application.replication.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.core.UIApplication;
import org.exoplatform.webui.core.UIComponent;
@@ -46,15 +47,20 @@
* Jun 28, 2006
*/
@ComponentConfig(template = "system:/groovy/webui/form/UIVTabInputSet.gtmpl")
+@Serialized
public class UIUserProfileInputSet extends UIFormInputSet
{
private String user_;
- public static String MALE = "male";
+ public final static String MALE = "male";
- public static String FEMALE = "female";
+ public final static String FEMALE = "female";
+ public UIUserProfileInputSet()
+ {
+ }
+
public UIUserProfileInputSet(String name) throws Exception
{
super(name);
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/ReplicatingStateManager.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/ReplicatingStateManager.java 2010-01-19 13:29:36 UTC (rev 1370)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/application/ReplicatingStateManager.java 2010-01-19 13:46:24 UTC (rev 1371)
@@ -19,12 +19,10 @@
package org.exoplatform.portal.application;
-import org.exoplatform.commons.utils.LazyList;
-import org.exoplatform.commons.utils.LazyPageList;
-import org.exoplatform.commons.utils.PageList;
import org.exoplatform.container.ExoContainer;
import org.exoplatform.portal.config.UserPortalConfig;
import org.exoplatform.portal.config.UserPortalConfigService;
+import org.exoplatform.services.organization.Query;
import org.exoplatform.webui.Util;
import org.exoplatform.webui.application.ConfigurationManager;
import org.exoplatform.webui.application.StateManager;
@@ -46,7 +44,6 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
-import java.io.ByteArrayOutputStream;
import java.util.Map;
/**
@@ -119,12 +116,7 @@
try
{
DomainMetaData domainMetaData = new DomainMetaData();
-/*
- domainMetaData.addClassType(PageList.class, true);
- domainMetaData.addClassType(LazyPageList.class, true);
- domainMetaData.addClassType(LazyList.class, true);
- domainMetaData.addClassType(LazyList.class.getName() + "$Batch", true);
-*/
+ domainMetaData.addClassType(Query.class, true);
//
SerializationContext serializationContext = (SerializationContext)session.getAttribute("SerializationContext");
14 years, 11 months
gatein SVN: r1369 - in portal/trunk: portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/dashboard and 9 other directories.
by do-not-reply@jboss.org
Author: thomas.heute(a)jboss.com
Date: 2010-01-19 08:25:44 -0500 (Tue, 19 Jan 2010)
New Revision: 1369
Added:
portal/trunk/gadgets/eXoGadgets/src/main/webapp/locale/Todo/zh_TW_ALL.xml
portal/trunk/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/dashboard/TabbedDashboardPortlet_zh_TW.xml
portal/trunk/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/gadget/GadgetPortlet_zh_TW.xml
portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AccountPortlet_zh_TW.xml
portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AdminToolbarPortlet_zh_TW.xml
portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_zh_TW.xml
portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/GroupNavigationPortlet_zh_TW.xml
portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/OrganizationPortlet_zh_TW.xml
portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/PortalNavigationPortlet_zh_TW.xml
portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/RegisterPortlet_zh_TW.xml
portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/StarToolbarPortlet_zh_TW.xml
portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/UserToolbarPortlet_zh_TW.xml
portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/NavigationPortlet_zh_TW.xml
portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/PortalNavigationPortlet_zh_TW.xml
portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/BreadcumbsPortlet_zh_TW.xml
portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/GroovyPortlet_zh_TW.xml
portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/LogoPortlet_zh_TW.xml
portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/organization/management/executive-board_zh_TW.xml
portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/administrators_zh_TW.xml
portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/guests_zh_TW.xml
portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/users_zh_TW.xml
portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/portal/classic_zh_TW.xml
portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/custom_zh_TW.xml
portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/expression_zh_TW.xml
portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/services_zh_TW.xml
portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_zh_TW.xml
Modified:
portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/common/locales-config.xml
Log:
GTNPORTAL-534: Translation in traditional Chinese
Added: portal/trunk/gadgets/eXoGadgets/src/main/webapp/locale/Todo/zh_TW_ALL.xml
===================================================================
--- portal/trunk/gadgets/eXoGadgets/src/main/webapp/locale/Todo/zh_TW_ALL.xml (rev 0)
+++ portal/trunk/gadgets/eXoGadgets/src/main/webapp/locale/Todo/zh_TW_ALL.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,29 @@
+<!--
+
+ Copyright (C) 2009 eXo Platform SAS.
+
+ This is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this software; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+
+<messagebundle>
+ <msg name="save">
+ Save
+ </msg>
+ <msg name="type_here">
+ Type new task here
+ </msg>
+</messagebundle>
\ No newline at end of file
Added: portal/trunk/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/dashboard/TabbedDashboardPortlet_zh_TW.xml
===================================================================
--- portal/trunk/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/dashboard/TabbedDashboardPortlet_zh_TW.xml (rev 0)
+++ portal/trunk/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/dashboard/TabbedDashboardPortlet_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UITabPaneDashboard>
+ <action>
+ <addNewDashboard>新增數位儀表板</addNewDashboard>
+ <switchShowRange>切換大小</switchShowRange>
+ </action>
+ <msg>
+ <deleteTab>確定要移除這個數位儀表板?</deleteTab>
+ <cannotDeleteLastTab>無法刪除 TAB</cannotDeleteLastTab>
+ <wrongTabName>只可以輸入英文文數字</wrongTabName>
+ </msg>
+ </UITabPaneDashboard>
+</bundle>
Added: portal/trunk/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/gadget/GadgetPortlet_zh_TW.xml
===================================================================
--- portal/trunk/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/gadget/GadgetPortlet_zh_TW.xml (rev 0)
+++ portal/trunk/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/gadget/GadgetPortlet_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UIGadgetEditMode>
+ <title>設定 URL</title>
+ <label>
+ <gadgetUrl>URL:</gadgetUrl>
+ <typeSelector>Type:</typeSelector>
+ <gadgetSelector>Gadget:</gadgetSelector>
+ <option>
+ <remote>遠端 Gadget</remote>
+ <local>本機 Gadget</local>
+ </option>
+ </label>
+ <action>
+ <Save>儲存</Save>
+ </action>
+ </UIGadgetEditMode>
+</bundle>
Added: portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AccountPortlet_zh_TW.xml
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AccountPortlet_zh_TW.xml (rev 0)
+++ portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AccountPortlet_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UIAccountForm>
+ <label>
+ <Profile>使用者資料</Profile>
+ <username>#{word.userName}:</username>
+ <SearchUser>搜尋使用者</SearchUser>
+ <password1x>密碼:</password1x>
+ <password2x>再次確認密碼:</password2x>
+ <password>密碼:</password>
+ <Confirmpassword>再次確認密碼:</Confirmpassword>
+ <firstName>#{word.firstName}:</firstName>
+ <lastName>#{word.lastName}:</lastName>
+ <email>Email 地址:</email>
+ <note>星號為必須輸入資料的欄位</note>
+ <action>
+ <SearchUser>查詢使用者</SearchUser>
+ </action>
+ <Membership>成員</Membership>
+ <option>
+ <male>男</male>
+ <female>女</female>
+ </option>
+ <HomeInfo>通訊資料</HomeInfo>
+ <user>
+ <name>
+ <given>#{word.givenName}: </given>
+ <family>#{word.familyName}:</family>
+ <nickName>#{word.nickName}: </nickName>
+ </name>
+ <bdate>#{word.birthday}:</bdate>
+ <gender>#{word.gender}:</gender>
+ <employer>#{word.employer}: </employer>
+ <department>#{word.department}:</department>
+ <jobtitle>#{word.jobTitle}:</jobtitle>
+ <language>語言</language>
+ <home-info>
+ <postal>
+ <name>#:</name>
+ <street>#{word.street}: </street>
+ <city>#{word.city}:</city>
+ <stateprov>#{word.stateProv}: </stateprov>
+ <postalcode>#{word.postalCode}: </postalcode>
+ <country>#{word.country}:</country>
+ </postal>
+ <telecom>
+ <mobile>
+ <number>#{word.mobile}: </number>
+ </mobile>
+ <telephone>
+ <number>#{word.tel}:</number>
+ </telephone>
+ </telecom>
+ <online>
+ <email>#{word.email}: </email>
+ <uri>#{word.website}:</uri>
+ </online>
+ </home-info>
+ <business-info>
+ <postal>
+ <name>#:</name>
+ <street>#{word.street}:</street>
+ <city>#{word.city}:</city>
+ <stateprov>#{word.stateProv}: </stateprov>
+ <postalcode>#{word.postalCode}:</postalcode>
+ <country>#{word.country}:</country>
+ </postal>
+ <telecom>
+ <mobile>
+ <number>#{word.mobile}: </number>
+ </mobile>
+ <telephone>
+ <number>#{word.tel}:</number>
+ </telephone>
+ </telecom>
+ <online>
+ <email>#{word.email}:</email>
+ <uri>#{word.website}:</uri>
+ </online>
+ </business-info>
+ </user>
+ <BusinessInfo>公司資料</BusinessInfo>
+ </label>
+ <title>新增/修改 帳號</title>
+ <action>
+ <Reset>清除</Reset>
+ <Back>#{word.back}</Back>
+ <Save>#{word.save}</Save>
+ </action>
+ <msg>
+ <user-exist>使用者帳號 '{0}' 已經存在</user-exist>
+ <incorrect-password>你的密碼錯誤</incorrect-password>
+ <sucsesful>
+ <create>
+ <user>已成功地建立使用者了</user>
+ </create>
+ </sucsesful>
+ </msg>
+ <tab>
+ <label>
+ <AccountTemplate>帳號模板</AccountTemplate>
+ <UIUserProfileInputSet>使用者資料</UIUserProfileInputSet>
+ <AccountInputSet>帳號設定</AccountInputSet>
+ <UIUserMembershipSelector>使用者群組</UIUserMembershipSelector>
+ </label>
+ </tab>
+ </UIAccountForm>
+ <UIPopupWindow>
+ <title>
+ <UIGroupMembershipSelector>請選擇使用者群組</UIGroupMembershipSelector>
+ </title>
+ </UIPopupWindow>
+</bundle>
Added: portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AdminToolbarPortlet_zh_TW.xml
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AdminToolbarPortlet_zh_TW.xml (rev 0)
+++ portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AdminToolbarPortlet_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UIAdminToolbarPortlet>
+ <action>
+ <AddPage>新增頁面</AddPage>
+ <EditPage>編輯頁面</EditPage>
+ <CreatePortal>建立子入口網站</CreatePortal>
+ <EditPortal>編輯入口網站</EditPortal>
+ <BrowsePage>管理頁面</BrowsePage>
+ <EditPageAndNavigation>編輯頁面及導覽</EditPageAndNavigation>
+ <Editor>編輯器</Editor>
+ <portal>
+ <Editor>網站編輯器</Editor>
+ </portal>
+ <group>
+ <Editor>群組編輯器</Editor>
+ </group>
+ <user>
+ <Editor>數位儀表板編輯器</Editor>
+ </user>
+ <EditSiteLayout>編輯版面配置</EditSiteLayout>
+ </action>
+ </UIAdminToolbarPortlet>
+</bundle>
Added: portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_zh_TW.xml
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_zh_TW.xml (rev 0)
+++ portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <word>
+ <cancel>取消</cancel>
+ </word>
+ <label>
+ <displayName>顯示名稱: </displayName>
+ <description>說明: </description>
+ </label>
+ <category>
+ <msg>
+ <changeNotExist>類別不存在, 無法儲存</changeNotExist>
+ </msg>
+ </category>
+ <application>
+ <msg>
+ <changeNotExist>應用程式不存在, 無法儲存</changeNotExist>
+ </msg>
+ <label></label>
+ </application>
+ <gadget>
+ <msg>
+ <changeNotExist>Gadget 不存在, 無法儲存</changeNotExist>
+ </msg>
+ </gadget>
+ <UIToolbar>
+ <label>
+ <organize>類別</organize>
+ <portlet>Portlet</portlet>
+ <gadget>Gadget</gadget>
+ </label>
+ </UIToolbar>
+ <UIOrganizer>
+ <label>
+ <addCategory>新增類別</addCategory>
+ <autoImport>匯入應用程式</autoImport>
+ <categories>分類</categories>
+ </label>
+ <title>
+ <editCategory>編輯分類</editCategory>
+ <addApplication>指定應用程式的類別</addApplication>
+ <deleteCategory>刪除分類</deleteCategory>
+ <deleteApplication>刪除應用程式</deleteApplication>
+ </title>
+ <msg>
+ <importAll>This action will automatically create categories and import all the gadgets and portlets on it.</importAll>
+ <deleteCategory>你確定要刪除這個類別及裡面的所有應用程式?</deleteCategory>
+ <deleteApplication>你確定要刪除這個應用程式?</deleteApplication>
+ <emptyCategory>這個類別沒有任何的應用程式, 點選 (+) 鈕來新增應用程式.</emptyCategory>
+ <noCategory>沒有任何分類, 請點選 "新增類別" 或 "自動匯入" 以新增分類.</noCategory>
+ <deleteCategoryInUse>類別正在使用中, 無法刪除.</deleteCategoryInUse>
+ <deleteApplicationInUse>應用程式正在使用中, 無法刪除.</deleteApplicationInUse>
+ <categoryNoExist>這個類別不存在.</categoryNoExist>
+ <applicationNoExist>這個應用程式不存在.</applicationNoExist>
+ </msg>
+ </UIOrganizer>
+ <UIApplicationRegistryEditMode>
+ <title>匯入應用程式</title>
+ <label>
+ <showImport>Change Show Import</showImport>
+ </label>
+ </UIApplicationRegistryEditMode>
+ <UIPermissionForm>
+ <label>
+ <UIListPermissionSelector></UIListPermissionSelector>
+ </label>
+ </UIPermissionForm>
+ <UIApplicationInfo>
+ <label>
+ <name>名稱: </name>
+ <displayName>#{label.displayName}</displayName>
+ <description>#{label.description}</description>
+ <accessPermissions>使用權限</accessPermissions>
+ </label>
+ <title>
+ <editApplication>編輯應用程式</editApplication>
+ </title>
+ </UIApplicationInfo>
+ <UIApplicationForm>
+ <title>修改應用程式資訊</title>
+ <label>
+ <applicationName>名稱: </applicationName>
+ <displayName>#{label.displayName}</displayName>
+ <description>#{label.description}</description>
+ </label>
+ <action>
+ <Save>#{word.save}</Save>
+ <Cancel>#{word.cancel}</Cancel>
+ </action>
+ </UIApplicationForm>
+ <UIAddApplicationForm>
+ <header>
+ <input>請選擇</input>
+ <label>名稱</label>
+ <description>說明</description>
+ </header>
+ <label>
+ <option>
+ <portlet>Portlet</portlet>
+ <gadget>Gadget</gadget>
+ </option>
+ <displayName>#{label.displayName}</displayName>
+ <type>應用程式類別</type>
+ </label>
+ <action>
+ <Add>新增</Add>
+ <Cancel>#{word.cancel}</Cancel>
+ </action>
+ <msg>
+ <PortletExist>這個應用程式已存在類別中, 請選擇其他!</PortletExist>
+ <appNotExists>請選擇一個應用程式.</appNotExists>
+ </msg>
+ </UIAddApplicationForm>
+ <UICategoryForm>
+ <label>
+ <name>類別名稱: </name>
+ <displayName>#{label.displayName}</displayName>
+ <description>#{label.description}</description>
+ <UIListPermissionSelector></UIListPermissionSelector>
+ </label>
+ <action>
+ <Save>#{word.save}</Save>
+ <Cancel>#{word.cancel}</Cancel>
+ </action>
+ <msg>
+ <SameName>類別已經存在, 請選擇其他!</SameName>
+ </msg>
+ <tab>
+ <label>
+ <categoryPermission>權限設定</categoryPermission>
+ <categorySetting>類別設定</categorySetting>
+ </label>
+ </tab>
+ </UICategoryForm>
+ <UIPortletManagement>
+ <title>
+ <local>LOCAL</local>
+ <remote>REMOTE</remote>
+ </title>
+ <msg>
+ <noPortlet>There are no Portlets available.</noPortlet>
+ </msg>
+ </UIPortletManagement>
+ <UIPortletInfo>
+ <label>
+ <name>Portlet 名稱: </name>
+ <display>#{label.displayName}</display>
+ <description>#{label.description}</description>
+ </label>
+ <title>
+ <portletPreferences>Portlet 設定</portletPreferences>
+ </title>
+ <msg>
+ <noPortletPreferences>沒有 Portlet 設定</noPortletPreferences>
+ </msg>
+ </UIPortletInfo>
+ <UIGadgetManagement>
+ <label>
+ <addRemote>新增一個 remote gadget</addRemote>
+ <createNew>建立一個新 gadget</createNew>
+ </label>
+ <title>
+ <deleteGadget>刪除 Gadget</deleteGadget>
+ </title>
+ <msg>
+ <noGadget>沒有任何的 Gadgets.</noGadget>
+ <deleteGadgetInUse>Gadget 正在使用, 無法刪除.</deleteGadgetInUse>
+ <deleteGadget>你確定要刪除這個 gadget?</deleteGadget>
+ </msg>
+ </UIGadgetManagement>
+ <UIGadgetInfo>
+ <label>
+ <gadgetDetails>Gadget 詳細資料</gadgetDetails>
+ <name>Gadget 名稱: </name>
+ <displayName>#{label.displayName}</displayName>
+ <description>#{label.description}</description>
+ <viewUrl>查看 URL: </viewUrl>
+ <editUrl>編輯 URL:</editUrl>
+ <reference>參照: </reference>
+ <categories>類別:</categories>
+ <categories>
+ <guide>你必須新增這個 Gadget 到類別中, 才可以在數位儀表板中使用. </guide>
+ <clickHere>按此新增類別</clickHere>
+ </categories>
+ </label>
+ <title>
+ <refresh>重整資訊</refresh>
+ <editGadget>編輯 Gadget</editGadget>
+ <copy>複製這個 Gadget 到網站</copy>
+ </title>
+ <msg>
+ <gadgetNotExist>Gadget 已不存在,無法執行. </gadgetNotExist>
+ </msg>
+ </UIGadgetInfo>
+ <UICategorySelector>
+ <header>
+ <choose>選擇</choose>
+ <categoryName>類別名稱</categoryName>
+ </header>
+ <action>
+ <Save>儲存</Save>
+ <Cancel>取消</Cancel>
+ </action>
+ <msg>
+ <NoCategory>沒有任何類別</NoCategory>
+ </msg>
+ </UICategorySelector>
+ <UIAddGadget>
+ <action>
+ <Add>新增</Add>
+ <Cancel>#{word.cancel}</Cancel>
+ </action>
+ <label>
+ <url>URL</url>
+ <urlExist>這個 URL 已存在, 請選擇其他!</urlExist>
+ <urlError>URL: '{0}' 中的資料無效</urlError>
+ </label>
+ </UIAddGadget>
+ <UIGadgetEditor>
+ <label>
+ <source>來源: </source>
+ </label>
+ <action>
+ <Save>#{word.save}</Save>
+ <Cancel>#{word.cancel}</Cancel>
+ </action>
+ <msg>
+ <invalidSpec>來源不符合 Gadget 標準.</invalidSpec>
+ </msg>
+ </UIGadgetEditor>
+ <UIListPermissionSelector>
+ <header>
+ <groupId>群組</groupId>
+ <membership>成員</membership>
+ </header>
+ </UIListPermissionSelector>
+ <UIListPermissionSelectorPopup>
+ <title>
+ <ListPermissionSelector>設定權限</ListPermissionSelector>
+ </title>
+ </UIListPermissionSelectorPopup>
+</bundle>
Added: portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/GroupNavigationPortlet_zh_TW.xml
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/GroupNavigationPortlet_zh_TW.xml (rev 0)
+++ portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/GroupNavigationPortlet_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UIPageNavigationForm>
+ <action>
+ <ClosePopup>#{word.close}</ClosePopup>
+ <Save>#{word.save}</Save>
+ </action>
+ </UIPageNavigationForm>
+</bundle>
\ No newline at end of file
Added: portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/OrganizationPortlet_zh_TW.xml
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/OrganizationPortlet_zh_TW.xml (rev 0)
+++ portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/OrganizationPortlet_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,379 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UIOrganizationPortlet>
+ <label>
+ <userManagement>使用者管理</userManagement>
+ <groupManagement>群組管理</groupManagement>
+ <membershipManagement>使用者群組管理</membershipManagement>
+ </label>
+ </UIOrganizationPortlet>
+ <UIMembershipTypeForm>
+ <title>新增/修改 群組成員</title>
+ <label>
+ <name>名稱 </name>
+ <description>說明 </description>
+ </label>
+ <action>
+ <Save>#{word.save}</Save>
+ <Back>#{word.back}</Back>
+ <Reset>清除</Reset>
+ </action>
+ <msg>
+ <SameName>群組成員關係已存在, 請輸入其他</SameName>
+ <MembershipNotExist> 群組成員 [{0}] 不存在或以被刪除.</MembershipNotExist>
+ </msg>
+ </UIMembershipTypeForm>
+ <UIGroupEditMembershipForm>
+ <label>
+ <username>使用者</username>
+ <membership>使用所屬群組</membership>
+ </label>
+ <action>
+ <Save>儲存</Save>
+ <Cancel>清除</Cancel>
+ </action>
+ <msg>
+ <membership-delete>無法儲存,群組成員已被移除!.</membership-delete>
+ <membership-exist>"群組類別已存在,請選擇其他.</membership-exist>
+ </msg>
+ </UIGroupEditMembershipForm>
+ <EditMembership>
+ <title>
+ <UIGroupEditMembershipForm>編輯群組成員</UIGroupEditMembershipForm>
+ <EditMembership>編輯群組成員</EditMembership>
+ </title>
+ </EditMembership>
+ <UIGroupMembershipForm>
+ <label>
+ <title>群組成員</title>
+ <username>使用者</username>
+ <membership>群組成員</membership>
+ <SearchUser>選擇使用者</SearchUser>
+ <Refresh>重新顯示</Refresh>
+ </label>
+ <action>
+ <Save>#{word.save}</Save>
+ </action>
+ <title>新增成員</title>
+ </UIGroupMembershipForm>
+ <SearchUserForm>
+ <label>
+ <option>
+ <userName>#{word.userName}</userName>
+ <firstName>#{word.firstName}</firstName>
+ <lastName>#{word.lastName}</lastName>
+ <email>#{word.email}</email>
+ </option>
+ </label>
+ </SearchUserForm>
+ <SearchUser>
+ <title>
+ <UIUserSelector>選擇使用者</UIUserSelector>
+ <SearchUser>選擇使用者</SearchUser>
+ <ListUserForSearch>尋找使用者</ListUserForSearch>
+ </title>
+ </SearchUser>
+ <UIMemberShipForm>
+ <msg>
+ <membershipType-exist>The membership type '{0}' is taken</membershipType-exist>
+ </msg>
+ </UIMemberShipForm>
+ <UIMembershipForm>
+ <label>
+ <username>使用者</username>
+ <membership>所屬群組</membership>
+ <name>群組名稱</name>
+ <description>#{word.description}</description>
+ </label>
+ <action>
+ <Save>#{word.save}</Save>
+ <Back>#{word.back}</Back>
+ </action>
+ </UIMembershipForm>
+ <UIListUsers>
+ <header>
+ <userName>#{word.userName}</userName>
+ <lastName>#{word.lastName}</lastName>
+ <firstName>#{word.firstName}</firstName>
+ <email>#{word.email}</email>
+ <action>#{word.action}</action>
+ </header>
+ <action>
+ <title>
+ <DeleteUser>刪除使用者</DeleteUser>
+ <SelectUser>選擇使用者</SelectUser>
+ <ViewUserInfo>編輯使用者資訊</ViewUserInfo>
+ </title>
+ </action>
+ <label>
+ <option>
+ <userName>#{word.userName}</userName>
+ <firstName>#{word.firstName}</firstName>
+ <lastName>#{word.lastName}</lastName>
+ <email>#{word.email}</email>
+ </option>
+ </label>
+ <msg>
+ <DeleteSuperUser>{0} 是系統預設管理者, 你不可以刪除</DeleteSuperUser>
+ </msg>
+ <deleteUser>你確定要刪除這個使用者: {0} ?</deleteUser>
+ </UIListUsers>
+ <UIListMembershipType>
+ <deleteMemberShip>你確定要刪除這個使用者群組?</deleteMemberShip>
+ </UIListMembershipType>
+ <UIUserInfo>
+ <title>使用者個人資訊</title>
+ <tab>
+ <label>
+ <AccountInputSet>帳號資料</AccountInputSet>
+ <UIUserProfileInputSet>個人資料</UIUserProfileInputSet>
+ <UIUserMembershipSelector>所屬群組</UIUserMembershipSelector>
+ <UIAccountEditInputSet>帳號資訊</UIAccountEditInputSet>
+ </label>
+ </tab>
+ <label>
+ <changePassword>變更密碼:</changePassword>
+ <newPassword>新密碼:</newPassword>
+ <confirmPassword>再確認密碼: </confirmPassword>
+ <Profile>使用者資料</Profile>
+ <userName>#{word.userName}: </userName>
+ <password>密碼 :</password>
+ <Confirmpassword>再確認密碼: </Confirmpassword>
+ <firstName>#{word.firstName}:</firstName>
+ <lastName>#{word.lastName}:</lastName>
+ <email>Email:</email>
+ <user>
+ <language>#{word.language}:</language>
+ <name>
+ <given>#{word.givenName}: </given>
+ <family>#{word.familyName}: </family>
+ <nickName>#{word.nickName}: </nickName>
+ </name>
+ <bdate>#{word.birthday}: </bdate>
+ <gender>#{word.gender}: </gender>
+ <employer>#{word.employer}: </employer>
+ <department>#{word.department}: </department>
+ <jobtitle>#{word.jobTitle}: </jobtitle>
+ <home-info>
+ <postal>
+ <name>#:</name>
+ <street>#{word.street}: </street>
+ <city>#{word.city}: </city>
+ <stateprov>#{word.stateProv}: </stateprov>
+ <postalcode>#{word.postalCode}: </postalcode>
+ <country>#{word.country}: </country>
+ </postal>
+ <telecom>
+ <mobile>
+ <number>#{word.mobile}:</number>
+ </mobile>
+ <telephone>
+ <number>#{word.tel}:</number>
+ </telephone>
+ </telecom>
+ <online>
+ <email>#{word.email}: </email>
+ <uri>Website:</uri>
+ </online>
+ </home-info>
+ <business-info>
+ <postal>
+ <name>#:</name>
+ <city>#{word.city}:</city>
+ <stateprov>州/省:</stateprov>
+ <postalcode>郵遞區號:</postalcode>
+ <country>#{word.country}:</country>
+ </postal>
+ <telecom>
+ <mobile>
+ <number>#{word.mobile}:</number>
+ </mobile>
+ <telephone>
+ <number>#{word.tel}:</number>
+ </telephone>
+ </telecom>
+ <online>
+ <email>#{word.email}:</email>
+ <uri>#{word.website}:</uri>
+ </online>
+ </business-info>
+ </user>
+ <HomeInfo>通訊資料</HomeInfo>
+ <option>
+ <male>男</male>
+ <female>女</female>
+ <en>英文</en>
+ <ma>馬來文</ma>
+ <vi>越南文</vi>
+ <ar>阿拉伯文</ar>
+ <fr>法文</fr>
+ <ru>俄文</ru>
+ <zh_CN>簡體中文</zh_CN>
+ <zh_TW>正體中文</zh_TW>
+ </option>
+ <BusinessInfo>工作資訊</BusinessInfo>
+ </label>
+ <action>
+ <Back>#{word.cancel}</Back>
+ <Save>#{word.save}</Save>
+ </action>
+ </UIUserInfo>
+ <UIUserInGroup>
+ <confirm>
+ <deleteUser>你要從群組 {1} 中刪除使用者 {0} ?</deleteUser>
+ </confirm>
+ <header>
+ <userName>#{word.userName}</userName>
+ <lastName>#{word.lastName}</lastName>
+ <firstName>#{word.firstName}</firstName>
+ <email>#{word.email}</email>
+ <action>#{word.action}</action>
+ <membershipType>群組類別</membershipType>
+ <lastLoginTime>上次登入時間</lastLoginTime>
+ </header>
+ <label>
+ <username>#{word.userName}</username>
+ <membership>群組成員</membership>
+ </label>
+ <action>
+ <title>
+ <DeleteUser>刪除成員</DeleteUser>
+ <Edit>編輯成員</Edit>
+ </title>
+ </action>
+ </UIUserInGroup>
+ <UIGroupInfo>
+ <tab>
+ <label>
+ <UIUserInGroup>群組成員</UIUserInGroup>
+ </label>
+ </tab>
+ <label>
+ <UIUserInGroup></UIUserInGroup>
+ </label>
+ <title>群組資訊</title>
+ </UIGroupInfo>
+ <UIMembershipList>
+ <header>
+ <name>群組名稱</name>
+ <createdDate>建立日期</createdDate>
+ <modifiedDate>修改日期</modifiedDate>
+ <action>#{word.action}</action>
+ <description>#{word.description}</description>
+ </header>
+ <action>
+ <title>
+ <EditMembership>編輯群組成員</EditMembership>
+ <DeleteMembership>刪除群組成員</DeleteMembership>
+ </title>
+ </action>
+ <msg>
+ <InUse>群組正在使用中, 你不可刪除</InUse>
+ <DeleteMandatory>系統保留的群組你不可刪除</DeleteMandatory>
+ </msg>
+ </UIMembershipList>
+ <UIUserMembershipSelector>
+ <deleteMembership>你確定要刪除?</deleteMembership>
+ </UIUserMembershipSelector>
+ <AddGroup>
+ <title>建立新群組</title>
+ <action>
+ <Save>#{word.save}</Save>
+ <Back>#{word.cancel}</Back>
+ </action>
+ </AddGroup>
+ <EditGroup>
+ <title>修改群組</title>
+ <action>
+ <Save>#{word.save}</Save>
+ <Back>#{word.cancel}</Back>
+ </action>
+ </EditGroup>
+ <UIGroupForm>
+ <label>
+ <groupName>群組名稱</groupName>
+ <description>說明</description>
+ <label>標籤</label>
+ </label>
+ <msg>
+ <group-exist>這個群組已經存在, 請選擇其他</group-exist>
+ <group-not-exist>群組 "{0}" 不存在, 或已經被刪除.</group-not-exist>
+ </msg>
+ </UIGroupForm>
+ <UITabPane>
+ <title>
+ <UISharedNavigationForm>導覽器分享</UISharedNavigationForm>
+ <UISharedPortalForm>入口網分享</UISharedPortalForm>
+ <UIUserInGroup>群組資訊</UIUserInGroup>
+ <UISharedNavigation>群組頁面導覽</UISharedNavigation>
+ </title>
+ </UITabPane>
+ <UISharedNavigationForm>
+ <action>
+ <Save>#{word.save}</Save>
+ <Back>#{word.back}</Back>
+ <Remove>移除</Remove>
+ </action>
+ <label>
+ <navigation>導覽</navigation>
+ <description>說明</description>
+ <membership>群組關係</membership>
+ <priority>順序</priority>
+ </label>
+ <tab>
+ <label>
+ <SharedNavigation>導覽分享設定</SharedNavigation>
+ <Permission>權限選擇</Permission>
+ </label>
+ </tab>
+ <msg>
+ <user-nonexist>使用者 "{0}" 不存在</user-nonexist>
+ </msg>
+ </UISharedNavigationForm>
+ <UISharedNavigation>
+ <msg>
+ <notSelected>你至少要選擇一個群組!</notSelected>
+ </msg>
+ <label>
+ <userNavigation>使用者導覽名稱</userNavigation>
+ <priority>順序</priority>
+ </label>
+ <action>
+ <Save>儲存</Save>
+ </action>
+ </UISharedNavigation>
+ <UISharedPortalForm>
+ <action>
+ <Save>#{word.save}</Save>
+ <Back>#{word.back}</Back>
+ <Remove>移除</Remove>
+ </action>
+ <label>
+ <portal>入口網</portal>
+ <description>說明</description>
+ <membership>使用者</membership>
+ <priority>順序</priority>
+ </label>
+ <tab>
+ <label>
+ <SharedPortal>入口網設定</SharedPortal>
+ <Permission>權限選擇</Permission>
+ </label>
+ </tab>
+ <msg>
+ <user-nonexist>使用者 "{0}" 不存在</user-nonexist>
+ </msg>
+ </UISharedPortalForm>
+ <UIGroupSharedInfo>
+ <title>資訊分享</title>
+ </UIGroupSharedInfo>
+ <UIGroupManagement>
+ <label>
+ <Groups>群組</Groups>
+ <AddGroup>新增群組</AddGroup>
+ <EditGroup>編輯已選擇群組</EditGroup>
+ <DeleteGroup>刪除已選群組</DeleteGroup>
+ </label>
+ <deleteGroup>你確定要刪除這個群組?</deleteGroup>
+ </UIGroupManagement>
+</bundle>
Added: portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/PortalNavigationPortlet_zh_TW.xml
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/PortalNavigationPortlet_zh_TW.xml (rev 0)
+++ portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/PortalNavigationPortlet_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UISiteManagement>
+ <action>
+ <addNewPortal>Add New Portal</addNewPortal>
+ </action>
+ <label>
+ <editLayout>Edit Layout</editLayout>
+ <editNav>Edit Navigation</editNav>
+ <editPortalProp>Edit Portal's Properties</editPortalProp>
+ <deletePortal>Delete</deletePortal>
+ </label>
+ </UISiteManagement>
+</bundle>
\ No newline at end of file
Added: portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/RegisterPortlet_zh_TW.xml
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/RegisterPortlet_zh_TW.xml (rev 0)
+++ portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/RegisterPortlet_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UIRegisterForm>
+ <registerWithSuccess>
+ <message>You have successfully registered a new account! </message>
+ </registerWithSuccess>
+ <title>Register New Account</title>
+ <label>
+ <action>
+ <CheckUsernameAvailability>Search User</CheckUsernameAvailability>
+ </action>
+ </label>
+ </UIRegisterForm>
+</bundle>
\ No newline at end of file
Added: portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/StarToolbarPortlet_zh_TW.xml
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/StarToolbarPortlet_zh_TW.xml (rev 0)
+++ portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/StarToolbarPortlet_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UIStarToolbarPortlet>
+ <item>
+ <ChangeLanguage>變更語系</ChangeLanguage>
+ <ChangeSkin>變更外觀</ChangeSkin>
+ <AccountSetting>帳號設定</AccountSetting>
+ <Logout>登出</Logout>
+ </item>
+ </UIStarToolbarPortlet>
+</bundle>
Added: portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/UserToolbarPortlet_zh_TW.xml
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/UserToolbarPortlet_zh_TW.xml (rev 0)
+++ portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/UserToolbarPortlet_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+</bundle>
\ No newline at end of file
Added: portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/NavigationPortlet_zh_TW.xml
===================================================================
--- portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/NavigationPortlet_zh_TW.xml (rev 0)
+++ portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/NavigationPortlet_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <javax>
+ <portlet>
+ <title>Navigation Portlet</title>
+ </portlet>
+ </javax>
+</bundle>
\ No newline at end of file
Added: portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/PortalNavigationPortlet_zh_TW.xml
===================================================================
--- portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/PortalNavigationPortlet_zh_TW.xml (rev 0)
+++ portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/PortalNavigationPortlet_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <javax>
+ <portlet>
+ <title>Navigation Portlet</title>
+ </portlet>
+ </javax>
+</bundle>
\ No newline at end of file
Added: portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/BreadcumbsPortlet_zh_TW.xml
===================================================================
--- portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/BreadcumbsPortlet_zh_TW.xml (rev 0)
+++ portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/BreadcumbsPortlet_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <javax>
+ <portlet>
+ <title>Breadcumbs Portlet</title>
+ </portlet>
+ </javax>
+</bundle>
\ No newline at end of file
Added: portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/GroovyPortlet_zh_TW.xml
===================================================================
--- portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/GroovyPortlet_zh_TW.xml (rev 0)
+++ portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/GroovyPortlet_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+<UIGroovyPortlet>
+<note>
+<Text>這是Groovy Portlet(範例Portlet),將來可以將其開發成web應用。</Text>
+</note>
+</UIGroovyPortlet>
+<UIIFrameEditMode>
+<title>更改URL</title>
+<label>
+<iframeUrl>URL</iframeUrl>
+<editmode>編輯模式</editmode>
+</label>
+<action>
+<Save>保存</Save>
+</action>
+</UIIFrameEditMode>
+<UIBannerPortlet>
+<action>
+<changeLanguage>更改語言</changeLanguage>
+</action>
+</UIBannerPortlet>
+
+<UIHomePagePortlet>
+<Label>
+<Title>讓你感受全新體驗的 JBoss GateIn 3.0:</Title>
+<Intro>新版本增加了新的Web 2.0界面<br/>經典和WebOS桌面佈局<br/>拖放功能,頁面導覽<br/>等等。 。 。</Intro>
+<Slogan>eXo和JBoss Portal最好的Portal平台<div>GateIn 3.0</div></Slogan>
+<Username>用戶名:</Username>
+<Password>密碼:</Password>
+</Label>
+</UIHomePagePortlet>
+</bundle>
Added: portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/LogoPortlet_zh_TW.xml
===================================================================
--- portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/LogoPortlet_zh_TW.xml (rev 0)
+++ portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/LogoPortlet_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UILogoPortlet>
+ <note>
+ <Text>JBoss GateIn</Text>
+ </note>
+ <action>
+ <changeLanguage>變更語言</changeLanguage>
+ <Register>註冊</Register>
+ <signout>登出</signout>
+ <signin>登入</signin>
+ </action>
+ <label>
+ <Welcome>歡迎來到 GateIn</Welcome>
+ </label>
+ </UILogoPortlet>
+ <UILogoEditMode>
+ <title>更改 URL</title>
+ <label>
+ <logoUrl>URL</logoUrl>
+ <editmode>更改模式</editmode>
+ </label>
+ <action>
+ <Save>儲存</Save>
+ </action>
+ </UILogoEditMode>
+</bundle>
Added: portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/organization/management/executive-board_zh_TW.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/organization/management/executive-board_zh_TW.xml (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/organization/management/executive-board_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <organization>
+ <title>組織圖</title>
+ <newstaff>新增人員</newstaff>
+ <management>使用者與群組管理</management>
+ </organization>
+</bundle>
Added: portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/administrators_zh_TW.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/administrators_zh_TW.xml (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/administrators_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <administration>
+ <title>系統管理</title>
+ <application-registry>應用程式註冊</application-registry>
+ <newAccount>新增帳號</newAccount>
+ <community-management>社群管理</community-management>
+ <i18n>多國語系</i18n>
+ <console>控制台</console>
+ <pageManagement>網頁管理</pageManagement>
+ </administration>
+</bundle>
Added: portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/guests_zh_TW.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/guests_zh_TW.xml (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/guests_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <platform>
+ <guests>
+ <register>註冊</register>
+ <sitemap>網站導覽</sitemap>
+ <link>網頁連結</link>
+ </guests>
+ </platform>
+</bundle>
Added: portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/users_zh_TW.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/users_zh_TW.xml (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/users_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <platform>
+ <users>
+ <iframe>IFrame</iframe>
+ <mylink>我的連結</mylink>
+ <mylink-blog>部落格</mylink-blog>
+ <mylink-google>Google</mylink-google>
+ <mylink-facebook>Facebook</mylink-facebook>
+ <sitemap>網站導覽</sitemap>
+ <dashboard>數位儀表板</dashboard>
+ </users>
+ </platform>
+</bundle>
Added: portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/portal/classic_zh_TW.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/portal/classic_zh_TW.xml (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/portal/classic_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <portal>
+ <classic>
+ <home>首頁</home>
+ <sitemap>網站導覽</sitemap>
+ <groupnavigation>瀏覽群組</groupnavigation>
+ <portalnavigation>瀏覽入口網</portalnavigation>
+ <register>註冊</register>
+ <webexplorer>網頁瀏覽器</webexplorer>
+ </classic>
+ </portal>
+ <UIAddNewApplication>
+ <label>
+ <AddApplication >新增應用程式</AddApplication >
+ </label>
+ </UIAddNewApplication>
+</bundle>
Added: portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/custom_zh_TW.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/custom_zh_TW.xml (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/custom_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <test>測試</test>
+</bundle>
Added: portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/expression_zh_TW.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/expression_zh_TW.xml (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/expression_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <word>
+ <accessPermission>存取權限</accessPermission>
+ <abort>離開</abort>
+ <action>動作</action>
+ <back>回上頁</back>
+ <birthday>生日</birthday>
+ <cancel>取消</cancel>
+ <category>類別</category>
+ <change>變更</change>
+ <city>城市</city>
+ <close>關閉</close>
+ <comment>附註</comment>
+ <content>內容</content>
+ <country>國家</country>
+ <date>日期</date>
+ <decorator>外框</decorator>
+ <department>部門</department>
+ <description>說明</description>
+ <editPermission>編輯權限</editPermission>
+ <email>Email</email>
+ <employer>公司</employer>
+ <familyName>姓 </familyName>
+ <finish>完成</finish>
+ <firstName>名 </firstName>
+ <format>格式</format>
+ <groupId>群組 ID</groupId>
+ <gender>性別</gender>
+ <givenName>名 </givenName>
+ <height>高</height>
+ <icon>Icon</icon>
+ <jobTitle>職稱</jobTitle>
+ <locale>語系</locale>
+ <label>標籤</label>
+ <language>語言</language>
+ <lastName>姓</lastName>
+ <mobile>手機</mobile>
+ <name>姓名</name>
+ <nickName>別名</nickName>
+ <next>下一步</next>
+ <owner>擁有者</owner>
+ <postalCode>郵遞區號</postalCode>
+ <refresh>重整</refresh>
+ <restore>復原</restore>
+ <save>儲存</save>
+ <stateProv>州/省</stateProv>
+ <street>街</street>
+ <style>樣式</style>
+ <subject>主題</subject>
+ <summary>總結</summary>
+ <skin>外觀</skin>
+ <template>模板</template>
+ <tel>電話</tel>
+ <title>標題</title>
+ <uri>位址</uri>
+ <userName>帳號</userName>
+ <update>更新</update>
+ <viewPermission>瀏覽權限</viewPermission>
+ <width>寬</width>
+ <website>網站</website>
+ </word>
+</bundle>
Added: portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/services_zh_TW.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/services_zh_TW.xml (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/services_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <EmptyStringValidator>
+ <msg>
+ <empty-input>欄位 "{0}" 為必填</empty-input>
+ </msg>
+ </EmptyStringValidator>
+ <EmailAddressValidator>
+ <msg>
+ <invalid-email>您在欄位 {1} 輸入的 "{0}" , 不是有效的 email 位置</invalid-email>
+ </msg>
+ </EmailAddressValidator>
+ <NumberFormatValidator>
+ <msg>
+ <invalid-limitAccess>你不可輸入 "{0}" 在欄位 {1} , 你不可以修改此欄位</invalid-limitAccess>
+ <Invalid-input>你輸入在欄位 {0} 的值錯誤, 你應該輸入數字</Invalid-input>
+ </msg>
+ </NumberFormatValidator>
+ <IdentifierValidator>
+ <msg>
+ <empty-input>欄位 "{0}" 不可以為空白</empty-input>
+ <invalid-char>只有文數字, 可以輸入在欄位 {0}</invalid-char>
+ </msg>
+ </IdentifierValidator>
+ <NameValidator>
+ <msg>
+ <empty-input>欄位 "{0}" 不可以為空白</empty-input>
+ <invalid-char>只有文數字, 可以輸入在欄位 {0}</invalid-char>
+ </msg>
+ </NameValidator>
+ <ValidUserValidator>
+ <msg>
+ <empty-input>欄位 "{0}" 不可以為空白</empty-input>
+ <invalid-username>系統找不到使用者 {0}</invalid-username>
+ </msg>
+ </ValidUserValidator>
+ <ValidGroupValidator>
+ <msg>
+ <empty-input>欄位 "{0}" 不可以為空白</empty-input>
+ <invalid-group-id>系統找不到群組 {0}</invalid-group-id>
+ </msg>
+ </ValidGroupValidator>
+ <PermissionValidator>
+ <msg>
+ <invalid-permission-input>無效的權限, 格式必須為 membership:/groupId.</invalid-permission-input>
+ <membership-group-not-found>Membership type 或 Group 找不到</membership-group-not-found>
+ </msg>
+ </PermissionValidator>
+ <CheckAdminOrOwnerRoleInterceptor>
+ <msg>
+ <owner-or-admin-require>你必須登入為系統管理者, 才可以執行功能 '{0}'</owner-or-admin-require>
+ </msg>
+ </CheckAdminOrOwnerRoleInterceptor>
+ <CheckOwnerInterceptor>
+ <msg>
+ <owner-require>你必須登入, 才能執行 '{0}'</owner-require>
+ </msg>
+ </CheckOwnerInterceptor>
+ <ExoPermissionException>
+ <msg>
+ <message>你必須是 '{0}' 角色, 才可以執行 {1}</message>
+ </msg>
+ </ExoPermissionException>
+ <OrganizationService>
+ <unique-group-exception>這個群組: {0} 已經存在</unique-group-exception>
+ </OrganizationService>
+ <PageList>
+ <page-out-of-range>你嘗試開啟頁面 {0}, 但是只有 {1} 頁而已</page-out-of-range>
+ </PageList>
+ <MessageService>
+ <account-not-found>找不到使用者 {1} 的帳號 {0}</account-not-found>
+ <invalid-standalone-message-address>You are using the standalone account type and \ the address {0} is not valid. The system expects an address with the following format: \ receiver#accountName</invalid-standalone-message-address>
+ <send-message-fail>無法傳送訊息. 請檢查你的郵寄地址 \n\ Error: {0}</send-message-fail>
+ </MessageService>
+ <Searcher>
+ <msg>
+ <search-expression-error>你輸入的語法錯誤.<br />{0}</search-expression-error>
+ </msg>
+ </Searcher>
+</bundle>
Added: portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_zh_TW.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_zh_TW.xml (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_zh_TW.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -0,0 +1,2101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UIContentNavigation>
+ <msg>
+ <EditNode>您必須選擇一個節點。</EditNode>
+ </msg>
+ </UIContentNavigation>
+ <UIPortletRegistryCategory>
+ <msg>
+ <editPortlet>您必須選擇一個portlet</editPortlet>
+ </msg>
+ </UIPortletRegistryCategory>
+ <PopupPermissionSelector>
+ <title>
+ <null>null</null>
+ <UIGroupMembershipSelector>權限選擇</UIGroupMembershipSelector>
+ <PermissionSelector>權限選擇</PermissionSelector>
+ </title>
+ </PopupPermissionSelector>
+ <UIPermissionForm>
+ <label>
+ <null>權限</null>
+ </label>
+ </UIPermissionForm>
+ <UICategoryForm>
+ <action>
+ <Close>關閉</Close>
+ </action>
+ </UICategoryForm>
+ <AddCategory>
+ <title>
+ <UICategoryForm>新增類別</UICategoryForm>
+ </title>
+ </AddCategory>
+ <WorkingPopup>
+ <title>
+ <WorkingPopup>Working Popup</WorkingPopup>
+ </title>
+ </WorkingPopup>
+ <DeleteUser>
+ <title>
+ <UIPopupDialog>是否要刪除此使用者?</UIPopupDialog>
+ </title>
+ </DeleteUser>
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <!-- # Empty String Validator #-->
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <!--
+ #class
+ org.exoplatform.webui.form.validator.Validator.EmptyFieldValidator
+ -->
+ <!-- #{0}=input field name-->
+ <EmptyFieldValidator>
+ <msg>
+ <empty-input>欄位"{0}"是需要的</empty-input>
+ <empty>欄位"{0}"中的訊息不能為空</empty>
+ </msg>
+ </EmptyFieldValidator>
+ <ExpressionValidator>
+ <msg>
+ <value-invalid>欄位"{0}"必須和格式"{1}"相同</value-invalid>
+ </msg>
+ </ExpressionValidator>
+ <UITestForm>
+ <label>
+ <UIAddApplication>新增儲存程式</UIAddApplication>
+ </label>
+ </UITestForm>
+ <StringLengthValidator>
+ <msg>
+ <length-invalid>欄位"{0}"中的字串長度必須在"{1}"和"{2}"之間</length-invalid>
+ </msg>
+ </StringLengthValidator>
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <!-- # Email Address Validator #-->
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <!--
+ #class
+ org.exoplatform.webui.form.validator.Validator.EmailAddressValidator
+ -->
+ <!-- #{0}=input field name, {1} user input email address-->
+ <EmailAddressValidator>
+ <msg>
+ <Invalid-input>您的電子郵件地址無效。請輸入一個不同的地址。</Invalid-input>
+ </msg>
+ </EmailAddressValidator>
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <!-- # Mandatory Validator #-->
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <!-- #{0} = input field name-->
+ <MandatoryValidatorIterator>
+ <msg>
+ <empty>"{0}"列表不能為空</empty>
+ </msg>
+ </MandatoryValidatorIterator>
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <!-- # Number Format Validator #-->
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <!--
+ #class
+ org.exoplatform.webui.form.validator.Validator.NumberFormatValidator
+ -->
+ <!-- #{0}=input field name-->
+ <NumberFormatValidator>
+ <msg>
+ <Invalid-number>欄位"{0}"中無效的數字格式。</Invalid-number>
+ </msg>
+ </NumberFormatValidator>
+ <PositiveNumberFormatValidator>
+ <msg>
+ <Invalid-number>在"{0}"欄位必須包含一個正數。</Invalid-number>
+ </msg>
+ </PositiveNumberFormatValidator>
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <!-- # Empty Iterator Validator #-->
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <!--
+ #class
+ org.exoplatform.webui.organization.UIListPermissionSelector.EmptyIteratorValidator
+ -->
+ <!-- #{0}=input field name-->
+ <EmptyIteratorValidator>
+ <msg>
+ <empty>"{0}"列表不能為空。</empty>
+ </msg>
+ </EmptyIteratorValidator>
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <!-- # Resource Validator #-->
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <ResourceValidator>
+ <msg>
+ <Invalid-char>欄位"{0}"只允許英文字元,數字,下劃線,破折號和點。</Invalid-char>
+ </msg>
+ </ResourceValidator>
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <!-- # Special Character Validator #-->
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <!--
+ #class
+ org.exoplatform.webui.form.validator.Validator.SpecialCharacterValidator
+ -->
+ <!-- #{0}=input field name-->
+ <SpecialCharacterValidator>
+ <msg>
+ <invalid-digit>欄位"{0}"必須以字符開始。</invalid-digit>
+ <Invalid-char>欄位"{0}"只允許英文字元,數字,下劃線,破折號和空格</Invalid-char>
+ </msg>
+ </SpecialCharacterValidator>
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <!-- # Date Time Validator #-->
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <DateTimeValidator>
+ <msg>
+ <Invalid-input>欄位"{0}"不包含有效值</Invalid-input>
+ </msg>
+ </DateTimeValidator>
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <!-- # URL Validator #-->
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <URLValidator>
+ <msg>
+ <invalid-url>欄位"{0}"不包含有效URL</invalid-url>
+ </msg>
+ </URLValidator>
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <!-- #org.exoplatform.portal.webui.portal.UIPortalComposer #-->
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <UIFormMultiValueInputSet>
+ <label>
+ <remove>刪除項目</remove>
+ <add>增加項目</add>
+ </label>
+ </UIFormMultiValueInputSet>
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <!-- #Container config options #-->
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <UIPortalComposer>
+ <title>
+ <UIPortalComposer>Edit Inline Composer</UIPortalComposer>
+ </title>
+ <action>
+ <Abort>捨棄</Abort>
+ <Finish>完成</Finish>
+ <ViewProperties>Portal屬性</ViewProperties>
+ <SwitchMode>轉換視圖模式</SwitchMode>
+ </action>
+ </UIPortalComposer>
+ <UITabPane>
+ <title>
+ <UIApplicationList>儲存</UIApplicationList>
+ <UIContainerList>容器</UIContainerList>
+ <UIPermissionSelector>編輯權限設定</UIPermissionSelector>
+ <UIListPermissionSelector>使用權限設定</UIListPermissionSelector>
+ <UIAccountProfiles>帳戶概況</UIAccountProfiles>
+ <UIAccountChangePass>修改密碼</UIAccountChangePass>
+ </title>
+ </UITabPane>
+
+ <ContainerOptions>
+ <Category>
+ <row>行佈局</row>
+ <column>列佈局</column>
+ <tabs>標籤佈局</tabs>
+ <mix>混合佈局</mix>
+ </Category>
+ <Item>
+ <oneRow>一行</oneRow>
+ <twoRows>兩行</twoRows>
+ <threeRows>三行</threeRows>
+ <oneColumns>一列</oneColumns>
+ <twoColumns>兩列</twoColumns>
+ <threeColumns>三列</threeColumns>
+ <threeToolbarColumns>三個工具欄列</threeToolbarColumns>
+ <twoTabs>兩個標籤</twoTabs>
+ <threeTabs>三個標籤</threeTabs>
+ <twoColumnsOneRow>兩列,一行</twoColumnsOneRow>
+ <oneRowTwoColumns>一行,兩列</oneRowTwoColumns>
+ <oneRow2Column1Row>一行,兩列,一行</oneRow2Column1Row>
+ </Item>
+ </ContainerOptions>
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <!-- # Identifier String Validator #-->
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <!--
+ #class
+ org.exoplatform.webui.form.validator.Validator.IdentifierValidator
+ -->
+ <!-- #{0}=input field name-->
+ <IdentifierValidator>
+ <msg>
+ <Invalid-char>欄位"{0}"只允許英文字元,數字,破折號和下劃線</Invalid-char>
+ </msg>
+ </IdentifierValidator>
+
+ <UIChangeLanguage>
+ <title>
+ <LanguageSetting>語言設定</LanguageSetting>
+ </title>
+ <action>
+ <save>儲存</save>
+ <close>取消</close>
+ </action>
+ </UIChangeLanguage>
+ <Euro>
+ <label>歐洲</label>
+ </Euro>
+ <Asia>
+ <label>亞洲</label>
+ </Asia>
+ <Language>
+ <left>
+ <title>選擇一種語言</title>
+ </left>
+ </Language>
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <!-- # Change Skin #-->
+ <!--
+ ##############################################
+ ###############################
+ -->
+ <UIChangeSkin>
+ <action>
+ <save>儲存</save>
+ <close>#{word.cancel}</close>
+ </action>
+ <title>
+ <SkinSetting>外觀設定</SkinSetting>
+ </title>
+ <Default>
+ <label>預設風格外觀</label>
+ </Default>
+ <Mac>
+ <label>蘋果風格外觀</label>
+ </Mac>
+ <Vista>
+ <label>Vista風格外觀</label>
+ </Vista>
+ </UIChangeSkin>
+ <Skin>
+ <title>外觀列表</title>
+ <left>
+ <title>查看和選擇外觀</title>
+ </left>
+ </Skin>
+
+ <UIChangePortal>
+ <header>
+ <creator>建立者建立者</creator>
+ <name>名字</name>
+ <skin>外觀</skin>
+ <action>操作</action>
+ <factoryId>Factory Id</factoryId>
+ </header>
+ <lable>
+ <TitleBar>選擇Portal</TitleBar>
+ </lable>
+ <action>
+ <close>關閉</close>
+ <title>
+ <SelectPortal>選擇Portal</SelectPortal>
+ </title>
+ </action>
+ <msg>
+ <Invalid-viewPermission>你沒有權限使用這個Portal。
+ </Invalid-viewPermission>
+ </msg>
+ </UIChangePortal>
+
+ <Template>
+ <title>外觀列表</title>
+ <left>
+ <title>查看和選擇外觀</title>
+ </left>
+ </Template>
+ <Desktop>
+ <label>桌面佈局</label>
+ </Desktop>
+ <AccountTemplate>
+ <left>
+ <title>帳戶模板預覽</title>
+ </left>
+ <title>帳戶模板</title>
+ </AccountTemplate>
+ <DefaultAccount>
+ <label>預設帳戶</label>
+ </DefaultAccount>
+ <CommunityAccount>
+ <label>社區帳戶</label>
+ </CommunityAccount>
+ <CompanyAccount>
+ <label>公司帳戶</label>
+ </CompanyAccount>
+ <AdminAccount>
+ <label>管理員帳戶</label>
+ </AdminAccount>
+
+ <NameValidator>
+ <msg>
+ <Invalid-char>欄位"{0}"只允許英文字元,數字,點,破折號和下劃線</Invalid-char>
+ </msg>
+ </NameValidator>
+ <FirstCharacterNameValidator>
+ <msg>欄位"{0}"必須以字符開始,並且不能包含特殊字符</msg>
+ </FirstCharacterNameValidator>
+
+ <UIAccountForm>
+ <msg>
+ <password-is-not-match>密碼和確認密碼必須相同。</password-is-not-match>
+ </msg>
+ </UIAccountForm>
+ <UIAccountInputSet>
+ <msg>
+ <user-exist>此使用者名已經存在,請輸入一個不同的名稱。</user-exist>
+ <user-not-exist>此使用者名仍然可用</user-not-exist>
+ <user-is-deleted>該使用者可能會被刪除。</user-is-deleted>
+ <email-exist>此電子郵件已經存在,請輸入一個不同的地址。</email-exist>
+ <empty-input>使用者名不能為空。</empty-input>
+ <successful>
+ <create>
+ <user>您已經註冊一個新帳戶。</user>
+ </create>
+ <update>
+ <user>使用者配置文件已被更新。</user>
+ </update>
+ </successful>
+ </msg>
+ </UIAccountInputSet>
+ <UIUserProfileInputSet>
+ <msg>
+ <sucsesful>
+ <update>
+ <userprofile>使用者配置文件已被更新。</userprofile>
+ </update>
+ </sucsesful>
+ </msg>
+ <title>個人資訊</title>
+ <label>
+ <Profile>配置文件</Profile>
+ <HomeInfo>通訊資料</HomeInfo>
+ <BusinessInfo>公司資訊</BusinessInfo>
+ </label>
+ </UIUserProfileInputSet>
+ <UIGroupMembershipForm>
+ <msg>
+ <user-not-exist>使用者"{0}"不存在。</user-not-exist>
+ <user-not-empty>使用者名不能為空。</user-not-empty>
+ <Invalid-char>欄位"{0}"只能包含英文字元,數字,逗號,破折號。第一個和最後一個字符必須是字母。
+ </Invalid-char>
+ <duplicate-user>有些使用者是重複的。請重新檢查它!</duplicate-user>
+ <group-not-select>請選擇一個組。</group-not-select>
+ <membership-exist>使用者"{0}"在組"{1}"中有相同的會員,請選擇另外一個會員。
+ </membership-exist>
+ </msg>
+ </UIGroupMembershipForm>
+ <UILoginForm>
+ <msg>
+ <Invalid-account>使用者名和/或密碼是錯誤的或為空。請再試一次。</Invalid-account>
+ </msg>
+ <label>
+ <welcome>歡迎</welcome>
+ <login>登錄</login>
+ <Discard>捨棄</Discard>
+ <user>使用者</user>
+ <forgot>忘記使用者名/密碼?</forgot>
+ <password>密碼</password>
+ <UserName>使用者名</UserName>
+ <RememberOnComputer>記住我的登錄</RememberOnComputer>
+ <NotMember>還不是會員?</NotMember>
+ <Signup>註冊</Signup>
+ <Signin>登錄</Signin>
+ <ForAccount>立即註冊一個帳戶</ForAccount>
+ <SigninFail>登錄失敗。使用者名或密碼錯誤。</SigninFail>
+ <Copyright><![CDATA[Copyright © 2010.All rights Reserved, eXo Platform SAS and Red Hat, Inc.]]></Copyright>
+ </label>
+ </UILoginForm>
+
+ <UIApplication>
+ <msg>
+ <unknown-error>未知錯誤</unknown-error>
+ </msg>
+ </UIApplication>
+
+ <UIContainerForm>
+ <title>編輯容器</title>
+ <action>
+ <Save>#{word.save}</Save>
+ <Close>取消</Close>
+ </action>
+ <label>
+ <id>容器Id</id>
+ <title>容器標題</title>
+ <decorator>#{word.decorator}</decorator>
+ <template>#{word.template}</template>
+ <width>#{word.width}</width>
+ <height>#{word.height}</height>
+ <style>#{word.style}</style>
+ <ContainerSetting>容器設定</ContainerSetting>
+ </label>
+ <tab>
+ <label>
+ <ContainerSetting>容器設定</ContainerSetting>
+ <UIContainerPermission>使用權限</UIContainerPermission>
+ <Template>模板</Template>
+ <Icon>圖示</Icon>
+ </label>
+ </tab>
+ <msg>
+ <InvalidWidthHeight>您必須在欄位"{0}"中輸入像素或者百分數。</InvalidWidthHeight>
+ </msg>
+ </UIContainerForm>
+
+ <UIPortletForm>
+ <title>查看/編輯Portlet</title>
+ <label>
+ <title>Portlet標題:</title>
+ <width>#{word.width}:</width>
+ <height>#{word.height}:</height>
+ <showInfoBar>顯示訊息欄:</showInfoBar>
+ <windowId>窗口Id:</windowId>
+ <showPortletMode>顯示Portlet模式:</showPortletMode>
+ <showWindowState>顯示窗口狀態:</showWindowState>
+ <id>Portlet Id:</id>
+ <displayName>顯示名稱:</displayName>
+ <description>描述</description>
+ <template>模板</template>
+ </label>
+ <action>
+ <Close>取消</Close>
+ <Save>儲存並關閉</Save>
+ </action>
+ <tab>
+ <label>
+ <PortletPref>選項</PortletPref>
+ <PortletSetting>Portlet設定</PortletSetting>
+ <Renderer>呈現方式</Renderer>
+ <Template>模板</Template>
+ <Decorator>裝飾</Decorator>
+ <Icon>選擇圖示</Icon>
+ <Theme>裝飾主題</Theme>
+ <EditMode>編輯模式</EditMode>
+ <PortletPermission>使用權限</PortletPermission>
+ </label>
+ </tab>
+ <Theme>
+ <title>
+ <Preview>主題預覽</Preview>
+ <SetDefault>設定預設設定</SetDefault>
+ </title>
+ </Theme>
+ <Icon>
+ <title>
+ <SetDefault>設定預設設定</SetDefault>
+ </title>
+ </Icon>
+ <msg>
+ <InvalidWidthHeight>您必須在欄位"{0}"中輸入像素值。</InvalidWidthHeight>
+ </msg>
+ </UIPortletForm>
+
+ <UIDescription>
+ <title>
+ <pageManagement>頁面瀏覽</pageManagement>
+ <portalManagement>Portal瀏覽</portalManagement>
+ <pageWizard>頁面建立導覽器</pageWizard>
+ <pageEditWizard>頁面編輯導覽器</pageEditWizard>
+ </title>
+ <content>
+ <pageManagement>
+ <strong>管理頁面:</strong>
+ <br />
+ 這是所有頁面的列表。
+ <br />
+ 您可以預覽(只有正常頁面),
+ <br />
+ <br />
+ 修改或刪除您有足夠權限的頁面。
+ <br />
+ <br />
+ 您可以搜索頁面通過
+ <em>所有者類型</em>
+ (Portal/組/使用者),通過
+ <em>所有者id</em>
+ (所有者類型名稱),或者通過
+ <em>頁面名稱</em>
+ <br />
+ <br />
+ 要建立一個新頁面,點擊"Add new page"按鈕並且輸入需要的欄位。
+ </pageManagement>
+ <portalManagement>
+ <strong>管理Portal:</strong>
+ <br />
+ 這是所有Portal的列表。要建立一個新Portal,點擊"Create new Portal"按鈕並且輸入需要的欄位。
+ <br />
+ 您只能從這個列表中建立或者刪除您有恰當權限的Portal。
+ </portalManagement>
+ <pageWizard>需要刪除</pageWizard>
+ <pageWizard2><![CDATA[<strong>步驟1:設定頁面訊息包括頁面路徑,節點名稱和顯示名稱。</strong><br/>按照如下步驟進行<br/>-從下拉列表中選擇一個導覽器<br/>-選擇您希望建立子頁面的頁面節點。<br/>-輸入<em>節點名稱</em><br/>-輸入<em>顯示名稱</em> (可選項)<br/>-選中或反選<em>可見< /em>複選框(可選)<br/>-選中或反選<em>發布日期&時間</em>複選框(可選)<br/> 如果<em >發布日期&時間</em>複選框被選中:<br/> -輸入<em>起始發布日期</em><br/> -輸入<em >結束發布日期</em><br/>-點擊"Next"繼續下一步]]></pageWizard2>
+ <pageWizard3><![CDATA[<strong>步驟2:設定頁面佈局</strong><br/>按照如下步驟進行<br/>-從列表中選擇一個佈局<br/>-點擊"Next"轉移到下一步或者"Back "返回到上一步]]></pageWizard3>
+ <pageEditWizard>
+ 網頁編輯導覽器說明
+ <br />
+ 以及指導
+ </pageEditWizard>
+ <pageEditWizard1><![CDATA[<strong>步驟1:更改頁面的顯示名稱,可見度和公佈日期</strong><br/>按照如下步驟進行:<br/>-從下拉列表中選擇一個導覽器<br/>-選擇您想修改的頁面<br/>-修改<em>顯示名稱</em>如果需要的話<br/>-選中或者反選<em>可見度</em>複選框<br/>-選中或者反選<em>發布日期&時間</em>複選框<br/> 如果<em>發布日期&時間</em>已經選中:<br/> -修改<em>起始發布日期</em><br/> -修改<em>結束發布日期</em><br/>-點擊" Next"繼續下一步]]></pageEditWizard1>
+ <pageEditWizard2>
+ <strong>步驟2:修改頁面佈局。</strong>
+ <br />
+ 按照如下步驟進行:
+ <br />
+ -選擇一個新的頁面佈局或者保持當前佈局
+ <br />
+ -點擊"Next"轉移到下一步或者"Back"返回到上一步</pageEditWizard2>
+ <pageEditWizard3>
+ <strong>步驟2:修改頁面佈局。</strong>
+ <br />
+ 按照如下步驟進行:
+ <br />
+ -選擇一個新的頁面佈局或者保持當前佈局
+ <br />
+ -點擊"Next"轉移到下一步或者"Back"返回到上一步</pageEditWizard3>
+ </content>
+ </UIDescription>
+ <UIPortalForm>
+ <title>編輯Portal</title>
+ <action>
+ <Save>#{word.save}</Save>
+ <Close>取消</Close>
+ </action>
+ <msg>
+ <sameName>這個Portal名已經存在。</sameName>
+ <notExistAnymore>這個Portal名不存在或已經被刪除。</notExistAnymore>
+ </msg>
+ <label>
+ <name>Portal名稱:</name>
+ <locale>#{word.locale} :</locale>
+ <date>#{word.date} :</date>
+ <factoryId>Portal類型:</factoryId>
+ <skin>外觀:</skin>
+ <sessionAlive>保持會話活著:</sessionAlive>
+ <option>
+ <always>總是</always>
+ <onDemand>根據需求</onDemand>
+ <never>從不</never>
+ </option>
+ </label>
+ <tab>
+ <label>
+ <PortalSetting>Portal設定</PortalSetting>
+ <PortalTemplate>Portal模板</PortalTemplate>
+ <PermissionSetting>權限設定</PermissionSetting>
+ <FactoryId>FactoryId</FactoryId>
+ </label>
+ </tab>
+ </UIPortalForm>
+ <PortalTemplate>
+ <title>Portal模板</title>
+ <left>
+ <title> Portal模板預覽</title>
+ </left>
+ </PortalTemplate>
+
+ <UIListPermissionSelector>
+ <header>
+ <groupId>群組Id</groupId>
+ <membership>類型</membership>
+ <action>操作</action>
+ </header>
+ <action>
+ <addPermission>增加權限</addPermission>
+ <title>
+ <Delete>刪除</Delete>
+ </title>
+ </action>
+ <label>
+ <publicMode>使之公開(每個人都可以使用):</publicMode>
+ </label>
+ </UIListPermissionSelector>
+ <UIGroupMembershipSelector>
+ <msg>
+ <selectGroup>您必須先選擇一個組。</selectGroup>
+ </msg>
+ <title>群組會員選擇器</title>
+ <title>
+ <ListPermissionSelector>群組和會員選擇器</ListPermissionSelector>
+ </title>
+ <label>
+ <selectPermission>選擇一個權限</selectPermission>
+ <selectMembership>選擇一個會員</selectMembership>
+ <selectGroup>瀏覽並選擇一個群組</selectGroup>
+ </label>
+ <tooltip>
+ <selectMembership>點擊此處選擇一個會員</selectMembership>
+ </tooltip>
+ </UIGroupMembershipSelector>
+ <UIGroupSelector>
+ <title>
+ <UIGroupMembershipSelector>會員選擇器</UIGroupMembershipSelector>
+ <selectGroup>瀏覽並選擇一個組</selectGroup>
+ <selectGroupInfo>選中的群組訊息</selectGroupInfo>
+ </title>
+ <lable>
+ <name>名稱:</name>
+ <groupId>群組Id:</groupId>
+ <description>描述:</description>
+ </lable>
+ <action>
+ <done>完成</done>
+ </action>
+ </UIGroupSelector>
+ <UIPageSelector2>
+ <header>
+ <name>名稱</name>
+ <id>頁面Id</id>
+ <accessGroups>使用群組</accessGroups>
+ <title>#{word.title}</title>
+ <action>#{word.action}</action>
+ </header>
+ <label>
+ <clearPage>清除頁面</clearPage>
+ <createPage>建立頁面</createPage>
+ <searchandSelectPage>搜索並選擇頁面</searchandSelectPage>
+ <currentSelectedPage>選中的頁面訊息</currentSelectedPage>
+ <title>標題</title>
+ <name>#{word.name}</name>
+ <accessGroups>使用群組</accessGroups>
+ </label>
+ </UIPageSelector2>
+ <UIPageBrowser>
+ <msg>
+ <NoPermission>您無權使用這個頁面。</NoPermission>
+ <PageNotExist>頁面不存在</PageNotExist>
+ <UserNotPermission>您無權使用這個節點的頁面。</UserNotPermission>
+ <InvalidQueryException>無效的查詢。</InvalidQueryException>
+ <Invalid-viewPermission>您不能使用頁面{0}</Invalid-viewPermission>
+ <Invalid-editPermission>您不能編輯頁面{0}.</Invalid-editPermission>
+ <Invalid-deletePermission>您不能刪除頁面{0}.
+ </Invalid-deletePermission>
+ <Invalid-Preview>這是桌面網頁。您無法預覽這種類型的網頁。</Invalid-Preview>
+ <NotViewPage>您無權查看此頁面。</NotViewPage>
+ <edit>
+ <NotEditPage>您無權編輯此頁面。</NotEditPage>
+ </edit>
+ <delete>
+ <NotDelete>您無權刪除此頁面。</NotDelete>
+ </delete>
+ </msg>
+ <selectItem>
+ <ownerType>所有者類型</ownerType>
+ <ownerId>所有者Id</ownerId>
+ <name>名稱</name>
+ </selectItem>
+ <action>
+ <title>
+ <Delete>刪除頁面</Delete>
+ <Preview>預覽頁面</Preview>
+ <EditInfo>編輯頁面</EditInfo>
+ <SelectPage>選擇頁面</SelectPage>
+ </title>
+ <addNewPage>增加新頁面</addNewPage>
+ </action>
+ <label>
+ <option>
+ <owner>#{word.owner}</owner>
+ </option>
+ </label>
+ </UIPageBrowser>
+ <UIVirtualList>
+ <header>
+ <name>頁面名稱</name>
+ <ownerType>所有者類型</ownerType>
+ <ownerId>所有者Id</ownerId>
+ <pageId>頁面Id</pageId>
+ <title>標題</title>
+ <accessGroups>使用群組</accessGroups>
+ <action>#{word.action}</action>
+ <accessPermissions>使用權限</accessPermissions>
+ <editPermission>編輯權限</editPermission>
+ </header>
+ </UIVirtualList>
+
+ <UIPageNodeSelector>
+ <UIDropDown>
+ <title>選擇導覽器</title>
+ </UIDropDown>
+ <msg>
+ <notAvailable>此節點的頁面不可用。</notAvailable>
+ <Invalid-editPermission>您無權編輯此頁面。</Invalid-editPermission>
+ <deleteNav>您無法刪除此頁面導覽器。</deleteNav>
+ <NoPageNavigation>在使用這項功能之前,您必須建立導覽器。</NoPageNavigation>
+ <curentPage>無法刪除此頁面:頁面正在被另外一個程序使用。</curentPage>
+ <paste>
+ <sameName>此節點名字已存在。</sameName>
+ <sameSrcAndDes>源和目標必須不同。</sameSrcAndDes>
+ </paste>
+ </msg>
+ <deleteNode>您確認要刪除此導覽器嗎?</deleteNode>
+ <deleteNavigation>您確認要刪除此節點嗎?</deleteNavigation>
+ <tooltip>
+ <newPageNavigation>建立新導覽器</newPageNavigation>
+ </tooltip>
+ </UIPageNodeSelector>
+ <UIPageNodeSelectorPopupMenu>
+ <event>
+ <AddUserNavigation>增加導覽器</AddUserNavigation>
+ <AddNode>增加新節點</AddNode>
+ <PasteNode>粘貼節點</PasteNode>
+ <CreateNavigation>建立導覽器</CreateNavigation>
+ <DeleteNavigation>刪除導覽器</DeleteNavigation>
+ <EditNavigation>編輯導覽器</EditNavigation>
+ <SaveNavigation>儲存導覽器</SaveNavigation>
+ </event>
+ </UIPageNodeSelectorPopupMenu>
+
+ <UIPageEditor>
+ <action>
+ <Abort>捨棄</Abort>
+ <Finish>完成</Finish>
+ <ViewProperties>查看頁面屬性</ViewProperties>
+ <SwitchMode>轉換視圖模式</SwitchMode>
+ </action>
+ <title>
+ <UIPageEditor>頁面編輯器</UIPageEditor>
+ </title>
+ <tooltip>
+ <PagePreview>頁面預覽</PagePreview>
+ <EditPage>編輯頁面</EditPage>
+ <EditContainer>編輯容器</EditContainer>
+ <EditPortlet>編輯Portlet</EditPortlet>
+ <Decorator>裝飾</Decorator>
+ <SavePage>儲存頁面</SavePage>
+ </tooltip>
+ </UIPageEditor>
+ <UIPageForm>
+ <title>查看/編輯頁面</title>
+ <label>
+ <pageId>頁面Id :</pageId>
+ <ownerType>所有者類型:</ownerType>
+ <ownerId>所有者Id:</ownerId>
+ <name>頁面名稱:</name>
+ <title>頁面標題:</title>
+ <showMaxWindow>顯示最大窗口:</showMaxWindow>
+ </label>
+ <action>
+ <Close>取消</Close>
+ <Save>#{word.save}</Save>
+ <Back>返回</Back>
+ </action>
+ <tab>
+ <label>
+ <PageSetting>頁面設定</PageSetting>
+ <Template>頁面模板</Template>
+ <PermissionSetting>權限設定</PermissionSetting>
+ <UIPageTemplateOptions>頁面佈局</UIPageTemplateOptions>
+ </label>
+ </tab>
+ <msg>
+ <sameName>該頁面名字已經存在</sameName>
+ </msg>
+ </UIPageForm>
+ <UIOwnerIdSelector>
+ <title>
+ <OwnerIdSelector>所有者Id選擇器</OwnerIdSelector>
+ </title>
+ </UIOwnerIdSelector>
+ <UIPopupGroupSelector>
+ <title>
+ <UIGroupSelector>組選擇器</UIGroupSelector>
+ <GroupSelector>選擇群組</GroupSelector>
+ </title>
+ </UIPopupGroupSelector>
+ <UIPageNodeForm2>
+ <msg>
+ <SameName>該節點名已經存在。</SameName>
+ <selectPage>您必須選擇一個頁面。</selectPage>
+ <startDateBeforeEndDate>結束日期必須在起始日期之後。</startDateBeforeEndDate>
+ </msg>
+ <action>
+ <Save>#{word.save}</Save>
+ <Back>#{word.back}</Back>
+ <Close>#{word.cancel}</Close>
+ </action>
+ <label>
+ <name>節點名:</name>
+ <uri>#{word.uri}:</uri>
+ <pageReference>頁面選項</pageReference>
+ <description>#{word.description}</description>
+ <type>頁面類型</type>
+ <creator>頁面建立者:</creator>
+ <modifier>頁面修改者:</modifier>
+ <label>#{word.label}:</label>
+ <visible>Visible:</visible>
+ <showPublicationDate>發布日期&時間:</showPublicationDate>
+ <startPublicationDate>起始發布日期:</startPublicationDate>
+ <endPublicationDate>結束發布日期:</endPublicationDate>
+ </label>
+ <Icon>
+ <title>
+ <SetDefault>設定預設設定</SetDefault>
+ </title>
+ </Icon>
+ </UIPageNodeForm2>
+ <UIPageNodeForm>
+ <tab>
+ <label>
+ <PageNodeSetting>頁面節點設定</PageNodeSetting>
+ <Icon>#{word.icon}</Icon>
+ <UIPageSelector2>頁面選擇器</UIPageSelector2>
+ </label>
+ </tab>
+ </UIPageNodeForm>
+ <UIPageBrowse>
+ <deletePage>您想刪除此頁嗎?</deletePage>
+ </UIPageBrowse>
+ <UIPageSearch>
+ <label>
+ <option>
+ <ownerType>所有者類型</ownerType>
+ <ownerId>所有者id</ownerId>
+ <name>名稱</name>
+ <title>#{word.title}</title>
+ </option>
+ </label>
+ </UIPageSearch>
+ <UIPageNavigationForm>
+ <title>頁面&導覽器瀏覽器</title>
+ <label>
+ <priority>順序:</priority>
+ <creator>建立者:</creator>
+ <modifier>修改者:</modifier>
+ <ownerType>所有者類型:</ownerType>
+ <ownerId>所有者Id:</ownerId>
+ <description>#{word.description}:</description>
+ <uri>#{word.uri}:</uri>
+ <name>#{word.name}:</name>
+ </label>
+ <tab>
+ <label>
+ <AccessGroup>使用群組</AccessGroup>
+ <PageNavigationSetting>頁面導覽器設定</PageNavigationSetting>
+ <Icon>#{word.icon}</Icon>
+ <PermissionSetting>權限設定</PermissionSetting>
+ </label>
+ </tab>
+ <action>
+ <Save>#{word.save}</Save>
+ <ClosePopup>#{word.close}</ClosePopup>
+ <Close>取消</Close>
+ </action>
+ <msg>
+ <selectGroup>您必須選擇一個群組。</selectGroup>
+ <existPageNavigation>的頁面導覽器已經存在。</existPageNavigation>
+ </msg>
+ </UIPageNavigationForm>
+ <UIPageNavigation>
+ <msg>
+ <noMakablePageNavigation>您無權為該群組建立頁面導覽器。
+ </noMakablePageNavigation>
+ </msg>
+ <tooltip>
+ <upLevel>向上一級</upLevel>
+ </tooltip>
+ <label>
+ <navigation>{0}的導覽器</navigation>
+ <titleBar>{0}的頁面</titleBar>
+ </label>
+ </UIPageNavigation>
+ <UIPortalApplication>
+ <label>
+ <Loading>載入中...</Loading>
+ <Abort>捨棄</Abort>
+ </label>
+ <msg>
+ <deletePageBody>該組件包含頁面正文,無法刪除!</deletePageBody>
+ </msg>
+ </UIPortalApplication>
+ <UIPermissionSelector>
+ <label>
+ <AccessPermission>#{word.accessPermission}</AccessPermission>
+ <EditPermission>#{word.editPermission}</EditPermission>
+ <ViewPermission>#{word.viewPermission}</ViewPermission>
+ <PermissionInfo>權限訊息</PermissionInfo>
+ <membershipMember>會員</membershipMember>
+ <groupId>#{word.groupId}</groupId>
+ <addEditPermission>權限設定</addEditPermission>
+ <currentSelectedPermissionInfo>當前權限
+ </currentSelectedPermissionInfo>
+ <permissionType>權限類型</permissionType>
+ </label>
+ <action>
+ <SelectPermission>選擇權限</SelectPermission>
+ <DeletePermission>刪除權限</DeletePermission>
+ </action>
+ </UIPermissionSelector>
+ <UIPopupGroupMembershipSelector>
+ <title>
+ <ListPermissionSelector>群組和會員選擇</ListPermissionSelector>
+ </title>
+ </UIPopupGroupMembershipSelector>
+ <UIPageFormPopupGroupMembershipSelector>
+ <title>
+ <ListPermissionSelector>群組和會員選擇</ListPermissionSelector>
+ </title>
+ </UIPageFormPopupGroupMembershipSelector>
+ <UIUserMembershipSelector>
+ <header>
+ <userName>使用者名稱</userName>
+ <membershipType>會員類型</membershipType>
+ <action>#{word.action}</action>
+ <groupId>#{word.groupId}</groupId>
+ </header>
+ <action>
+ <SelectPermission>選擇權限</SelectPermission>
+ <title>
+ <DeleteMembership>刪除會員</DeleteMembership>
+ </title>
+ </action>
+ </UIUserMembershipSelector>
+ <UserPermissionSelector>
+ <title>
+ <UIGroupMembershipSelector>群組會員選擇</UIGroupMembershipSelector>
+ </title>
+ </UserPermissionSelector>
+ <UIFormInputItemSelector>
+ <selectType>
+ <page>選擇頁面模板</page>
+ <portal>選擇Portal模板</portal>
+ </selectType>
+ </UIFormInputItemSelector>
+ <UIFormInputSet>
+ <tooltip>
+ <selectgroup>選擇其他群組</selectgroup>
+ </tooltip>
+ </UIFormInputSet>
+ <UIFormInputIconSelector>
+ <label>
+ <selectIconSet>選擇一個圖示集</selectIconSet>
+ <iconPreview>預覽並選擇圖示</iconPreview>
+ <iconName>已選圖示的名稱</iconName>
+ <iconCatergory>圖示分類</iconCatergory>
+ <miscIcons>其他圖示</miscIcons>
+ <officeIcons>辦公圖示</officeIcons>
+ <Icon16x16>圖示16x16</Icon16x16>
+ <Icon24x24>圖示24x24</Icon24x24>
+ <Icon48x48>圖示48x48</Icon48x48>
+ <Icon32x32>圖示32x32</Icon32x32>
+ <Icon64x64>圖示64x64</Icon64x64>
+ <Icon72x72>圖示72x72</Icon72x72>
+ <misc>其他圖示</misc>
+ <offices>辦公圖示</offices>
+ <navigation>導覽器圖示</navigation>
+ <tool>工具圖示</tool>
+ <user>使用者圖示</user>
+ </label>
+ <option>
+ <IconSet16x16>16x16</IconSet16x16>
+ <IconSet24x24>24x24</IconSet24x24>
+ <IconSet32x32>32x32</IconSet32x32>
+ </option>
+ </UIFormInputIconSelector>
+ <Icon>
+ <UIDropDown>
+ <label>
+ <IconSet16x16>IconSet16x16</IconSet16x16>
+ <IconSet24x24>IconSet24x24</IconSet24x24>
+ <IconSet32x32>IconSet32x32</IconSet32x32>
+ </label>
+ <title>IconSet 16x16</title>
+ </UIDropDown>
+ </Icon>
+ <UIPageWizardHelp>
+ <title>
+ <UIPageWizardHelp>頁面導覽器幫助</UIPageWizardHelp>
+ </title>
+ </UIPageWizardHelp>
+ <UIPageCreationWizard>
+ <label>
+ <pageCreateWizard>頁面建立導覽器</pageCreateWizard>
+ <step>步驟</step>
+ <wizardSteps>導覽器步驟</wizardSteps>
+ <step1>
+ <title>選擇一個導覽器節點並且建立頁面</title>
+ </step1>
+ <step2>
+ <title>選擇一個頁面佈局模板</title>
+ </step2>
+ <step3>
+ <title>重新安排頁面佈局,在頁面中增加Portlets</title>
+ </step3>
+ <abort>#{word.abort}</abort>
+ <back>#{word.back}</back>
+ <next>#{word.next}</next>
+ <done>#{word.save}</done>
+ <previousStep>上一步</previousStep>
+ <nextStep>下一步</nextStep>
+ </label>
+ <msg>
+ <NameNotSame>該名字已經存在</NameNotSame>
+ <notSelectedPageNavigation>您必須選擇一個導覽器。
+ </notSelectedPageNavigation>
+ <StepByStep>起初,您必須一步一步做。</StepByStep>
+ </msg>
+ </UIPageCreationWizard>
+ <UIPageNodeWizardPreview>
+ <action>
+ <Finish>儲存並完成</Finish>
+ </action>
+ <label>
+ <nodeName>節點名</nodeName>
+ <nodeLabel>節點標籤</nodeLabel>
+ <icon>#{word.icon}</icon>
+ <creator>建立者</creator>
+ <accessPermission>使用權限</accessPermission>
+ <editPermission>編輯權限</editPermission>
+ <pageReference>頁面選項</pageReference>
+ </label>
+ </UIPageNodeWizardPreview>
+ <UIPageCreateDescription>
+ <title>
+ <create>頁面建立導覽器</create>
+ <edit>頁面編輯導覽器</edit>
+ </title>
+ </UIPageCreateDescription>
+ <UIPageTemplateOptions>
+ <UIDropDown>
+ <title>頁面配置</title>
+ <label>
+ <normalPageConfigs>頁面配置</normalPageConfigs>
+ <columnPageConfigs>列頁面配置</columnPageConfigs>
+ <mixPageConfigs>混合頁面配置</mixPageConfigs>
+ <rowPageConfigs>行頁面配置</rowPageConfigs>
+ <tabsPageConfigs>標籤頁面配置</tabsPageConfigs>
+ </label>
+ </UIDropDown>
+ </UIPageTemplateOptions>
+
+ <UIWizardPageSelectLayoutForm>
+ <tab>
+ <label>
+ <UIPageTemplateOptions>頁面模板選項</UIPageTemplateOptions>
+ </label>
+ </tab>
+ <label>
+ <normalPage>
+ <EmptyLayout>空佈局</EmptyLayout>
+ <CurrentLayout>當前佈局</CurrentLayout>
+ <DesktopImage>桌面佈局</DesktopImage>
+ <DashboardLayout>控制面板佈局</DashboardLayout>
+ </normalPage>
+ <columnPage>
+ <TwoColumnsLayout>兩列佈局</TwoColumnsLayout>
+ <ThreeColumnsLayout>三列佈局</ThreeColumnsLayout>
+ </columnPage>
+ <rowPage>
+ <TwoRowsLayout>兩行佈局</TwoRowsLayout>
+ <ThreeRowsLayout>三行佈局</ThreeRowsLayout>
+ </rowPage>
+ <tabsPage>
+ <TwoTabsLayout>兩個標籤</TwoTabsLayout>
+ <ThreeTabsLayout>三個標籤</ThreeTabsLayout>
+ </tabsPage>
+ <mixPage>
+ <TwoColumnsOneRowLayout>兩列一行佈局</TwoColumnsOneRowLayout>
+ <OneRowTwoColumnsLayout>一行兩列佈局</OneRowTwoColumnsLayout>
+ <ThreeRowsTwoColumnsLayout>兩列三行佈局
+ </ThreeRowsTwoColumnsLayout>
+ </mixPage>
+ <UIPageTemplateOptions>null</UIPageTemplateOptions>
+ </label>
+ </UIWizardPageSelectLayoutForm>
+
+ <UIWizardPageSetInfo>
+ <title>增加新頁面</title>
+ <label>
+ <curentSelectedNodeInfo>選中的頁面節點</curentSelectedNodeInfo>
+ <pageName>節點名</pageName>
+ <pageDisplayName>顯示名</pageDisplayName>
+ <visible>可見</visible>
+ <showPublicationDate>發布日期&時間</showPublicationDate>
+ <startPublicationDate>起始發布日期</startPublicationDate>
+ <endPublicationDate>結束發布日期</endPublicationDate>
+ </label>
+ <action>
+ <Save>#{word.save}</Save>
+ </action>
+ <msg>
+ <null>為找到頁面。</null>
+ </msg>
+ </UIWizardPageSetInfo>
+ <EditWizard>
+ <label>
+ <curentSelectedNodeInfo>選中的頁面節點</curentSelectedNodeInfo>
+ <pageName>節點名</pageName>
+ <pageDisplayName>顯示名</pageDisplayName>
+ <visible>可見</visible>
+ <showPublicationDate>發布日期&時間</showPublicationDate>
+ <startPublicationDate>起始發布日期</startPublicationDate>
+ <endPublicationDate>結束發布日期</endPublicationDate>
+ </label>
+ <title>編輯頁面</title>
+ <action>
+ <Save>#{word.save}</Save>
+ </action>
+ </EditWizard>
+ <UIPageCreationWizardStepForm>
+ <label>
+ <pageName>頁面名稱</pageName>
+ </label>
+ </UIPageCreationWizardStepForm>
+ <UIAdvancedCustomization>
+ <icon>
+ <UIPortalManagement>Portal</UIPortalManagement>
+ <UIPageManagement>頁面</UIPageManagement>
+ </icon>
+ <label>
+ <UIPortalManagement>Portal管理</UIPortalManagement>
+ <UIPageManagement>頁面管理</UIPageManagement>
+ </label>
+ </UIAdvancedCustomization>
+ <UIPortalManagement>
+ <msg>
+ <Invalid-EditLayout-Permission>您無權編輯此佈局。
+ </Invalid-EditLayout-Permission>
+ <Invalid-EditPage-Permission>您無權編輯此頁面。
+ </Invalid-EditPage-Permission>
+ </msg>
+ <title>
+ <EDIT>編輯當前Portal</EDIT>
+ <BROWSE>管理Portal</BROWSE>
+ </title>
+ </UIPortalManagement>
+
+ <UIContainerConfigOptions>
+ <label>
+ <ContainerConfigTitle>容器分類</ContainerConfigTitle>
+ <selectContainerCategory>點擊此處選擇一個容器分類</selectContainerCategory>
+ </label>
+ <tab>
+ <row>行容器佈局</row>
+ <column>列容器佈局</column>
+ <tabs>標籤容器佈局</tabs>
+ <mixed>混合容器佈局</mixed>
+ </tab>
+ <UIDropDown>
+ <title>行佈局</title>
+ <label>
+ <ContainerCategory>容器分類</ContainerCategory>
+ <row>行佈局</row>
+ <column>列佈局</column>
+ <tabs>標籤佈局</tabs>
+ <mixed>混合佈局</mixed>
+ </label>
+ </UIDropDown>
+ <template>
+ <oneRow>一個行容器</oneRow>
+ <twoRows>兩個行容器</twoRows>
+ <threeRows>三個行容器</threeRows>
+ <oneColumns>一個列容器</oneColumns>
+ <twoColumns>兩個列容器</twoColumns>
+ <threeColumns>三個列容器</threeColumns>
+ <twoTabs>兩個標籤容器</twoTabs>
+ <threeTabs>三個標籤容器</threeTabs>
+ <twoColumnsOneRow>兩個列,一個行容器</twoColumnsOneRow>
+ <oneRowTwoColumns>一個行,兩個列容器</oneRowTwoColumns>
+ <oneRow2Column1Row>一個行,兩個列,一個行容器</oneRow2Column1Row>
+ </template>
+ </UIContainerConfigOptions>
+ <UIDecoratorConfigOptions>
+ <label>
+ <selectDecorator>選擇裝飾</selectDecorator>
+ </label>
+ </UIDecoratorConfigOptions>
+ <UIPortlet>
+ <label>
+ <portlet>Portlet</portlet>
+ <title>Portlet</title>
+ <description>GateIn portlet</description>
+ <portletContent>Portlet描述</portletContent>
+ <View>查看</View>
+ </label>
+ <lable>
+ <information>完成</information>
+ </lable>
+ <deletePortlet>您確定要刪除這個portlet嗎?</deletePortlet>
+ <tooltip>
+ <PortletMode>Portlet模式</PortletMode>
+ <Minimize>最小化</Minimize>
+ <MinimizeRestore>還原</MinimizeRestore>
+ <Maximize>最大化</Maximize>
+ <MaximizeRestore>向下還原</MaximizeRestore>
+ <editPortlet>編輯Portlet</editPortlet>
+ <deletePortlet>刪除Portlet</deletePortlet>
+ <ResizeWindow>調整窗口</ResizeWindow>
+ <DragControl>保持這一區域,拖動portlet</DragControl>
+ </tooltip>
+ <message>
+ <RuntimeError>此portlet遇到錯誤,無法顯示。</RuntimeError>
+ </message>
+ </UIPortlet>
+ <PortletMode>
+ <label>
+ <help>幫助</help>
+ <view>查看</view>
+ <edit>編輯</edit>
+ </label>
+ </PortletMode>
+ <UIPagePreview>
+ <action>
+ <Back>#{word.back}</Back>
+ </action>
+ <msg>
+ <empty>該頁面沒有內容。點擊編輯頁面增加內容。</empty>
+ </msg>
+ </UIPagePreview>
+ <UIVTabInputSet>
+ <label>
+ <personalInfo>個人資訊</personalInfo>
+ </label>
+ </UIVTabInputSet>
+ <UIFormAvailablePortlet>
+ <label>
+ <UIFormTableInputSet>Portlet</UIFormTableInputSet>
+ </label>
+ </UIFormAvailablePortlet>
+
+ <UIQuickBar>
+ <tooltip>
+ <BasicCustomization>基本設定</BasicCustomization>
+ <AdvanceCustomization>高級設定</AdvanceCustomization>
+ </tooltip>
+ </UIQuickBar>
+ <UIPageEditBar>
+ <tooltip>
+ <PagePreview>前一頁</PagePreview>
+ <EditPage>編輯頁面屬性</EditPage>
+ <SharedNavigation>導覽器社區配置</SharedNavigation>
+ <EditContainer>顯示容器控制</EditContainer>
+ <EditPortlet>顯示portlet控制</EditPortlet>
+ <Decorator>裝飾</Decorator>
+ <SavePage>儲存頁面</SavePage>
+ <TurnOffPreview>點擊此處關閉預覽模式</TurnOffPreview>
+ </tooltip>
+ </UIPageEditBar>
+ <UIPageManagement>
+ <title>
+ <BROWSE>管理頁面</BROWSE>
+ <EDIT>頁面&導覽器器</EDIT>
+ </title>
+ <msg>
+ <Invalid-editPermission>您無法編輯此頁。</Invalid-editPermission>
+ </msg>
+ </UIPageManagement>
+
+ <UIPageIterator>
+ <label>
+ <totalPage>所有頁面</totalPage>
+ <backTenPages>前10頁</backTenPages>
+ <previous>前一頁</previous>
+ <next>下一頁</next>
+ <nextTenPages>後10頁</nextTenPages>
+ </label>
+ </UIPageIterator>
+ <UIPortalBrowser>
+ <header>
+ <creator>建立者</creator>
+ <editPermission>編輯權限</editPermission>
+ <accessPermissions>使用權限</accessPermissions>
+ <name>#{word.name}</name>
+ <skin>#{word.skin}</skin>
+ <action>#{word.action}</action>
+ <factoryId>FactoryId</factoryId>
+ </header>
+ <action>
+ <addNewPortal>建立新Portal</addNewPortal>
+ <title>
+ <DeletePortal>刪除Portal</DeletePortal>
+ </title>
+ </action>
+ <msg>
+ <Invalid-viewPermission>Portal不允許使用</Invalid-viewPermission>
+ <PortalInUse>{0}Portal正在使用</PortalInUse>
+ <Invalid-deletePermission>您無權刪除{0}Portal。
+ </Invalid-deletePermission>
+ <Invalid-createPermission>您無權建立新Portal。請和管理員聯繫。
+ </Invalid-createPermission>
+ </msg>
+ <deletePortal>您確定要刪除這個Portal嗎?</deletePortal>
+ </UIPortalBrowser>
+ <SitePortal>
+ <label>網站Portal</label>
+ </SitePortal>
+ <ClassicPortal>
+ <label>經典Portal</label>
+ </ClassicPortal>
+ <WebOSPortal>
+ <label>WebOSPortal</label>
+ </WebOSPortal>
+
+ <PopupPageSelector>
+ <title>
+ <UIPageBrowser>搜索和選擇頁面</UIPageBrowser>
+ <SelectPage>選擇一個頁面</SelectPage>
+ </title>
+ </PopupPageSelector>
+ <UIControWSPopupWindow>
+ <title>
+ <UIApplicationTree>儲存樹</UIApplicationTree>
+ </title>
+ </UIControWSPopupWindow>
+ <EditGroup>
+ <title>
+ <UIPageNavigationForm>增加導覽器</UIPageNavigationForm>
+ </title>
+ </EditGroup>
+ <UILogged>
+ <note>
+ <loggedUser>歡迎</loggedUser>
+ <ItemContainer>該部分正在建設中</ItemContainer>
+ </note>
+ <action>
+ <logout>登出</logout>
+ <signout>退出</signout>
+ <Youhave>您已經:</Youhave>
+ </action>
+ <title>
+ <widgetNews>GateIn小工具</widgetNews>
+ <widgetCategory>小工具分類</widgetCategory>
+ <widgetItem>小工具</widgetItem>
+ <BrowsersSupport>瀏覽器支持</BrowsersSupport>
+ </title>
+ <label>
+ <Workbeston>最佳作品</Workbeston>
+ <Workableon>同樣精彩</Workableon>
+ <DownloadNow>立即下載</DownloadNow>
+ <RollBack>退回</RollBack>
+ <Save>儲存</Save>
+ <Finish>完成</Finish>
+ <Abort>捨棄</Abort>
+ </label>
+ </UILogged>
+ <UIPortalComponentLogin>
+ <label>
+ <password>密碼</password>
+ <username>使用者</username>
+ </label>
+ </UIPortalComponentLogin>
+ <UIForgetPasswordWizard>
+ <title>您為什麼無法登錄?</title>
+ <action>
+ <Next>下一步</Next>
+ <Back>返回</Back>
+ </action>
+ <info>
+ 對於不能使用該網站給您帶來的不便我們非常抱歉。
+ <br />
+ 要盡快解決此問題,請按照以下故障排除步驟操作。
+ <br />
+ <br />
+ 1.恢復您的密碼:輸入
+ <strong>您的使用者名</strong>
+ 點擊發送。
+ <br />
+ 2.恢復您的使用者名:輸入
+ <strong>電子郵件地址</strong>
+ 點擊發送。
+ <br />
+ </info>
+ <label>
+ <forgotpassword>忘記我的密碼</forgotpassword>
+ <forgotusername>忘記我的使用者名</forgotusername>
+ </label>
+ </UIForgetPasswordWizard>
+ <UIForgetPassword>
+ <title>忘記使用者名/密碼</title>
+ <action>
+ <Send>發送</Send>
+ <Back>返回</Back>
+ </action>
+ <label>
+ <username>使用者名:</username>
+ <email>電子郵件:</email>
+ </label>
+ <msg>
+ <user-delete>你的使用者名已被管理員刪除。</user-delete>
+ <user-not-exist>這個使用者名不存在。</user-not-exist>
+ <email-not-exist>這個郵件地址不存在。</email-not-exist>
+ <send-mail-success>請檢查您的電子郵件。</send-mail-success>
+ <expration>您的鏈接已過期,你必須重複激活過程。</expration>
+ </msg>
+ <mail>
+ <header>非常感謝您與我們聯繫,您已經申請取回使用者名和密碼。</header>
+ <footer>謝謝。</footer>
+ <user>您帳戶的使用者名是:</user>
+ <password>您的密碼是:</password>
+ <link>您可以為這個使用者名申請一個新的密碼,請點擊鏈接:</link>
+ </mail>
+ </UIForgetPassword>
+ <UIResetPassword>
+ <title>修改密碼</title>
+ <action>
+ <Save>儲存</Save>
+ <Close>關閉</Close>
+ </action>
+ <label>
+ <username>使用者名:</username>
+ <password>密碼:</password>
+ <changepass>修改密碼:</changepass>
+ <newpassword>新密碼:</newpassword>
+ <confirmnewpassword>確認新密碼:</confirmnewpassword>
+ </label>
+ <msg>
+ <change-password-successfully>密碼已更改。
+ </change-password-successfully>
+ <password-is-not-match>新密碼和確認新密碼必須一致。</password-is-not-match>
+ <Invalid-account>使用者名或密碼錯誤或為空。請再試一次。</Invalid-account>
+ </msg>
+ </UIResetPassword>
+
+ <UIPopupMessages>
+ <title>
+ <exoMessages>消息</exoMessages>
+ </title>
+ <button>
+ <ok>OK</ok>
+ </button>
+ <label>
+ <Error>錯誤</Error>
+ <Warning>警告</Warning>
+ <Info>訊息</Info>
+ </label>
+ <Close>關閉窗口</Close>
+ </UIPopupMessages>
+
+ <UISitemap>
+ <label>
+ <message>此位置沒有子頁。</message>
+ </label>
+ </UISitemap>
+
+ <UIPortalToolPanel>
+ <label>
+ <copyrightText><![CDATA[Copyright © 2010.All rights Reserved,]]></copyrightText>
+ <companyTitleText> eXo Platform SAS and Red Hat, Inc..
+ </companyTitleText>
+ </label>
+ </UIPortalToolPanel>
+
+ <UIContainer>
+ <title>
+ <Container>容器</Container>
+ <DragControlArea>保持這個區域,拖動容器。</DragControlArea>
+ </title>
+ <label>
+ <Thecontainer>容器</Thecontainer>
+ </label>
+ <deleteContainer>您確定要刪除此容器?</deleteContainer>
+ <tooltip>
+ <closeContainer>刪除容器</closeContainer>
+ <editContainer>編輯容器</editContainer>
+ <drag>將容器拖動到此</drag>
+ </tooltip>
+ </UIContainer>
+ <UIPage>
+ <label>
+ <title>Portal頁面</title>
+ <description>Portal頁面正文</description>
+ <pageContent>頁面描述</pageContent>
+ </label>
+ <msg>
+ <EditPermission>
+ <null>您無權修改此頁面。</null>
+ </EditPermission>
+ </msg>
+ </UIPage>
+ <UIPageDesktop>
+ <Default>
+ <img>
+ <location>/eXoResources/skin/DefaultSkin/portal/webui/component/view/UIPageDesktop/icons/80x80
+ </location>
+ </img>
+ </Default>
+ <Mac>
+ <img>
+ <location>/eXoResources/skin/DefaultSkin/portal/webui/component/view/UIPageDesktop/icons/80x80
+ </location>
+ </img>
+ </Mac>
+ <Vista>
+ <img>
+ <location>/eXoResources/skin/DefaultSkin/portal/webui/component/view/UIPageDesktop/icons/80x80
+ </location>
+ </img>
+ </Vista>
+ <label>
+ <pagebody>Portal頁面正文</pagebody>
+ <PageContent>頁面內容</PageContent>
+ <View>查看</View>
+ <Edit>編輯</Edit>
+ <Done>完成</Done>
+ </label>
+ <title>
+ <PortalPage>Portal頁面</PortalPage>
+ <SaveToDatabase>儲存到資料庫</SaveToDatabase>
+ <AddApplication>新增儲存程式</AddApplication>
+ <PageNavigation>頁面導覽器</PageNavigation>
+ <eXoBrowser>瀏覽器</eXoBrowser>
+ <ShowPortletDesktop>顯示/隱藏Portlets</ShowPortletDesktop>
+ <ShowWidgetDesktop>顯示/隱藏小工具</ShowWidgetDesktop>
+ <SignIn>登錄</SignIn>
+ <SignOut>退出</SignOut>
+ <pageNavigation>頁面導覽器</pageNavigation>
+ </title>
+ <msg>
+ <hasNotPermission>您無權編輯此頁。</hasNotPermission>
+ </msg>
+ <action>
+ <Close>從桌面導覽器刪除這個儲存</Close>
+ <Quit>退出</Quit>
+ <action>
+ <Open>打開</Open>
+ </action>
+ </action>
+ </UIPageDesktop>
+
+ <UIPageBody>
+ <label>
+ <title>Portal頁面正文</title>
+ <description>Portal頁面正文</description>
+ </label>
+ <msg>
+ <pageNotFoundLine1>未找到頁面</pageNotFoundLine1>
+ <pageNotFoundLine2>您無權查看這個網頁。</pageNotFoundLine2>
+ <pageNotFoundLine3>網頁可以被刪除。</pageNotFoundLine3>
+ <pageNotFoundLine4>此節點沒有網頁。</pageNotFoundLine4>
+ </msg>
+ </UIPageBody>
+
+ <UIPortal>
+ <label>
+ <title>UIPortal容器</title>
+ <description>UIPortal容器</description>
+ </label>
+ </UIPortal>
+ <UITableColumnContainer>
+ <label>
+ <title>導覽器容器</title>
+ <description>導覽器容器</description>
+ </label>
+ </UITableColumnContainer>
+
+ <UISearch>
+ <label>
+ <AdvancedSearch>高級搜索</AdvancedSearch>
+ <UISavedQuery>儲存的查詢</UISavedQuery>
+ <UISearchResult>高級搜索結果</UISearchResult>
+ <UIMetadataSearch>Meta資料搜索</UIMetadataSearch>
+ <Search>搜索</Search>
+ <QuickSearch>快速搜索</QuickSearch>
+ </label>
+ </UISearch>
+ <UISearchForm>
+ <msg>
+ <empty>找不到結果</empty>
+ </msg>
+ </UISearchForm>
+ <UIFormUploadInput>
+ <label>
+ <Uploaded>上傳</Uploaded>
+ <remove>刪除上傳</remove>
+ <Cancel>取消</Cancel>
+ </label>
+ <msg>
+ <limit>文件必須小於{0} MB.</limit>
+ </msg>
+ </UIFormUploadInput>
+ <UINavigationNodeSelectorPopupMenu>
+ <event>
+ <AddNode>增加新節點</AddNode>
+ <PasteNode>粘貼節點</PasteNode>
+ </event>
+ </UINavigationNodeSelectorPopupMenu>
+ <NavigationNodePopupMenu>
+ <event>
+ <AddNode>增加新節點</AddNode>
+ <EditPageNode>編輯節點頁面</EditPageNode>
+ <EditSelectedNode>編輯此節點</EditSelectedNode>
+ <EditNavigation>編輯導覽器</EditNavigation>
+ <CopyNode>複製節點</CopyNode>
+ <CloneNode>複製節點</CloneNode>
+ <CutNode>剪下節點</CutNode>
+ <MoveUp>上移</MoveUp>
+ <MoveDown>下移</MoveDown>
+ <PasteNode>粘貼節點</PasteNode>
+ <SaveNavigation>儲存導覽器</SaveNavigation>
+ <DeleteNode>刪除節點</DeleteNode>
+ </event>
+ </NavigationNodePopupMenu>
+ <UIGroupManagement>
+ <msg>
+ <Edit>您必須選擇一個群組。</Edit>
+ <Delete>您無法刪除這個群組,它正在被另外一個程序使用。</Delete>
+ <DeleteMandatory>您不能刪除這個群組,因為它(或者它的子節點)是強制的。</DeleteMandatory>
+ </msg>
+ </UIGroupManagement>
+ <UIEditCurentPage>
+ <label>
+ <pageCreateWizard>編輯當前頁面導覽器。</pageCreateWizard>
+ <step1>
+ <title>歡迎編輯當前頁面。</title>
+ </step1>
+ <wizardSteps>步驟</wizardSteps>
+ <next>下一步</next>
+ <done>儲存</done>
+ <back>返回</back>
+ <abort>捨棄</abort>
+ <step2>
+ <title>選擇頁面節點,建立頁面名稱</title>
+ </step2>
+ <step3>
+ <title>選擇頁面佈局模板</title>
+ </step3>
+ <step4>
+ <title>拖放</title>
+ </step4>
+ </label>
+ </UIEditCurentPage>
+
+ <UIAccessGroup>
+ <deleteAccessGroup>您確定要刪除此使用群組?</deleteAccessGroup>
+ </UIAccessGroup>
+ <UISharedPortalResources>
+ <msg>
+ <notSelected>您必須選擇一個群組。</notSelected>
+ </msg>
+ </UISharedPortalResources>
+ <UISharedNavigation>
+ <msg>
+ <notSelected>您必須選擇一個群組。</notSelected>
+ </msg>
+ </UISharedNavigation>
+ <Office>
+ <label>辦公室</label>
+ </Office>
+ <Default>
+ <label>預設</label>
+ </Default>
+ <FactoryId>
+ <left>
+ <title>FactoryId</title>
+ </left>
+ <title>FactoryId</title>
+ </FactoryId>
+
+ <UIItemSelector>
+ <lable>
+ <ItemDetailTitle>樣本頁面佈局模板預覽</ItemDetailTitle>
+ </lable>
+ </UIItemSelector>
+
+ <UITree>
+ <tooltip>
+ <UpLevel>上一級</UpLevel>
+ </tooltip>
+ </UITree>
+
+ <UIAccountSetting>
+ <tab>
+ <label>
+ <UIAccountProfiles>帳戶概況</UIAccountProfiles>
+ <UIAccountChangePass>修改密碼</UIAccountChangePass>
+ </label>
+ </tab>
+ <action>
+ <Close>關閉</Close>
+ </action>
+ </UIAccountSetting>
+
+ <UIAccountProfiles>
+ <action>
+ <Save>儲存</Save>
+ <Reset>重置</Reset>
+ </action>
+ <label>
+ <userName>使用者名:</userName>
+ <firstName>名:</firstName>
+ <lastName>姓:</lastName>
+ <email>電子郵件:</email>
+ </label>
+ <msg>
+ <update>
+ <success>帳戶訊息已更新。</success>
+ </update>
+ </msg>
+ </UIAccountProfiles>
+ <UIAccountChangePass>
+ <action>
+ <Save>儲存</Save>
+ <Reset>重置</Reset>
+ </action>
+ <label>
+ <currentpass>當前密碼:</currentpass>
+ <newpass>新密碼:</newpass>
+ <confirmnewpass>確認新密碼:</confirmnewpass>
+ </label>
+ <msg>
+ <change>
+ <pass>
+ <success>密碼已修改。</success>
+ </pass>
+ </change>
+ <password-is-not-match>新密碼和確認新密碼不一致。</password-is-not-match>
+ <currentpassword-is-not-match>當前密碼不正確。
+ </currentpassword-is-not-match>
+ </msg>
+ </UIAccountChangePass>
+
+ <UIDropDownControl>
+ <title>
+ <Empty>下拉控制</Empty>
+ </title>
+ </UIDropDownControl>
+ <UIDropDownPageTemp>
+ <item>
+ <normalPageConfigs>頁面配置</normalPageConfigs>
+ <columnPageConfigs>列頁面配置</columnPageConfigs>
+ <mixPageConfigs>混合頁面配置</mixPageConfigs>
+ <rowPageConfigs>行頁面配置</rowPageConfigs>
+ <tabsPageConfigs>標籤頁面配置</tabsPageConfigs>
+ </item>
+ </UIDropDownPageTemp>
+
+ <UIGadgetContainerManagement>
+ <action>
+ <close>取消</close>
+ <save>#{word.save}</save>
+ </action>
+ <confirm>
+ <DeleteContainer>您確定要刪除這個容器嗎?</DeleteContainer>
+ <DeleteGadget>您確定要刪除這個小工具嗎?</DeleteGadget>
+ </confirm>
+ <title>
+ <manager>小工具容器管理</manager>
+ <containers>容器</containers>
+ <selectedContainer>選中的小工具容器訊息:</selectedContainer>
+ </title>
+ <msg>
+ <emptyList>此分類中不存在容器。</emptyList>
+ <noSelected>沒選中容器</noSelected>
+ </msg>
+ <label>
+ <label>容器標籤:</label>
+ <description>容器描述:</description>
+ </label>
+ <tooltip>
+ <remove>刪除選中的小工具容器</remove>
+ <edit>編輯選中的小工具容器</edit>
+ <addnew>增加新的小工具容器</addnew>
+ </tooltip>
+ </UIGadgetContainerManagement>
+ <GadgetContainerPopup>
+ <title>
+ <UIGadgetContainerForm>小工具容器表</UIGadgetContainerForm>
+ </title>
+ </GadgetContainerPopup>
+ <UIGadgetContainerForm>
+ <label>
+ <name>標籤:</name>
+ <description>描述:</description>
+ </label>
+ <action>
+ <Save>#{word.save}</Save>
+ <Close>取消</Close>
+ </action>
+ <msg>
+ <exist>這個容器已經存在,請輸入另外一個。</exist>
+ </msg>
+ </UIGadgetContainerForm>
+ <UIWidgetContainer>
+ <tooltip>
+ <addWidget>增加小工具</addWidget>
+ <scrollDown>向下滾動</scrollDown>
+ <scrollUp>向上滾動</scrollUp>
+ </tooltip>
+ </UIWidgetContainer>
+ <Theme>
+ <UIItemThemeSelector>
+ <item>
+ <SimpleBlue>簡單藍</SimpleBlue>
+ <SimpleGreen>簡單綠</SimpleGreen>
+ <SimplePink>簡單粉紅</SimplePink>
+ <SimpleViolet>簡單紫羅蘭</SimpleViolet>
+ <SimpleOrange>簡單橙</SimpleOrange>
+ <RoundConerPink>粉紅圓角</RoundConerPink>
+ <RoundConerOrange>橙色圓角</RoundConerOrange>
+ <RoundConerGreen>綠色圓角</RoundConerGreen>
+ <RoundConerViolet>紫羅蘭圓角</RoundConerViolet>
+ <RoundConerBlue>藍色圓角</RoundConerBlue>
+ <ShadowPink>粉紅陰影</ShadowPink>
+ <ShadowOrange>橙色陰影</ShadowOrange>
+ <ShadowBlue>藍色陰影</ShadowBlue>
+ <ShadowViolet>紫羅蘭陰影</ShadowViolet>
+ <ShadowGreen>綠色陰影</ShadowGreen>
+ <VistaBlue>Vista藍</VistaBlue>
+ <VistaTheme>Vista主題</VistaTheme>
+ <MacBlack>蘋果黑</MacBlack>
+ <MacGreenSteel>蘋果綠鋼鐵</MacGreenSteel>
+ <MacTheme>蘋果主題</MacTheme>
+ <MacGray>蘋果灰</MacGray>
+ <DefaultTheme>預設主題</DefaultTheme>
+ </item>
+ </UIItemThemeSelector>
+ </Theme>
+ <ThemeDropDown>
+ <item>
+ <Shadow>陰影樣式</Shadow>
+ <Simple>簡單樣式</Simple>
+ <VistaStyle>Vista樣式</VistaStyle>
+ <MacStyle>蘋果樣式</MacStyle>
+ <RoundConer>圓角樣式</RoundConer>
+ </item>
+ </ThemeDropDown>
+ <UIAddGadgetPopup>
+ <title>
+ <UIDashboardSelectContainer>控制面板工作區
+ </UIDashboardSelectContainer>
+ </title>
+ </UIAddGadgetPopup>
+ <UIDashboardSelectContainer>
+ <action>
+ <addGadget>增加小工具</addGadget>
+ </action>
+ </UIDashboardSelectContainer>
+ <UIDashboardContainer>
+ <label>
+ <openWorkspace>增加小工具</openWorkspace>
+ <SaveTitle>儲存</SaveTitle>
+ <CancelTitle>取消</CancelTitle>
+ <Debug>調試</Debug>
+ <Cache>沒有緩存</Cache>
+ </label>
+ </UIDashboardContainer>
+ <UIDashboardEditForm>
+ <label>
+ <totalColumns>烈數:</totalColumns>
+ <isPrivate>是私有的:</isPrivate>
+ <owner>所有者:</owner>
+ </label>
+ </UIDashboardEditForm>
+ <UIDashboard>
+ <msg>
+ <required>該字串欄位是必需的</required>
+ <addGadget>將小工具拖動到此</addGadget>
+ <notUrl>url是無效的。請輸入一個小工具xml或RSS提要的正確url。</notUrl>
+ <ApplicationNotExisted>此儲存不存在或已被刪除。</ApplicationNotExisted>
+ </msg>
+ </UIDashboard>
+ <UIUserSelector>
+ <label>
+ <option>
+ <userName>使用者名</userName>
+ <lastName>姓</lastName>
+ <firstName>名</firstName>
+ <email>電子郵件地址</email>
+ </option>
+ <group>組:</group>
+ <searchUser>搜索:</searchUser>
+ <userName>使用者名</userName>
+ <lastName>姓</lastName>
+ <firstName>名</firstName>
+ <email>電子郵件</email>
+ <action>操作</action>
+ <Add>增加</Add>
+ <Close>關閉</Close>
+ </label>
+ <msg>
+ <empty>空資料</empty>
+ <user-required>請至少檢查一個使用者。</user-required>
+ </msg>
+ </UIUserSelector>
+ <UIAddNewApplication>
+ <label>
+ <AddApplication>新增儲存程式</AddApplication>
+ <Categories>分類</Categories>
+ <Select>選擇儲存</Select>
+ <NoneApp>此處不存在儲存。請到儲存註冊portlet處導入儲存。</NoneApp>
+ <Type>類型:</Type>
+ <Created>建立於:</Created>
+ <Description>描述:</Description>
+ <Close>關閉</Close>
+ <Add>增加並將此儲存儲存在頁面中。</Add>
+ <AddToStartup>增加並立即運行此儲存。</AddToStartup>
+ </label>
+ </UIAddNewApplication>
+ <UIPortalNavigation>
+ <Label>
+ <Next>下一步</Next>
+ <Previous>上一步</Previous>
+ </Label>
+ </UIPortalNavigation>
+ <UIDropDownConfigs>
+ <item>
+ <row>在行中</row>
+ <column>在列中</column>
+ <tabs>在標籤中</tabs>
+ <mix>混合</mix>
+ </item>
+ </UIDropDownConfigs>
+ <UITabContainer>
+ <tab>標籤</tab>
+ </UITabContainer>
+ <UIBrowserPortlet>
+ <Back>後退</Back>
+ <Forward>前進</Forward>
+ <Refresh>重新顯示</Refresh>
+ <Stop>停止</Stop>
+ <Goto>轉到地址欄地址</Goto>
+ <Go>轉到</Go>
+ <Untitled>(無標題)</Untitled>
+ <Tab>新標籤</Tab>
+ </UIBrowserPortlet>
+
+ <UIPopupWindow>
+ <Close>關閉窗口</Close>
+ <title>
+ <UIPageNodeForm2>增加/編輯頁面節點</UIPageNodeForm2>
+ <UINavigationManagement>導覽器管理</UINavigationManagement>
+ <UIPageNavigationForm>頁面導覽器表</UIPageNavigationForm>
+ </title>
+ </UIPopupWindow>
+ <PopupPageSelector2>
+ <title>
+ <SelectPage>選擇頁面</SelectPage>
+ </title>
+ </PopupPageSelector2>
+ <UISiteManagement>
+ <msg>
+ <Invalid-deletePermission>該使用者沒有權限刪除這個Portal
+ </Invalid-deletePermission>
+ <portal-not-exist>Portal不存在或者已被刪除</portal-not-exist>
+ <Invalid-editPermission>該使用者沒有權限編輯這個Portal
+ </Invalid-editPermission>
+ </msg>
+ </UISiteManagement>
+ <UIGroupNavigationManagement>
+ <Action>
+ <Add>增加導覽器</Add>
+ </Action>
+ <Delete>
+ <Confirm>您確定要刪除此導覽器?</Confirm>
+ </Delete>
+ <msg>
+ <Invalid-deletePermission>使用者沒有權限刪除這個導覽器
+ </Invalid-deletePermission>
+ <navigation-not-exist>導覽器不存在或者已經被刪除。</navigation-not-exist>
+ <Invalid-editPermission>使用者沒有權限編輯這個導覽器</Invalid-editPermission>
+ </msg>
+ </UIGroupNavigationManagement>
+ <UINavigationManagement>
+ <action>
+ <addNode>增加節點</addNode>
+ </action>
+ <msg>
+ <NavigationNotExistAnymore>導覽器可刪除。</NavigationNotExistAnymore>
+ </msg>
+ </UINavigationManagement>
+ <UIAddGroupNavigation>
+ <Action>
+ <Add>增加導覽器</Add>
+ </Action>
+ <Label>
+ <NoPermission>此使用者無權增加導覽器。</NoPermission>
+ </Label>
+ <header>
+ <Group>組</Group>
+ </header>
+ </UIAddGroupNavigation>
+ <UIGadget>
+ <tooltip>
+ <Minimize>最小化</Minimize>
+ <Unminimize>還原</Unminimize>
+ <Maximize>最大化</Maximize>
+ <Unmaximize>向下還原</Unmaximize>
+ <editGadget>編輯小工具</editGadget>
+ <deleteGadget>刪除小工具</deleteGadget>
+ </tooltip>
+ </UIGadget>
+</bundle>
Modified: portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/common/locales-config.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/common/locales-config.xml 2010-01-19 13:07:44 UTC (rev 1368)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/common/locales-config.xml 2010-01-19 13:25:44 UTC (rev 1369)
@@ -97,6 +97,13 @@
<locale>zh</locale>
<output-encoding>UTF-8</output-encoding>
<input-encoding>UTF-8</input-encoding>
- <description>Default configuration for the chinese locale</description>
+ <description>Default configuration for the simplified chinese locale</description>
</locale-config>
+
+ <locale-config>
+ <locale>zh_TW</locale>
+ <output-encoding>UTF-8</output-encoding>
+ <input-encoding>UTF-8</input-encoding>
+ <description>Default configuration for the traditional chinese locale</description>
+ </locale-config>
</locales-config>
14 years, 11 months
gatein SVN: r1368 - in portal/trunk/portlet/exoadmin/src/main: webapp/groovy/wsrp/webui/component and 1 other directory.
by do-not-reply@jboss.org
Author: chris.laprun(a)jboss.com
Date: 2010-01-19 08:07:44 -0500 (Tue, 19 Jan 2010)
New Revision: 1368
Added:
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/wsrp/webui/component/ConsumerController.java
Removed:
portal/trunk/portlet/exoadmin/src/main/webapp/groovy/wsrp/webui/component/UIWsrpConsoleContent.gtmpl
portal/trunk/portlet/exoadmin/src/main/webapp/groovy/wsrp/webui/component/UIWsrpPortlet.gtmpl
Modified:
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/wsrp/webui/component/UIWsrpConsole.java
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/wsrp/webui/component/UIWsrpConsumerEditor.java
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/wsrp/webui/component/UIWsrpConsumerOverview.java
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/wsrp/webui/component/UIWsrpPortlet.java
Log:
- Display consumer editor on error so that we can display updated information if appropriate (or let user correct any mistake).
- Started extracting business logic into a UI-independent controller class.
- Cleaned-up UI classes by removing useless extra elements and refactoring things to reuse more code.
Added: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/wsrp/webui/component/ConsumerController.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/wsrp/webui/component/ConsumerController.java (rev 0)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/wsrp/webui/component/ConsumerController.java 2010-01-19 13:07:44 UTC (rev 1368)
@@ -0,0 +1,85 @@
+/*
+ * JBoss, a division of Red Hat
+ * Copyright 2010, Red Hat Middleware, LLC, and individual
+ * contributors as indicated by the @authors tag. See the
+ * copyright.txt in the distribution for a full listing of
+ * individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.exoplatform.wsrp.webui.component;
+
+import org.gatein.pc.api.PortletInvokerException;
+import org.gatein.wsrp.WSRPConsumer;
+import org.gatein.wsrp.consumer.RefreshResult;
+import org.gatein.wsrp.consumer.registry.ConsumerRegistry;
+
+import java.util.List;
+
+/**
+ * @author <a href="mailto:chris.laprun@jboss.com">Chris Laprun</a>
+ * @version $Revision$
+ */
+public class ConsumerController
+{
+ private ConsumerRegistry registry;
+
+ public ConsumerController(ConsumerRegistry registry)
+ {
+ this.registry = registry;
+ }
+
+ public ConsumerRegistry getRegistry()
+ {
+ return registry;
+ }
+
+ public WSRPConsumer getConsumer(String id)
+ {
+ return registry.getConsumer(id);
+ }
+
+ public List<WSRPConsumer> getConfiguredConsumers()
+ {
+ return registry.getConfiguredConsumers();
+ }
+
+ public RefreshResult refreshConsumer(WSRPConsumer consumer) throws PortletInvokerException
+ {
+ RefreshResult result = consumer.refresh(true);
+
+ if (result.hasIssues())
+ {
+ // refresh had issues, we should deactivate this consumer
+ registry.deactivateConsumerWith(consumer.getProducerId());
+ }
+ else
+ {
+ // activate the consumer if it's supposed to be active
+ if (consumer.isActive())
+ {
+ registry.activateConsumerWith(consumer.getProducerId());
+ }
+ else
+ {
+ registry.deactivateConsumerWith(consumer.getProducerId());
+ }
+ }
+
+ return result;
+ }
+}
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/wsrp/webui/component/UIWsrpConsole.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/wsrp/webui/component/UIWsrpConsole.java 2010-01-19 12:42:54 UTC (rev 1367)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/wsrp/webui/component/UIWsrpConsole.java 2010-01-19 13:07:44 UTC (rev 1368)
@@ -23,29 +23,21 @@
package org.exoplatform.wsrp.webui.component;
import org.exoplatform.webui.config.annotation.ComponentConfig;
-import org.exoplatform.webui.config.annotation.ComponentConfigs;
-import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.core.UIContainer;
import org.exoplatform.webui.core.UITabPane;
import org.exoplatform.webui.core.lifecycle.UIApplicationLifecycle;
-/** @author Wesley Hales */
-@ComponentConfigs({
- @ComponentConfig(
- lifecycle = UIApplicationLifecycle.class,
- template = "app:/groovy/wsrp/webui/component/UIWsrpConsole.gtmpl"),
- @ComponentConfig(
- id = "UIWsrpConsoleTab",
- type = UITabPane.class,
- template = "app:/groovy/wsrp/webui/component/UIWsrpConsoleContent.gtmpl",
- events = {@EventConfig(listeners = UITabPane.SelectTabActionListener.class)})})
+@ComponentConfig(
+ lifecycle = UIApplicationLifecycle.class,
+ template = "app:/groovy/wsrp/webui/component/UIWsrpConsole.gtmpl"
+)
public class UIWsrpConsole extends UIContainer
{
public UIWsrpConsole() throws Exception
{
- UITabPane uiTabPane = addChild(UITabPane.class, "UIWsrpConsoleTab", null);
- uiTabPane.addChild(UIWsrpConsumerOverview.class, null, "Manage Consumers").setRendered(true);
- uiTabPane.addChild(UIWsrpProducerOverview.class, null, "Producer Configuration").setRendered(false);
+ UITabPane uiTabPane = addChild(UITabPane.class, null, null);
+ uiTabPane.addChild(UIWsrpConsumerOverview.class, null, "Manage Consumers");
+ uiTabPane.addChild(UIWsrpProducerOverview.class, null, "Producer Configuration");
if (uiTabPane.getSelectedTabId().equals(""))
{
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/wsrp/webui/component/UIWsrpConsumerEditor.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/wsrp/webui/component/UIWsrpConsumerEditor.java 2010-01-19 12:42:54 UTC (rev 1367)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/wsrp/webui/component/UIWsrpConsumerEditor.java 2010-01-19 13:07:44 UTC (rev 1368)
@@ -25,8 +25,6 @@
import org.exoplatform.commons.utils.LazyPageList;
import org.exoplatform.container.ExoContainer;
import org.exoplatform.container.ExoContainerContext;
-import org.exoplatform.portal.application.PortalRequestContext;
-import org.exoplatform.portal.webui.portal.UIPortal;
import org.exoplatform.web.application.ApplicationMessage;
import org.exoplatform.webui.application.WebuiRequestContext;
import org.exoplatform.webui.config.annotation.ComponentConfig;
@@ -37,7 +35,6 @@
import org.exoplatform.webui.core.lifecycle.UIFormLifecycle;
import org.exoplatform.webui.event.Event;
import org.exoplatform.webui.event.EventListener;
-import org.exoplatform.webui.event.MonitorEvent;
import org.exoplatform.webui.form.UIForm;
import org.exoplatform.webui.form.UIFormInputBase;
import org.exoplatform.webui.form.UIFormStringInput;
@@ -121,7 +118,7 @@
this.newConsumer = newConsumer;
}
- public void setConsumer(WSRPConsumer consumer) throws Exception
+ public void setConsumer(WSRPConsumer consumer)
{
if (consumer == null)
{
@@ -139,13 +136,6 @@
setNewConsumer(false);
}
- private void bindingFields(WSRPConsumer consumer)
- {
- ProducerInfo producerInfo = consumer.getProducerInfo();
- producerInfo.setId(getConsumerName());
- producerInfo.setExpirationCacheSeconds(getCacheExpiration());
- }
-
static public class SaveActionListener extends EventListener<UIWsrpConsumerEditor>
{
public void execute(Event<UIWsrpConsumerEditor> event) throws Exception
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/wsrp/webui/component/UIWsrpConsumerOverview.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/wsrp/webui/component/UIWsrpConsumerOverview.java 2010-01-19 12:42:54 UTC (rev 1367)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/wsrp/webui/component/UIWsrpConsumerOverview.java 2010-01-19 13:07:44 UTC (rev 1368)
@@ -24,23 +24,21 @@
import org.exoplatform.commons.utils.LazyPageList;
import org.exoplatform.commons.utils.ListAccess;
-import org.exoplatform.container.ExoContainer;
import org.exoplatform.container.ExoContainerContext;
import org.exoplatform.web.application.ApplicationMessage;
-import org.exoplatform.webui.application.WebuiRequestContext;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.ComponentConfigs;
import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.core.UIApplication;
import org.exoplatform.webui.core.UIContainer;
import org.exoplatform.webui.core.UIGrid;
+import org.exoplatform.webui.core.UIPageIterator;
import org.exoplatform.webui.core.UIPopupWindow;
import org.exoplatform.webui.core.lifecycle.UIApplicationLifecycle;
import org.exoplatform.webui.event.Event;
import org.exoplatform.webui.event.EventListener;
import org.gatein.wsrp.WSRPConsumer;
import org.gatein.wsrp.consumer.RefreshResult;
-import org.gatein.wsrp.consumer.RegistrationInfo;
import org.gatein.wsrp.consumer.registry.ConsumerRegistry;
import java.util.List;
@@ -74,12 +72,13 @@
//
public static String[] SELECT_ACTIONS = {"Edit", "Delete", "Refresh", "Activate", "Deactivate"};
- private RegistrationInfo expectedRegistrationInfo;
+ private ConsumerController controller;
+ private UIPopupWindow consumerEditorPopup;
+ private UIPageIterator consumersIterator;
public List getConfiguredConsumers() throws Exception
{
- ConsumerRegistry consumerRegistry = getConsumerRegistry();
- return consumerRegistry.getConfiguredConsumers();
+ return controller.getConfiguredConsumers();
}
public LazyPageList createPageList(final List pageList)
@@ -92,7 +91,7 @@
return pageList.size();
}
- public WSRPConsumer[] load(int index, int length) throws Exception, IllegalArgumentException
+ public WSRPConsumer[] load(int index, int length) throws Exception
{
WSRPConsumer[] pcs = new WSRPConsumer[pageList.size()];
@@ -125,30 +124,28 @@
public UIWsrpConsumerOverview() throws Exception
{
+ // controller
+ ConsumerRegistry registry = (ConsumerRegistry)ExoContainerContext.getCurrentContainer().getComponentInstanceOfType(ConsumerRegistry.class);
+ controller = new ConsumerController(registry);
+
//setSelectedTab(1);
- UIPopupWindow popup = addChild(UIPopupWindow.class, null, null);
- popup.setWindowSize(450, 0);
+ consumerEditorPopup = addChild(UIPopupWindow.class, null, null);
+ consumerEditorPopup.setWindowSize(450, 0);
UIWsrpConsumerEditor consumerForm = createUIComponent(UIWsrpConsumerEditor.class, null, "Consumer Editor");
- popup.setUIComponent(consumerForm);
- popup.setRendered(false);
+ consumerEditorPopup.setUIComponent(consumerForm);
+ consumerEditorPopup.setRendered(false);
- UIGrid uiGrid = addChild(UIGrid.class, "ConsumerSelector", null);
+ UIGrid consumers = addChild(UIGrid.class, "ConsumerSelector", null);
//configure the edit and delete buttons based on an id from the data list - this will also be passed as param to listener
- uiGrid.configure("producerId", FIELDS, SELECT_ACTIONS);
+ consumers.configure("producerId", FIELDS, SELECT_ACTIONS);
- uiGrid.getUIPageIterator().setId("ChangeConsumerPageIterator");
- addChild(uiGrid.getUIPageIterator());
- uiGrid.getUIPageIterator().setRendered(false);
+ consumersIterator = consumers.getUIPageIterator();
+ consumersIterator.setId("ChangeConsumerPageIterator");
+ consumersIterator.setRendered(false);
- LazyPageList pageList = createPageList(getConfiguredConsumers());
- uiGrid.getUIPageIterator().setPageList(pageList);
+ refreshConsumersList();
}
- private void setExpectedRegistrationInfo(RegistrationInfo expectedRegistrationInfo)
- {
- this.expectedRegistrationInfo = expectedRegistrationInfo;
- }
-
static public class RefreshGridActionListener extends EventListener<UIWsrpConsumerOverview>
{
public void execute(Event<UIWsrpConsumerOverview> event) throws Exception
@@ -160,34 +157,37 @@
public void refreshGrid(Event<UIWsrpConsumerOverview> event) throws Exception
{
- UIWsrpConsumerOverview consumerOverview = event.getSource();
- WebuiRequestContext ctx = event.getRequestContext();
-
- UIGrid uiGrid = consumerOverview.getChild(UIGrid.class);
//refresh the list
- LazyPageList pageList = consumerOverview.createPageList(consumerOverview.getConfiguredConsumers());
- uiGrid.getUIPageIterator().setPageList(pageList);
+ refreshConsumersList();
- ctx.addUIComponentToUpdateByAjax(consumerOverview);
+ event.getRequestContext().addUIComponentToUpdateByAjax(this);
}
+ private void refreshConsumersList() throws Exception
+ {
+ LazyPageList pageList = createPageList(getConfiguredConsumers());
+ consumersIterator.setPageList(pageList);
+ }
+
static public class OpenPopupActionListener extends EventListener<UIWsrpConsumerOverview>
{
public void execute(Event<UIWsrpConsumerOverview> event) throws Exception
{
UIWsrpConsumerOverview consumerOverview = event.getSource();
- UIPopupWindow popup = consumerOverview.getChild(UIPopupWindow.class);
- UIWsrpConsumerEditor editor = (UIWsrpConsumerEditor)popup.getUIComponent();
+ consumerOverview.displayConsumerEditor(null);
+ }
+ }
- //reset the form
- editor.reset();
- editor.setConsumer(null);
- popup.setRendered(true);
- popup.setShow(true);
- popup.setShowCloseButton(true);
- //popup.setShowMask(true);
+ private void displayConsumerEditor(WSRPConsumer consumer) throws Exception
+ {
+ UIWsrpConsumerEditor editor = (UIWsrpConsumerEditor)consumerEditorPopup.getUIComponent();
- }
+ //reset the form
+ editor.reset();
+ editor.setConsumer(consumer);
+ consumerEditorPopup.setRendered(true);
+ consumerEditorPopup.setShow(true);
+ consumerEditorPopup.setShowCloseButton(true);
}
static public class EditActionListener extends EventListener<UIWsrpConsumerOverview>
@@ -197,24 +197,9 @@
UIWsrpConsumerOverview consumerOverview = event.getSource();
WSRPConsumer consumer = consumerOverview.getConsumerFromEvent(event);
- UIApplication uiApp = event.getRequestContext().getUIApplication();
-
if (consumer != null)
{
- UIPopupWindow popup = consumerOverview.getChild(UIPopupWindow.class);
- UIWsrpConsumerEditor editor = (UIWsrpConsumerEditor)popup.getUIComponent();
-
- try
- {
- editor.setConsumer(consumer);
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- popup.setUIComponent(editor);
- popup.setRendered(true);
- popup.setShow(true);
+ consumerOverview.displayConsumerEditor(consumer);
}
}
}
@@ -308,35 +293,18 @@
if (consumer != null)
{
- ConsumerRegistry registry = consumerOverview.getConsumerRegistry();
- RefreshResult result = consumer.refresh(true);
+ RefreshResult result = consumerOverview.controller.refreshConsumer(consumer);
if (result.hasIssues())
{
- // create the expected registration info and make it available
- RegistrationInfo expected = new RegistrationInfo(consumer.getProducerInfo().getRegistrationInfo());
- expected.refresh(result.getServiceDescription(), consumer.getProducerId(), true, true, true);
- consumerOverview.setExpectedRegistrationInfo(expected);
-
- // refresh had issues, we should deactivate this consumer
- registry.deactivateConsumerWith(consumer.getProducerId());
-
- uiApp.addMessage(new ApplicationMessage("UIWsrp.consumer.grid.action.refresh.fail",
- new Object[]{result.getStatus()}, ApplicationMessage.ERROR));
+ consumerOverview.displayConsumerEditor(consumer);
}
else
{
- // activate the consumer if it's supposed to be active
- if (consumer.isActive())
- {
- registry.activateConsumerWith(consumer.getProducerId());
- }
- else
- {
- registry.deactivateConsumerWith(consumer.getProducerId());
- }
uiApp.addMessage(new ApplicationMessage("UIWsrp.consumer.grid.action.refresh.success", null, ApplicationMessage.INFO));
}
+
+ // refresh consumers
consumerOverview.refreshGrid(event);
}
}
@@ -348,25 +316,14 @@
}
}
- public void processRender(WebuiRequestContext context) throws Exception
- {
-// UITabPane uiTabPane = context.getUIApplication().findComponentById("UIWsrpConsoleTab");
-// uiTabPane.setSelectedTab(1);
- super.processRender(context);
- }
-
-
public WSRPConsumer getConsumerFromEvent(Event<?> event) throws Exception
{
- ConsumerRegistry consumerRegistry = getConsumerRegistry();
String id = event.getRequestContext().getRequestParameter(OBJECTID);
- return consumerRegistry.getConsumer(id);
+ return controller.getConsumer(id);
}
public ConsumerRegistry getConsumerRegistry() throws Exception
{
- // todo: this lookup shouldn't be done on each invocation, store it if possible
- ExoContainer manager = ExoContainerContext.getCurrentContainer();
- return (ConsumerRegistry)manager.getComponentInstanceOfType(ConsumerRegistry.class);
+ return controller.getRegistry();
}
}
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/wsrp/webui/component/UIWsrpPortlet.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/wsrp/webui/component/UIWsrpPortlet.java 2010-01-19 12:42:54 UTC (rev 1367)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/wsrp/webui/component/UIWsrpPortlet.java 2010-01-19 13:07:44 UTC (rev 1368)
@@ -23,24 +23,20 @@
package org.exoplatform.wsrp.webui.component;
import org.exoplatform.webui.config.annotation.ComponentConfig;
-import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.core.UIPortletApplication;
import org.exoplatform.webui.core.lifecycle.UIApplicationLifecycle;
/** @author Wesley Hales */
@ComponentConfig(
- lifecycle = UIApplicationLifecycle.class,
- template = "app:/groovy/wsrp/webui/component/UIWsrpPortlet.gtmpl"
+ lifecycle = UIApplicationLifecycle.class
)
public class UIWsrpPortlet extends UIPortletApplication
{
public UIWsrpPortlet() throws Exception
{
- addChild(UIWsrpConsole.class,null,null);
+ addChild(UIWsrpConsole.class, null, null);
}
-
-
}
Deleted: portal/trunk/portlet/exoadmin/src/main/webapp/groovy/wsrp/webui/component/UIWsrpConsoleContent.gtmpl
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/webapp/groovy/wsrp/webui/component/UIWsrpConsoleContent.gtmpl 2010-01-19 12:42:54 UTC (rev 1367)
+++ portal/trunk/portlet/exoadmin/src/main/webapp/groovy/wsrp/webui/component/UIWsrpConsoleContent.gtmpl 2010-01-19 13:07:44 UTC (rev 1368)
@@ -1,50 +0,0 @@
-<%
- import org.exoplatform.wsrp.webui.component.UIWsrpConsumerOverview;
- import org.exoplatform.wsrp.webui.component.UIWsrpProducerOverview;
-
-
- def rcontext = _ctx.getRequestContext();
- rcontext.getJavascriptManager().importJavascript('eXo.webui.UIHorizontalTabs');
-%>
-
-<div class="UITabPane" id="$uicomponent.id">
- <div class="UIHorizontalTabs">
- <div class="TabsContainer">
- <%
- String url = uicomponent.url("SelectTab");
- String selTabId = uicomponent.getSelectedTabId();
-
- UIWsrpConsumerOverview consumerOverview = uicomponent.getChild(UIWsrpConsumerOverview.class);
- UIWsrpProducerOverview producerOverview = uicomponent.getChild(UIWsrpProducerOverview.class);
- %>
- <div class="UITab GrayTabStyle">
- <div class="<%= consumerOverview.getId().equals(selTabId) ? "SelectedTab" : "NormalTab" %>">
- <div class="LeftTab">
- <div class="RightTab">
- <% String consumerLink = "ajaxAsyncGetRequest('" + uicomponent.url("SelectTab",consumerOverview.getId()) + "', true)" %>
- <div class="MiddleTab" onclick="eXo.webui.UIHorizontalTabs.changeTabForUITabPane(this, '${consumerOverview.getId()}', '$url');$consumerLink;">
- <%=_ctx.appRes("UITabPane.title." + consumerOverview.getId());%>
- </div>
- </div>
- </div>
- </div>
- </div>
- <div class="UITab GrayTabStyle">
- <div class="<%= producerOverview.getId().equals(selTabId) ? "SelectedTab" : "NormalTab" %>">
- <div class="LeftTab">
- <div class="RightTab">
- <% String producerLink = "ajaxAsyncGetRequest('" + uicomponent.url("SelectTab",producerOverview.getId()) + "', true)" %>
- <div class="MiddleTab" onclick="eXo.webui.UIHorizontalTabs.changeTabForUITabPane(this, '${producerOverview.getId()}', '$url');$producerLink;">
- <%=_ctx.appRes("UITabPane.title." + producerOverview.getId());%>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <div class="UITabContentContainer GrayTabContainer">
- <div class="UITabContent" style="display: <%=consumerOverview.getId().equals(selTabId) ? "block": "none"%>;overflow:auto;clear:both"><% uicomponent.renderUIComponent(consumerOverview); %></div>
- <div class="UITabContent" style="display: <%=producerOverview.getId().equals(selTabId) ? "block": "none"%>;overflow:auto;clear:both"><% uicomponent.renderUIComponent(producerOverview); %></div>
- </div>
-</div>
Deleted: portal/trunk/portlet/exoadmin/src/main/webapp/groovy/wsrp/webui/component/UIWsrpPortlet.gtmpl
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/webapp/groovy/wsrp/webui/component/UIWsrpPortlet.gtmpl 2010-01-19 12:42:54 UTC (rev 1367)
+++ portal/trunk/portlet/exoadmin/src/main/webapp/groovy/wsrp/webui/component/UIWsrpPortlet.gtmpl 2010-01-19 13:07:44 UTC (rev 1368)
@@ -1,4 +0,0 @@
-
-<div class="<%=uicomponent.getId()%>">
- <% uicomponent.renderChildren(); %>
-</div>
\ No newline at end of file
14 years, 11 months
gatein SVN: r1367 - in portal/trunk: component/resources/src/main/java/org/exoplatform/services/resources/impl and 4 other directories.
by do-not-reply@jboss.org
Author: thomas.heute(a)jboss.com
Date: 2010-01-19 07:42:54 -0500 (Tue, 19 Jan 2010)
New Revision: 1367
Modified:
portal/trunk/component/resources/src/main/java/org/exoplatform/services/resources/ResourceBundleDescription.java
portal/trunk/component/resources/src/main/java/org/exoplatform/services/resources/impl/BaseResourceBundleService.java
portal/trunk/component/resources/src/main/java/org/exoplatform/services/resources/impl/LocaleConfigImpl.java
portal/trunk/component/resources/src/main/java/org/exoplatform/services/resources/impl/LocaleConfigServiceImpl.java
portal/trunk/component/resources/src/test/java/org/exoplatform/services/resources/TestLocaleConfigService.java
portal/trunk/component/resources/src/test/java/org/exoplatform/services/resources/test/TestLocaleConfig.java
portal/trunk/component/resources/src/test/java/org/exoplatform/services/resources/test/TestResourceBundleService.java
portal/trunk/webui/eXo/src/main/java/org/exoplatform/webui/organization/UIUserProfileInputSet.java
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UILanguageSelector.java
Log:
GTNPORTAL-307: Support for derivated languages (French from France, French from Canada...)
Modified: portal/trunk/component/resources/src/main/java/org/exoplatform/services/resources/ResourceBundleDescription.java
===================================================================
--- portal/trunk/component/resources/src/main/java/org/exoplatform/services/resources/ResourceBundleDescription.java 2010-01-19 09:35:25 UTC (rev 1366)
+++ portal/trunk/component/resources/src/main/java/org/exoplatform/services/resources/ResourceBundleDescription.java 2010-01-19 12:42:54 UTC (rev 1367)
@@ -56,8 +56,8 @@
b.append(name_);
if (language_ != null)
b.append('_').append(language_);
- // if(country_ != null) b.append('_').append(country_);
- // if(variant_ != null) b.append('_').append(variant_);
+ if(country_ != null) b.append('_').append(country_);
+ if(variant_ != null) b.append('_').append(variant_);
id_ = b.toString();
}
return id_;
Modified: portal/trunk/component/resources/src/main/java/org/exoplatform/services/resources/impl/BaseResourceBundleService.java
===================================================================
--- portal/trunk/component/resources/src/main/java/org/exoplatform/services/resources/impl/BaseResourceBundleService.java 2010-01-19 09:35:25 UTC (rev 1366)
+++ portal/trunk/component/resources/src/main/java/org/exoplatform/services/resources/impl/BaseResourceBundleService.java 2010-01-19 12:42:54 UTC (rev 1367)
@@ -121,7 +121,8 @@
}
/**
- * Loads all the "init" resource bundles
+ * Loads all the "init" resource bundles
+ *
* @see org.picocontainer.Startable#start()
*/
public void start()
@@ -194,17 +195,33 @@
try
{
Collection<LocaleConfig> localeConfigs = localeService_.getLocalConfigs();
- String defaultLang = localeService_.getDefaultLocaleConfig().getLanguage();
+ // String defaultLang =
+ // localeService_.getDefaultLocaleConfig().getLanguage();
+ Locale defaultLocale = localeService_.getDefaultLocaleConfig().getLocale();
+
for (Iterator<LocaleConfig> iter = localeConfigs.iterator(); iter.hasNext();)
{
LocaleConfig localeConfig = iter.next();
- String language = localeConfig.getLanguage();
- String content = getResourceBundleContent(name, language, defaultLang, cl);
+ // String language = localeConfig.getLanguage();
+ // String content = getResourceBundleContent(name, language,
+ // defaultLang, cl);
+ Locale locale = localeConfig.getLocale();
+ String language = locale.getLanguage();
+ String country = locale.getCountry();
+
+ String content = getResourceBundleContent(name, locale, defaultLocale, cl);
if (content != null)
{
// save the content
ResourceBundleData data = new ResourceBundleData();
- data.setId(baseName + "_" + language);
+ if (country != null && country.length() > 0)
+ {
+ data.setId(baseName + "_" + language + "_" + country);
+ }
+ else
+ {
+ data.setId(baseName + "_" + language);
+ }
data.setName(baseName);
data.setLanguage(language);
data.setData(content);
@@ -260,10 +277,100 @@
}
/**
- * Invalidate an entry in the cache at this level. Normally this is called by the subclass.
- *
- * @param name the bundle name
+ * This method is used for country support
+ *
+ * @param baseName
+ * @param locale
+ * @param defaultLocale
+ * @param cl
+ * @return
*/
+ protected String getResourceBundleContent(String baseName, Locale locale, Locale defaultLocale, ClassLoader cl)
+ throws Exception
+ {
+ List<String> candidateFiles = new ArrayList<String>();
+
+ String language = locale.getLanguage();
+ String country = locale.getCountry().toUpperCase();
+
+ String defaultLanguage = defaultLocale.getLanguage();
+ String defaultCountry = defaultLocale.getCountry().toUpperCase();
+
+ if (country != null && country.length() > 0)
+ {
+ candidateFiles.add(baseName + "_" + language + "_" + country + ".properties");
+ }
+
+ if (language != null && language.length() > 0 )
+ {
+ candidateFiles.add(baseName + "_" + language + ".properties");
+ }
+
+ if (defaultCountry != null && defaultCountry.length() > 0)
+ {
+ candidateFiles.add(baseName + "_" + defaultLanguage + "_" + defaultCountry + ".properties");
+ }
+
+ if (defaultLanguage != null && defaultLanguage.length() > 0)
+ {
+ candidateFiles.add(baseName + "_" + defaultLanguage + ".properties");
+ }
+
+ candidateFiles.add(baseName + ".properties");
+
+ cl = new PropertiesClassLoader(cl, true);
+ String fileName = null;
+
+ try
+ {
+ URL url = null;
+ for (String candidateFile : candidateFiles)
+ {
+ url = cl.getResource(candidateFile);
+ if (url != null)
+ {
+ fileName = candidateFile;
+ break;
+ }
+ }
+
+ if (url != null)
+ {
+ InputStream is = url.openStream();
+ try
+ {
+ byte[] buf = IOUtil.getStreamContentAsBytes(is);
+ return new String(buf, "UTF-8");
+ }
+ finally
+ {
+ try
+ {
+ is.close();
+ }
+ catch (IOException e)
+ {
+ // Do nothing
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ throw new Exception("Error while reading the file: " + fileName, ex);
+ }
+
+ return null;
+
+ }
+
+ /**
+ * Invalidate an entry in the cache at this level. Normally this is called by
+ * the subclass.
+ *
+ * @param name
+ * the bundle name
+ */
protected final void invalidate(String name)
{
cache_.remove(name);
@@ -275,14 +382,30 @@
{
return IdentityResourceBundle.getInstance();
}
+
+ // Case 1: ResourceBundle of portlets, standard java API is used
if (isClasspathResource(name))
return ResourceBundleLoader.load(name, locale, cl);
- String id = name + "_" + locale.getLanguage();
+
+ // Case 2: ResourceBundle of portal
+ String country = locale.getCountry();
+ String id;
+ if (country != null && country.length() > 0)
+ {
+ id = name + "_" + locale.getLanguage() + "_" + locale.getCountry();
+ }
+ else
+ {
+ id = name + "_" + locale.getLanguage();
+ }
+
try
{
ResourceBundle rb = cache_.get(id);
if (rb != null)
+ {
return rb;
+ }
}
catch (Exception ex)
{
Modified: portal/trunk/component/resources/src/main/java/org/exoplatform/services/resources/impl/LocaleConfigImpl.java
===================================================================
--- portal/trunk/component/resources/src/main/java/org/exoplatform/services/resources/impl/LocaleConfigImpl.java 2010-01-19 09:35:25 UTC (rev 1366)
+++ portal/trunk/component/resources/src/main/java/org/exoplatform/services/resources/impl/LocaleConfigImpl.java 2010-01-19 12:42:54 UTC (rev 1367)
@@ -45,7 +45,7 @@
predefinedLocaleMap_ = new HashMap<String, Locale>(10);
predefinedLocaleMap_.put("us", Locale.US);
predefinedLocaleMap_.put("en", Locale.ENGLISH);
- predefinedLocaleMap_.put("fr", Locale.FRANCE);
+ predefinedLocaleMap_.put("fr", Locale.FRENCH);
predefinedLocaleMap_.put("zh", Locale.SIMPLIFIED_CHINESE);
}
@@ -112,7 +112,15 @@
localeName_ = localeName;
locale_ = predefinedLocaleMap_.get(localeName);
if (locale_ == null)
- locale_ = new Locale(localeName);
+ {
+ String[] localeParams = localeName.split("_");
+ if (localeParams.length > 1)
+ {
+ locale_ = new Locale(localeParams[0], localeParams[1]);
+ }else{
+ locale_ = new Locale(localeName);
+ }
+ }
}
public final String getLanguage()
Modified: portal/trunk/component/resources/src/main/java/org/exoplatform/services/resources/impl/LocaleConfigServiceImpl.java
===================================================================
--- portal/trunk/component/resources/src/main/java/org/exoplatform/services/resources/impl/LocaleConfigServiceImpl.java 2010-01-19 09:35:25 UTC (rev 1366)
+++ portal/trunk/component/resources/src/main/java/org/exoplatform/services/resources/impl/LocaleConfigServiceImpl.java 2010-01-19 12:42:54 UTC (rev 1367)
@@ -80,7 +80,8 @@
}
/**
- * @param lang a locale language
+ * @param lang
+ * a locale language
* @return The LocalConfig
*/
public LocaleConfig getLocaleConfig(String lang)
@@ -159,7 +160,15 @@
log.debug("Added locale config " + config + " to the set of locale configs");
//
- configs_.put(config.getLanguage(), config);
+ String country = config.getLocale().getCountry();
+ if (country != null && country.length() > 0)
+ {
+ configs_.put(config.getLanguage() + "_" + country, config);
+ }
+ else
+ {
+ configs_.put(config.getLanguage(), config);
+ }
if (i == 0)
defaultConfig_ = config;
}
Modified: portal/trunk/component/resources/src/test/java/org/exoplatform/services/resources/TestLocaleConfigService.java
===================================================================
--- portal/trunk/component/resources/src/test/java/org/exoplatform/services/resources/TestLocaleConfigService.java 2010-01-19 09:35:25 UTC (rev 1366)
+++ portal/trunk/component/resources/src/test/java/org/exoplatform/services/resources/TestLocaleConfigService.java 2010-01-19 12:42:54 UTC (rev 1367)
@@ -113,7 +113,7 @@
assertLocaleConfig(en, "en", "Default configuration for english locale", "UTF-8", "UTF-8", Orientation.LT,
Locale.ENGLISH);
assertLocaleConfig(fr, "fr", "Default configuration for the french locale", "UTF-8", "UTF-8", Orientation.LT,
- Locale.FRANCE);
+ Locale.FRENCH);
assertLocaleConfig(ar, "ar", "Default configuration for the arabic locale", "UTF-8", "UTF-8", Orientation.RT,
new Locale("ar"));
assertLocaleConfig(vi, "vi", "Default configuration for the vietnam locale", "UTF-8", "UTF-8", Orientation.LT,
Modified: portal/trunk/component/resources/src/test/java/org/exoplatform/services/resources/test/TestLocaleConfig.java
===================================================================
--- portal/trunk/component/resources/src/test/java/org/exoplatform/services/resources/test/TestLocaleConfig.java 2010-01-19 09:35:25 UTC (rev 1366)
+++ portal/trunk/component/resources/src/test/java/org/exoplatform/services/resources/test/TestLocaleConfig.java 2010-01-19 12:42:54 UTC (rev 1367)
@@ -64,7 +64,7 @@
// --------------get a locale------------------
locale = service_.getLocaleConfig("fr");
assertTrue("expect locale config is found", locale != null);
- assertTrue("expect France locale is found", locale.getLocale().equals(Locale.FRANCE));
+ assertTrue("expect France locale is found", locale.getLocale().equals(Locale.FRENCH));
locale = service_.getLocaleConfig("vi");
assertTrue("expect locale config is found", locale != null);
@@ -78,7 +78,7 @@
Locale vnlocale = service_.getLocaleConfig("vi").getLocale();
hasObjectInCollection(vnlocale, locales, new LocaleComparator());
hasObjectInCollection(Locale.ENGLISH, locales, new LocaleComparator());
- hasObjectInCollection(Locale.FRANCE, locales, new LocaleComparator());
+ hasObjectInCollection(Locale.FRENCH, locales, new LocaleComparator());
}
public static class LocaleComparator implements Comparator
Modified: portal/trunk/component/resources/src/test/java/org/exoplatform/services/resources/test/TestResourceBundleService.java
===================================================================
--- portal/trunk/component/resources/src/test/java/org/exoplatform/services/resources/test/TestResourceBundleService.java 2010-01-19 09:35:25 UTC (rev 1366)
+++ portal/trunk/component/resources/src/test/java/org/exoplatform/services/resources/test/TestResourceBundleService.java 2010-01-19 12:42:54 UTC (rev 1367)
@@ -74,8 +74,8 @@
ResourceBundle res = service_.getResourceBundle(fileRes, Locale.ENGLISH);
// //------------create ressource bundle in database------------------
- createResourceBundle(databaseRes, PROPERTIES, Locale.ENGLISH.getLanguage());
- createResourceBundle(databaseRes, PROPERTIES_FR, Locale.FRANCE.getLanguage());
+ createResourceBundle(databaseRes, PROPERTIES, Locale.ENGLISH);
+ createResourceBundle(databaseRes, PROPERTIES_FR, Locale.FRANCE);
res = service_.getResourceBundle(databaseRes, Locale.ENGLISH);
assertTrue("Expect to find the ResourceBundle", res != null);
@@ -85,13 +85,13 @@
assertEquals("Expect French locale bundle", "fr", res.getString("language"));
assertEquals("Expect French locale bundle", "property", res.getString("property"));
//--------- Update a databseRes resource bundle in database ----------------
- createResourceBundle(databaseRes, PROPERTIES_FR_UPDATE, Locale.FRANCE.getLanguage());
+ createResourceBundle(databaseRes, PROPERTIES_FR_UPDATE, Locale.FRANCE);
res = service_.getResourceBundle(databaseRes, Locale.FRANCE);
assertEquals("Expect French locale bundle", "fr-property", res.getString("property"));
//--------Update fileRes resource bundle in databse--------------
String datas = "key1=fileSystem\nlanguage=french";
- createResourceBundle(fileRes, datas, Locale.FRANCE.getLanguage());
+ createResourceBundle(fileRes, datas, Locale.FRANCE);
res = service_.getResourceBundle(fileRes, Locale.FRANCE);
assertTrue("Expect to find the ResourceBundle", res != null);
assertTrue("Expect 'fileRes' is updated", res.getString("key1").equals("fileSystem"));
@@ -99,7 +99,7 @@
//--------Update fileRes resource bundle in databse--------------
datas = "key1=fileSystemUpdate\nlanguage=french";
- createResourceBundle(fileRes, datas, Locale.FRANCE.getLanguage());
+ createResourceBundle(fileRes, datas, Locale.FRANCE);
res = service_.getResourceBundle(fileRes, Locale.FRANCE);
assertTrue("Expect to find the ResourceBundle", res != null);
assertTrue("Expect 'fileRes' is updated", res.getString("key1").equals("fileSystemUpdate"));
@@ -112,8 +112,8 @@
ResourceBundle res = service_.getResourceBundle(fileRes, Locale.ENGLISH);
//------------create ressource bundle in database------------------
- createResourceBundle(databaseRes, PROPERTIES, Locale.ENGLISH.getLanguage());
- createResourceBundle(databaseRes, PROPERTIES_FR, Locale.FRANCE.getLanguage());
+ createResourceBundle(databaseRes, PROPERTIES, Locale.ENGLISH);
+ createResourceBundle(databaseRes, PROPERTIES_FR, Locale.FRANCE);
res = service_.getResourceBundle(databaseRes, Locale.ENGLISH);
assertTrue("Expect to find the ResourceBundle", res != null);
@@ -147,8 +147,8 @@
ResourceBundle res = service_.getResourceBundle(fileRes, Locale.ENGLISH);
//------------create ressource bundle in database------------------
- createResourceBundle(databaseRes, PROPERTIES, Locale.ENGLISH.getLanguage());
- createResourceBundle(databaseRes, PROPERTIES_FR, Locale.FRANCE.getLanguage());
+ createResourceBundle(databaseRes, PROPERTIES, Locale.ENGLISH);
+ createResourceBundle(databaseRes, PROPERTIES_FR, Locale.FRANCE);
res = service_.getResourceBundle(databaseRes, Locale.ENGLISH);
assertTrue("Expect to find the ResourceBundle", res != null);
@@ -165,12 +165,16 @@
assertTrue("Expect at least 2 locale properties resources", l.size() >= 2);
}
- private void createResourceBundle(String name, String datas, String language) throws Exception
+ private void createResourceBundle(String name, String datas, Locale locale) throws Exception
{
ResourceBundleData data = service_.createResourceBundleDataInstance();
data.setName(name);
data.setData(datas);
- data.setLanguage(language);
+ data.setLanguage(locale.getLanguage());
+ if (locale.getCountry().trim().length() != 0)
+ {
+ data.setCountry(locale.getCountry());
+ }
service_.saveResourceBundle(data);
}
Modified: portal/trunk/webui/eXo/src/main/java/org/exoplatform/webui/organization/UIUserProfileInputSet.java
===================================================================
--- portal/trunk/webui/eXo/src/main/java/org/exoplatform/webui/organization/UIUserProfileInputSet.java 2010-01-19 09:35:25 UTC (rev 1366)
+++ portal/trunk/webui/eXo/src/main/java/org/exoplatform/webui/organization/UIUserProfileInputSet.java 2010-01-19 12:42:54 UTC (rev 1367)
@@ -42,9 +42,7 @@
import java.util.Locale;
/**
- * Created by The eXo Platform SARL
- * Author : Dang Van Minh
- * minhdv81(a)yahoo.com
+ * Created by The eXo Platform SARL Author : Dang Van Minh minhdv81(a)yahoo.com
* Jun 28, 2006
*/
@ComponentConfig(template = "system:/groovy/webui/form/UIVTabInputSet.gtmpl")
@@ -125,7 +123,7 @@
}
private void initLanguageCombo(UIFormSelectBox langSelectBox)
- {
+ {
if (langSelectBox == null)
return;
String selectedLang = langSelectBox.getSelectedValues()[0];
@@ -139,13 +137,23 @@
String displayLanguage = null;
String displayName = null;
String language = null;
+ String country = null;
SelectItemOption<String> option;
while (i.hasNext())
{
LocaleConfig config = i.next();
- displayLanguage = config.getLocale().getDisplayLanguage(currentLocale);
- displayName = config.getLocale().getDisplayName(currentLocale);
- language = config.getLanguage();
+ Locale locale = config.getLocale();
+ displayName = locale.getDisplayName(currentLocale);
+ language = locale.getDisplayLanguage(currentLocale);
+ country = locale.getCountry();
+ if (country != null && country.length() > 0)
+ {
+ displayLanguage = language + " (" + locale.getDisplayCountry(currentLocale) + ")";
+ }
+ else
+ {
+ displayLanguage = language;
+ }
option = new SelectItemOption<String>(displayLanguage, language, displayName);
if (lang.equals(selectedLang))
{
@@ -208,7 +216,8 @@
for (UIComponent uiComp : inputSet.getChildren())
{
UIFormStringInput uiInput = (UIFormStringInput)uiComp;
- //if(uiInput.getValue() == null || uiInput.getValue().length() < 1) continue;
+ // if(uiInput.getValue() == null || uiInput.getValue().length() < 1)
+ // continue;
userProfile.getUserInfoMap().put(uiInput.getName(), uiInput.getValue());
}
}
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UILanguageSelector.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UILanguageSelector.java 2010-01-19 09:35:25 UTC (rev 1366)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UILanguageSelector.java 2010-01-19 12:42:54 UTC (rev 1367)
@@ -64,7 +64,20 @@
Locale locale = localeConfig.getLocale();
String displayName = locale.getDisplayLanguage(currentLocale);
String lang = locale.getLanguage();
- String localedName = capitalizeFirstLetter(locale.getDisplayLanguage(locale));
+ String country = locale.getCountry();
+ String localedName;
+
+ if (country != null && country.length() > 0)
+ {
+ localedName =
+ capitalizeFirstLetter(locale.getDisplayLanguage(currentLocale) + " (" + locale.getDisplayCountry(currentLocale) + ")");
+ lang = lang + "_" + country;
+ }
+ else
+ {
+ localedName = capitalizeFirstLetter(locale.getDisplayLanguage(currentLocale));
+ }
+
if (localedName == null || localedName.length() == 0)
localedName = "???";
if (locale.getDisplayName().equalsIgnoreCase(currentLocale.getDisplayName()))
@@ -77,7 +90,7 @@
}
optionsList.add(localeItem);
}
- //TODO need use other UIComponent here
+ // TODO need use other UIComponent here
Collections.sort(optionsList, new LanguagesComparator());
List<SelectItemCategory> contientsCategories = new ArrayList<SelectItemCategory>();
SelectItemCategory category = new SelectItemCategory("Languages");
@@ -111,12 +124,11 @@
UIPortalApplication uiApp = Util.getUIPortalApplication();
UIMaskWorkspace uiMaskWS = uiApp.getChildById(UIPortalApplication.UI_MASK_WS_ID);
uiMaskWS.setUIComponent(null);
- //event.getRequestContext().addUIComponentToUpdateByAjax(uiMaskWS) ;
+ // event.getRequestContext().addUIComponentToUpdateByAjax(uiMaskWS) ;
Util.getPortalRequestContext().setFullRender(false);
if (language == null || language.trim().length() < 1)
return;
- //if(!uiPortal.isModifiable()) return;
-
+ // if(!uiPortal.isModifiable()) return;
LocaleConfigService localeConfigService = event.getSource().getApplicationComponent(LocaleConfigService.class);
LocaleConfig localeConfig = localeConfigService.getLocaleConfig(language);
if (localeConfig == null)
@@ -136,7 +148,7 @@
}
}
}
-
+
private String capitalizeFirstLetter(String word)
{
if (word == null)
14 years, 11 months
gatein SVN: r1366 - in portal/trunk/portlet: web/src/main/webapp/WEB-INF/classes/locale/portlet/web and 1 other directory.
by do-not-reply@jboss.org
Author: thomas.heute(a)jboss.com
Date: 2010-01-19 04:35:25 -0500 (Tue, 19 Jan 2010)
New Revision: 1366
Modified:
portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/RegisterPortlet_zh.xml
portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/GroovyPortlet_zh.xml
Log:
GTNPORTAL-499: Translation in traditional Chinese
Modified: portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/RegisterPortlet_zh.xml
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/RegisterPortlet_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
+++ portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/RegisterPortlet_zh.xml 2010-01-19 09:35:25 UTC (rev 1366)
@@ -9,6 +9,12 @@
<action>
<CheckUsernameAvailability>查询用户</CheckUsernameAvailability>
</action>
+ <username>用户名</username>
+ <password>密码</password>
+ <confirmPassword>确认密码</confirmPassword>
+ <firstName>名</firstName>
+ <lastName>姓</lastName>
+ <emailAddress>电子邮件</emailAddress>
</label>
</UIRegisterForm>
</bundle>
Modified: portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/GroovyPortlet_zh.xml
===================================================================
--- portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/GroovyPortlet_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
+++ portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/GroovyPortlet_zh.xml 2010-01-19 09:35:25 UTC (rev 1366)
@@ -18,6 +18,7 @@
<UIBannerPortlet>
<action>
<changeLanguage>更改语言</changeLanguage>
+ <register>注册</register>
</action>
</UIBannerPortlet>
14 years, 11 months
gatein SVN: r1365 - in portal/trunk: portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/dashboard and 9 other directories.
by do-not-reply@jboss.org
Author: thomas.heute(a)jboss.com
Date: 2010-01-19 04:21:12 -0500 (Tue, 19 Jan 2010)
New Revision: 1365
Added:
portal/trunk/gadgets/eXoGadgets/src/main/webapp/locale/Todo/zh_ALL.xml
portal/trunk/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/dashboard/TabbedDashboardPortlet_zh.xml
portal/trunk/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/gadget/GadgetPortlet_zh.xml
portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AccountPortlet_zh.xml
portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AdminToolbarPortlet_zh.xml
portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_zh.xml
portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/GroupNavigationPortlet_zh.xml
portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/OrganizationPortlet_zh.xml
portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/PortalNavigationPortlet_zh.xml
portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/RegisterPortlet_zh.xml
portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/StarToolbarPortlet_zh.xml
portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/UserToolbarPortlet_zh.xml
portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/NavigationPortlet_zh.xml
portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/PortalNavigationPortlet_zh.xml
portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/BreadcumbsPortlet_zh.xml
portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/GroovyPortlet_zh.xml
portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/LogoPortlet_zh.xml
portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/organization/management/executive-board_zh.xml
portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/administrators_zh.xml
portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/guests_zh.xml
portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/users_zh.xml
portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/portal/classic_zh.xml
portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/custom_zh.xml
portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/expression_zh.xml
portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/services_zh.xml
portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_zh.xml
Modified:
portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/common/locales-config.xml
Log:
GTNPORTAL-499: Translation in traditional Chinese
Added: portal/trunk/gadgets/eXoGadgets/src/main/webapp/locale/Todo/zh_ALL.xml
===================================================================
--- portal/trunk/gadgets/eXoGadgets/src/main/webapp/locale/Todo/zh_ALL.xml (rev 0)
+++ portal/trunk/gadgets/eXoGadgets/src/main/webapp/locale/Todo/zh_ALL.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,29 @@
+<!--
+
+ Copyright (C) 2009 eXo Platform SAS.
+
+ This is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this software; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+
+<messagebundle>
+ <msg name="save">
+ 保存
+ </msg>
+ <msg name="type_here">
+ 在此增加新的任务
+ </msg>
+</messagebundle>
Added: portal/trunk/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/dashboard/TabbedDashboardPortlet_zh.xml
===================================================================
--- portal/trunk/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/dashboard/TabbedDashboardPortlet_zh.xml (rev 0)
+++ portal/trunk/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/dashboard/TabbedDashboardPortlet_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UITabPaneDashboard>
+ <action>
+ <addNewDashboard>增加控制面板</addNewDashboard>
+ <switchShowRange>更改范围</switchShowRange>
+ </action>
+ <msg>
+ <deleteTab>确认要删除这个控制面板吗?</deleteTab>
+ <cannotDeleteLastTab>最后一个标签,无法删除。</cannotDeleteLastTab>
+ <wrongTabName>只有α,数字,下划线,破折号和空格是允许的。</wrongTabName>
+ </msg>
+ </UITabPaneDashboard>
+</bundle>
Added: portal/trunk/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/gadget/GadgetPortlet_zh.xml
===================================================================
--- portal/trunk/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/gadget/GadgetPortlet_zh.xml (rev 0)
+++ portal/trunk/portlet/dashboard/src/main/webapp/WEB-INF/classes/locale/portlet/gadget/GadgetPortlet_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UIGadgetEditMode>
+ <title>设置小工具的网址</title>
+ <label>
+ <gadgetUrl>网址:</gadgetUrl>
+ <typeSelector>输入:</typeSelector>
+ <gadgetSelector>小工具:</gadgetSelector>
+ <option>
+ <remote>远端小工具</remote>
+ <local>本地小工具</local>
+ </option>
+ </label>
+ <action>
+ <Save>保存</Save>
+ </action>
+ </UIGadgetEditMode>
+</bundle>
Added: portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AccountPortlet_zh.xml
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AccountPortlet_zh.xml (rev 0)
+++ portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AccountPortlet_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UIAccountForm>
+ <label>
+ <Profile>用户配置文件</Profile>
+ <username>#{word.userName}:</username>
+ <SearchUser>查询用户</SearchUser>
+ <password1x>密码:</password1x>
+ <password2x>确认密码:</password2x>
+ <password>密码:</password>
+ <Confirmpassword>确认密码:</Confirmpassword>
+ <firstName>#{word.firstName}:</firstName>
+ <lastName>#{word.lastName}:</lastName>
+ <email>电子邮件地址:</email>
+ <note><![CDATA[<span style="color: red">*</span>必须填写]]></note>
+ <action>
+ <SearchUser>查询用户</SearchUser>
+ </action>
+ <Membership>会员</Membership>
+ <option>
+ <male>男</male>
+ <female>女</female>
+ </option>
+ <HomeInfo>家庭信息</HomeInfo>
+ <user>
+ <name>
+ <given>#{word.givenName}: </given>
+ <family>#{word.familyName}:</family>
+ <nickName>#{word.nickName}: </nickName>
+ </name>
+ <bdate>#{word.birthday}:</bdate>
+ <gender>#{word.gender}:</gender>
+ <employer>#{word.employer}: </employer>
+ <department>#{word.department}:</department>
+ <jobtitle>#{word.jobTitle}:</jobtitle>
+ <language>语言</language>
+ <home-info>
+ <postal>
+ <name>#:</name>
+ <street>#{word.street}: </street>
+ <city>#{word.city}:</city>
+ <stateprov>#{word.stateProv}: </stateprov>
+ <postalcode>#{word.postalCode}: </postalcode>
+ <country>#{word.country}:</country>
+ </postal>
+ <telecom>
+ <mobile>
+ <number>#{word.mobile}: </number>
+ </mobile>
+ <telephone>
+ <number>#{word.tel}:</number>
+ </telephone>
+ </telecom>
+ <online>
+ <email>#{word.email}: </email>
+ <uri>#{word.website}:</uri>
+ </online>
+ </home-info>
+ <business-info>
+ <postal>
+ <name>#:</name>
+ <street>#{word.street}:</street>
+ <city>#{word.city}:</city>
+ <stateprov>#{word.stateProv}: </stateprov>
+ <postalcode>#{word.postalCode}:</postalcode>
+ <country>#{word.country}:</country>
+ </postal>
+ <telecom>
+ <mobile>
+ <number>#{word.mobile}: </number>
+ </mobile>
+ <telephone>
+ <number>#{word.tel}:</number>
+ </telephone>
+ </telecom>
+ <online>
+ <email>#{word.email}:</email>
+ <uri>#{word.website}:</uri>
+ </online>
+ </business-info>
+ </user>
+ <BusinessInfo>商务信息</BusinessInfo>
+ </label>
+ <title>增加/编辑帐户</title>
+ <action>
+ <Reset>重置</Reset>
+ <Back>#{word.back}</Back>
+ <Save>#{word.save}</Save>
+ </action>
+ <msg>
+ <user-exist>用户名 '{0}' 已注册</user-exist>
+ <incorrect-password>确认密码不正确</incorrect-password>
+ <sucsesful>
+ <create>
+ <user>成功创建用户</user>
+ </create>
+ </sucsesful>
+ </msg>
+ <tab>
+ <label>
+ <AccountTemplate>帐户模板</AccountTemplate>
+ <UIUserProfileInputSet>用户配置文件</UIUserProfileInputSet>
+ <AccountInputSet>帐户设置</AccountInputSet>
+ <UIUserMembershipSelector>用户会员 </UIUserMembershipSelector>
+ </label>
+ </tab>
+ </UIAccountForm>
+ <UIPopupWindow>
+ <title>
+ <UIGroupMembershipSelector>选择用户会员</UIGroupMembershipSelector>
+ </title>
+ </UIPopupWindow>
+</bundle>
Added: portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AdminToolbarPortlet_zh.xml
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AdminToolbarPortlet_zh.xml (rev 0)
+++ portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/AdminToolbarPortlet_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UIAdminToolbarPortlet>
+ <action>
+ <AddPage>增加新页面</AddPage>
+ <EditPage>编辑页面</EditPage>
+ <CreatePortal>创建新门户</CreatePortal>
+ <EditPortal>编辑门户</EditPortal>
+ <BrowsePage>管理页面</BrowsePage>
+ <EditPageAndNavigation>编辑页面和导航</EditPageAndNavigation>
+ <Editor>编辑器</Editor>
+ <portal>
+ <Editor>网站编辑器</Editor>
+ </portal>
+ <group>
+ <Editor>组编辑器</Editor>
+ </group>
+ <user>
+ <Editor>控制面板编辑器</Editor>
+ </user>
+ <EditSiteLayout>修改布局</EditSiteLayout>
+ </action>
+ </UIAdminToolbarPortlet>
+</bundle>
Added: portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_zh.xml
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_zh.xml (rev 0)
+++ portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <word>
+ <cancel>取消</cancel>
+ </word>
+ <label>
+ <displayName>显示名称: </displayName>
+ <description>描述: </description>
+ </label>
+ <category>
+ <msg>
+ <changeNotExist>不能将修改保存到分类中,数据库中该分类已不存在。</changeNotExist>
+ </msg>
+ </category>
+ <application>
+ <msg>
+ <changeNotExist>不能将修改保存到应用中,数据库中该应用已不存在。</changeNotExist>
+ </msg>
+ <label></label>
+ </application>
+ <gadget>
+ <msg>
+ <changeNotExist>不能将修改保存到小工具中,数据库中该小工具已不存在。</changeNotExist>
+ </msg>
+ </gadget>
+ <UIToolbar>
+ <label>
+ <organize>分类</organize>
+ <portlet>Portlet</portlet>
+ <gadget>小工具</gadget>
+ </label>
+ </UIToolbar>
+ <UIOrganizer>
+ <label>
+ <addCategory>增加分类</addCategory>
+ <autoImport>导入应用</autoImport>
+ <categories>分类</categories>
+ </label>
+ <title>
+ <editCategory>编辑分类</editCategory>
+ <addApplication>在分类中增加应用</addApplication>
+ <deleteCategory>删除分类</deleteCategory>
+ <deleteApplication>删除应用</deleteApplication>
+ </title>
+ <msg>
+ <importAll>此操作将自动创建分类并且导入其上所有的小工具和portlet。</importAll>
+ <deleteCategory>您确定要删除这个分类以及其上所有的应用吗?</deleteCategory>
+ <deleteApplication>您确认要删除这个应用吗?</deleteApplication>
+ <emptyCategory>这个分类不包含任何应用,请点击(+)按钮增加应用。</emptyCategory>
+ <noCategory>分类不存在。您可以点击"增加分类" 或者"自动导入" 按钮来增加分类。</noCategory>
+ <deleteCategoryInUse>无法删除该分类,正在使用中。</deleteCategoryInUse>
+ <deleteApplicationInUse>无法删除该应用,正在使用中。</deleteApplicationInUse>
+ <categoryNoExist>此分类在数据库中不存在。</categoryNoExist>
+ <applicationNoExist>此应用在数据库中不存在。</applicationNoExist>
+ </msg>
+ </UIOrganizer>
+ <UIApplicationRegistryEditMode>
+ <title>导入应用</title>
+ <label>
+ <showImport>修改显示导入</showImport>
+ </label>
+ </UIApplicationRegistryEditMode>
+ <UIPermissionForm>
+ <label>
+ <UIListPermissionSelector></UIListPermissionSelector>
+ </label>
+ </UIPermissionForm>
+ <UIApplicationInfo>
+ <label>
+ <name>名称: </name>
+ <displayName>#{label.displayName}</displayName>
+ <description>#{label.description}</description>
+ <accessPermissions>访问权限 </accessPermissions>
+ </label>
+ <title>
+ <editApplication>编辑应用</editApplication>
+ </title>
+ </UIApplicationInfo>
+ <UIApplicationForm>
+ <title>编辑应用信息</title>
+ <label>
+ <applicationName>应用名称: </applicationName>
+ <displayName>#{label.displayName}</displayName>
+ <description>#{label.description}</description>
+ </label>
+ <action>
+ <Save>#{word.save}</Save>
+ <Cancel>#{word.cancel}</Cancel>
+ </action>
+ </UIApplicationForm>
+ <UIAddApplicationForm>
+ <header>
+ <input>选择</input>
+ <label>显示名称</label>
+ <description>描述</description>
+ </header>
+ <label>
+ <option>
+ <portlet>portlet</portlet>
+ <gadget>小工具</gadget>
+ </option>
+ <displayName>#{label.displayName}</displayName>
+ <type>应用类型</type>
+ </label>
+ <action>
+ <Add>增加</Add>
+ <Cancel>#{word.cancel}</Cancel>
+ </action>
+ <msg>
+ <PortletExist>此应用已经包含在分类中,请选择另外一个!</PortletExist>
+ <appNotExists>请选择一个应用。</appNotExists>
+ </msg>
+ </UIAddApplicationForm>
+ <UICategoryForm>
+ <label>
+ <name>分类名称:</name>
+ <displayName>#{label.displayName}</displayName>
+ <description>#{label.description}</description>
+ <UIListPermissionSelector></UIListPermissionSelector>
+ </label>
+ <action>
+ <Save>#{word.save}</Save>
+ <Cancel>#{word.cancel}</Cancel>
+ </action>
+ <msg>
+ <SameName>此分类已经存在,请输入另外一个!</SameName>
+ </msg>
+ <tab>
+ <label>
+ <categoryPermission>权限设置</categoryPermission>
+ <categorySetting>分类设置</categorySetting>
+ </label>
+ </tab>
+ </UICategoryForm>
+ <UIPortletManagement>
+ <title>
+ <local>本地</local>
+ <remote>远程</remote>
+ </title>
+ <msg>
+ <noPortlet>没有可用的Portlet。</noPortlet>
+ </msg>
+ </UIPortletManagement>
+ <UIPortletInfo>
+ <label>
+ <name>portlet名称:</name>
+ <display>#{label.displayName}</display>
+ <description>#{label.description}</description>
+ </label>
+ <title>
+ <portletPreferences>portlet选项</portletPreferences>
+ </title>
+ <msg>
+ <noPortletPreferences>没有portlet选项 </noPortletPreferences>
+ </msg>
+ </UIPortletInfo>
+ <UIGadgetManagement>
+ <label>
+ <addRemote>增加一个远程小工具</addRemote>
+ <createNew>创建一个新小工具</createNew>
+ </label>
+ <title>
+ <deleteGadget>删除小工具</deleteGadget>
+ </title>
+ <msg>
+ <noGadget>没有可用的小工具。</noGadget>
+ <deleteGadgetInUse>不能删除此小工具,正在使用中。</deleteGadgetInUse>
+ <deleteGadget>您确定要删除此小工具吗?</deleteGadget>
+ </msg>
+ </UIGadgetManagement>
+ <UIGadgetInfo>
+ <label>
+ <gadgetDetails>小工具详细信息</gadgetDetails>
+ <name>小工具名称: </name>
+ <displayName>#{label.displayName}</displayName>
+ <description>#{label.description}</description>
+ <viewUrl>查看网址: </viewUrl>
+ <editUrl>编辑网址:</editUrl>
+ <reference>选项: </reference>
+ <categories>分类:</categories>
+ <categories>
+ <guide>为了能在控制面板中使用,您必须将此小工具添加到分类中。 </guide>
+ <clickHere>点击此处添加到分类中</clickHere>
+ </categories>
+ </label>
+ <title>
+ <refresh>刷新信息</refresh>
+ <editGadget>编辑小工具</editGadget>
+ <copy>复制此小工具到本地库中</copy>
+ </title>
+ <msg>
+ <gadgetNotExist>此小工具在数据库中不存在,不能在此小工具上执行操作。 </gadgetNotExist>
+ </msg>
+ </UIGadgetInfo>
+ <UICategorySelector>
+ <header>
+ <choose>选择</choose>
+ <categoryName>分类名称</categoryName>
+ </header>
+ <action>
+ <Save>保存</Save>
+ <Cancel>取消</Cancel>
+ </action>
+ <msg>
+ <NoCategory>没有分类</NoCategory>
+ </msg>
+ </UICategorySelector>
+ <UIAddGadget>
+ <action>
+ <Add>增加</Add>
+ <Cancel>#{word.cancel}</Cancel>
+ </action>
+ <label>
+ <url>网址</url>
+ <urlExist>此网址已经存在,请选择另外一个!</urlExist>
+ <urlError>网址:'{0}'中的数据无效</urlError>
+ </label>
+ </UIAddGadget>
+ <UIGadgetEditor>
+ <label>
+ <source>源: </source>
+ </label>
+ <action>
+ <Save>#{word.save}</Save>
+ <Cancel>#{word.cancel}</Cancel>
+ </action>
+ <msg>
+ <invalidSpec>这个来源是无效的小工具规范。</invalidSpec>
+ </msg>
+ </UIGadgetEditor>
+ <UIListPermissionSelector>
+ <header>
+ <groupId>组</groupId>
+ <membership>会员</membership>
+ </header>
+ </UIListPermissionSelector>
+ <UIListPermissionSelectorPopup>
+ <title>
+ <ListPermissionSelector>选择权限</ListPermissionSelector>
+ </title>
+ </UIListPermissionSelectorPopup>
+</bundle>
Added: portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/GroupNavigationPortlet_zh.xml
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/GroupNavigationPortlet_zh.xml (rev 0)
+++ portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/GroupNavigationPortlet_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UIPageNavigationForm>
+ <action>
+ <ClosePopup>#{word.close}</ClosePopup>
+ <Save>#{word.save}</Save>
+ </action>
+ </UIPageNavigationForm>
+</bundle>
\ No newline at end of file
Added: portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/OrganizationPortlet_zh.xml
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/OrganizationPortlet_zh.xml (rev 0)
+++ portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/OrganizationPortlet_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,378 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UIOrganizationPortlet>
+ <label>
+ <userManagement>用户管理</userManagement>
+ <groupManagement>组管理</groupManagement>
+ <membershipManagement>会员管理</membershipManagement>
+ </label>
+ </UIOrganizationPortlet>
+ <UIMembershipTypeForm>
+ <title>增加/编辑会员</title>
+ <label>
+ <name>会员名</name>
+ <description>描述 </description>
+ </label>
+ <action>
+ <Save>#{word.save}</Save>
+ <Back>#{word.back}</Back>
+ <Reset>重置</Reset>
+ </action>
+ <msg>
+ <SameName>这个会员已经存在,请输入另外一个</SameName>
+ <MembershipNotExist>会员[{0}]不存在或者已经被删除。</MembershipNotExist>
+ </msg>
+ </UIMembershipTypeForm>
+ <UIGroupEditMembershipForm>
+ <label>
+ <username>用户名</username>
+ <membership>会员</membership>
+ </label>
+ <action>
+ <Save>保存</Save>
+ <Cancel>取消</Cancel>
+ </action>
+ <msg>
+ <membership-delete>无法保存,会员已经被删除!</membership-delete>
+ <membership-exist>会员类型已经存在,请输入另外一个。</membership-exist>
+ </msg>
+ </UIGroupEditMembershipForm>
+ <EditMembership>
+ <title>
+ <UIGroupEditMembershipForm>编辑会员</UIGroupEditMembershipForm>
+ <EditMembership>编辑会员</EditMembership>
+ </title>
+ </EditMembership>
+ <UIGroupMembershipForm>
+ <label>
+ <title>组会员</title>
+ <username>用户名</username>
+ <membership>会员</membership>
+ <SearchUser>选择用户</SearchUser>
+ <Refresh>刷新</Refresh>
+ </label>
+ <action>
+ <Save>#{word.save}</Save>
+ </action>
+ <title>增加成员</title>
+ </UIGroupMembershipForm>
+ <SearchUserForm>
+ <label>
+ <option>
+ <userName>#{word.userName}</userName>
+ <firstName>#{word.firstName}</firstName>
+ <lastName>#{word.lastName}</lastName>
+ <email>#{word.email}</email>
+ </option>
+ </label>
+ </SearchUserForm>
+ <SearchUser>
+ <title>
+ <UIUserSelector>选择用户</UIUserSelector>
+ <SearchUser>选择用户</SearchUser>
+ <ListUserForSearch>选择用户</ListUserForSearch>
+ </title>
+ </SearchUser>
+ <UIMemberShipForm>
+ <msg>
+ <membershipType-exist>会员'{0}'已被占用</membershipType-exist>
+ </msg>
+ </UIMemberShipForm>
+ <UIMembershipForm>
+ <label>
+ <username>用户名 </username>
+ <membership>会员 </membership>
+ <name>会员名 </name>
+ <description>#{word.description}</description>
+ </label>
+ <action>
+ <Save>#{word.save}</Save>
+ <Back>#{word.back}</Back>
+ </action>
+ </UIMembershipForm>
+ <UIListUsers>
+ <header>
+ <userName>#{word.userName}</userName>
+ <lastName>#{word.lastName}</lastName>
+ <firstName>#{word.firstName}</firstName>
+ <email>#{word.email}</email>
+ <action>#{word.action}</action>
+ </header>
+ <action>
+ <title>
+ <DeleteUser>删除用户</DeleteUser>
+ <SelectUser>选择用户</SelectUser>
+ <ViewUserInfo>编辑用户信息</ViewUserInfo>
+ </title>
+ </action>
+ <label>
+ <option>
+ <userName>#{word.userName}</userName>
+ <firstName>#{word.firstName}</firstName>
+ <lastName>#{word.lastName}</lastName>
+ <email>#{word.email}</email>
+ </option>
+ </label>
+ <msg>
+ <DeleteSuperUser>{0} 是超级用户,不能被删除</DeleteSuperUser>
+ </msg>
+ <deleteUser>您确定要删除用户{0}吗?</deleteUser>
+ </UIListUsers>
+ <UIListMembershipType>
+ <deleteMemberShip>您确定要删除这个会员吗?</deleteMemberShip>
+ </UIListMembershipType>
+ <UIUserInfo>
+ <title>用户配置文件信息</title>
+ <tab>
+ <label>
+ <AccountInputSet>帐户信息</AccountInputSet>
+ <UIUserProfileInputSet>用户配置文件</UIUserProfileInputSet>
+ <UIUserMembershipSelector>用户会员</UIUserMembershipSelector>
+ <UIAccountEditInputSet>帐户信息</UIAccountEditInputSet>
+ </label>
+ </tab>
+ <label>
+ <changePassword>修改密码:</changePassword>
+ <newPassword>新密码:</newPassword>
+ <confirmPassword>确认密码: </confirmPassword>
+ <Profile>用户配置文件</Profile>
+ <userName>#{word.userName}: </userName>
+ <password>密码:</password>
+ <Confirmpassword>确认密码: </Confirmpassword>
+ <firstName>#{word.firstName}:</firstName>
+ <lastName>#{word.lastName}:</lastName>
+ <email>电子邮件地址:</email>
+ <user>
+ <language>语言:</language>
+ <language>#{word.language}:</language>
+ <name>
+ <given>#{word.givenName}: </given>
+ <family>#{word.familyName}: </family>
+ <nickName>#{word.nickName}: </nickName>
+ </name>
+ <bdate>#{word.birthday}: </bdate>
+ <gender>#{word.gender}: </gender>
+ <employer>#{word.employer}: </employer>
+ <department>#{word.department}: </department>
+ <jobtitle>#{word.jobTitle}: </jobtitle>
+ <home-info>
+ <postal>
+ <name>#:</name>
+ <street>#{word.street}: </street>
+ <city>#{word.city}: </city>
+ <stateprov>#{word.stateProv}: </stateprov>
+ <postalcode>#{word.postalCode}: </postalcode>
+ <country>#{word.country}: </country>
+ </postal>
+ <telecom>
+ <mobile>
+ <number>#{word.mobile}:</number>
+ </mobile>
+ <telephone>
+ <number>#{word.tel}:</number>
+ </telephone>
+ </telecom>
+ <online>
+ <email>#{word.email}: </email>
+ <uri>网站:</uri>
+ </online>
+ </home-info>
+ <business-info>
+ <postal>
+ <name>#:</name>
+ <city>#{word.city}:</city>
+ <stateprov>州/省:</stateprov>
+ <postalcode>邮政编码:</postalcode>
+ <country>#{word.country}:</country>
+ </postal>
+ <telecom>
+ <mobile>
+ <number>#{word.mobile}:</number>
+ </mobile>
+ <telephone>
+ <number>#{word.tel}:</number>
+ </telephone>
+ </telecom>
+ <online>
+ <email>#{word.email}:</email>
+ <uri>#{word.website}:</uri>
+ </online>
+ </business-info>
+ </user>
+ <HomeInfo>家庭信息</HomeInfo>
+ <option>
+ <male>男</male>
+ <female>女</female>
+ <en>英语</en>
+ <ma>Ma</ma>
+ <vi>越南语</vi>
+ <ar>阿拉伯语</ar>
+ <fr>法语</fr>
+ <ru>俄语</ru>
+ </option>
+ <BusinessInfo>商务信息</BusinessInfo>
+ </label>
+ <action>
+ <Back>#{word.cancel}</Back>
+ <Save>#{word.save}</Save>
+ </action>
+ </UIUserInfo>
+ <UIUserInGroup>
+ <confirm>
+ <deleteUser>您确定要从组{1}中删除用户{0}吗?</deleteUser>
+ </confirm>
+ <header>
+ <userName>#{word.userName}</userName>
+ <lastName>#{word.lastName}</lastName>
+ <firstName>#{word.firstName}</firstName>
+ <email>#{word.email}</email>
+ <action>#{word.action}</action>
+ <membershipType>会员类型</membershipType>
+ <lastLoginTime>上次登录</lastLoginTime>
+ </header>
+ <label>
+ <username>#{word.userName}</username>
+ <membership>会员名</membership>
+ </label>
+ <action>
+ <title>
+ <DeleteUser>删除成员</DeleteUser>
+ <Edit>编辑成员</Edit>
+ </title>
+ </action>
+ </UIUserInGroup>
+ <UIGroupInfo>
+ <tab>
+ <label>
+ <UIUserInGroup>组用户</UIUserInGroup>
+ </label>
+ </tab>
+ <label>
+ <UIUserInGroup></UIUserInGroup>
+ </label>
+ <title>组信息</title>
+ </UIGroupInfo>
+ <UIMembershipList>
+ <header>
+ <name>会员名</name>
+ <createdDate>创建日期</createdDate>
+ <modifiedDate>修改日期</modifiedDate>
+ <action>#{word.action}</action>
+ <description>#{word.description}</description>
+ </header>
+ <action>
+ <title>
+ <EditMembership>编辑会员</EditMembership>
+ <DeleteMembership>删除会员</DeleteMembership>
+ </title>
+ </action>
+ <msg>
+ <InUse>您无法删除这个会员,该会员正在使用。</InUse>
+ <DeleteMandatory>您无法删除这个会员,该会员是强制性的。</DeleteMandatory>
+ </msg>
+ </UIMembershipList>
+ <UIUserMembershipSelector>
+ <deleteMembership>您确定要删除这个会员吗?</deleteMembership>
+ </UIUserMembershipSelector>
+ <AddGroup>
+ <title>添加新的组</title>
+ <action>
+ <Save>#{word.save}</Save>
+ <Back>#{word.cancel}</Back>
+ </action>
+ </AddGroup>
+ <EditGroup>
+ <title>编辑当前组</title>
+ <action>
+ <Save>#{word.save}</Save>
+ <Back>#{word.cancel}</Back>
+ </action>
+ </EditGroup>
+ <UIGroupForm>
+ <label>
+ <groupName>组名</groupName>
+ <description>描述</description>
+ <label>标签</label>
+ </label>
+ <msg>
+ <group-exist>这个组名已经存在,请选择另外一个。</group-exist>
+ <group-not-exist>组"{0}"不存在或者已经被删除。</group-not-exist>
+ </msg>
+ </UIGroupForm>
+ <UITabPane>
+ <title>
+ <UISharedNavigationForm>共享导航</UISharedNavigationForm>
+ <UISharedPortalForm>共享门户</UISharedPortalForm>
+ <UIUserInGroup>组信息</UIUserInGroup>
+ <UISharedNavigation>组页面导航</UISharedNavigation>
+ </title>
+ </UITabPane>
+ <UISharedNavigationForm>
+ <action>
+ <Save>#{word.save}</Save>
+ <Back>#{word.back}</Back>
+ <Remove>删除</Remove>
+ </action>
+ <label>
+ <navigation>导航</navigation>
+ <description>说明</description>
+ <membership>会员</membership>
+ <priority>优先级</priority>
+ </label>
+ <tab>
+ <label>
+ <SharedNavigation>共享的导航设置</SharedNavigation>
+ <Permission>权限选择</Permission>
+ </label>
+ </tab>
+ <msg>
+ <user-nonexist>用户"{0}"不存在</user-nonexist>
+ </msg>
+ </UISharedNavigationForm>
+ <UISharedNavigation>
+ <msg>
+ <notSelected>您必须选择一个组!</notSelected>
+ </msg>
+ <label>
+ <userNavigation>用户页面导航名</userNavigation>
+ <priority>优先级</priority>
+ </label>
+ <action>
+ <Save>保存</Save>
+ </action>
+ </UISharedNavigation>
+ <UISharedPortalForm>
+ <action>
+ <Save>#{word.save}</Save>
+ <Back>#{word.back}</Back>
+ <Remove>删除</Remove>
+ </action>
+ <label>
+ <portal>门户</portal>
+ <description>说明</description>
+ <membership>会员</membership>
+ <priority>优先级</priority>
+ </label>
+ <tab>
+ <label>
+ <SharedPortal>门户设置</SharedPortal>
+ <Permission>权限选择</Permission>
+ </label>
+ </tab>
+ <msg>
+ <user-nonexist>用户"{0}"不存在</user-nonexist>
+ </msg>
+ </UISharedPortalForm>
+ <UIGroupSharedInfo>
+ <title>共享信息</title>
+ </UIGroupSharedInfo>
+ <UIGroupManagement>
+ <label>
+ <Groups>组</Groups>
+ <AddGroup>添加新的组</AddGroup>
+ <EditGroup>编辑选定的组</EditGroup>
+ <DeleteGroup>删除选定的组</DeleteGroup>
+ </label>
+ <deleteGroup>您确定要删除这个组吗?</deleteGroup>
+ </UIGroupManagement>
+</bundle>
Added: portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/PortalNavigationPortlet_zh.xml
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/PortalNavigationPortlet_zh.xml (rev 0)
+++ portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/PortalNavigationPortlet_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UISiteManagement>
+ <action>
+ <addNewPortal>增加新的门户</addNewPortal>
+ </action>
+ <label>
+ <editLayout>修改布局</editLayout>
+ <editNav>编辑导航</editNav>
+ <editPortalProp>编辑门户属性</editPortalProp>
+ <deletePortal>删除</deletePortal>
+ </label>
+ </UISiteManagement>
+</bundle>
Added: portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/RegisterPortlet_zh.xml
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/RegisterPortlet_zh.xml (rev 0)
+++ portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/RegisterPortlet_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UIRegisterForm>
+ <registerWithSuccess>
+ <message>您已成功注册一个新帐户!</message>
+ </registerWithSuccess>
+ <title>注册新帐户</title>
+ <label>
+ <action>
+ <CheckUsernameAvailability>查询用户</CheckUsernameAvailability>
+ </action>
+ </label>
+ </UIRegisterForm>
+</bundle>
Added: portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/StarToolbarPortlet_zh.xml
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/StarToolbarPortlet_zh.xml (rev 0)
+++ portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/StarToolbarPortlet_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UIStarToolbarPortlet>
+ <item>
+ <ChangeLanguage>更改语言</ChangeLanguage>
+ <ChangeSkin>更换皮肤</ChangeSkin>
+ <AccountSetting>帐户设置</AccountSetting>
+ <Logout>退出</Logout>
+ </item>
+ </UIStarToolbarPortlet>
+</bundle>
Added: portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/UserToolbarPortlet_zh.xml
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/UserToolbarPortlet_zh.xml (rev 0)
+++ portal/trunk/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/UserToolbarPortlet_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+</bundle>
\ No newline at end of file
Added: portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/NavigationPortlet_zh.xml
===================================================================
--- portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/NavigationPortlet_zh.xml (rev 0)
+++ portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/NavigationPortlet_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <javax>
+ <portlet>
+ <title>导航Portlet</title>
+ </portlet>
+ </javax>
+</bundle>
Added: portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/PortalNavigationPortlet_zh.xml
===================================================================
--- portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/PortalNavigationPortlet_zh.xml (rev 0)
+++ portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/portal/PortalNavigationPortlet_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <javax>
+ <portlet>
+ <title>导航Portlet</title>
+ </portlet>
+ </javax>
+</bundle>
Added: portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/BreadcumbsPortlet_zh.xml
===================================================================
--- portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/BreadcumbsPortlet_zh.xml (rev 0)
+++ portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/BreadcumbsPortlet_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <javax>
+ <portlet>
+ <title>Breadcumbs Portlet</title>
+ </portlet>
+ </javax>
+</bundle>
\ No newline at end of file
Added: portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/GroovyPortlet_zh.xml
===================================================================
--- portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/GroovyPortlet_zh.xml (rev 0)
+++ portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/GroovyPortlet_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UIGroovyPortlet>
+ <note>
+ <Text>这是Groovy Portlet(示例Portlet),将来可以将其开发成web应用。</Text>
+ </note>
+ </UIGroovyPortlet>
+ <UIIFrameEditMode>
+ <title>更改URL</title>
+ <label>
+ <iframeUrl>URL</iframeUrl>
+ <editmode>编辑模式</editmode>
+ </label>
+ <action>
+ <Save>保存</Save>
+ </action>
+ </UIIFrameEditMode>
+ <UIBannerPortlet>
+ <action>
+ <changeLanguage>更改语言</changeLanguage>
+ </action>
+ </UIBannerPortlet>
+
+ <UIHomePagePortlet>
+ <Label>
+ <Title>用一个用户帐户尝试GateIn 3.0:</Title>
+ <Intro>新版本增加了新的用户界面<br/>经典和WebOS桌面布局<br/>拖放功能,创建页向导<br/>等等。。。</Intro>
+ <Slogan>eXo和JBoss Portal最好的门户平台<div>GateIn 3.0 Beta 4</div></Slogan>
+ <Username>用户名:</Username>
+ <Password>密码:</Password>
+ </Label>
+ </UIHomePagePortlet>
+</bundle>
Added: portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/LogoPortlet_zh.xml
===================================================================
--- portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/LogoPortlet_zh.xml (rev 0)
+++ portal/trunk/portlet/web/src/main/webapp/WEB-INF/classes/locale/portlet/web/LogoPortlet_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UILogoPortlet>
+ <note>
+ <Text>这是标志</Text>
+ </note>
+ <action>
+ <changeLanguage>更改语言</changeLanguage>
+ <Register>注册</Register>
+ <signout>退出</signout>
+ <signin>登录</signin>
+ </action>
+ <label>
+ <Welcome>欢迎</Welcome>
+ </label>
+ </UILogoPortlet>
+ <UILogoEditMode>
+ <title>更改 URL</title>
+ <label>
+ <logoUrl>URL</logoUrl>
+ <editmode>更改模式</editmode>
+ </label>
+ <action>
+ <Save>保存</Save>
+ </action>
+ </UILogoEditMode>
+</bundle>
Added: portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/organization/management/executive-board_zh.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/organization/management/executive-board_zh.xml (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/organization/management/executive-board_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <organization>
+ <title>机构</title>
+ <newstaff>新员工</newstaff>
+ <management>用户和组管理</management>
+ </organization>
+</bundle>
Added: portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/administrators_zh.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/administrators_zh.xml (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/administrators_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <administration>
+ <title>管理</title>
+ <application-registry>应用申请</application-registry>
+ <newAccount>新帐户</newAccount>
+ <community-management>社区管理</community-management>
+ <i18n>国际化</i18n>
+ <console>Web 控制台</console>
+ <pageManagement>页面管理</pageManagement>
+ </administration>
+</bundle>
Added: portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/guests_zh.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/guests_zh.xml (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/guests_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <platform>
+ <guests>
+ <register>注册</register>
+ <sitemap>网站地图</sitemap>
+ <link>链接</link>
+ </guests>
+ </platform>
+</bundle>
Added: portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/users_zh.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/users_zh.xml (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/platform/users_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <platform>
+ <users>
+ <iframe>IFrame</iframe>
+ <mylink>My Link 我的链接</mylink>
+ <mylink-blog>Blog 博客</mylink-blog>
+ <mylink-google>Google</mylink-google>
+ <mylink-facebook>Facebook</mylink-facebook>
+ <sitemap>SiteMap 网站地图</sitemap>
+ <dashboard>Dashboard 控制面板</dashboard>
+ </users>
+ </platform>
+</bundle>
Added: portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/portal/classic_zh.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/portal/classic_zh.xml (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/portal/classic_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <portal>
+ <classic>
+ <home>主页</home>
+ <sitemap>网站地图</sitemap>
+ <groupnavigation>组导航</groupnavigation>
+ <portalnavigation>门户导航</portalnavigation>
+ <register>注册</register>
+ <webexplorer>网络浏览器</webexplorer>
+ </classic>
+ </portal>
+ <UIAddNewApplication>
+ <label>
+ <AddApplication >增加应用</AddApplication >
+ </label>
+ </UIAddNewApplication>
+</bundle>
Added: portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/custom_zh.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/custom_zh.xml (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/custom_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <test>测试</test>
+</bundle>
Added: portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/expression_zh.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/expression_zh.xml (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/expression_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <word>
+ <accessPermission>访问权限</accessPermission>
+ <abort>舍弃</abort>
+ <action>提交</action>
+ <back>返回</back>
+ <birthday>生日</birthday>
+ <cancel>取消</cancel>
+ <category>分类</category>
+ <change>修改</change>
+ <city>城市</city>
+ <close>关闭</close>
+ <comment>评论</comment>
+ <content>内容</content>
+ <country>国家</country>
+ <date>日期</date>
+ <decorator>装饰</decorator>
+ <department>部门</department>
+ <description>描述</description>
+ <editPermission>编辑权限</editPermission>
+ <email>电子邮件</email>
+ <employer>雇主</employer>
+ <familyName>姓</familyName>
+ <finish>完成</finish>
+ <firstName>名</firstName>
+ <format>格式</format>
+ <groupId>组Id</groupId>
+ <gender>性别</gender>
+ <givenName>名</givenName>
+ <height>高度</height>
+ <icon>图标</icon>
+ <jobTitle>职称</jobTitle>
+ <locale>区域设置</locale>
+ <label>标签</label>
+ <language>语言</language>
+ <lastName>姓</lastName>
+ <mobile>移动电话</mobile>
+ <name>名字</name>
+ <nickName>昵称</nickName>
+ <next>下一步</next>
+ <owner>所有者</owner>
+ <postalCode>邮政编码</postalCode>
+ <refresh>刷新</refresh>
+ <restore>还原</restore>
+ <save>保存</save>
+ <stateProv>州/省</stateProv>
+ <street>街道</street>
+ <style>格式</style>
+ <subject>题目</subject>
+ <summary>摘要</summary>
+ <skin>皮肤</skin>
+ <template>模板</template>
+ <tel>电话</tel>
+ <title>标题</title>
+ <uri>Uri</uri>
+ <userName>用户名</userName>
+ <update>更新</update>
+ <viewPermission>查看权限</viewPermission>
+ <width>宽度</width>
+ <website>网站</website>
+ </word>
+</bundle>
Added: portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/services_zh.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/services_zh.xml (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/services_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <EmptyStringValidator>
+ <msg>
+ <empty-input>字段"{0}"是需要的</empty-input>
+ </msg>
+ </EmptyStringValidator>
+ <EmailAddressValidator>
+ <msg>
+ <invalid-email>您在字段{1}中输入了"{0}",电子邮件地址是无效的</invalid-email>
+ </msg>
+ </EmailAddressValidator>
+ <NumberFormatValidator>
+ <msg>
+ <invalid-limitAccess>您在字段{1}中输入了"{0}",对这个字段的访问是受限的</invalid-limitAccess>
+ <Invalid-input>在字段{0}中应该输入数字</Invalid-input>
+ </msg>
+ </NumberFormatValidator>
+ <IdentifierValidator>
+ <msg>
+ <empty-input>字段"{0}"不能为空</empty-input>
+ <invalid-char>字段{0}只允许输入α,数字,点,破折号和下划线</invalid-char>
+ </msg>
+ </IdentifierValidator>
+ <NameValidator>
+ <msg>
+ <empty-input>字段"{0}"不能为空</empty-input>
+ <invalid-char>字段{0}只允许输入α,数字,点,破折号和下划线</invalid-char>
+ </msg>
+ </NameValidator>
+ <ValidUserValidator>
+ <msg>
+ <empty-input>请在字段{0}中输入值</empty-input>
+ <invalid-username>系统没有找到用户{0}</invalid-username>
+ </msg>
+ </ValidUserValidator>
+ <ValidGroupValidator>
+ <msg>
+ <empty-input>请在字段{0}中输入值</empty-input>
+ <invalid-group-id>系统没有找到组{0}</invalid-group-id>
+ </msg>
+ </ValidGroupValidator>
+ <PermissionValidator>
+ <msg>
+ <invalid-permission-input>无效的权限,权限格式应该是 会员:/组Id</invalid-permission-input>
+ <membership-group-not-found>会员类型或者组名未找到。</membership-group-not-found>
+ </msg>
+ </PermissionValidator>
+ <CheckAdminOrOwnerRoleInterceptor>
+ <msg>
+ <owner-or-admin-require>您需要登录并且以管理员的身份执行操作'{0}'</owner-or-admin-require>
+ </msg>
+ </CheckAdminOrOwnerRoleInterceptor>
+ <CheckOwnerInterceptor>
+ <msg>
+ <owner-require>您需要登录来执行操作'{0}'</owner-require>
+ </msg>
+ </CheckOwnerInterceptor>
+ <ExoPermissionException>
+ <msg>
+ <message>您需要以角色{0}来执行操作{1}</message>
+ </msg>
+ </ExoPermissionException>
+ <OrganizationService>
+ <unique-group-exception>组名{0}已经存在。</unique-group-exception>
+ </OrganizationService>
+ <PageList>
+ <page-out-of-range>您尝试打开网页{0},但是只有网页{1}可用</page-out-of-range>
+ </PageList>
+ <MessageService>
+ <account-not-found>无法为用户{1}找到帐户{0}</account-not-found>
+ <invalid-standalone-message-address>您正在使用独立帐户类型\地址{0}是无效的。系统需要的地址格式是:\收件人#帐户名</invalid-standalone-message-address>
+ <send-message-fail>不能发送消息。请检查您的电子邮件地址 \n\ 错误:{0}</send-message-fail>
+ </MessageService>
+ <Searcher>
+ <msg>
+ <search-expression-error>输入表达式出错。<br />{0}</search-expression-error>
+ </msg>
+ </Searcher>
+</bundle>
Added: portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_zh.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_zh.xml (rev 0)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_zh.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -0,0 +1,1924 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UIContentNavigation>
+ <msg>
+ <EditNode>您必须选择一个节点。</EditNode>
+ </msg>
+ </UIContentNavigation>
+ <UIPortletRegistryCategory>
+ <msg>
+ <editPortlet>您必须选择一个portlet</editPortlet>
+ </msg>
+ </UIPortletRegistryCategory>
+ <PopupPermissionSelector>
+ <title>
+ <null>null</null>
+ <UIGroupMembershipSelector>权限选择</UIGroupMembershipSelector>
+ <PermissionSelector>权限选择</PermissionSelector>
+ </title>
+ </PopupPermissionSelector>
+ <UIPermissionForm>
+ <label>
+ <null>权限</null>
+ </label>
+ </UIPermissionForm>
+ <UICategoryForm>
+ <action>
+ <Close>关闭</Close>
+ </action>
+ </UICategoryForm>
+ <AddCategory>
+ <title>
+ <UICategoryForm>添加类别</UICategoryForm>
+ </title>
+ </AddCategory>
+ <WorkingPopup>
+ <title>
+ <WorkingPopup>Working Popup</WorkingPopup>
+ </title>
+ </WorkingPopup>
+ <DeleteUser>
+ <title>
+ <UIPopupDialog>是否要删除此用户?</UIPopupDialog>
+ </title>
+ </DeleteUser>
+<!-- #############################################################################-->
+<!-- # Empty String Validator #-->
+<!-- #############################################################################-->
+<!-- #class org.exoplatform.webui.form.validator.Validator.EmptyFieldValidator-->
+<!-- #{0}=input field name-->
+ <EmptyFieldValidator>
+ <msg>
+ <empty-input>字段"{0}"是需要的</empty-input>
+ <empty>字段"{0}"中的信息不能为空</empty>
+ </msg>
+ </EmptyFieldValidator>
+ <ExpressionValidator>
+ <msg>
+ <value-invalid>字段"{0}" 必须和格式"{1}"匹配</value-invalid>
+ </msg>
+ </ExpressionValidator>
+ <UITestForm>
+ <label>
+ <UIAddApplication>增加应用</UIAddApplication>
+ </label>
+ </UITestForm>
+ <StringLengthValidator>
+ <msg>
+ <length-invalid>字段"{0}"中的文本长度必须在"{1}" 和 "{2}"之间</length-invalid>
+ </msg>
+ </StringLengthValidator>
+<!-- #############################################################################-->
+<!-- # Email Address Validator #-->
+<!-- #############################################################################-->
+<!-- #class org.exoplatform.webui.form.validator.Validator.EmailAddressValidator-->
+<!-- #{0}=input field name, {1} user input email address-->
+ <EmailAddressValidator>
+ <msg>
+ <Invalid-input>您的电子邮件地址无效。请输入一个不同的地址。</Invalid-input>
+ </msg>
+ </EmailAddressValidator>
+<!-- #############################################################################-->
+<!-- # Mandatory Validator #-->
+<!-- #############################################################################-->
+<!-- #{0} = input field name-->
+ <MandatoryValidatorIterator>
+ <msg>
+ <empty>"{0}"列表不能为空</empty>
+ </msg>
+ </MandatoryValidatorIterator>
+<!-- #############################################################################-->
+<!-- # Number Format Validator #-->
+<!-- #############################################################################-->
+<!-- #class org.exoplatform.webui.form.validator.Validator.NumberFormatValidator-->
+<!-- #{0}=input field name-->
+ <NumberFormatValidator>
+ <msg>
+ <Invalid-number>字段"{0}"中无效的数字格式。</Invalid-number>
+ </msg>
+ </NumberFormatValidator>
+ <PositiveNumberFormatValidator>
+ <msg>
+ <Invalid-number>在"{0}"字段必须包含一个正数。</Invalid-number>
+ </msg>
+ </PositiveNumberFormatValidator>
+<!-- #############################################################################-->
+<!-- # Empty Iterator Validator #-->
+<!-- #############################################################################-->
+<!-- #class org.exoplatform.webui.organization.UIListPermissionSelector.EmptyIteratorValidator-->
+<!-- #{0}=input field name-->
+ <EmptyIteratorValidator>
+ <msg>
+ <empty>"{0}" 列表不能为空。</empty>
+ </msg>
+ </EmptyIteratorValidator>
+<!-- #############################################################################-->
+<!-- # Resource Validator #-->
+<!-- #############################################################################-->
+ <ResourceValidator>
+ <msg>
+ <Invalid-char>字段"{0}"只允许α,数字,下划线,破折号和点。</Invalid-char>
+ </msg>
+ </ResourceValidator>
+<!-- #############################################################################-->
+<!-- # Special Character Validator #-->
+<!-- #############################################################################-->
+<!-- #class org.exoplatform.webui.form.validator.Validator.SpecialCharacterValidator-->
+<!-- #{0}=input field name-->
+ <SpecialCharacterValidator>
+ <msg>
+ <invalid-digit>字段"{0}"必须以字符开始。</invalid-digit>
+ <Invalid-char>字段"{0}"只允许α,数字,下划线,破折号和空格</Invalid-char>
+ </msg>
+ </SpecialCharacterValidator>
+<!-- #############################################################################-->
+<!-- # Date Time Validator #-->
+<!-- #############################################################################--> <DateTimeValidator>
+ <msg>
+ <Invalid-input>字段"{0}"不包含有效值</Invalid-input>
+ </msg>
+ </DateTimeValidator>
+<!-- #############################################################################-->
+<!-- # URL Validator #-->
+<!-- #############################################################################-->
+ <URLValidator>
+ <msg>
+ <invalid-url>字段"{0}"不包含有效URL</invalid-url>
+ </msg>
+ </URLValidator>
+<!-- #############################################################################-->
+<!-- #org.exoplatform.portal.webui.portal.UIPortalComposer #-->
+<!-- #############################################################################-->
+ <UIFormMultiValueInputSet>
+ <label>
+ <remove>删除条目</remove>
+ <add>增加条目</add>
+ </label>
+ </UIFormMultiValueInputSet>
+ <!-- #############################################################################-->
+<!-- #Container config options #-->
+<!-- #############################################################################-->
+ <UIPortalComposer>
+ <title>
+ <UIPortalComposer>Edit Inline Composer</UIPortalComposer>
+ </title>
+ <action>
+ <Abort>舍弃</Abort>
+ <Finish>完成</Finish>
+ <ViewProperties>门户属性</ViewProperties>
+ <SwitchMode>转换视图模式</SwitchMode>
+ </action>
+ </UIPortalComposer>
+ <UITabPane>
+ <title>
+ <UIApplicationList>应用</UIApplicationList>
+ <UIContainerList>容器</UIContainerList>
+ <UIPermissionSelector>编辑权限设置</UIPermissionSelector>
+ <UIListPermissionSelector>访问权限设置</UIListPermissionSelector>
+ <UIAccountProfiles>帐户概况</UIAccountProfiles>
+ <UIAccountChangePass>修改密码</UIAccountChangePass>
+ </title>
+ </UITabPane>
+
+ <ContainerOptions>
+ <Category>
+ <row>行布局</row>
+ <column>列布局</column>
+ <tabs>标签布局</tabs>
+ <mix>混合布局</mix>
+ </Category>
+ <Item>
+ <oneRow>一行</oneRow>
+ <twoRows>两行</twoRows>
+ <threeRows>三行</threeRows>
+ <oneColumns>一列</oneColumns>
+ <twoColumns>两列</twoColumns>
+ <threeColumns> 三列</threeColumns>
+ <threeToolbarColumns>三个工具栏列</threeToolbarColumns>
+ <twoTabs>两个标签</twoTabs>
+ <threeTabs>三个标签</threeTabs>
+ <twoColumnsOneRow>两列,一行</twoColumnsOneRow>
+ <oneRowTwoColumns>一行,两列</oneRowTwoColumns>
+ <oneRow2Column1Row>一行,两列,一行</oneRow2Column1Row>
+ </Item>
+ </ContainerOptions>
+<!-- #############################################################################-->
+<!-- # Identifier String Validator #-->
+<!-- #############################################################################-->
+<!-- #class org.exoplatform.webui.form.validator.Validator.IdentifierValidator-->
+<!-- #{0}=input field name-->
+ <IdentifierValidator>
+ <msg>
+ <Invalid-char>字段"{0}"只允许α,数字,破折号和下划线</Invalid-char>
+ </msg>
+ </IdentifierValidator>
+
+ <UIChangeLanguage>
+ <title>
+ <LanguageSetting>接口语言设置</LanguageSetting>
+ </title>
+ <action>
+ <save>应用</save>
+ <close>取消</close>
+ </action>
+ </UIChangeLanguage>
+ <Euro>
+ <label>欧洲</label>
+ </Euro>
+ <Asia>
+ <label>亚洲</label>
+ </Asia>
+ <Language>
+ <left>
+ <title>选择一种语言</title>
+ </left>
+ </Language>
+<!-- #############################################################################-->
+<!-- # Change Skin #-->
+<!-- #############################################################################-->
+ <UIChangeSkin>
+ <action>
+ <save>应用</save>
+ <close>#{word.cancel}</close>
+ </action>
+ <title>
+ <SkinSetting>皮肤设置</SkinSetting>
+ </title>
+ <Default>
+ <label>默认风格皮肤</label>
+ </Default>
+ <Mac>
+ <label>苹果风格皮肤</label>
+ </Mac>
+ <Vista>
+ <label>Vista风格皮肤</label>
+ </Vista>
+ </UIChangeSkin>
+ <Skin>
+ <title>皮肤列表</title>
+ <left>
+ <title>查看和选择皮肤</title>
+ </left>
+ </Skin>
+
+ <UIChangePortal>
+ <header>
+ <creator>构造器</creator>
+ <name>名字</name>
+ <skin>皮肤</skin>
+ <action>操作</action>
+ <factoryId>工厂Id</factoryId>
+ </header>
+ <lable>
+ <TitleBar>选择门户</TitleBar>
+ </lable>
+ <action>
+ <close>关闭</close>
+ <title>
+ <SelectPortal>选择门户</SelectPortal>
+ </title>
+ </action>
+ <msg>
+ <Invalid-viewPermission>你没有权限使用这个门户。</Invalid-viewPermission>
+ </msg>
+ </UIChangePortal>
+
+ <Template>
+ <title>皮肤列表</title>
+ <left>
+ <title>查看和选择皮肤</title>
+ </left>
+ </Template>
+ <Desktop>
+ <label>桌面布局</label>
+ </Desktop>
+ <AccountTemplate>
+ <left>
+ <title>示例帐户模板预览</title>
+ </left>
+ <title>帐户模板</title>
+ </AccountTemplate>
+ <DefaultAccount>
+ <label>默认帐户</label>
+ </DefaultAccount>
+ <CommunityAccount>
+ <label>社区帐户</label>
+ </CommunityAccount>
+ <CompanyAccount>
+ <label>公司帐户</label>
+ </CompanyAccount>
+ <AdminAccount>
+ <label>管理员帐户</label>
+ </AdminAccount>
+
+ <NameValidator>
+ <msg>
+ <Invalid-char>字段"{0}"只允许α,数字,点,破折号和下划线</Invalid-char>
+ </msg>
+ </NameValidator>
+ <FirstCharacterNameValidator>
+ <msg>字段"{0}"必须以字符开始,并且不能包含特殊字符</msg>
+ </FirstCharacterNameValidator>
+
+ <UIAccountForm>
+ <msg>
+ <password-is-not-match>密码和确认密码必须相同。</password-is-not-match>
+ </msg>
+ </UIAccountForm>
+ <UIAccountInputSet>
+ <msg>
+ <user-exist>此用户名已经存在,请输入一个不同的名称。</user-exist>
+ <user-not-exist>此用户名仍然可用</user-not-exist>
+ <user-is-deleted>该用户可能会被删除。</user-is-deleted>
+ <email-exist>此电子邮件已经存在,请输入一个不同的地址。</email-exist>
+ <empty-input>用户名不能为空。</empty-input>
+ <successful>
+ <create>
+ <user>您已经注册一个新帐户。</user>
+ </create>
+ <update>
+ <user>用户配置文件已被更新。</user>
+ </update>
+ </successful>
+ </msg>
+ </UIAccountInputSet>
+ <UIUserProfileInputSet>
+ <msg>
+ <sucsesful>
+ <update>
+ <userprofile>用户配置文件已被更新。</userprofile>
+ </update>
+ </sucsesful>
+ </msg>
+ <title>个人信息</title>
+ <label>
+ <Profile>配置文件</Profile>
+ <HomeInfo>家庭信息</HomeInfo>
+ <BusinessInfo>商务信息</BusinessInfo>
+ </label>
+ </UIUserProfileInputSet>
+ <UIGroupMembershipForm>
+ <msg>
+ <user-not-exist>用户"{0}" 不存在。</user-not-exist>
+ <user-not-empty>用户名不能为空。</user-not-empty>
+ <Invalid-char>字段"{0}"只能包含α,数字,逗号,破折号。第一个和最后一个字符必须是字母。</Invalid-char>
+ <duplicate-user>有些用户是重复的。请重新检查它!</duplicate-user>
+ <group-not-select>请选择一个组。</group-not-select>
+ <membership-exist>用户"{0}"在组"{1}"中有相同的会员,请选择另外一个会员。</membership-exist>
+ </msg>
+ </UIGroupMembershipForm>
+ <UILoginForm>
+ <msg>
+ <Invalid-account>用户名 和/或 密码是错误的或为空。请再试一次。</Invalid-account>
+ </msg>
+ <label>
+ <welcome>欢迎</welcome>
+ <login>登录</login>
+ <Discard>舍弃</Discard>
+ <user>用户</user>
+ <forgot>忘记用户名/密码?</forgot>
+ <password>密码</password>
+ <UserName>用户名</UserName>
+ <RememberOnComputer>记住我的登录</RememberOnComputer>
+ <NotMember>还不是会员?</NotMember>
+ <Signup>注册</Signup>
+ <Signin>登录</Signin>
+ <ForAccount>立即注册一个帐户</ForAccount>
+ <SigninFail>登录失败。用户名或密码错误。</SigninFail>
+ <Copyright><![CDATA[Copyright © 2009. All rights Reserved, eXo Platform SAS and Red Hat, Inc.]]></Copyright>
+ </label>
+ </UILoginForm>
+
+ <UIApplication>
+ <msg>
+ <unknown-error>未知错误</unknown-error>
+ </msg>
+ </UIApplication>
+
+ <UIContainerForm>
+ <title>编辑容器</title>
+ <action>
+ <Save>#{word.save}</Save>
+ <Close>取消</Close>
+ </action>
+ <label>
+ <id>容器Id</id>
+ <title>容器标题</title>
+ <decorator>#{word.decorator}</decorator>
+ <template>#{word.template}</template>
+ <width>#{word.width}</width>
+ <height>#{word.height}</height>
+ <style>#{word.style}</style>
+ <ContainerSetting>容器设置</ContainerSetting>
+ </label>
+ <tab>
+ <label>
+ <ContainerSetting>容器设置</ContainerSetting>
+ <UIContainerPermission>访问权限</UIContainerPermission>
+ <Template>模板</Template>
+ <Icon>图标</Icon>
+ </label>
+ </tab>
+ <msg>
+ <InvalidWidthHeight>您必须在字段"{0}"中输入像素或者百分数。</InvalidWidthHeight>
+ </msg>
+ </UIContainerForm>
+
+ <UIPortletForm>
+ <title>查看/编辑Portlet</title>
+ <label>
+ <title>Portlet标题:</title>
+ <width>#{word.width}:</width>
+ <height>#{word.height}:</height>
+ <showInfoBar>显示信息栏:</showInfoBar>
+ <windowId>窗口Id:</windowId>
+ <showPortletMode>显示Portlet模式:</showPortletMode>
+ <showWindowState>显示窗口状态:</showWindowState>
+ <id>Portlet Id:</id>
+ <displayName>显示名称:</displayName>
+ <description>描述</description>
+ <template>模板</template>
+ </label>
+ <action>
+ <Close>取消</Close>
+ <Save>保存并关闭</Save>
+ </action>
+ <tab>
+ <label>
+ <PortletPref>选项</PortletPref>
+ <PortletSetting>Portlet设置</PortletSetting>
+ <Renderer>渲染</Renderer>
+ <Template>模板</Template>
+ <Decorator>装饰</Decorator>
+ <Icon>选择图标</Icon>
+ <Theme>装饰主题</Theme>
+ <EditMode>编辑模式</EditMode>
+ <PortletPermission>访问权限</PortletPermission>
+ </label>
+ </tab>
+ <Theme>
+ <title>
+ <Preview>主题预览</Preview>
+ <SetDefault>获取默认设置</SetDefault>
+ </title>
+ </Theme>
+ <Icon>
+ <title>
+ <SetDefault>获取默认设置</SetDefault>
+ </title>
+ </Icon>
+ <msg>
+ <InvalidWidthHeight>您必须在字段"{0}"中输入像素值。</InvalidWidthHeight>
+ </msg>
+ </UIPortletForm>
+
+ <UIDescription>
+ <title>
+ <pageManagement>页面浏览</pageManagement>
+ <portalManagement>门户浏览</portalManagement>
+ <pageWizard>页面创建向导</pageWizard>
+ <pageEditWizard>页面编辑向导</pageEditWizard>
+ </title>
+ <content>
+ <pageManagement><strong>管理页面:</strong><br/>这是所有页面的列表。<br/>您可以预览(只有正常页面),<br/><br/> 修改或删除您有足够权限的页面。<br/><br/>您可以搜索页面通过<em>所有者类型</em>(门户/组/用户),通过<em>所有者id</em>(所有者类型名称),或者通过<em>页面名称</em><br/><br/>要创建一个新页面,点击"Add new page"按钮并且输入需要的字段。</pageManagement>
+ <portalManagement><strong>管理门户:</strong><br/>这是所有门户的列表。要创建一个新门户,点击"Create new Portal"按钮并且输入需要的字段。<br/>您只能从这个列表中创建或者删除您有恰当权限的门户。</portalManagement>
+ <pageWizard>需要删除</pageWizard>
+ <pageWizard2><![CDATA[<strong>步骤1:设置页面信息包括页面路径,节点名称和显示名称。</strong><br/> 按照如下步骤进行<br/>-从下拉列表中选择一个导航<br/>-选择您希望创建子页面的页面节点。<br/>-输入<em>节点名称</em><br/>-输入<em>显示名称</em> (可选项)<br/>-选中或反选<em>可见</em>复选框(可选)<br/>-选中或反选<em>发布日期 & 时间</em>复选框(可选)<br/> 如果<em>发布日期 & 时间</em> 复选框被选中:<br/> -输入 <em>起始发布日期</em><br/> -输入 <em>结束发布日期</em><br/>-点击"Next"继续下一步]]></pageWizard2>
+ <pageWizard3><![CDATA[<strong>步骤2:设置页面布局</strong><br/> 按照如下步骤进行<br/>-从列表中选择一个布局<br/>-点击"Next"转移到下一步或者"Back"返回到上一步 ]]></pageWizard3>
+ <pageEditWizard>网页编辑向导说明<br/>以及指导</pageEditWizard>
+ <pageEditWizard1><![CDATA[<strong>步骤1:更改页面的显示名称,可见度和公布日期</strong><br/>按照如下步骤进行:<br/>-从下拉列表中选择一个导航<br/>-选择您想修改的页面<br/>-修改<em>显示名称</em>如果需要的话<br/>-选中或者反选<em>可见度</em>复选框<br/>-选中或者反选<em>发布日期&时间</em>复选框<br/> 如果 <em>发布日期& 时间</em>已经选中:<br/> -修改<em>起始发布日期</em><br/> -修改<em>结束发布日期</em><br/>-点击"Next"继续下一步]]></pageEditWizard1>
+ <pageEditWizard2><strong>步骤2:修改页面布局。</strong><br/>按照如下步骤进行:<br/>-选择一个新的页面布局或者保持当前布局<br/>-点击"Next"转移到下一步或者"Back"返回到上一步</pageEditWizard2>
+ <pageEditWizard3><strong>步骤2:修改页面布局。</strong><br/>按照如下步骤进行:<br/>-选择一个新的页面布局或者保持当前布局<br/>-点击"Next"转移到下一步或者"Back"返回到上一步</pageEditWizard3>
+ </content>
+ </UIDescription>
+ <UIPortalForm>
+ <title>编辑门户</title>
+ <action>
+ <Save>#{word.save}</Save>
+ <Close>取消</Close>
+ </action>
+ <msg>
+ <sameName>这个门户名已经存在。</sameName>
+ <notExistAnymore>这个门户名不存在或已经被删除。</notExistAnymore>
+ </msg>
+ <label>
+ <name>门户名称:</name>
+ <locale>#{word.locale} :</locale>
+ <date>#{word.date} :</date>
+ <factoryId>门户类型:</factoryId>
+ <skin>皮肤:</skin>
+ <sessionAlive>保持会话活着:</sessionAlive>
+ <option>
+ <always>总是</always>
+ <onDemand>根据需求</onDemand>
+ <never>从不</never>
+ </option>
+ </label>
+ <tab>
+ <label>
+ <PortalSetting>门户设置</PortalSetting>
+ <PortalTemplate>门户模板</PortalTemplate>
+ <PermissionSetting>权限设置</PermissionSetting>
+ <FactoryId>工厂Id</FactoryId>
+ </label>
+ </tab>
+ </UIPortalForm>
+ <PortalTemplate>
+ <title>门户模板</title>
+ <left>
+ <title>示例门户模板预览</title>
+ </left>
+ </PortalTemplate>
+
+ <UIListPermissionSelector>
+ <header>
+ <groupId>组Id</groupId>
+ <membership>会员类型</membership>
+ <action>操作</action>
+ </header>
+ <action>
+ <addPermission>增加权限</addPermission>
+ <title>
+ <Delete>删除</Delete>
+ </title>
+ </action>
+ <label>
+ <publicMode>使之公开(每个人都可以访问):</publicMode>
+ </label>
+ </UIListPermissionSelector>
+ <UIGroupMembershipSelector>
+ <msg>
+ <selectGroup>您必须先选择一个组。</selectGroup>
+ </msg>
+ <title>组会员选择器</title>
+ <title>
+ <ListPermissionSelector>组和会员选择器</ListPermissionSelector>
+ </title>
+ <label>
+ <selectPermission>选择一个权限</selectPermission>
+ <selectMembership>选择一个会员</selectMembership>
+ <selectGroup>浏览并选择一个组</selectGroup>
+ </label>
+ <tooltip>
+ <selectMembership>点击此处选择一个会员</selectMembership>
+ </tooltip>
+ </UIGroupMembershipSelector>
+ <UIGroupSelector>
+ <title>
+ <UIGroupMembershipSelector>会员选择器</UIGroupMembershipSelector>
+ <selectGroup>浏览并选择一个组</selectGroup>
+ <selectGroupInfo>选中的组信息</selectGroupInfo>
+ </title>
+ <lable>
+ <name>名称:</name>
+ <groupId>组Id:</groupId>
+ <description>描述:</description>
+ </lable>
+ <action>
+ <done>完成</done>
+ </action>
+ </UIGroupSelector>
+ <UIPageSelector2>
+ <header>
+ <name>名称</name>
+ <id>页面Id</id>
+ <accessGroups>访问组</accessGroups>
+ <title>#{word.title}</title>
+ <action>#{word.action}</action>
+ </header>
+ <label>
+ <clearPage>清除页面</clearPage>
+ <createPage>创建页面</createPage>
+ <searchandSelectPage>搜索并选择页面</searchandSelectPage>
+ <currentSelectedPage>选中的页面信息</currentSelectedPage>
+ <title>标题</title>
+ <name>#{word.name}</name>
+ <accessGroups>访问组</accessGroups>
+ </label>
+ </UIPageSelector2>
+ <UIPageBrowser>
+ <msg>
+ <NoPermission>您无权访问这个页面。</NoPermission>
+ <PageNotExist>页面不存在</PageNotExist>
+ <UserNotPermission>您无权访问这个节点的页面。</UserNotPermission>
+ <InvalidQueryException>无效的查询。</InvalidQueryException>
+ <Invalid-viewPermission>您不能访问页面{0}</Invalid-viewPermission>
+ <Invalid-editPermission>您不能编辑页面{0}.</Invalid-editPermission>
+ <Invalid-deletePermission>您不能删除页面{0}.</Invalid-deletePermission>
+ <Invalid-Preview>这是桌面网页。您无法预览这种类型的网页。</Invalid-Preview>
+ <NotViewPage>您无权查看此页面。</NotViewPage>
+ <edit>
+ <NotEditPage>您无权编辑此页面。</NotEditPage>
+ </edit>
+ <delete>
+ <NotDelete>您无权删除此页面。</NotDelete>
+ </delete>
+ </msg>
+ <selectItem>
+ <ownerType>所有者类型</ownerType>
+ <ownerId>所有者Id</ownerId>
+ <name>名称</name>
+ </selectItem>
+ <action>
+ <title>
+ <Delete>删除页面</Delete>
+ <Preview>预览页面</Preview>
+ <EditInfo>编辑页面</EditInfo>
+ <SelectPage>选择页面</SelectPage>
+ </title>
+ <addNewPage>增加新页面</addNewPage>
+ </action>
+ <label>
+ <option>
+ <owner>#{word.owner}</owner>
+ </option>
+ </label>
+ </UIPageBrowser>
+ <UIVirtualList>
+ <header>
+ <name>页面名称</name>
+ <ownerType>所有者类型</ownerType>
+ <ownerId>所有者Id</ownerId>
+ <pageId>页面Id</pageId>
+ <title>标题</title>
+ <accessGroups>访问组</accessGroups>
+ <action>#{word.action}</action>
+ <accessPermissions>访问权限</accessPermissions>
+ <editPermission>编辑权限</editPermission>
+ </header>
+ </UIVirtualList>
+
+ <UIPageNodeSelector>
+ <UIDropDown>
+ <title>选择导航</title>
+ </UIDropDown>
+ <msg>
+ <notAvailable>此节点的页面无法不可用。</notAvailable>
+ <Invalid-editPermission>您无权编辑此页面。</Invalid-editPermission>
+ <deleteNav>您无法删除此页面导航。</deleteNav>
+ <NoPageNavigation>在使用这项功能之前,您必须创建导航。</NoPageNavigation>
+ <curentPage>无法删除此页面:页面正在被另外一个程序使用。</curentPage>
+ <paste>
+ <sameName>此节点名字已存在。</sameName>
+ <sameSrcAndDes>源和目标必须不同。</sameSrcAndDes>
+ </paste>
+ </msg>
+ <deleteNode>您确认要删除此导航吗?</deleteNode>
+ <deleteNavigation>您确认要删除此节点吗?</deleteNavigation>
+ <tooltip>
+ <newPageNavigation>创建新导航</newPageNavigation>
+ </tooltip>
+ </UIPageNodeSelector>
+ <UIPageNodeSelectorPopupMenu>
+ <event>
+ <AddUserNavigation>添加导航</AddUserNavigation>
+ <AddNode>添加新节点</AddNode>
+ <PasteNode>粘贴节点</PasteNode>
+ <CreateNavigation>创建导航</CreateNavigation>
+ <DeleteNavigation>删除导航</DeleteNavigation>
+ <EditNavigation>编辑导航</EditNavigation>
+ <SaveNavigation>保存导航</SaveNavigation>
+ </event>
+ </UIPageNodeSelectorPopupMenu>
+
+ <UIPageEditor>
+ <action>
+ <Abort>舍弃</Abort>
+ <Finish>完成</Finish>
+ <ViewProperties>查看页面属性</ViewProperties>
+ <SwitchMode>转换视图模式</SwitchMode>
+ </action>
+ <title>
+ <UIPageEditor>页面编辑器</UIPageEditor>
+ </title>
+ <tooltip>
+ <PagePreview>页面预览</PagePreview>
+ <EditPage>编辑页面</EditPage>
+ <EditContainer>编辑容器</EditContainer>
+ <EditPortlet>编辑Portlet</EditPortlet>
+ <Decorator>装饰</Decorator>
+ <SavePage>保存页面</SavePage>
+ </tooltip>
+ </UIPageEditor>
+ <UIPageForm>
+ <title>查看/编辑页面</title>
+ <label>
+ <pageId>页面Id :</pageId>
+ <ownerType>所有者类型:</ownerType>
+ <ownerId>所有者Id:</ownerId>
+ <name>页面名称:</name>
+ <title>页面标题:</title>
+ <showMaxWindow>显示最大窗口:</showMaxWindow>
+ </label>
+ <action>
+ <Close>取消</Close>
+ <Save>#{word.save}</Save>
+ <Back>返回</Back>
+ </action>
+ <tab>
+ <label>
+ <PageSetting>页面设置</PageSetting>
+ <Template>页面模板</Template>
+ <PermissionSetting>权限设置</PermissionSetting>
+ <UIPageTemplateOptions>页面布局</UIPageTemplateOptions>
+ </label>
+ </tab>
+ <msg>
+ <sameName>该页面名字已经存在</sameName>
+ </msg>
+ </UIPageForm>
+ <UIOwnerIdSelector>
+ <title>
+ <OwnerIdSelector>所有者Id选择器</OwnerIdSelector>
+ </title>
+ </UIOwnerIdSelector>
+ <UIPopupGroupSelector>
+ <title>
+ <UIGroupSelector>组选择器</UIGroupSelector>
+ <GroupSelector>选择组</GroupSelector>
+ </title>
+ </UIPopupGroupSelector>
+ <UIPageNodeForm2>
+ <msg>
+ <SameName>该节点名已经存在。</SameName>
+ <selectPage>您必须选择一个页面。</selectPage>
+ <startDateBeforeEndDate>结束日期必须在起始日期之后。</startDateBeforeEndDate>
+ </msg>
+ <action>
+ <Save>#{word.save}</Save>
+ <Back>#{word.back}</Back>
+ <Close>#{word.cancel}</Close>
+ </action>
+ <label>
+ <name>节点名:</name>
+ <uri>#{word.uri}:</uri>
+ <pageReference>页面选项</pageReference>
+ <description>#{word.description}</description>
+ <type>页面类型</type>
+ <creator>页面创建者:</creator>
+ <modifier>页面修改者:</modifier>
+ <label>#{word.label}:</label>
+ <visible>Visible:</visible>
+ <showPublicationDate>发布日期&时间:</showPublicationDate>
+ <startPublicationDate>起始发布日期:</startPublicationDate>
+ <endPublicationDate>结束发布日期:</endPublicationDate>
+ </label>
+ <Icon>
+ <title>
+ <SetDefault>获取默认设置</SetDefault>
+ </title>
+ </Icon>
+ </UIPageNodeForm2>
+ <UIPageNodeForm>
+ <tab>
+ <label>
+ <PageNodeSetting>页面节点设置</PageNodeSetting>
+ <Icon>#{word.icon}</Icon>
+ <UIPageSelector2>页面选择器</UIPageSelector2>
+ </label>
+ </tab>
+ </UIPageNodeForm>
+ <UIPageBrowse>
+ <deletePage>您想删除此页吗?</deletePage>
+ </UIPageBrowse>
+ <UIPageSearch>
+ <label>
+ <option>
+ <ownerType>所有者类型</ownerType>
+ <ownerId>所有者id</ownerId>
+ <name>名称</name>
+ <title>#{word.title}</title>
+ </option>
+ </label>
+ </UIPageSearch>
+ <UIPageNavigationForm>
+ <title>页面 & 导航浏览器</title>
+ <label>
+ <priority>优先级:</priority>
+ <creator>创建者:</creator>
+ <modifier>修改者:</modifier>
+ <ownerType>所有者类型:</ownerType>
+ <ownerId>所有者Id:</ownerId>
+ <description>#{word.description}:</description>
+ <uri>#{word.uri}:</uri>
+ <name>#{word.name}:</name>
+ </label>
+ <tab>
+ <label>
+ <AccessGroup>访问组</AccessGroup>
+ <PageNavigationSetting>页面导航设置</PageNavigationSetting>
+ <Icon>#{word.icon}</Icon>
+ <PermissionSetting>权限设置</PermissionSetting>
+ </label>
+ </tab>
+ <action>
+ <Save>#{word.save}</Save>
+ <ClosePopup>#{word.close}</ClosePopup>
+ <Close>取消</Close>
+ </action>
+ <msg>
+ <selectGroup>您必须选择一个组。</selectGroup>
+ <existPageNavigation>的页面导航已经存在。</existPageNavigation>
+ </msg>
+ </UIPageNavigationForm>
+ <UIPageNavigation>
+ <msg>
+ <noMakablePageNavigation>您无权为该组创建页面导航。</noMakablePageNavigation>
+ </msg>
+ <tooltip>
+ <upLevel>向上一级</upLevel>
+ </tooltip>
+ <label>
+ <navigation>{0}的导航</navigation>
+ <titleBar>{0}的页面</titleBar>
+ </label>
+ </UIPageNavigation>
+ <UIPortalApplication>
+ <label>
+ <Loading>载入中...</Loading>
+ <Abort>舍弃</Abort>
+ </label>
+ <msg>
+ <deletePageBody>该组件包含页面正文,无法删除!</deletePageBody>
+ </msg>
+ </UIPortalApplication>
+ <UIPermissionSelector>
+ <label>
+ <AccessPermission>#{word.accessPermission}</AccessPermission>
+ <EditPermission>#{word.editPermission}</EditPermission>
+ <ViewPermission>#{word.viewPermission}</ViewPermission>
+ <PermissionInfo>权限信息</PermissionInfo>
+ <membershipMember>会员</membershipMember>
+ <groupId>#{word.groupId}</groupId>
+ <addEditPermission>权限设置</addEditPermission>
+ <currentSelectedPermissionInfo>当前权限</currentSelectedPermissionInfo>
+ <permissionType>权限类型</permissionType>
+ </label>
+ <action>
+ <SelectPermission>选择权限</SelectPermission>
+ <DeletePermission>删除权限</DeletePermission>
+ </action>
+ </UIPermissionSelector>
+ <UIPopupGroupMembershipSelector>
+ <title>
+ <ListPermissionSelector>组和会员选择</ListPermissionSelector>
+ </title>
+ </UIPopupGroupMembershipSelector>
+ <UIPageFormPopupGroupMembershipSelector>
+ <title>
+ <ListPermissionSelector>组和会员选择</ListPermissionSelector>
+ </title>
+ </UIPageFormPopupGroupMembershipSelector>
+ <UIUserMembershipSelector>
+ <header>
+ <userName>用户名</userName>
+ <membershipType>会员类型</membershipType>
+ <action>#{word.action}</action>
+ <groupId>#{word.groupId}</groupId>
+ </header>
+ <action>
+ <SelectPermission>选择权限</SelectPermission>
+ <title>
+ <DeleteMembership>删除会员</DeleteMembership>
+ </title>
+ </action>
+ </UIUserMembershipSelector>
+ <UserPermissionSelector>
+ <title>
+ <UIGroupMembershipSelector>组会员选择</UIGroupMembershipSelector>
+ </title>
+ </UserPermissionSelector>
+ <UIFormInputItemSelector>
+ <selectType>
+ <page>选择页面模板</page>
+ <portal>选择门户模板</portal>
+ </selectType>
+ </UIFormInputItemSelector>
+ <UIFormInputSet>
+ <tooltip>
+ <selectgroup>选择其他组</selectgroup>
+ </tooltip>
+ </UIFormInputSet>
+ <UIFormInputIconSelector>
+ <label>
+ <selectIconSet>轩择一个图标集</selectIconSet>
+ <iconPreview>预览并选择图标</iconPreview>
+ <iconName>已选图标的名称</iconName>
+ <iconCatergory>图标分类</iconCatergory>
+ <miscIcons>其他图标</miscIcons>
+ <officeIcons>办公图标</officeIcons>
+ <Icon16x16>图标 16x16</Icon16x16>
+ <Icon24x24>图标 24x24</Icon24x24>
+ <Icon48x48>图标 48x48</Icon48x48>
+ <Icon32x32>图标 32x32</Icon32x32>
+ <Icon64x64>图标 64x64</Icon64x64>
+ <Icon72x72>图标 72x72</Icon72x72>
+ <misc>其他图标</misc>
+ <offices>办公图标</offices>
+ <navigation>导航图标</navigation>
+ <tool>工具图标</tool>
+ <user>用户图标</user>
+ </label>
+ <option>
+ <IconSet16x16>16x16</IconSet16x16>
+ <IconSet24x24>24x24</IconSet24x24>
+ <IconSet32x32>32x32</IconSet32x32>
+ </option>
+ </UIFormInputIconSelector>
+ <Icon>
+ <UIDropDown>
+ <label>
+ <IconSet16x16>IconSet16x16</IconSet16x16>
+ <IconSet24x24>IconSet24x24</IconSet24x24>
+ <IconSet32x32>IconSet32x32</IconSet32x32>
+ </label>
+ <title>IconSet 16x16</title>
+ </UIDropDown>
+ </Icon>
+ <UIPageWizardHelp>
+ <title>
+ <UIPageWizardHelp>页面向导帮助</UIPageWizardHelp>
+ </title>
+ </UIPageWizardHelp>
+ <UIPageCreationWizard>
+ <label>
+ <pageCreateWizard>页面创建向导</pageCreateWizard>
+ <step>步骤</step>
+ <wizardSteps>向导步骤</wizardSteps>
+ <step1>
+ <title>选择一个导航节点并且创建页面</title>
+ </step1>
+ <step2>
+ <title>选择一个页面布局模板</title>
+ </step2>
+ <step3>
+ <title>重新安排页面布局,在页面中增加Portlets</title>
+ </step3>
+ <abort>#{word.abort}</abort>
+ <back>#{word.back}</back>
+ <next>#{word.next}</next>
+ <done>#{word.save}</done>
+ <previousStep>上一步</previousStep>
+ <nextStep>下一步</nextStep>
+ </label>
+ <msg>
+ <NameNotSame>该名字已经存在</NameNotSame>
+ <notSelectedPageNavigation>您必须选择一个导航。</notSelectedPageNavigation>
+ <StepByStep>起初,您必须一步一步做。</StepByStep>
+ </msg>
+ </UIPageCreationWizard>
+ <UIPageNodeWizardPreview>
+ <action>
+ <Finish>保存并完成</Finish>
+ </action>
+ <label>
+ <nodeName>节点名</nodeName>
+ <nodeLabel>节点标签</nodeLabel>
+ <icon>#{word.icon}</icon>
+ <creator>创建者</creator>
+ <accessPermission>访问权限</accessPermission>
+ <editPermission>编辑权限</editPermission>
+ <pageReference>页面选项</pageReference>
+ </label>
+ </UIPageNodeWizardPreview>
+ <UIPageCreateDescription>
+ <title>
+ <create>页面创建向导</create>
+ <edit>页面编辑向导</edit>
+ </title>
+ </UIPageCreateDescription>
+ <UIPageTemplateOptions>
+ <UIDropDown>
+ <title>页面配置</title>
+ <label>
+ <normalPageConfigs>页面配置</normalPageConfigs>
+ <columnPageConfigs>列页面配置</columnPageConfigs>
+ <mixPageConfigs>混合页面配置</mixPageConfigs>
+ <rowPageConfigs>行页面配置</rowPageConfigs>
+ <tabsPageConfigs>标签页面配置</tabsPageConfigs>
+ </label>
+ </UIDropDown>
+ </UIPageTemplateOptions>
+
+ <UIWizardPageSelectLayoutForm>
+ <tab>
+ <label>
+ <UIPageTemplateOptions>页面模板选项</UIPageTemplateOptions>
+ </label>
+ </tab>
+ <label>
+ <normalPage>
+ <EmptyLayout>空布局</EmptyLayout>
+ <CurrentLayout>当前布局</CurrentLayout>
+ <DesktopImage>桌面布局</DesktopImage>
+ <DashboardLayout>控制面板布局</DashboardLayout>
+ </normalPage>
+ <columnPage>
+ <TwoColumnsLayout>两列布局</TwoColumnsLayout>
+ <ThreeColumnsLayout>三列布局</ThreeColumnsLayout>
+ </columnPage>
+ <rowPage>
+ <TwoRowsLayout>两行布局</TwoRowsLayout>
+ <ThreeRowsLayout>三行布局</ThreeRowsLayout>
+ </rowPage>
+ <tabsPage>
+ <TwoTabsLayout>两个标签</TwoTabsLayout>
+ <ThreeTabsLayout>三个标签</ThreeTabsLayout>
+ </tabsPage>
+ <mixPage>
+ <TwoColumnsOneRowLayout>两列一行布局</TwoColumnsOneRowLayout>
+ <OneRowTwoColumnsLayout>一行两列布局</OneRowTwoColumnsLayout>
+ <ThreeRowsTwoColumnsLayout>两列三行布局</ThreeRowsTwoColumnsLayout>
+ </mixPage>
+ <UIPageTemplateOptions>null</UIPageTemplateOptions>
+ </label>
+ </UIWizardPageSelectLayoutForm>
+
+ <UIWizardPageSetInfo>
+ <title>增加新页面</title>
+ <label>
+ <curentSelectedNodeInfo>选中的页面节点</curentSelectedNodeInfo>
+ <pageName>节点名</pageName>
+ <pageDisplayName>显示名</pageDisplayName>
+ <visible>可见</visible>
+ <showPublicationDate>发布日期&时间</showPublicationDate>
+ <startPublicationDate>起始发布日期</startPublicationDate>
+ <endPublicationDate>结束发布日期</endPublicationDate>
+ </label>
+ <action>
+ <Save>#{word.save}</Save>
+ </action>
+ <msg>
+ <null>为找到页面。</null>
+ </msg>
+ </UIWizardPageSetInfo>
+ <EditWizard>
+ <label>
+ <curentSelectedNodeInfo>选中的页面节点</curentSelectedNodeInfo>
+ <pageName>节点名</pageName>
+ <pageDisplayName>显示名</pageDisplayName>
+ <visible>可见</visible>
+ <showPublicationDate>发布日期&时间</showPublicationDate>
+ <startPublicationDate>起始发布日期</startPublicationDate>
+ <endPublicationDate>结束发布日期</endPublicationDate>
+ </label>
+ <title>编辑页面</title>
+ <action>
+ <Save>#{word.save}</Save>
+ </action>
+ </EditWizard>
+ <UIPageCreationWizardStepForm>
+ <label>
+ <pageName>页面名称</pageName>
+ </label>
+ </UIPageCreationWizardStepForm>
+ <UIAdvancedCustomization>
+ <icon>
+ <UIPortalManagement>门户</UIPortalManagement>
+ <UIPageManagement>页面</UIPageManagement>
+ </icon>
+ <label>
+ <UIPortalManagement>门户管理</UIPortalManagement>
+ <UIPageManagement>页面管理</UIPageManagement>
+ </label>
+ </UIAdvancedCustomization>
+ <UIPortalManagement>
+ <msg>
+ <Invalid-EditLayout-Permission>您无权编辑此布局。</Invalid-EditLayout-Permission>
+ <Invalid-EditPage-Permission>您无权编辑此页面。</Invalid-EditPage-Permission>
+ </msg>
+ <title>
+ <EDIT>编辑当前门户</EDIT>
+ <BROWSE>管理门户</BROWSE>
+ </title>
+ </UIPortalManagement>
+
+ <UIContainerConfigOptions>
+ <label>
+ <ContainerConfigTitle>容器分类</ContainerConfigTitle>
+ <selectContainerCategory>点击此处选择一个容器分类</selectContainerCategory>
+ </label>
+ <tab>
+ <row>行容器布局</row>
+ <column>列容器布局</column>
+ <tabs>标签容器布局</tabs>
+ <mixed>混合容器布局</mixed>
+ </tab>
+ <UIDropDown>
+ <title>行布局</title>
+ <label>
+ <ContainerCategory>容器分类</ContainerCategory>
+ <row>行布局</row>
+ <column>列布局</column>
+ <tabs>标签布局</tabs>
+ <mixed>混合布局</mixed>
+ </label>
+ </UIDropDown>
+ <template>
+ <oneRow>一个行容器</oneRow>
+ <twoRows>两个行容器</twoRows>
+ <threeRows>三个行容器</threeRows>
+ <oneColumns>一个列容器</oneColumns>
+ <twoColumns>两个列容器</twoColumns>
+ <threeColumns>三个列容器</threeColumns>
+ <twoTabs>两个标签容器</twoTabs>
+ <threeTabs>三个标签容器</threeTabs>
+ <twoColumnsOneRow>两个列,一个行容器</twoColumnsOneRow>
+ <oneRowTwoColumns>一个行,两个列容器</oneRowTwoColumns>
+ <oneRow2Column1Row>一个行,两个列,一个行容器</oneRow2Column1Row>
+ </template>
+ </UIContainerConfigOptions>
+ <UIDecoratorConfigOptions>
+ <label>
+ <selectDecorator>选择装饰</selectDecorator>
+ </label>
+ </UIDecoratorConfigOptions>
+ <UIPortlet>
+ <label>
+ <portlet>Portlet</portlet>
+ <title>Portlet</title>
+ <description>GateIn portlet</description>
+ <portletContent>Portlet描述</portletContent>
+ <View>查看</View>
+ </label>
+ <lable>
+ <information>完成</information>
+ </lable>
+ <deletePortlet>您确定要删除这个portlet吗?</deletePortlet>
+ <tooltip>
+ <PortletMode>Portlet模式</PortletMode>
+ <Minimize>最小化</Minimize>
+ <MinimizeRestore>还原</MinimizeRestore>
+ <Maximize>最大化</Maximize>
+ <MaximizeRestore>向下还原</MaximizeRestore>
+ <editPortlet>编辑Portlet</editPortlet>
+ <deletePortlet>删除Portlet</deletePortlet>
+ <ResizeWindow>调整窗口</ResizeWindow>
+ <DragControl>保持这一区域,拖动portlet</DragControl>
+ </tooltip>
+ <message>
+ <RuntimeError>此portlet遇到错误,无法显示。</RuntimeError>
+ </message>
+ </UIPortlet>
+ <PortletMode>
+ <label>
+ <help>帮助</help>
+ <view>查看</view>
+ <edit>编辑</edit>
+ </label>
+ </PortletMode>
+ <UIPagePreview>
+ <action>
+ <Back>#{word.back}</Back>
+ </action>
+ <msg>
+ <empty>该页面没有内容。点击编辑页面增加内容。 </empty>
+ </msg>
+ </UIPagePreview>
+ <UIVTabInputSet>
+ <label>
+ <personalInfo>个人信息</personalInfo>
+ </label>
+ </UIVTabInputSet>
+ <UIFormAvailablePortlet>
+ <label>
+ <UIFormTableInputSet>Portlet</UIFormTableInputSet>
+ </label>
+ </UIFormAvailablePortlet>
+
+ <UIQuickBar>
+ <tooltip>
+ <BasicCustomization>基本定制</BasicCustomization>
+ <AdvanceCustomization>高级定制</AdvanceCustomization>
+ </tooltip>
+ </UIQuickBar>
+ <UIPageEditBar>
+ <tooltip>
+ <PagePreview>前一页</PagePreview>
+ <EditPage>编辑页面属性</EditPage>
+ <SharedNavigation>导航社区配置</SharedNavigation>
+ <EditContainer>显示容器控制</EditContainer>
+ <EditPortlet>显示portlet控制</EditPortlet>
+ <Decorator>装饰</Decorator>
+ <SavePage>保存页面</SavePage>
+ <TurnOffPreview>点击此处关闭预览模式</TurnOffPreview>
+ </tooltip>
+ </UIPageEditBar>
+ <UIPageManagement>
+ <title>
+ <BROWSE>管理页面</BROWSE>
+ <EDIT>页面 & 导航器</EDIT>
+ </title>
+ <msg>
+ <Invalid-editPermission>您无法编辑此页。</Invalid-editPermission>
+ </msg>
+ </UIPageManagement>
+
+ <UIPageIterator>
+ <label>
+ <totalPage>所有页面</totalPage>
+ <backTenPages>前10页</backTenPages>
+ <previous>前一页</previous>
+ <next>下一页</next>
+ <nextTenPages>后10页</nextTenPages>
+ </label>
+ </UIPageIterator>
+ <UIPortalBrowser>
+ <header>
+ <creator>创建者</creator>
+ <editPermission>编辑权限</editPermission>
+ <accessPermissions>访问权限</accessPermissions>
+ <name>#{word.name}</name>
+ <skin>#{word.skin}</skin>
+ <action>#{word.action}</action>
+ <factoryId>工厂Id</factoryId>
+ </header>
+ <action>
+ <addNewPortal>创建新门户</addNewPortal>
+ <title>
+ <DeletePortal>删除门户</DeletePortal>
+ </title>
+ </action>
+ <msg>
+ <Invalid-viewPermission>门户不允许访问</Invalid-viewPermission>
+ <PortalInUse>{0}门户正在使用</PortalInUse>
+ <Invalid-deletePermission>您无权删除{0}门户。</Invalid-deletePermission>
+ <Invalid-createPermission>您无权创建新门户。请和管理员联系。</Invalid-createPermission>
+ </msg>
+ <deletePortal>您确定要删除这个门户吗?</deletePortal>
+ </UIPortalBrowser>
+ <SitePortal>
+ <label>网站门户</label>
+ </SitePortal>
+ <ClassicPortal>
+ <label>经典门户</label>
+ </ClassicPortal>
+ <WebOSPortal>
+ <label>WebOS 门户</label>
+ </WebOSPortal>
+
+ <PopupPageSelector>
+ <title>
+ <UIPageBrowser>搜索和选择页面</UIPageBrowser>
+ <SelectPage>选择一个页面</SelectPage>
+ </title>
+ </PopupPageSelector>
+ <UIControWSPopupWindow>
+ <title>
+ <UIApplicationTree>应用树</UIApplicationTree>
+ </title>
+ </UIControWSPopupWindow>
+ <EditGroup>
+ <title>
+ <UIPageNavigationForm>增加导航</UIPageNavigationForm>
+ </title>
+ </EditGroup>
+ <UILogged>
+ <note>
+ <loggedUser>欢迎</loggedUser>
+ <ItemContainer>该部分正在建设中</ItemContainer>
+ </note>
+ <action>
+ <logout>注销</logout>
+ <signout>退出</signout>
+ <Youhave>您已经:</Youhave>
+ </action>
+ <title>
+ <widgetNews>GateIn 小工具</widgetNews>
+ <widgetCategory>小工具分类</widgetCategory>
+ <widgetItem>小工具</widgetItem>
+ <BrowsersSupport>浏览器支持</BrowsersSupport>
+ </title>
+ <label>
+ <Workbeston>最佳作品</Workbeston>
+ <Workableon>同样精彩</Workableon>
+ <DownloadNow>立即下载</DownloadNow>
+ <RollBack>退回</RollBack>
+ <Save>保存</Save>
+ <Finish>完成</Finish>
+ <Abort>舍弃</Abort>
+ </label>
+ </UILogged>
+ <UIPortalComponentLogin>
+ <label>
+ <password>密码</password>
+ <username>用户名</username>
+ </label>
+ </UIPortalComponentLogin>
+ <UIForgetPasswordWizard>
+ <title>您为什么无法登录?</title>
+ <action>
+ <Next>下一步</Next>
+ <Back>返回</Back>
+ </action>
+ <info>对于不能访问该网站给您带来的不便我们非常抱歉。<br />要尽快解决此问题,请按照以下故障排除步骤操作。<br /><br />1. 恢复您的密码:输入<strong>您的用户名</strong> 点击发送。<br/>2. 恢复您的用户名:输入<strong>电子邮件地址</strong> 点击发送。<br/></info>
+ <label>
+ <forgotpassword>忘记我的密码</forgotpassword>
+ <forgotusername>忘记我的用户名</forgotusername>
+ </label>
+ </UIForgetPasswordWizard>
+ <UIForgetPassword>
+ <title>忘记用户名/密码</title>
+ <action>
+ <Send>发送</Send>
+ <Back>返回</Back>
+ </action>
+ <label>
+ <username>用户名:</username>
+ <email>电子邮件:</email>
+ </label>
+ <msg>
+ <user-delete>你的用户名已被管理员删除。</user-delete>
+ <user-not-exist>这个用户名不存在。</user-not-exist>
+ <email-not-exist>这个邮件地址不存在。</email-not-exist>
+ <send-mail-success>请检查您的电子邮件。</send-mail-success>
+ <expration>您的链接已过期,你必须重复激活过程。</expration>
+ </msg>
+ <mail>
+ <header>非常感谢您与我们联系,您已经申请取回用户名和密码。</header>
+ <footer>谢谢。</footer>
+ <user>您帐户的用户名是:</user>
+ <password>您的密码是:</password>
+ <link>您可以为这个用户名申请一个新的密码,请点击链接:</link>
+ </mail>
+ </UIForgetPassword>
+ <UIResetPassword>
+ <title>修改密码</title>
+ <action>
+ <Save>保存</Save>
+ <Close>关闭</Close>
+ </action>
+ <label>
+ <username>用户名:</username>
+ <password>密码:</password>
+ <changepass>修改密码:</changepass>
+ <newpassword>新密码:</newpassword>
+ <confirmnewpassword>确认新密码:</confirmnewpassword>
+ </label>
+ <msg>
+ <change-password-successfully>密码已更改。</change-password-successfully>
+ <password-is-not-match>新密码和确认新密码必须一致。</password-is-not-match>
+ <Invalid-account>用户名或密码错误或为空。请再试一次。</Invalid-account>
+ </msg>
+ </UIResetPassword>
+
+ <UIPopupMessages>
+ <title>
+ <exoMessages>消息</exoMessages>
+ </title>
+ <button>
+ <ok>OK</ok>
+ </button>
+ <label>
+ <Error>错误</Error>
+ <Warning>警告</Warning>
+ <Info>信息</Info>
+ </label>
+ <Close>关闭窗口</Close>
+ </UIPopupMessages>
+
+ <UISitemap>
+ <label>
+ <message>此位置没有子页。</message>
+ </label>
+ </UISitemap>
+
+ <UIPortalToolPanel>
+ <label>
+ <copyrightText><![CDATA[Copyright © 2009. All rights Reserved,]]></copyrightText>
+ <companyTitleText> eXo Platform SAS and Red Hat, Inc..</companyTitleText>
+ </label>
+ </UIPortalToolPanel>
+
+ <UIContainer>
+ <title>
+ <Container>容器</Container>
+ <DragControlArea>保持这个区域,拖动容器。</DragControlArea>
+ </title>
+ <label>
+ <Thecontainer>容器</Thecontainer>
+ </label>
+ <deleteContainer>您确定要删除此容器?</deleteContainer>
+ <tooltip>
+ <closeContainer>删除容器</closeContainer>
+ <editContainer>编辑容器</editContainer>
+ <drag>将容器拖动到此</drag>
+ </tooltip>
+ </UIContainer>
+ <UIPage>
+ <label>
+ <title>门户页面</title>
+ <description>门户页面正文</description>
+ <pageContent>页面描述</pageContent>
+ </label>
+ <msg>
+ <EditPermission>
+ <null>您无权修改此页面。</null>
+ </EditPermission>
+ </msg>
+ </UIPage>
+ <UIPageDesktop>
+ <Default>
+ <img>
+ <location>/eXoResources/skin/DefaultSkin/portal/webui/component/view/UIPageDesktop/icons/80x80</location>
+ </img>
+ </Default>
+ <Mac>
+ <img>
+ <location>/eXoResources/skin/DefaultSkin/portal/webui/component/view/UIPageDesktop/icons/80x80</location>
+ </img>
+ </Mac>
+ <Vista>
+ <img>
+ <location>/eXoResources/skin/DefaultSkin/portal/webui/component/view/UIPageDesktop/icons/80x80</location>
+ </img>
+ </Vista>
+ <label>
+ <pagebody>门户页面正文</pagebody>
+ <PageContent>页面内容</PageContent>
+ <View>查看</View>
+ <Edit>编辑</Edit>
+ <Done>完成</Done>
+ </label>
+ <title>
+ <PortalPage>门户页面</PortalPage>
+ <SaveToDatabase>保存到数据库</SaveToDatabase>
+ <AddApplication>增加应用</AddApplication>
+ <PageNavigation>页面导航</PageNavigation>
+ <eXoBrowser>浏览器</eXoBrowser>
+ <ShowPortletDesktop>显示/隐藏 Portlets</ShowPortletDesktop>
+ <ShowWidgetDesktop>显示/隐藏 小工具</ShowWidgetDesktop>
+ <SignIn>登录</SignIn>
+ <SignOut>退出</SignOut>
+ <pageNavigation>页面导航</pageNavigation>
+ </title>
+ <msg>
+ <hasNotPermission>您无权编辑此页。</hasNotPermission>
+ </msg>
+ <action>
+ <Close>从桌面导航删除这个应用</Close>
+ <Quit>退出</Quit>
+ <action>
+ <Open>打开</Open>
+ </action>
+ </action>
+ </UIPageDesktop>
+
+ <UIPageBody>
+ <label>
+ <title>门户页面正文</title>
+ <description>门户页面正文</description>
+ </label>
+ <msg>
+ <pageNotFoundLine1>未找到页面</pageNotFoundLine1>
+ <pageNotFoundLine2>您无权查看这个网页。</pageNotFoundLine2>
+ <pageNotFoundLine3>网页可以被删除。</pageNotFoundLine3>
+ <pageNotFoundLine4>此节点没有网页。</pageNotFoundLine4>
+ </msg>
+ </UIPageBody>
+
+ <UIPortal>
+ <label>
+ <title>UIPortal 容器</title>
+ <description>UIPortal 容器</description>
+ </label>
+ </UIPortal>
+ <UITableColumnContainer>
+ <label>
+ <title>导航容器</title>
+ <description>导航容器</description>
+ </label>
+ </UITableColumnContainer>
+
+ <UISearch>
+ <label>
+ <AdvancedSearch>高级搜索</AdvancedSearch>
+ <UISavedQuery>保存的查询</UISavedQuery>
+ <UISearchResult>高级搜索结果</UISearchResult>
+ <UIMetadataSearch>元数据搜索</UIMetadataSearch>
+ <Search>搜索</Search>
+ <QuickSearch>快速搜索</QuickSearch>
+ </label>
+ </UISearch>
+ <UISearchForm>
+ <msg>
+ <empty>找不到结果</empty>
+ </msg>
+ </UISearchForm>
+ <UIFormUploadInput>
+ <label>
+ <Uploaded>上传</Uploaded>
+ <remove>删除上传</remove>
+ <Cancel>取消</Cancel>
+ </label>
+ <msg>
+ <limit>文件必须小于 {0} MB.</limit>
+ </msg>
+ </UIFormUploadInput>
+ <UINavigationNodeSelectorPopupMenu>
+ <event>
+ <AddNode>添加新节点</AddNode>
+ <PasteNode>粘贴节点</PasteNode>
+ </event>
+ </UINavigationNodeSelectorPopupMenu>
+ <NavigationNodePopupMenu>
+ <event>
+ <AddNode>添加新节点</AddNode>
+ <EditPageNode>编辑节点页面</EditPageNode>
+ <EditSelectedNode>编辑此节点</EditSelectedNode>
+ <EditNavigation>编辑导航</EditNavigation>
+ <CopyNode>复制节点</CopyNode>
+ <CloneNode>复制节点</CloneNode>
+ <CutNode>剪切节点</CutNode>
+ <MoveUp>上移</MoveUp>
+ <MoveDown>下移</MoveDown>
+ <PasteNode>粘贴节点</PasteNode>
+ <SaveNavigation>保存导航</SaveNavigation>
+ <DeleteNode>删除节点</DeleteNode>
+ </event>
+ </NavigationNodePopupMenu>
+ <UIGroupManagement>
+ <msg>
+ <Edit>您必须选择一个组。</Edit>
+ <Delete>您无法删除这个组,它正在被另外一个程序使用。</Delete>
+ <DeleteMandatory>您不能删除这个组,因为它(或者它的子节点)是强制的。</DeleteMandatory>
+ </msg>
+ </UIGroupManagement>
+ <UIEditCurentPage>
+ <label>
+ <pageCreateWizard>编辑当前页面向导。</pageCreateWizard>
+ <step1>
+ <title>欢迎编辑当前页面。</title>
+ </step1>
+ <wizardSteps>步骤</wizardSteps>
+ <next>下一步</next>
+ <done>保存</done>
+ <back>返回</back>
+ <abort>舍弃</abort>
+ <step2>
+ <title>选择页面节点,创建页面名称</title>
+ </step2>
+ <step3>
+ <title>选择页面布局模板</title>
+ </step3>
+ <step4>
+ <title>拖放</title>
+ </step4>
+ </label>
+ </UIEditCurentPage>
+
+ <UIAccessGroup>
+ <deleteAccessGroup>您确定要删除此访问组?</deleteAccessGroup>
+ </UIAccessGroup>
+ <UISharedPortalResources>
+ <msg>
+ <notSelected>您必须选择一个组。</notSelected>
+ </msg>
+ </UISharedPortalResources>
+ <UISharedNavigation>
+ <msg>
+ <notSelected>您必须选择一个组。</notSelected>
+ </msg>
+ </UISharedNavigation>
+ <Office>
+ <label>办公室</label>
+ </Office>
+ <Default>
+ <label>默认</label>
+ </Default>
+ <FactoryId>
+ <left>
+ <title>工厂Id</title>
+ </left>
+ <title>工厂Id</title>
+ </FactoryId>
+
+ <UIItemSelector>
+ <lable>
+ <ItemDetailTitle>样本页面布局模板预览</ItemDetailTitle>
+ </lable>
+ </UIItemSelector>
+
+ <UITree>
+ <tooltip>
+ <UpLevel>上一级</UpLevel>
+ </tooltip>
+ </UITree>
+
+ <UIAccountSetting>
+ <tab>
+ <label>
+ <UIAccountProfiles>帐户概况</UIAccountProfiles>
+ <UIAccountChangePass>修改密码</UIAccountChangePass>
+ </label>
+ </tab>
+ <action>
+ <Close>关闭</Close>
+ </action>
+ </UIAccountSetting>
+
+ <UIAccountProfiles>
+ <action>
+ <Save>保存</Save>
+ <Reset>重置</Reset>
+ </action>
+ <label>
+ <userName>用户名:</userName>
+ <firstName>名:</firstName>
+ <lastName>姓:</lastName>
+ <email>电子邮件:</email>
+ </label>
+ <msg>
+ <update>
+ <success>帐户信息已更新。</success>
+ </update>
+ </msg>
+ </UIAccountProfiles>
+ <UIAccountChangePass>
+ <action>
+ <Save>保存</Save>
+ <Reset>重置</Reset>
+ </action>
+ <label>
+ <currentpass>当前密码:</currentpass>
+ <newpass>新密码:</newpass>
+ <confirmnewpass>确认新密码:</confirmnewpass>
+ </label>
+ <msg>
+ <change>
+ <pass>
+ <success>密码已修改。</success>
+ </pass>
+ </change>
+ <password-is-not-match>新密码和确认新密码不一致。</password-is-not-match>
+ <currentpassword-is-not-match>当前密码不正确。</currentpassword-is-not-match>
+ </msg>
+ </UIAccountChangePass>
+
+ <UIDropDownControl>
+ <title>
+ <Empty>下拉控制</Empty>
+ </title>
+ </UIDropDownControl>
+ <UIDropDownPageTemp>
+ <item>
+ <normalPageConfigs>页面配置</normalPageConfigs>
+ <columnPageConfigs>列页面配置</columnPageConfigs>
+ <mixPageConfigs>混合页面配置</mixPageConfigs>
+ <rowPageConfigs>行页面配置</rowPageConfigs>
+ <tabsPageConfigs>标签页面配置</tabsPageConfigs>
+ </item>
+ </UIDropDownPageTemp>
+
+ <UIGadgetContainerManagement>
+ <action>
+ <close>取消</close>
+ <save>#{word.save}</save>
+ </action>
+ <confirm>
+ <DeleteContainer>您确定要删除这个容器吗?</DeleteContainer>
+ <DeleteGadget>您确定要删除这个小工具吗?</DeleteGadget>
+ </confirm>
+ <title>
+ <manager>小工具容器管理</manager>
+ <containers>容器</containers>
+ <selectedContainer>选中的小工具容器信息:</selectedContainer>
+ </title>
+ <msg>
+ <emptyList>此分类中不存在容器。</emptyList>
+ <noSelected>没选中容器</noSelected>
+ </msg>
+ <label>
+ <label>容器标签:</label>
+ <description>容器描述:</description>
+ </label>
+ <tooltip>
+ <remove>删除选中的小工具容器</remove>
+ <edit>编辑选中的小工具容器</edit>
+ <addnew>增加新的小工具容器</addnew>
+ </tooltip>
+ </UIGadgetContainerManagement>
+ <GadgetContainerPopup>
+ <title>
+ <UIGadgetContainerForm>小工具容器表</UIGadgetContainerForm>
+ </title>
+ </GadgetContainerPopup>
+ <UIGadgetContainerForm>
+ <label>
+ <name>标签:</name>
+ <description>描述:</description>
+ </label>
+ <action>
+ <Save>#{word.save}</Save>
+ <Close>取消</Close>
+ </action>
+ <msg>
+ <exist>这个容器已经存在,请输入另外一个。</exist>
+ </msg>
+ </UIGadgetContainerForm>
+ <UIWidgetContainer>
+ <tooltip>
+ <addWidget>增加小工具</addWidget>
+ <scrollDown>向下滚动</scrollDown>
+ <scrollUp>向上滚动</scrollUp>
+ </tooltip>
+ </UIWidgetContainer>
+ <Theme>
+ <UIItemThemeSelector>
+ <item>
+ <SimpleBlue>简单蓝</SimpleBlue>
+ <SimpleGreen>简单绿</SimpleGreen>
+ <SimplePink>简单粉红</SimplePink>
+ <SimpleViolet>简单紫罗兰</SimpleViolet>
+ <SimpleOrange>简单橙</SimpleOrange>
+ <RoundConerPink>粉红圆角</RoundConerPink>
+ <RoundConerOrange>橙色圆角</RoundConerOrange>
+ <RoundConerGreen>绿色圆角</RoundConerGreen>
+ <RoundConerViolet>紫罗兰圆角</RoundConerViolet>
+ <RoundConerBlue>蓝色圆角</RoundConerBlue>
+ <ShadowPink>粉红阴影</ShadowPink>
+ <ShadowOrange>橙色阴影</ShadowOrange>
+ <ShadowBlue>蓝色阴影</ShadowBlue>
+ <ShadowViolet>紫罗兰阴影</ShadowViolet>
+ <ShadowGreen>绿色阴影</ShadowGreen>
+ <VistaBlue>Vista蓝</VistaBlue>
+ <VistaTheme>Vista主题</VistaTheme>
+ <MacBlack>苹果黑</MacBlack>
+ <MacGreenSteel>苹果绿钢铁</MacGreenSteel>
+ <MacTheme>苹果主题</MacTheme>
+ <MacGray>苹果灰</MacGray>
+ <DefaultTheme>默认主题</DefaultTheme>
+ </item>
+ </UIItemThemeSelector>
+ </Theme>
+ <ThemeDropDown>
+ <item>
+ <Shadow>阴影样式</Shadow>
+ <Simple>简单样式</Simple>
+ <VistaStyle>Vista样式</VistaStyle>
+ <MacStyle>苹果样式</MacStyle>
+ <RoundConer>圆角样式</RoundConer>
+ </item>
+ </ThemeDropDown>
+ <UIAddGadgetPopup>
+ <title>
+ <UIDashboardSelectContainer>控制面板工作区</UIDashboardSelectContainer>
+ </title>
+ </UIAddGadgetPopup>
+ <UIDashboardSelectContainer>
+ <action>
+ <addGadget>增加小工具</addGadget>
+ </action>
+ </UIDashboardSelectContainer>
+ <UIDashboardContainer>
+ <label>
+ <openWorkspace>增加小工具</openWorkspace>
+ <SaveTitle>保存</SaveTitle>
+ <CancelTitle>取消</CancelTitle>
+ <Debug>调试</Debug>
+ <Cache>没有缓存</Cache>
+ </label>
+ </UIDashboardContainer>
+ <UIDashboardEditForm>
+ <label>
+ <totalColumns>烈数:</totalColumns>
+ <isPrivate>是私有的:</isPrivate>
+ <owner>所有者:</owner>
+ </label>
+ </UIDashboardEditForm>
+ <UIDashboard>
+ <msg>
+ <required>该文本字段是必需的</required>
+ <addGadget>将小工具拖动到此</addGadget>
+ <notUrl>url是无效的。请输入一个小工具xml或RSS提要的正确url。 </notUrl>
+ <ApplicationNotExisted>此应用不存在或已被删除。</ApplicationNotExisted>
+ </msg>
+ </UIDashboard>
+ <UIUserSelector>
+ <label>
+ <option>
+ <userName>用户名</userName>
+ <lastName>姓</lastName>
+ <firstName>名</firstName>
+ <email>电子邮件地址</email>
+ </option>
+ <group>组:</group>
+ <searchUser>搜索:</searchUser>
+ <userName>用户名</userName>
+ <lastName>姓</lastName>
+ <firstName>名</firstName>
+ <email>电子邮件</email>
+ <action>操作</action>
+ <Add>添加</Add>
+ <Close>关闭</Close>
+ </label>
+ <msg>
+ <empty>空数据</empty>
+ <user-required>请至少检查一个用户。</user-required>
+ </msg>
+ </UIUserSelector>
+ <UIAddNewApplication>
+ <label>
+ <AddApplication>增加应用</AddApplication>
+ <Categories>分类</Categories>
+ <Select>选择应用</Select>
+ <NoneApp>此处不存在应用。请到应用注册portlet处导入应用。</NoneApp>
+ <Type>类型:</Type>
+ <Created>创建于:</Created>
+ <Description>描述:</Description>
+ <Close>关闭</Close>
+ <Add>添加并将此应用保存在页面中。</Add>
+ <AddToStartup>添加并立即运行此应用。</AddToStartup>
+ </label>
+ </UIAddNewApplication>
+ <UIPortalNavigation>
+ <Label>
+ <Next>下一步</Next>
+ <Previous>上一步</Previous>
+ </Label>
+ </UIPortalNavigation>
+ <UIDropDownConfigs>
+ <item>
+ <row>在行中</row>
+ <column>在列中</column>
+ <tabs>在标签中</tabs>
+ <mix>混合</mix>
+ </item>
+ </UIDropDownConfigs>
+ <UITabContainer>
+ <tab>标签</tab>
+ </UITabContainer>
+ <UIBrowserPortlet>
+ <Back>后退</Back>
+ <Forward>前进</Forward>
+ <Refresh>刷新</Refresh>
+ <Stop>停止</Stop>
+ <Goto>转到地址栏地址</Goto>
+ <Go>转到</Go>
+ <Untitled>(无标题)</Untitled>
+ <Tab>新标签</Tab>
+ </UIBrowserPortlet>
+
+ <UIPopupWindow>
+ <Close>关闭窗口</Close>
+ <title>
+ <UIPageNodeForm2>增加/编辑页面节点</UIPageNodeForm2>
+ <UINavigationManagement>导航管理</UINavigationManagement>
+ <UIPageNavigationForm>页面导航表</UIPageNavigationForm>
+ </title>
+ </UIPopupWindow>
+ <PopupPageSelector2>
+ <title>
+ <SelectPage>选择页面</SelectPage>
+ </title>
+ </PopupPageSelector2>
+ <UISiteManagement>
+ <msg>
+ <Invalid-deletePermission>该用户没有权限删除这个门户</Invalid-deletePermission>
+ <portal-not-exist>门户不存在或者已被删除</portal-not-exist>
+ <Invalid-editPermission>该用户没有权限编辑这个门户</Invalid-editPermission>
+ </msg>
+ </UISiteManagement>
+ <UIGroupNavigationManagement>
+ <Action>
+ <Add>增加导航</Add>
+ </Action>
+ <Delete>
+ <Confirm>您确定要删除此导航?</Confirm>
+ </Delete>
+ <msg>
+ <Invalid-deletePermission>用户没有权限删除这个导航</Invalid-deletePermission>
+ <navigation-not-exist>导航不存在或者已经被删除。</navigation-not-exist>
+ <Invalid-editPermission>用户没有权限编辑这个导航</Invalid-editPermission>
+ </msg>
+ </UIGroupNavigationManagement>
+ <UINavigationManagement>
+ <action>
+ <addNode>增加节点</addNode>
+ </action>
+ <msg>
+ <NavigationNotExistAnymore>导航可删除。</NavigationNotExistAnymore>
+ </msg>
+ </UINavigationManagement>
+ <UIAddGroupNavigation>
+ <Action>
+ <Add>添加导航</Add>
+ </Action>
+ <Label>
+ <NoPermission>此用户无权添加导航。</NoPermission>
+ </Label>
+ <header>
+ <Group>组</Group>
+ </header>
+ </UIAddGroupNavigation>
+ <UIGadget>
+ <tooltip>
+ <Minimize>最小化</Minimize>
+ <Unminimize>还原</Unminimize>
+ <Maximize>最大化</Maximize>
+ <Unmaximize>向下还原</Unmaximize>
+ <editGadget>编辑小工具</editGadget>
+ <deleteGadget>删除小工具</deleteGadget>
+ </tooltip>
+ </UIGadget>
+</bundle>
Modified: portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/common/locales-config.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/common/locales-config.xml 2010-01-19 07:32:18 UTC (rev 1364)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/conf/common/locales-config.xml 2010-01-19 09:21:12 UTC (rev 1365)
@@ -93,4 +93,10 @@
<description>Default configuration for the italian locale</description>
</locale-config>
+ <locale-config>
+ <locale>zh</locale>
+ <output-encoding>UTF-8</output-encoding>
+ <input-encoding>UTF-8</input-encoding>
+ <description>Default configuration for the chinese locale</description>
+ </locale-config>
</locales-config>
14 years, 11 months
gatein SVN: r1364 - portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application.
by do-not-reply@jboss.org
Author: mwringe
Date: 2010-01-19 02:32:18 -0500 (Tue, 19 Jan 2010)
New Revision: 1364
Modified:
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/ExoPortletInvocationContext.java
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortletActionListener.java
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortletLifecycle.java
Log:
Allow public render parameters to be removed if trying to set with an empty value.
Simplify portlet urls and use not add values for default settings (assuming defaults as render, normal window state, and view mode).
Allow for custom modes to be used.
Minor code cleanup.
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/ExoPortletInvocationContext.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/ExoPortletInvocationContext.java 2010-01-19 07:20:13 UTC (rev 1363)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/ExoPortletInvocationContext.java 2010-01-19 07:32:18 UTC (rev 1364)
@@ -98,36 +98,43 @@
String type;
if (containerURL instanceof RenderURL)
{
- type = "render";
+ type = Constants.PORTAL_RENDER;
}
else if (containerURL instanceof ResourceURL)
{
- type = "resource";
+ type = Constants.PORTAL_SERVE_RESOURCE;
}
else if (containerURL instanceof ActionURL)
{
- type = "action";
+ type = Constants.PORTAL_PROCESS_ACTION;
}
else
{
throw new Error("Unrecognized containerURL type");
}
- appendParameter(baseURL, "portal:type", type);
- appendParameter(baseURL, "portal:isSecure", "" + format.getWantSecure());
-
+ if (!type.equals(Constants.PORTAL_RENDER))
+ {
+ appendParameter(baseURL, Constants.TYPE_PARAMETER, type);
+ }
+
+ if (format != null && format.getWantSecure() != null)
+ {
+ appendParameter(baseURL, Constants.SECURE_PARAMETER, format.getWantSecure().toString());
+ }
+
if (containerURL instanceof ActionURL)
{
ActionURL actionURL = (ActionURL)containerURL;
StateString state = actionURL.getInteractionState();
- if (state != null)
+ if (state != null && !state.getStringValue().equals(StateString.JBPNS_PREFIX))
{
appendParameter(baseURL, INTERACTION_STATE_PARAM_NAME, state.getStringValue());
}
-
+
state = actionURL.getNavigationalState();
- if (state != null)
+ if (state != null && !state.getStringValue().equals(StateString.JBPNS_PREFIX) )
{
appendParameter(baseURL, NAVIGATIONAL_STATE_PARAM_NAME, state.getStringValue());
}
@@ -157,13 +164,13 @@
}
StateString resourceState = resourceURL.getResourceState();
- if (resourceState != null)
+ if (resourceState != null && !resourceState.getStringValue().equals(StateString.JBPNS_PREFIX))
{
appendParameter(baseURL, RESOURCE_STATE_PARAM_NAME, resourceState.getStringValue());
}
resourceState = resourceURL.getNavigationalState();
- if (resourceState != null)
+ if (resourceState != null && !resourceState.getStringValue().equals(StateString.JBPNS_PREFIX))
{
appendParameter(baseURL, NAVIGATIONAL_STATE_PARAM_NAME, resourceState.getStringValue());
}
@@ -185,13 +192,13 @@
RenderURL renderURL = (RenderURL)containerURL;
WindowState windowState = renderURL.getWindowState();
- if (windowState != null)
+ if (windowState != null && !windowState.equals(WindowState.NORMAL))
{
appendParameter(baseURL, Constants.WINDOW_STATE_PARAMETER, windowState.toString());
}
Mode mode = renderURL.getMode();
- if (mode != null)
+ if (mode != null && !mode.equals(Mode.VIEW))
{
appendParameter(baseURL, Constants.PORTLET_MODE_PARAMETER, mode.toString());
}
@@ -201,11 +208,18 @@
{
for (String key : publicNSChanges.keySet())
{
- String[] values = publicNSChanges.get(key);
- for (String value : values)
- {
- appendParameter(baseURL, key, value);
- }
+ String[] values = publicNSChanges.get(key);
+ if (values != null && values.length > 0)
+ {
+ for (String value : values)
+ {
+ appendParameter(baseURL, key, value);
+ }
+ }
+ else
+ {
+ appendParameter(baseURL, "removePP", key);
+ }
}
}
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortletActionListener.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortletActionListener.java 2010-01-19 07:20:13 UTC (rev 1363)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortletActionListener.java 2010-01-19 07:32:18 UTC (rev 1364)
@@ -619,10 +619,18 @@
for (String key : requestParams.keySet())
{
- if (uiPortlet.supportsPublicParam(key))
- {
- publicParams.put(key, requestParams.get(key));
- }
+ String[] value = requestParams.get(key);
+ if (uiPortlet.supportsPublicParam(key))
+ {
+ if (value.length > 0)
+ {
+ publicParams.put(key, value);
+ }
+ else
+ {
+ publicParams.remove(key);
+ }
+ }
}
}
@@ -719,9 +727,14 @@
{
uiPortlet.setCurrentPortletMode(PortletMode.EDIT);
}
+ else if (portletMode.equals(PortletMode.VIEW.toString()))
+ {
+ uiPortlet.setCurrentPortletMode(PortletMode.VIEW);
+ }
else
{
- uiPortlet.setCurrentPortletMode(PortletMode.VIEW);
+ PortletMode customMode = new PortletMode(portletMode);
+ uiPortlet.setCurrentPortletMode(customMode);
}
event.getRequestContext().addUIComponentToUpdateByAjax(uiPortlet);
}
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortletLifecycle.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortletLifecycle.java 2010-01-19 07:20:13 UTC (rev 1363)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortletLifecycle.java 2010-01-19 07:32:18 UTC (rev 1364)
@@ -24,6 +24,7 @@
import org.exoplatform.container.ExoContainer;
import org.exoplatform.portal.application.PortalRequestContext;
import org.exoplatform.portal.portlet.PortletExceptionHandleService;
+import org.exoplatform.portal.webui.portal.UIPortal;
import org.exoplatform.portal.webui.util.Util;
import org.exoplatform.resolver.ApplicationResourceResolver;
import org.exoplatform.services.log.ExoLogger;
@@ -43,6 +44,7 @@
import java.io.Serializable;
import java.nio.charset.Charset;
+import java.util.Map;
import javax.portlet.PortletMode;
import javax.portlet.WindowState;
@@ -106,6 +108,8 @@
*
* In case of a RenderURL, the parameter state map must be invalidated and
* ths is done in the associated ActionListener
+ *
+ * If no action type is specified we assume the default, which is to render
*/
String portletActionType = context.getRequestParameter(Constants.TYPE_PARAMETER);
if (portletActionType != null)
@@ -123,14 +127,15 @@
if (event != null)
event.broadcast();
}
- else
- {
- Event<UIComponent> event = uicomponent.createEvent("Render", Event.Phase.PROCESS, context);
- if (event != null)
- event.broadcast();
- addUpdateComponent = true;
- }
}
+ else
+ {
+ Event<UIComponent> event = uicomponent.createEvent("Render", Event.Phase.PROCESS, context);
+ if (event != null)
+ event.broadcast();
+ addUpdateComponent = true;
+ }
+
if (addUpdateComponent)
context.addUIComponentToUpdateByAjax(uicomponent);
}
@@ -156,6 +161,16 @@
try
{
+ Map<String, String[]> paramMap = prcontext.getRequest().getParameterMap();
+ if (paramMap.containsKey("removePP"))
+ {
+ UIPortal uiPortal = Util.getUIPortal();
+ for (String publicParamName : paramMap.get("removePP"))
+ {
+ uiPortal.getPublicParameters().remove(publicParamName);
+ }
+ }
+
RenderInvocation renderInvocation = uicomponent.create(RenderInvocation.class, prcontext);
if (uicomponent.getCurrentWindowState() != WindowState.MINIMIZED)
@@ -242,7 +257,14 @@
PortletContainerException pcException = new PortletContainerException(e);
PortletExceptionHandleService portletExceptionService =
(PortletExceptionHandleService)container.getComponentInstanceOfType(PortletExceptionHandleService.class);
- portletExceptionService.handle(pcException);
+ if (portletExceptionService != null)
+ {
+ portletExceptionService.handle(pcException);
+ }
+ else
+ {
+ log.warn("Could not find the PortletExceptionHandleService in the exo container");
+ }
markup = Text.create("This portlet encountered an error and could not be displayed.");
}
14 years, 11 months
gatein SVN: r1363 - portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application.
by do-not-reply@jboss.org
Author: mwringe
Date: 2010-01-19 02:20:13 -0500 (Tue, 19 Jan 2010)
New Revision: 1363
Modified:
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortlet.java
Log:
Catch NoSuchPortletException and set the requested portlet to null instead. This will allow for the error to be properly handled and displayed when the portlet is rendered.
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortlet.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortlet.java 2010-01-19 07:06:40 UTC (rev 1362)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/application/UIPortlet.java 2010-01-19 07:20:13 UTC (rev 1363)
@@ -49,6 +49,7 @@
import org.gatein.common.i18n.LocalizedString;
import org.gatein.common.net.media.MediaType;
import org.gatein.pc.api.Mode;
+import org.gatein.pc.api.NoSuchPortletException;
import org.gatein.pc.api.PortletContext;
import org.gatein.pc.api.PortletInvoker;
import org.gatein.pc.api.PortletInvokerException;
@@ -800,8 +801,18 @@
String applicationId = dataStorage.getId(state.getApplicationState());
ModelAdapter<S, C> adapter = ModelAdapter.getAdapter(state.getApplicationType());
PortletContext producerOfferedPortletContext = adapter.getProducerOfferedPortletContext(applicationId);
- org.gatein.pc.api.Portlet producedOfferedPortlet = portletInvoker.getPortlet(producerOfferedPortletContext);
-
+ org.gatein.pc.api.Portlet producedOfferedPortlet;
+
+ try
+ {
+ producedOfferedPortlet = portletInvoker.getPortlet(producerOfferedPortletContext);
+ }
+ catch (NoSuchPortletException nspe)
+ {
+ producedOfferedPortlet = null;
+ nspe.printStackTrace();
+ }
+
this.adapter = adapter;
this.producerOfferedPortletContext = producerOfferedPortletContext;
this.producedOfferedPortlet = producedOfferedPortlet;
14 years, 11 months