/**
* 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) frentix GmbH<br>
* http://www.frentix.com<br>
* <p>
*/
package org.olat.resource.accesscontrol.ui;
import java.util.Collection;
import org.olat.core.CoreSpringFactory;
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.impl.FormBasicController;
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.control.Controller;
import org.olat.core.gui.control.WindowControl;
import org.olat.resource.accesscontrol.AccessControlModule;
import org.olat.resource.accesscontrol.method.AccessMethodHandler;
/**
*
* Description:<br>
*
* <P>
* Initial Date: 26 mai 2011 <br>
*
* @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
*/
public class AccessControlAdminController extends FormBasicController {
private MultipleSelectionElement enabled, homeEnabled;
private MultipleSelectionElement methods;
private String[] values = {""};
private String[] keys = {"on"};
private String[] methodValues = {""};
private String[] methodKeys = {""};
private final AccessControlModule acModule;
public AccessControlAdminController(UserRequest ureq, WindowControl wControl) {
super(ureq, wControl);
acModule = CoreSpringFactory.getImpl(AccessControlModule.class);
values = new String[] {
getTranslator().translate("ac.on")
};
methodKeys = new String[] {
"free.method",
"token.method",
"paypal.method"
};
methodValues = new String[methodKeys.length];
for(int i=0; i<methodKeys.length; i++) {
AccessMethodHandler handler = acModule.getAccessMethodHandler(methodKeys[i]);
methodValues[i] = handler.getMethodName(getLocale());
}
initForm(ureq);
}
@Override
protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
setFormTitle("admin.title");
setFormDescription("admin.desc");
enabled = uifactory.addCheckboxesHorizontal("ac.enabled", formLayout, keys, values);
enabled.select(keys[0], acModule.isEnabled());
uifactory.addSpacerElement("spaceman", formLayout, false);
methods = uifactory.addCheckboxesVertical("ac.methods", formLayout, methodKeys, methodValues, 1);
methods.select("free.method", acModule.isFreeEnabled());
methods.select("token.method", acModule.isTokenEnabled());
methods.select("paypal.method", acModule.isPaypalEnabled());
methods.setEnabled(acModule.isEnabled());
methods.addActionListener(FormEvent.ONCHANGE);
uifactory.addSpacerElement("itgirl", formLayout, false);
homeEnabled = uifactory.addCheckboxesHorizontal("ac.home.enabled", formLayout, keys, values);
homeEnabled.select(keys[0], acModule.isPaypalEnabled() || acModule.isHomeOverviewEnabled());
final FormLayoutContainer buttonGroupLayout = FormLayoutContainer.createButtonLayout("buttonLayout", getTranslator());
buttonGroupLayout.setRootForm(mainForm);
uifactory.addFormSubmitButton("save", buttonGroupLayout);
formLayout.add(buttonGroupLayout);
update();
}
public void update() {
Collection<String> selectedMethods = methods.getSelectedKeys();
if(selectedMethods.contains("paypal.method")) {
homeEnabled.select(keys[0], true);
homeEnabled.setEnabled(false);
} else {
homeEnabled.setEnabled(true);
}
}
@Override
protected void doDispose() {
//
}
@Override
protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
if(source == methods) {
update();
}
}
@Override
protected void formOK(UserRequest ureq) {
boolean on = !enabled.getSelectedKeys().isEmpty();
acModule.setEnabled(on);
Collection<String> selectedMethods = methods.getSelectedKeys();
acModule.setFreeEnabled(selectedMethods.contains("free.method"));
acModule.setTokenEnabled(selectedMethods.contains("token.method"));
boolean paypalEnabled = selectedMethods.contains("paypal.method");
acModule.setPaypalEnabled(paypalEnabled);
boolean homeOverviewEnabled = paypalEnabled || !homeEnabled.getSelectedKeys().isEmpty();
acModule.setHomeOverviewEnabled(homeOverviewEnabled);
methods.setEnabled(on);
showInfo("ac.saved");
}
}