Package org.olat.admin.user.bulkChange

Source Code of org.olat.admin.user.bulkChange.UserBulkChangeStep01

/**
* OLAT - Online Learning and Training<br>
* http://www.olat.org
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS,
* <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Copyright (c) since 2004 at frentix GmbH, http://www.frentix.com
* <p>
*/
package org.olat.admin.user.bulkChange;

import java.util.HashMap;
import java.util.HashSet;

import org.olat.admin.user.SystemRolesAndRightsController;
import org.olat.basesecurity.Constants;
import org.olat.basesecurity.Manager;
import org.olat.basesecurity.ManagerFactory;
import org.olat.basesecurity.SecurityGroup;
import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.form.flexible.FormItem;
import org.olat.core.gui.components.form.flexible.FormItemContainer;
import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement;
import org.olat.core.gui.components.form.flexible.elements.SingleSelection;
import org.olat.core.gui.components.form.flexible.elements.TextElement;
import org.olat.core.gui.components.form.flexible.impl.Form;
import org.olat.core.gui.components.form.flexible.impl.FormEvent;
import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer;
import org.olat.core.gui.components.form.flexible.impl.rules.RulesFactory;
import org.olat.core.gui.control.Controller;
import org.olat.core.gui.control.WindowControl;
import org.olat.core.gui.control.generic.wizard.BasicStep;
import org.olat.core.gui.control.generic.wizard.PrevNextFinishConfig;
import org.olat.core.gui.control.generic.wizard.StepFormBasicController;
import org.olat.core.gui.control.generic.wizard.StepFormController;
import org.olat.core.gui.control.generic.wizard.StepsEvent;
import org.olat.core.gui.control.generic.wizard.StepsRunContext;
import org.olat.core.id.Identity;
import org.olat.core.util.Util;
import org.olat.user.UserManager;

/**
* Description:<br>
* first step: select attributes, which should be changed
*
* <P>
* Initial Date: 30.01.2008 <br>
*
* @author rhaag
*/
class UserBulkChangeStep01 extends BasicStep {

  boolean canCreateOLATPassword;
  static final String usageIdentifyer = UserBulkChangeStep01.class.getCanonicalName();
  TextElement textAreaElement;

  public UserBulkChangeStep01(UserRequest ureq) {
    super(ureq);
    setI18nTitleAndDescr("step1.description", null);
    setNextStep(new UserBulkChangeStep02(ureq));
  }

  /**
   * @see org.olat.core.gui.control.generic.wizard.Step#getInitialPrevNextFinishConfig()
   */
  public PrevNextFinishConfig getInitialPrevNextFinishConfig() {
    return new PrevNextFinishConfig(true, true, false);
  }

  /**
   * @see org.olat.core.gui.control.generic.wizard.Step#getStepController(org.olat.core.gui.UserRequest,
   *      org.olat.core.gui.control.WindowControl,
   *      org.olat.core.gui.control.generic.wizard.StepsRunContext,
   *      org.olat.core.gui.components.form.flexible.impl.Form)
   */
  public StepFormController getStepController(UserRequest ureq, WindowControl windowControl, StepsRunContext stepsRunContext, Form form) {
    StepFormController stepI = new UserBulkChangeStepForm01(ureq, windowControl, form, stepsRunContext);
    return stepI;
  }

  private final class UserBulkChangeStepForm01 extends StepFormBasicController {

    private FormLayoutContainer textContainer;
    private HashSet<FormItem> targets;
    private MultipleSelectionElement chkAuthor;
    private SingleSelection setAuthor;
    private MultipleSelectionElement chkUserManager;
    private SingleSelection setUserManager;
    private MultipleSelectionElement chkGroupManager;
    private SingleSelection setGroupManager;
    private Identity identity;
    private MultipleSelectionElement chkAdmin;
    private SingleSelection setAdmin;
    private MultipleSelectionElement chkStatus;
    private SingleSelection setStatus;

    public UserBulkChangeStepForm01(UserRequest ureq, WindowControl control, Form rootForm, StepsRunContext runContext) {
      super(ureq, control, rootForm, runContext, LAYOUT_VERTICAL, null);
      // use custom translator with fallback to user properties translator
      UserManager um = UserManager.getInstance();
      setTranslator(um.getPropertyHandlerTranslator(getTranslator()));
      flc.setTranslator(getTranslator());
      initForm(ureq);
    }

    @Override
    protected void doDispose() {
      //nothing to dispose
    }

    @Override
    protected void formOK(UserRequest ureq) {

      Boolean validChange = (Boolean) getFromRunContext("validChange");
      HashMap<String, String> roleChangeMap = new HashMap<String, String>();

      if (chkUserManager!=null && chkUserManager.getSelectedKeys().contains("Usermanager")) {
        roleChangeMap.put(Constants.GROUP_USERMANAGERS, setUserManager.getSelectedKey());
        validChange = true;
      }

      if (chkGroupManager!=null && chkGroupManager.getSelectedKeys().contains("Groupmanager")) {
        roleChangeMap.put(Constants.GROUP_GROUPMANAGERS, setGroupManager.getSelectedKey());
        validChange = true;
      }

      if (chkAuthor!=null && chkAuthor.getSelectedKeys().contains("Author")) {
        roleChangeMap.put(Constants.GROUP_AUTHORS, setAuthor.getSelectedKey());
        validChange = true;
      }

      if (chkAdmin!=null && chkAdmin.getSelectedKeys().contains("Admin")) {
        roleChangeMap.put(Constants.GROUP_ADMIN, setAdmin.getSelectedKey());
        validChange = true;
      }

      if (chkStatus!=null && chkStatus.getSelectedKeys().contains("Status")) {
        roleChangeMap.put("Status", setStatus.getSelectedKey());
        validChange = true;
      }

      addToRunContext("roleChangeMap", roleChangeMap);
      addToRunContext("validChange", validChange);

      fireEvent(ureq, StepsEvent.ACTIVATE_NEXT);
    }

    @Override
    protected boolean validateFormLogic(@SuppressWarnings("unused")
    UserRequest ureq) {
      // always true, because no changes are required
      return true;
    }

    @SuppressWarnings("synthetic-access")
    @Override
    protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
      setFormTitle("step1.title");

      textContainer = FormLayoutContainer.createCustomFormLayout("index", getTranslator(), this.velocity_root + "/step1.html");
      formLayout.add(textContainer);
      String[] addremove = new String[] { "add", "remove" };
      String[] addremoveTranslated = new String[] { translate("role.add"), translate("role.remove") };

      // Main layout is a vertical layout without left side padding. To format
      // the checkboxes properly we need a default layout for the remaining form
      // elements
      FormItemContainer innerFormLayout = FormLayoutContainer.createDefaultFormLayout("innerFormLayout", getTranslator());
      formLayout.add(innerFormLayout);

      // check user rights:
      boolean iAmOlatAdmin = ureq.getUserSession().getRoles().isOLATAdmin();
      identity = ureq.getIdentity();
      Manager secMgr = ManagerFactory.getManager();
      // get user system roles groups from security manager
      SecurityGroup adminGroup = secMgr.findSecurityGroupByName(Constants.GROUP_ADMIN);
      boolean isAdmin = secMgr.isIdentityInSecurityGroup(identity, adminGroup);
      SecurityGroup userManagerGroup = secMgr.findSecurityGroupByName(Constants.GROUP_USERMANAGERS);
      boolean isUserManager = secMgr.isIdentityInSecurityGroup(identity, userManagerGroup);
      SecurityGroup authorGroup = secMgr.findSecurityGroupByName(Constants.GROUP_AUTHORS);
      boolean isAuthor = secMgr.isIdentityInSecurityGroup(identity, authorGroup);
      SecurityGroup groupmanagerGroup = secMgr.findSecurityGroupByName(Constants.GROUP_GROUPMANAGERS);
      boolean isGroupManager = secMgr.isIdentityInSecurityGroup(identity, groupmanagerGroup);

      // usermanager:
      if (isAdmin || isUserManager || iAmOlatAdmin) {
        chkUserManager = uifactory.addCheckboxesVertical("Usermanager", "table.role.useradmin", innerFormLayout, new String[] { "Usermanager" }, new String[] { "" }, null, 1);
        chkUserManager.select("Usermanager", false);
        chkUserManager.addActionListener(listener, FormEvent.ONCLICK);

        setUserManager = uifactory.addDropdownSingleselect("setUserManager", null, innerFormLayout, addremove, addremoveTranslated, null);
        setUserManager.setVisible(false);
        targets = new HashSet<FormItem>();
        targets.add(setUserManager);
        RulesFactory.createHideRule(chkUserManager, null, targets, innerFormLayout);
        RulesFactory.createShowRule(chkUserManager, "Usermanager", targets, innerFormLayout);
      }

      // groupmanager
      if (isAdmin || isGroupManager || iAmOlatAdmin) {
        chkGroupManager = uifactory.addCheckboxesVertical("Groupmanager", "table.role.groupadmin", innerFormLayout, new String[] { "Groupmanager" }, new String[] { "" }, null, 1);
        chkGroupManager.select("Groupmanager", false);
        chkGroupManager.addActionListener(listener, FormEvent.ONCLICK);

        setGroupManager = uifactory.addDropdownSingleselect("setGroupManager", null, innerFormLayout, addremove, addremoveTranslated, null);
        setGroupManager.setVisible(false);
        targets = new HashSet<FormItem>();
        targets.add(setGroupManager);
        RulesFactory.createHideRule(chkGroupManager, null, targets, innerFormLayout);
        RulesFactory.createShowRule(chkGroupManager, "Groupmanager", targets, innerFormLayout);
      }

      // author
      if (isAdmin || isAuthor || iAmOlatAdmin) {
        chkAuthor = uifactory.addCheckboxesVertical("Author", "table.role.author", innerFormLayout, new String[] { "Author" }, new String[] { "" }, null, 1);
        chkAuthor.select("Author", false);
        chkAuthor.addActionListener(listener, FormEvent.ONCLICK);

        setAuthor = uifactory.addDropdownSingleselect("setAuthor", null, innerFormLayout, addremove, addremoveTranslated, null);
        setAuthor.setVisible(false);
        targets = new HashSet<FormItem>();
        targets.add(setAuthor);
        RulesFactory.createHideRule(chkAuthor, null, targets, innerFormLayout);
        RulesFactory.createShowRule(chkAuthor, "Author", targets, innerFormLayout);
      }

     
      // sysadmin
      if (isAdmin || iAmOlatAdmin) {
        chkAdmin = uifactory.addCheckboxesVertical("Admin", "table.role.admin", innerFormLayout, new String[] { "Admin" }, new String[] { "" }, null, 1);
        chkAdmin.select("Admin", false);
        chkAdmin.addActionListener(listener, FormEvent.ONCLICK);

        setAdmin = uifactory.addDropdownSingleselect("setAdmin",null, innerFormLayout, addremove, addremoveTranslated, null);
        setAdmin.setVisible(false);
        targets = new HashSet<FormItem>();
        targets.add(setAdmin);
        RulesFactory.createHideRule(chkAdmin, null, targets, innerFormLayout);
        RulesFactory.createShowRule(chkAdmin, "Admin", targets, innerFormLayout);
      }

      // status
      if (isAdmin || iAmOlatAdmin) {
        chkStatus = uifactory.addCheckboxesVertical("Status", "table.role.status", innerFormLayout, new String[] { "Status" }, new String[] { "" }, null, 1);
        chkStatus.select("Status", false);
        chkStatus.addActionListener(listener, FormEvent.ONCLICK);


        // TODO: RH: pay attention: if status changes in Identity-statics this
        // may lead to missing status
        // implement methods in SystemRolesAndRightsController.java
        setTranslator(Util.createPackageTranslator(SystemRolesAndRightsController.class, getLocale()));
        String[] statusKeys = { Integer.toString(Identity.STATUS_ACTIV), Integer.toString(Identity.STATUS_PERMANENT),
            Integer.toString(Identity.STATUS_LOGIN_DENIED) };
        String[] statusValues = { translate("rightsForm.status.activ"), translate("rightsForm.status.permanent"),
            translate("rightsForm.status.login_denied") };

        setStatus = uifactory.addDropdownSingleselect("setStatus",null, innerFormLayout, statusKeys, statusValues, null);
        setStatus.setVisible(false);
        targets = new HashSet<FormItem>();
        targets.add(setStatus);
        RulesFactory.createHideRule(chkStatus, null, targets, innerFormLayout);
        RulesFactory.createShowRule(chkStatus, "Status", targets, innerFormLayout);
      }

    }

  }

}
TOP

Related Classes of org.olat.admin.user.bulkChange.UserBulkChangeStep01

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.