diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/BaseRoleForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/BaseRoleForm.java
new file mode 100755
index 000000000..f7acd694a
--- /dev/null
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/BaseRoleForm.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2003-2004 Red Hat Inc. All Rights Reserved.
+ *
+ * This library 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 library 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 library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+package com.arsdigita.cms.ui.role;
+
+import com.arsdigita.bebop.FormProcessException;
+import com.arsdigita.bebop.PageState;
+import com.arsdigita.bebop.event.ParameterEvent;
+import com.arsdigita.bebop.event.ParameterListener;
+import com.arsdigita.bebop.event.PrintEvent;
+import com.arsdigita.bebop.event.PrintListener;
+import com.arsdigita.bebop.form.CheckboxGroup;
+import com.arsdigita.bebop.form.Option;
+import com.arsdigita.cms.CMS;
+import com.arsdigita.cms.ui.BaseForm;
+import com.arsdigita.cms.util.SecurityConstants;
+import com.arsdigita.globalization.GlobalizedMessage;
+import com.arsdigita.util.UncheckedWrapperException;
+import org.apache.log4j.Logger;
+import org.libreccm.security.Role;
+import org.librecms.contentsection.ContentSection;
+
+import java.util.Collection;
+import java.util.TooManyListenersException;
+
+/**
+ * For more detailed information see {@link com.arsdigita.bebop.Form}.
+ *
+ * @author Yannick Bülter
+ * @author Justin Ross <jross@redhat.com>
+ * @version $Id: BaseRoleForm.java 287 2005-02-22 00:29:02Z sskracic $
+ */
+public class BaseRoleForm extends BaseForm {
+
+ private static final Logger s_log = Logger.getLogger(BaseRoleForm.class);
+
+ final Name m_name;
+ final Description m_description;
+ CheckboxGroup m_privileges;
+
+ private boolean m_useViewersGroup;
+
+ public BaseRoleForm(final String key,
+ final GlobalizedMessage message,
+ final boolean useViewersGroup) {
+ super(key, message);
+
+ m_useViewersGroup = useViewersGroup;
+
+ m_name = new Name("label", 200, true);
+ addField(gz("cms.ui.name"), m_name);
+
+ m_description = new Description("description", 4000, false);
+ addField(gz("cms.ui.description"), m_description);
+
+ m_privileges = new CheckboxGroup("privileges");
+ addField(gz("cms.ui.role.privileges"), m_privileges);
+
+ try {
+ m_privileges.addPrintListener(new PrivilegePrinter());
+ } catch (TooManyListenersException tmle) {
+ throw new UncheckedWrapperException(tmle);
+ }
+
+ addAction(new Finish());
+ addAction(new Cancel());
+
+ addSecurityListener(SecurityConstants.STAFF_ADMIN);
+ }
+
+ private class PrivilegePrinter implements PrintListener {
+ @Override
+ public final void prepare(final PrintEvent e) {
+ /*final CheckboxGroup target = (CheckboxGroup) e.getTarget();
+ final PageState state = e.getPageState();
+
+ final DataQuery query = SessionManager.getSession().retrieveQuery
+ (RoleFactory.CMS_PRIVILEGES);
+ query.addOrder(RoleFactory.SORT_ORDER);
+
+ while (query.next()) {
+ target.addOption
+ (new Option((String) query.get(RoleFactory.PRIVILEGE),
+ (String) query.get(RoleFactory.PRETTY_NAME)));
+ }
+
+ query.close();
+ */
+ }
+ }
+
+ class NameUniqueListener implements ParameterListener {
+ private final RoleRequestLocal m_role;
+
+ NameUniqueListener(final RoleRequestLocal role) {
+ m_role = role;
+ }
+
+ @Override
+ public final void validate(final ParameterEvent e)
+ throws FormProcessException {
+ final PageState state = e.getPageState();
+ final ContentSection section =
+ CMS.getContext().getContentSection();
+ final String name = (String) m_name.getValue(state);
+
+ Collection roles;
+
+ /*
+ if (m_useViewersGroup) {
+ roles = section.getViewersGroup().getRoles();
+ } else {
+ roles = section.getStaffGroup().getRoles();
+ }
+
+
+
+ while (roles.next()) {
+ final Role role = roles.getRole();
+
+ if (roles.getRole().getName().equalsIgnoreCase(name)
+ && (m_role == null
+ || !m_role.getRole(state).equals(role))) {
+ roles.close();
+
+ throw new FormProcessException
+ (GlobalizationUtil.globalize("cms.ui.role.name_not_unique"));
+ }
+ }
+
+ roles.close();
+ */
+ }
+ }
+}