use of org.olat.core.gui.components.form.flexible.FormItem in project openolat by klemens.
the class AttributeEasyRowAdderController method event.
@Override
protected void event(final UserRequest ureq, final Controller source, final Event event) {
if (event instanceof FormEvent) {
final FormEvent fe = (FormEvent) event;
final FormItem sourceItem = fe.getFormItemSource();
final String compName = sourceItem.getName();
if (columnAddRow.contains(compName)) {
// add link clicked
final int clickPos = ((Integer) sourceItem.getUserObject()).intValue();
addRowAt(clickPos + 1);
} else if (columnRemoveRow.contains(compName)) {
// remove link clicked
final int clickPos = ((Integer) sourceItem.getUserObject()).intValue();
removeRowAt(clickPos);
}
}
}
use of org.olat.core.gui.components.form.flexible.FormItem in project openolat by klemens.
the class AttributeEasyRowAdderController method addRowAt.
/**
* Internal method to add a new row at the given position
*
* @param i
*/
private void addRowAt(final int rowPos) {
// 1) Make room for the new row if the row is inserted between existing
// rows. Increment the row id in the user object of the form elements and
// move them in the form element arrays
final Map<String, FormItem> formComponents = flc.getFormComponents();
for (int move = rowPos + 1; move <= columnAttribute.size(); move++) {
FormItem oldPos = formComponents.get(columnAttribute.get(move - 1));
oldPos.setUserObject(Integer.valueOf(move));
oldPos = formComponents.get(columnOperator.get(move - 1));
oldPos.setUserObject(Integer.valueOf(move));
oldPos = formComponents.get(columnValueText.get(move - 1));
oldPos.setUserObject(Integer.valueOf(move));
oldPos = formComponents.get(columnValueSelection.get(move - 1));
oldPos.setUserObject(Integer.valueOf(move));
oldPos = formComponents.get(columnAddRow.get(move - 1));
oldPos.setUserObject(Integer.valueOf(move));
oldPos = formComponents.get(columnRemoveRow.get(move - 1));
oldPos.setUserObject(Integer.valueOf(move));
}
// 2) create the new row
// get gui translated shib attributes - fallback is to use the key also as value
final String[] guiTranslatedAttKeys = new String[attrKeys.length];
for (int j = 0; j < attrKeys.length; j++) {
final String key = attrKeys[j];
// OLAT-5089: use translate(String key, String[] args, boolean fallBackToDefaultLocale) version
// of Translator because that's the only one not
String translated = getTranslator().translate(key, null, Level.OFF);
if (translated.indexOf(Translator.NO_TRANSLATION_ERROR_PREFIX) == 0) {
final Translator translator = UserManager.getInstance().getPropertyHandlerTranslator(getTranslator());
final String prefix = "form.name.";
// OLAT-5089: use translate(String key, String[] args, boolean fallBackToDefaultLocale) version
// of Translator because that's the only one not
translated = translator.translate(prefix + key, null, Level.OFF);
if (translated.indexOf(Translator.NO_TRANSLATION_ERROR_PREFIX) == 0) {
// could not translate this key, use key for non-translated values
guiTranslatedAttKeys[j] = key;
} else {
guiTranslatedAttKeys[j] = translated;
}
} else {
guiTranslatedAttKeys[j] = translated;
}
}
// sort after the values
ArrayHelper.sort(attrKeys, guiTranslatedAttKeys, false, true, true);
// use this sorted keys-values
final SingleSelection attribute = uifactory.addDropdownSingleselect(PRE_ATTRIBUTE + rowCreationCounter, null, flc, attrKeys, guiTranslatedAttKeys, null);
attribute.setUserObject(Integer.valueOf(rowPos));
attribute.addActionListener(FormEvent.ONCHANGE);
columnAttribute.add(rowPos, attribute.getName());
// 2b) Operator selector
final String[] values = OperatorManager.getRegisteredAndAlreadyTranslatedOperatorLabels(getLocale(), operatorKeys);
final FormItem operator = uifactory.addDropdownSingleselect(PRE_OPERATOR + rowCreationCounter, null, flc, operatorKeys, values, null);
operator.setUserObject(Integer.valueOf(rowPos));
columnOperator.add(rowPos, operator.getName());
// 2c) Attribute value - can be either a text input field or a selection
// drop down box - create both and hide the selection box
//
final TextElement valuetxt = uifactory.addTextElement(PRE_VALUE_TEXT + rowCreationCounter, null, -1, null, flc);
valuetxt.setDisplaySize(25);
valuetxt.setNotEmptyCheck("form.easy.error.attribute");
valuetxt.setUserObject(Integer.valueOf(rowPos));
columnValueText.add(rowPos, valuetxt.getName());
// now the selection box
final FormItem iselect = uifactory.addDropdownSingleselect(PRE_VALUE_SELECTION + rowCreationCounter, null, flc, new String[0], new String[0], null);
iselect.setUserObject(Integer.valueOf(rowPos));
iselect.setVisible(false);
columnValueSelection.add(rowPos, iselect.getName());
// 3) Init values for this row, assume selection of attribute at position 0
if (ArrayUtils.contains(attrKeys, preselectedAttribute)) {
attribute.select(preselectedAttribute, true);
updateValueElementForAttribute(attribute.getKey(ArrayUtils.indexOf(attrKeys, preselectedAttribute)), rowPos, preselectedAttributeValue);
} else {
updateValueElementForAttribute(attribute.getKey(0), rowPos, null);
}
// 4) Add the 'add' and 'remove' buttons
final FormLinkImpl addL = new FormLinkImpl("add_" + rowCreationCounter, "add." + rowPos, "+", Link.BUTTON_SMALL + Link.NONTRANSLATED);
addL.setUserObject(Integer.valueOf(rowPos));
flc.add(addL);
columnAddRow.add(rowPos, addL.getName());
//
final FormLinkImpl removeL = new FormLinkImpl("remove_" + rowCreationCounter, "remove." + rowPos, "-", Link.BUTTON_SMALL + Link.NONTRANSLATED);
removeL.setUserObject(Integer.valueOf(rowPos));
flc.add(removeL);
columnRemoveRow.add(rowPos, removeL.getName());
// new row created, increment counter for unique form element id's
rowCreationCounter++;
}
use of org.olat.core.gui.components.form.flexible.FormItem in project openolat by klemens.
the class SubmitDocumentsController method updateModel.
private void updateModel() {
File[] documents = documentsDir.listFiles(new SystemFileFilter(true, false));
List<SubmittedSolution> docList = new ArrayList<>(documents.length);
for (File document : documents) {
String filename = document.getName();
String uploadedBy = null;
VFSItem item = documentsContainer.resolve(filename);
if (item instanceof MetaTagged) {
MetaInfo metaInfo = ((MetaTagged) item).getMetaInfo();
if (metaInfo != null && metaInfo.getAuthorIdentityKey() != null) {
uploadedBy = userManager.getUserDisplayName(metaInfo.getAuthorIdentityKey());
}
}
FormItem download;
if (filename.endsWith(".html")) {
download = uifactory.addFormLink("view-" + CodeHelper.getRAMUniqueID(), "view", filename, null, flc, Link.LINK | Link.NONTRANSLATED);
download.setUserObject(filename);
} else {
download = uifactory.addDownloadLink("view-" + CodeHelper.getRAMUniqueID(), filename, null, document, tableEl);
}
docList.add(new SubmittedSolution(document, uploadedBy, download));
}
model.setObjects(docList);
tableEl.reset();
if (maxDocs > 0 && docList.size() >= maxDocs) {
if (uploadDocButton != null) {
uploadDocButton.setEnabled(false);
}
if (createDocButton != null) {
createDocButton.setEnabled(false);
}
String msg = translate("error.max.documents", new String[] { Integer.toString(maxDocs) });
flc.contextPut("maxDocsWarning", msg);
} else {
if (uploadDocButton != null) {
uploadDocButton.setEnabled(true);
}
if (createDocButton != null) {
createDocButton.setEnabled(true);
}
flc.contextPut("maxDocsWarning", Boolean.FALSE);
}
flc.contextPut("hasDocuments", Boolean.valueOf(hasUploadDocuments()));
}
use of org.olat.core.gui.components.form.flexible.FormItem in project openolat by klemens.
the class OAuthRegistrationController method initForm.
@Override
protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
OAuthUser oauthUser = registration.getOauthUser();
usernameEl = uifactory.addTextElement("username", "user.login", 128, "", formLayout);
usernameEl.setMandatory(true);
if (StringHelper.containsNonWhitespace(oauthUser.getId())) {
usernameEl.setValue(oauthUser.getId());
}
// Add all available user fields to this form
for (UserPropertyHandler userPropertyHandler : userPropertyHandlers) {
if (userPropertyHandler != null) {
FormItem fi = userPropertyHandler.addFormItem(getLocale(), null, USERPROPERTIES_FORM_IDENTIFIER, false, formLayout);
propFormItems.put(userPropertyHandler.getName(), fi);
if (fi instanceof TextElement) {
String value = oauthUser.getProperty(userPropertyHandler.getName());
if (StringHelper.containsNonWhitespace(value)) {
((TextElement) fi).setValue(value);
}
}
}
}
uifactory.addSpacerElement("lang", formLayout, true);
// second the user language
Map<String, String> languages = I18nManager.getInstance().getEnabledLanguagesTranslated();
String[] langKeys = StringHelper.getMapKeysAsStringArray(languages);
String[] langValues = StringHelper.getMapValuesAsStringArray(languages);
langEl = uifactory.addDropdownSingleselect("user.language", formLayout, langKeys, langValues, null);
FormLayoutContainer buttonLayout = FormLayoutContainer.createButtonLayout("button_layout", getTranslator());
formLayout.add(buttonLayout);
uifactory.addFormSubmitButton("save", buttonLayout);
}
use of org.olat.core.gui.components.form.flexible.FormItem in project openolat by klemens.
the class OAuthRegistrationController method formOK.
@Override
protected void formOK(UserRequest ureq) {
String lang = langEl.getSelectedKey();
String username = usernameEl.getValue();
OAuthUser oauthUser = registration.getOauthUser();
User newUser = userManager.createUser(null, null, null);
for (UserPropertyHandler userPropertyHandler : userPropertyHandlers) {
FormItem propertyItem = this.flc.getFormComponent(userPropertyHandler.getName());
userPropertyHandler.updateUserFromFormItem(newUser, propertyItem);
}
// Init preferences
newUser.getPreferences().setLanguage(lang);
newUser.getPreferences().setInformSessionTimeout(true);
String id;
if (StringHelper.containsNonWhitespace(oauthUser.getId())) {
id = oauthUser.getId();
} else if (StringHelper.containsNonWhitespace(oauthUser.getEmail())) {
id = oauthUser.getEmail();
} else {
id = username;
}
authenticatedIdentity = securityManager.createAndPersistIdentityAndUser(username, null, newUser, registration.getAuthProvider(), id, null);
// Add user to system users group
SecurityGroup olatuserGroup = securityManager.findSecurityGroupByName(Constants.GROUP_OLATUSERS);
securityManager.addIdentityToSecurityGroup(authenticatedIdentity, olatuserGroup);
// open disclaimer
removeAsListenerAndDispose(disclaimerController);
disclaimerController = new DisclaimerController(ureq, getWindowControl());
listenTo(disclaimerController);
cmc = new CloseableModalController(getWindowControl(), translate("close"), disclaimerController.getInitialComponent(), true, translate("disclaimer.title"));
cmc.activate();
listenTo(cmc);
}
Aggregations