diff --git a/src/main/java/org/olat/catalog/ui/CatalogController.java b/src/main/java/org/olat/catalog/ui/CatalogController.java index 904206d8b32b1ccaf1ffa0a947a2dab3edcc4a53..fe1efd418de32ce544c366f9ab61e501793688d5 100644 --- a/src/main/java/org/olat/catalog/ui/CatalogController.java +++ b/src/main/java/org/olat/catalog/ui/CatalogController.java @@ -745,13 +745,12 @@ public class CatalogController extends BasicController implements Activateable2 } } else if (source == repositoryEditDescriptionController) { - if (event == Event.CHANGED_EVENT) { + if (event == Event.CHANGED_EVENT || event == Event.DONE_EVENT) { linkMarkedToBeEdited.setRepositoryEntry(repositoryEditDescriptionController.getRepositoryEntry()); updateContent(ureq, currentCatalogEntry, currentCatalogEntryLevel); cm.updateReferencedRepositoryEntry(repositoryEditDescriptionController.getRepositoryEntry()); - } else if (event == Event.CANCELLED_EVENT) { - cmc.deactivate(); } + cmc.deactivate(); } else if (source == addEntryForm) { // remove modal dialog cmc.deactivate(); diff --git a/src/main/java/org/olat/core/gui/components/image/ImageFormItem.java b/src/main/java/org/olat/core/gui/components/image/ImageFormItem.java new file mode 100644 index 0000000000000000000000000000000000000000..6824a5eca151bc4dd6ebc60b364191cfc559c28e --- /dev/null +++ b/src/main/java/org/olat/core/gui/components/image/ImageFormItem.java @@ -0,0 +1,68 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <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 the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <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> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.core.gui.components.image; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.form.flexible.impl.FormItemImpl; +import org.olat.core.gui.media.MediaResource; + +/** + * + * Initial date: 10.05.2013<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class ImageFormItem extends FormItemImpl { + + private final ImageComponent imageComponent; + + public ImageFormItem(String name) { + super(name); + imageComponent = new ImageComponent(name + "-cmp"); + } + + @Override + protected ImageComponent getFormItemComponent() { + return imageComponent; + } + + public void setMediaResource(MediaResource mediaResource) { + imageComponent.setMediaResource(mediaResource); + } + + public void setMaxWithAndHeightToFitWithin(int maxWidth, int maxHeight) { + imageComponent.setMaxWithAndHeightToFitWithin(maxWidth, maxHeight); + } + + @Override + protected void rootFormAvailable() { + // + } + + @Override + public void evalFormRequest(UserRequest ureq) { + // + } + + @Override + public void reset() { + // + } +} diff --git a/src/main/java/org/olat/core/gui/components/table/DefaultColumnDescriptor.java b/src/main/java/org/olat/core/gui/components/table/DefaultColumnDescriptor.java index ebd0744b91ffc567476de5b5f71e5339d73830ff..94c52b6eab73c255665ec5983281c7c689d848f2 100644 --- a/src/main/java/org/olat/core/gui/components/table/DefaultColumnDescriptor.java +++ b/src/main/java/org/olat/core/gui/components/table/DefaultColumnDescriptor.java @@ -166,16 +166,27 @@ public class DefaultColumnDescriptor implements ColumnDescriptor { } protected int compareString(final String a, final String b) { - return collator.compare(a, b); + if (a == null || b == null) { + return compareNullObjects(a, b); + } + return collator == null ? a.compareTo(b) : collator.compare(a, b); } protected int compareBooleans(final Boolean a, final Boolean b) { + if (a == null || b == null) { + return compareNullObjects(a, b); + } + boolean ba = a.booleanValue(); boolean bb = b.booleanValue(); return ba? (bb? 0: -1):(bb? 1: 0); } protected int compareDateAndTimestamps(Date a, Date b) { + if (a == null || b == null) { + return compareNullObjects(a, b); + } + if (a instanceof Timestamp) { // a timestamp (a) cannot compare a date (b), but vice versa is ok. if(b instanceof Timestamp) { return ((Timestamp)a).compareTo((Timestamp)b); diff --git a/src/main/java/org/olat/repository/RepositoryEntryDetailsFormController.java b/src/main/java/org/olat/repository/RepositoryEntryDetailsFormController.java deleted file mode 100644 index 369ca584dc54ad7926962f0a497d78e7ae5f6a61..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/repository/RepositoryEntryDetailsFormController.java +++ /dev/null @@ -1,168 +0,0 @@ -/** - * <a href="http://www.openolat.org"> - * OpenOLAT - Online Learning and Training</a><br> - * <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 the - * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> - * <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> - * Initial code contributed and copyrighted by<br> - * frentix GmbH, http://www.frentix.com - * <p> - */ - -package org.olat.repository; - -import org.olat.ControllerFactory; -import org.olat.core.gui.UserRequest; -import org.olat.core.gui.components.form.flexible.FormItemContainer; -import org.olat.core.gui.components.form.flexible.elements.RichTextElement; -import org.olat.core.gui.components.form.flexible.elements.TextElement; -import org.olat.core.gui.components.form.flexible.impl.FormBasicController; -import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; -import org.olat.core.gui.control.Controller; -import org.olat.core.gui.control.Event; -import org.olat.core.gui.control.WindowControl; -import org.olat.core.util.StringHelper; -import org.olat.resource.OLATResource; - -/** - * Description:<br> - * This form controller allows users to edit the repository details and upload - * an image - * - * - * <P> - * Initial Date: 16.07.2009 <br> - * - * @author gnaegi - */ -public class RepositoryEntryDetailsFormController extends FormBasicController { - - private final boolean isSubWorkflow; - private RepositoryEntry entry; - - private TextElement displayName; - private RichTextElement description; - - public RepositoryEntryDetailsFormController(UserRequest ureq, WindowControl wControl, RepositoryEntry entry, boolean isSubWorkflow) { - super(ureq, wControl); - this.entry = entry; - this.isSubWorkflow = isSubWorkflow; - initForm(ureq); - } - - /** - * @see org.olat.core.gui.components.form.flexible.impl.FormBasicController#initForm(org.olat.core.gui.components.form.flexible.FormItemContainer, - * org.olat.core.gui.control.Controller, org.olat.core.gui.UserRequest) - */ - @Override - protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { - setFormTitle("details.entryinfoheader"); - setFormContextHelp("org.olat.repository", "rep-meta-desc.html", "help.hover.rep.detail"); - // Add static fields - uifactory.addStaticTextElement("cif.id", entry.getResourceableId() == null ? "-" : entry.getResourceableId().toString(), formLayout); - uifactory.addStaticTextElement("cif.initialAuthor", entry.getInitialAuthor() == null ? "-" : entry.getInitialAuthor().toString(), formLayout); - // Add resource type - String typeName = null; - OLATResource res = entry.getOlatResource(); - if (res != null) typeName = res.getResourceableTypeName(); - StringBuilder typeDisplayText = new StringBuilder(100); - if (typeName != null) { // add image and typename code - RepositoryEntryIconRenderer reir = new RepositoryEntryIconRenderer(ureq.getLocale()); - typeDisplayText.append("<span class=\"b_with_small_icon_left "); - typeDisplayText.append(reir.getIconCssClass(entry)); - typeDisplayText.append("\">"); - String tName = ControllerFactory.translateResourceableTypeName(typeName, ureq.getLocale()); - typeDisplayText.append(tName); - typeDisplayText.append("</span>"); - } else { - typeDisplayText.append(translate("cif.type.na")); - } - uifactory.addStaticExampleText("cif.type", typeDisplayText.toString(), formLayout); - // - uifactory.addSpacerElement("spacer1", formLayout, false); - // - displayName = uifactory.addTextElement("cif.displayname", "cif.displayname", 100, entry.getDisplayname(), formLayout); - displayName.setDisplaySize(30); - displayName.setMandatory(true); - // - description = uifactory.addRichTextElementForStringDataMinimalistic("cif.description", "cif.description", - (entry.getDescription() != null ? entry.getDescription() : " "), 10, -1, false, formLayout, ureq - .getUserSession(), getWindowControl()); - description.setMandatory(true); - // - FormLayoutContainer buttonContainer = FormLayoutContainer.createButtonLayout("buttonContainer", getTranslator()); - formLayout.add("buttonContainer", buttonContainer); - buttonContainer.setElementCssClass("o_sel_repo_save_details"); - - uifactory.addFormSubmitButton("submit", buttonContainer); - if (!isSubWorkflow) { - uifactory.addFormCancelButton("cancel", buttonContainer, ureq, getWindowControl()); - } - } - - /** - * @see org.olat.core.gui.components.form.flexible.impl.FormBasicController#validateFormLogic(org.olat.core.gui.UserRequest) - */ - @Override - protected boolean validateFormLogic(UserRequest ureq) { - // Check for empty display name - - boolean allOk = true; - if (!StringHelper.containsNonWhitespace(displayName.getValue())) { - displayName.setErrorKey("cif.error.displayname.empty", new String[] {}); - allOk = false; - } else if (displayName.hasError()) { - allOk = false; - } else { - displayName.clearError(); - } - // Check for empty description - if (!StringHelper.containsNonWhitespace(description.getValue())) { - description.setErrorKey("cif.error.description.empty", new String[] {}); - allOk = false; - } else { - description.clearError(); - } - // Ok, passed all checks - return allOk && super.validateFormLogic(ureq); - } - - /** - * @see org.olat.core.gui.components.form.flexible.impl.FormBasicController#doDispose() - */ - @Override - protected void doDispose() { - // TODO Auto-generated method stub - - } - - /** - * @see org.olat.core.gui.components.form.flexible.impl.FormBasicController#formOK(org.olat.core.gui.UserRequest) - */ - @Override - protected void formOK(UserRequest ureq) { - //update model - entry.setDisplayname(displayName.getValue().trim()); - entry.setDescription(description.getValue().trim()); - // notify parent controller - fireEvent(ureq, Event.CHANGED_EVENT); - } - - /** - * @see org.olat.core.gui.components.form.flexible.impl.FormBasicController#formCancelled(org.olat.core.gui.UserRequest) - */ - @Override - protected void formCancelled(UserRequest ureq) { - fireEvent(ureq, Event.CANCELLED_EVENT); - } - -} diff --git a/src/main/java/org/olat/repository/_content/addDelegate.html b/src/main/java/org/olat/repository/_content/addDelegate.html index e7b94df25fb60b4283366a4334a22a9e6f7126ee..cf3f588fe1531b1a483c83f840003f17d441f2a4 100644 --- a/src/main/java/org/olat/repository/_content/addDelegate.html +++ b/src/main/java/org/olat/repository/_content/addDelegate.html @@ -1,11 +1,4 @@ -<h4>$!typeHeader</h4> -<p> - $typeIntro -</p> -<p> - $r.render("subcomp") -</p> -<hr /> +<p>$r.render("subcomp")</p> <div class="b_button_group"> $r.render("cmd.cancel") </div> \ No newline at end of file diff --git a/src/main/java/org/olat/repository/_content/addDetails.html b/src/main/java/org/olat/repository/_content/addDetails.html index 2c2ce4a1d90ed1643cdc02c5617a29857cc86bf7..2d1c3e56ea9a207b6c1234bd941a11efaf6f26ec 100644 --- a/src/main/java/org/olat/repository/_content/addDetails.html +++ b/src/main/java/org/olat/repository/_content/addDetails.html @@ -1,4 +1,3 @@ -<h4>$!header</h4> $r.render("details") <div class="b_button_group"> $r.render("cmd.cancel") diff --git a/src/main/java/org/olat/repository/_content/bgrep.html b/src/main/java/org/olat/repository/_content/bgrep.html index a589f441b7199531d803185f34173e79397607c6..ce8899f1b6e932f9e43ebd904cb8f32daaaf6a99 100644 --- a/src/main/java/org/olat/repository/_content/bgrep.html +++ b/src/main/java/org/olat/repository/_content/bgrep.html @@ -1,5 +1,3 @@ <div class="o_sel_edit_repositoryentry_popup"> -<h4>$r.translate("properties.for", $title)</h4> -<br /> $r.render("descTB") </div> \ No newline at end of file diff --git a/src/main/java/org/olat/repository/_content/changedesctab1.html b/src/main/java/org/olat/repository/_content/changedesctab1.html deleted file mode 100644 index 8c38c05467f3e69c7051545de0e55040ebbb0c20..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/repository/_content/changedesctab1.html +++ /dev/null @@ -1,4 +0,0 @@ -$r.render("repoEntryDetailsFormCtr") -<fieldset> - $r.render("imageupload") -</fieldset> diff --git a/src/main/java/org/olat/repository/_content/copy.html b/src/main/java/org/olat/repository/_content/copy.html index 97ecdd4ee48b2f4e9159d8440b2cc5833a5d5582..c7f54f67391f216990c1916ff1f133bbbd6db4ed 100644 --- a/src/main/java/org/olat/repository/_content/copy.html +++ b/src/main/java/org/olat/repository/_content/copy.html @@ -1,5 +1,3 @@ -<h4>$r.translate("details.copy")</h4> -<hr /> $r.render("details") <br /><br /> <div class="b_button_group"> diff --git a/src/main/java/org/olat/repository/_content/imageupload.html b/src/main/java/org/olat/repository/_content/imageupload.html deleted file mode 100644 index aa0bdf79e05ff5b0c24b93e822883875eba76546..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/repository/_content/imageupload.html +++ /dev/null @@ -1,16 +0,0 @@ -<div class="b_form"> - <div class="b_form_element_wrapper b_clearfix"> - <div class="b_form_element_label"><label>$r.translate("rentry.pic"):</label></div> - $r.contextHelpWithWrapper("org.olat.repository", "rep-meta-picture.html", "help.hover.rep.picture") - <div class="b_form_element"> - #if ($hasImage) - $r.render("image") - <br /> - $r.render("cmd.delete") - <br /> - <br /> - #end - $r.render("uploadCtr") - </div> - </div> -</div> \ No newline at end of file diff --git a/src/main/java/org/olat/repository/controllers/ReferencableEntriesSearchController.java b/src/main/java/org/olat/repository/controllers/ReferencableEntriesSearchController.java index db9c165e9eae8b29c3fa32c59b332aa4f6bd58c4..5972c341622e2b8de4ab189e4e5ef739a96a4eee 100644 --- a/src/main/java/org/olat/repository/controllers/ReferencableEntriesSearchController.java +++ b/src/main/java/org/olat/repository/controllers/ReferencableEntriesSearchController.java @@ -341,7 +341,8 @@ public class ReferencableEntriesSearchController extends BasicController { listenTo(addController); removeAsListenerAndDispose(cmc); - cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent()); + cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent(), + true, addController.getTitle()); listenTo(cmc); cmc.activate(); @@ -352,7 +353,8 @@ public class ReferencableEntriesSearchController extends BasicController { listenTo(addController); removeAsListenerAndDispose(cmc); - cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent()); + cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent(), + true, addController.getTitle()); listenTo(cmc); cmc.activate(); diff --git a/src/main/java/org/olat/repository/controllers/RepositoryAddController.java b/src/main/java/org/olat/repository/controllers/RepositoryAddController.java index 5b4656a49fd27756c572dc54c92022ab8ed08987..2ec501195888090e366649f9869e9c911bca8704 100644 --- a/src/main/java/org/olat/repository/controllers/RepositoryAddController.java +++ b/src/main/java/org/olat/repository/controllers/RepositoryAddController.java @@ -116,6 +116,7 @@ public class RepositoryAddController extends BasicController { private Link cancelButton; private Link forwardButton; private String actionAddCommand, actionProcess; + private String typeIntro, translatedTypeName; /** * Controller implementing "Add Repository Entry"-workflow. @@ -142,9 +143,7 @@ public class RepositoryAddController extends BasicController { cancelButton.setElementCssClass("o_sel_repo_add_cancel"); forwardButton = LinkFactory.createButton("cmd.forward", repositoryadd, this); forwardButton.setElementCssClass("o_sel_repo_add_forward"); - - String translatedTypeName = null; - String typeIntro = null; + addCallback = new RepositoryAddCallback(this); if (actionAddCommand.equals(ACTION_ADD_COURSE)) { typeToAdd = new CourseHandler(); @@ -285,6 +284,16 @@ public class RepositoryAddController extends BasicController { putInitialPanel(repositoryadd); } + public String getTitle() { + return typeIntro; + + /* + return translatedTypeName == null ? + translate("add.header") : + translate("add.header.specific", new String[] {translatedTypeName}); + */ + } + public void setUserObject(Object userObject) { addCallback.setUserObject(userObject); } @@ -347,8 +356,7 @@ public class RepositoryAddController extends BasicController { // clean up temporary data and abort transaction cleanup(); fireEvent(ureq, Event.CANCELLED_EVENT); - return; - } else if (event == Event.DONE_EVENT) { + } else if (event == Event.DONE_EVENT || event == Event.CHANGED_EVENT) { forwardButton.setEnabled(true); addedEntry = detailsController.getRepositoryEntry(); } diff --git a/src/main/java/org/olat/repository/controllers/RepositoryCopyController.java b/src/main/java/org/olat/repository/controllers/RepositoryCopyController.java index d21ea17b6058c826685a56d3ded2a7e50979ac9c..d3d09385a414fec1780cd29bde152d8dd514b90a 100644 --- a/src/main/java/org/olat/repository/controllers/RepositoryCopyController.java +++ b/src/main/java/org/olat/repository/controllers/RepositoryCopyController.java @@ -115,8 +115,7 @@ public class RepositoryCopyController extends BasicController { // abort transaction cleanup(); fireEvent(ureq, Event.CANCELLED_EVENT); - return; - } else if (event == Event.DONE_EVENT) { + } else if (event == Event.DONE_EVENT || event == Event.CHANGED_EVENT) { forwardButton.setEnabled(true); } } diff --git a/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java b/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java index 1d4ebee67d827d14005a858e5b7b6529e61d3a91..209ecf8c49169e0449c960b218f3120daa505420 100644 --- a/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java +++ b/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java @@ -610,7 +610,8 @@ public class RepositoryDetailsController extends BasicController implements Gene removeAsListenerAndDispose(repositoryEditPropertiesController); repositoryEditPropertiesController = new RepositoryEditPropertiesController(ureq, getWindowControl(), repositoryEntry, false); listenTo(repositoryEditPropertiesController); - doEditSettings(ureq, repositoryEditPropertiesController); + String title = translate("properties.for", new String[]{ repositoryEntry.getDisplayname() }); + doEditSettings(ureq, repositoryEditPropertiesController, title); List<ContextEntry> subEntries = entries.subList(1, entries.size()); repositoryEditPropertiesController.activate(ureq, subEntries, entry.getTransientState()); @@ -704,7 +705,7 @@ public class RepositoryDetailsController extends BasicController implements Gene * @param ureq * @param contentController */ - private void doEditSettings(UserRequest ureq, Controller contentController) { + private void doEditSettings(UserRequest ureq, Controller contentController, String title) { if (!isAuthor) throw new OLATSecurityException("Trying to edit properties , but user is not author: user = " + ureq.getIdentity()); Component component = contentController.getInitialComponent(); @@ -712,7 +713,7 @@ public class RepositoryDetailsController extends BasicController implements Gene if(component!=null) { removeAsListenerAndDispose(settingsCloseableModalController); settingsCloseableModalController = new CloseableModalController(getWindowControl(), translate("close"), - contentController.getInitialComponent()); + contentController.getInitialComponent(), true, title); listenTo(settingsCloseableModalController); settingsCloseableModalController.activate(); @@ -779,8 +780,10 @@ public class RepositoryDetailsController extends BasicController implements Gene copyController = new RepositoryCopyController(ureq, getWindowControl(), repositoryEntry); listenTo(copyController); + String title = translate("details.copy"); removeAsListenerAndDispose(copyCloseableModalController); - copyCloseableModalController = new CloseableModalController(getWindowControl(), translate("close"), copyController.getInitialComponent()); + copyCloseableModalController = new CloseableModalController(getWindowControl(), translate("close"), copyController.getInitialComponent(), + true, title); listenTo(copyCloseableModalController); copyCloseableModalController.activate(); @@ -878,7 +881,8 @@ public class RepositoryDetailsController extends BasicController implements Gene removeAsListenerAndDispose(repositoryEditDescriptionController); repositoryEditDescriptionController = new RepositoryEditDescriptionController(ureq, getWindowControl(), repositoryEntry, false); listenTo(repositoryEditDescriptionController); - doEditSettings(ureq, repositoryEditDescriptionController); + String title = translate("properties.for", new String[]{ repositoryEntry.getDisplayname() }); + doEditSettings(ureq, repositoryEditDescriptionController, title); return; } else if (cmd.equals(ACTION_ADD_CATALOG)) { // start add to catalog workflow doAddCatalog(ureq); @@ -887,7 +891,8 @@ public class RepositoryDetailsController extends BasicController implements Gene removeAsListenerAndDispose(repositoryEditPropertiesController); repositoryEditPropertiesController = new RepositoryEditPropertiesController(ureq, getWindowControl(), repositoryEntry, false); listenTo(repositoryEditPropertiesController); - doEditSettings(ureq, repositoryEditPropertiesController); + String title = translate("properties.for", new String[]{ repositoryEntry.getDisplayname() }); + doEditSettings(ureq, repositoryEditPropertiesController, title); return; } else if (cmd.equals(ACTION_CLOSE)) { doCloseDetailView(ureq); @@ -958,7 +963,7 @@ public class RepositoryDetailsController extends BasicController implements Gene removeAsListenerAndDispose(copyController); copyController = null; } else if (source == repositoryEditDescriptionController) { - if (event == Event.CHANGED_EVENT) { + if (event == Event.CHANGED_EVENT || event == Event.DONE_EVENT) { // RepositoryEntry changed // setEntry(repositoryEditDescriptionController.getRepositoryEntry(), ureq); String displayname = repositoryEditDescriptionController.getRepositoryEntry().getDisplayname(); @@ -967,10 +972,10 @@ public class RepositoryDetailsController extends BasicController implements Gene // do not close upon save/upload image closeableModalController.deactivate(); updateView(ureq); } else if (event == Event.CANCELLED_EVENT) { - settingsCloseableModalController.deactivate(); removeAsListenerAndDispose(repositoryEditDescriptionController); - this.repositoryEntry = repositoryEditDescriptionController.getRepositoryEntry(); + repositoryEntry = repositoryEditDescriptionController.getRepositoryEntry(); } + settingsCloseableModalController.deactivate(); } else if (source == repositoryEditPropertiesController) { if (event == Event.CHANGED_EVENT || event.getCommand().equals("courseChanged")) { // RepositoryEntry changed diff --git a/src/main/java/org/olat/repository/controllers/RepositoryEditDescriptionController.java b/src/main/java/org/olat/repository/controllers/RepositoryEditDescriptionController.java index cc679fe991b5de794c6dbe8e602cf09281c3e719..a7e2ee1887b4a788139afe6913bff7d3eec7203f 100644 --- a/src/main/java/org/olat/repository/controllers/RepositoryEditDescriptionController.java +++ b/src/main/java/org/olat/repository/controllers/RepositoryEditDescriptionController.java @@ -25,33 +25,67 @@ package org.olat.repository.controllers; +import java.io.File; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + +import org.olat.ControllerFactory; +import org.olat.basesecurity.BaseSecurity; +import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; -import org.olat.core.gui.components.Component; -import org.olat.core.gui.components.tabbedpane.TabbedPane; -import org.olat.core.gui.components.velocity.VelocityContainer; +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.FileElement; +import org.olat.core.gui.components.form.flexible.elements.FormLink; +import org.olat.core.gui.components.form.flexible.elements.RichTextElement; +import org.olat.core.gui.components.form.flexible.elements.TextElement; +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.components.image.ImageFormItem; +import org.olat.core.gui.components.link.Link; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; -import org.olat.core.gui.control.controller.BasicController; +import org.olat.core.gui.media.NamedFileMediaResource; +import org.olat.core.id.Identity; +import org.olat.core.util.StringHelper; +import org.olat.core.util.WebappHelper; +import org.olat.core.util.vfs.LocalFolderImpl; +import org.olat.core.util.vfs.VFSContainer; +import org.olat.core.util.vfs.VFSLeaf; +import org.olat.core.util.vfs.VFSMediaResource; import org.olat.repository.RepositoryEntry; -import org.olat.repository.RepositoryEntryDetailsFormController; +import org.olat.repository.RepositoryEntryIconRenderer; import org.olat.repository.RepositoryManager; +import org.olat.resource.OLATResource; +import org.olat.user.UserManager; /** * Description:<br> * * @author Ingmar Kroll + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * */ -public class RepositoryEditDescriptionController extends BasicController { - private VelocityContainer chdesctabVC; - private Controller repoEntryDetailsFormCtr; - private Controller imageUploadController; - private TabbedPane tabbedPane; +public class RepositoryEditDescriptionController extends FormBasicController { + + private final boolean isSubWorkflow; private RepositoryEntry repositoryEntry; - private VelocityContainer descVC; private static final int picUploadlimitKB = 1024; + private FileElement fileUpload; + private TextElement displayName; + private RichTextElement description; + private ImageFormItem imageEl; + private FormLink deleteImage; + + private final UserManager userManager; + private final BaseSecurity securityManager; + private final RepositoryManager repositoryManager; + /** * Create a repository add controller that adds the given resourceable. * @@ -60,70 +94,208 @@ public class RepositoryEditDescriptionController extends BasicController { * @param sourceEntry */ public RepositoryEditDescriptionController(UserRequest ureq, WindowControl wControl, RepositoryEntry entry, boolean isSubWorkflow) { - super(ureq, wControl); + super(ureq, wControl, "bgrep"); setBasePackage(RepositoryManager.class); + userManager = CoreSpringFactory.getImpl(UserManager.class); + securityManager = CoreSpringFactory.getImpl(BaseSecurity.class); + repositoryManager = CoreSpringFactory.getImpl(RepositoryManager.class); + this.isSubWorkflow = isSubWorkflow; this.repositoryEntry = entry; - // wrapper velocity container with a tabbed pane - descVC = createVelocityContainer("bgrep"); - descVC.contextPut("title", entry.getDisplayname()); - tabbedPane = new TabbedPane("descTB", ureq.getLocale()); - chdesctabVC = createVelocityContainer("changedesctab1"); - chdesctabVC.contextPut("id", entry.getResourceableId() == null ? "-" : entry.getResourceableId().toString()); - chdesctabVC.contextPut("initialauthor", entry.getInitialAuthor()); - descVC.contextPut("disabledforwardreason", translate("disabledforwardreason")); - // repo entry details form - repoEntryDetailsFormCtr = new RepositoryEntryDetailsFormController(ureq, getWindowControl(), entry, isSubWorkflow); - listenTo(repoEntryDetailsFormCtr); - chdesctabVC.put("repoEntryDetailsFormCtr", repoEntryDetailsFormCtr.getInitialComponent()); - // file upload form - should be refactored to RepositoryEntryDetailsFormController, need more time to do this - imageUploadController = new RepositoryEntryImageController(ureq, wControl, entry, getTranslator(), picUploadlimitKB); - listenTo(imageUploadController); - chdesctabVC.put("imageupload", imageUploadController.getInitialComponent()); - - tabbedPane.addTab(translate("table.header.description"), chdesctabVC); - tabbedPane.addListener(this); - descVC.put("descTB", tabbedPane); - putInitialPanel(descVC); + initForm(ureq); } - /** - * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, - * org.olat.core.gui.components.Component, org.olat.core.gui.control.Event) - */ - public void event(UserRequest ureq, Component source, Event event) { - // - } + @Override + protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { + if(formLayout instanceof FormLayoutContainer && isSubWorkflow) { + FormLayoutContainer layoutCont = (FormLayoutContainer)formLayout; + layoutCont.contextPut("title", repositoryEntry.getDisplayname()); + } + + FormLayoutContainer descCont = FormLayoutContainer.createDefaultFormLayout("desc", getTranslator()); + descCont.setRootForm(mainForm); + formLayout.add("desc", descCont); - public void event(UserRequest ureq, Controller source, Event event) { - if (source == this.imageUploadController) { - if (event.equals(Event.DONE_EVENT)) fireEvent(ureq, Event.CHANGED_EVENT); - - } else if (source == this.repoEntryDetailsFormCtr) { // process details form events - - if (event.equals(Event.CANCELLED_EVENT)) { - fireEvent(ureq, Event.CANCELLED_EVENT); + String id = repositoryEntry.getResourceableId() == null ? "-" : repositoryEntry.getResourceableId().toString(); + uifactory.addStaticTextElement("cif.id", id, descCont); - } else if (event == Event.CHANGED_EVENT) { - fireEvent(ureq, Event.CHANGED_EVENT); - fireEvent(ureq, Event.DONE_EVENT); - descVC.contextPut("title", getRepositoryEntry().getDisplayname()); - } + String initalAuthor = repositoryEntry.getInitialAuthor() == null ? "-" : repositoryEntry.getInitialAuthor().toString(); + Identity authorId = securityManager.findIdentityByName(initalAuthor); + if(authorId != null) { + initalAuthor = userManager.getUserDisplayName(authorId.getUser()); + } + uifactory.addStaticTextElement("cif.initialAuthor", initalAuthor, descCont); + // Add resource type + String typeName = null; + OLATResource res = repositoryEntry.getOlatResource(); + if (res != null) typeName = res.getResourceableTypeName(); + StringBuilder typeDisplayText = new StringBuilder(100); + if (typeName != null) { // add image and typename code + RepositoryEntryIconRenderer reir = new RepositoryEntryIconRenderer(getLocale()); + typeDisplayText.append("<span class=\"b_with_small_icon_left "); + typeDisplayText.append(reir.getIconCssClass(repositoryEntry)); + typeDisplayText.append("\">"); + String tName = ControllerFactory.translateResourceableTypeName(typeName, getLocale()); + typeDisplayText.append(tName); + typeDisplayText.append("</span>"); + } else { + typeDisplayText.append(translate("cif.type.na")); + } + uifactory.addStaticExampleText("cif.type", typeDisplayText.toString(), descCont); + + uifactory.addSpacerElement("spacer1", descCont, false); + + displayName = uifactory.addTextElement("cif.displayname", "cif.displayname", 100, repositoryEntry.getDisplayname(), descCont); + displayName.setDisplaySize(30); + displayName.setMandatory(true); + + String desc = (repositoryEntry.getDescription() != null ? repositoryEntry.getDescription() : " "); + description = uifactory.addRichTextElementForStringDataMinimalistic("cif.description", "cif.description", + desc, 10, -1, false, descCont, ureq.getUserSession(), getWindowControl()); + description.setMandatory(true); + + uifactory.addSpacerElement("spacer2", descCont, false); + + VFSLeaf img = repositoryManager.getImage(repositoryEntry); + imageEl = new ImageFormItem("imageEl"); + imageEl.setLabel("rentry.pic", null); + + if(img == null) { + imageEl.setVisible(false); + } else { + imageEl.setMediaResource(new VFSMediaResource(img)); + imageEl.setMaxWithAndHeightToFitWithin(400, 200); + } + descCont.add(imageEl); + + deleteImage = uifactory.addFormLink("delete", "cmd.delete", null, descCont, Link.BUTTON); + deleteImage.setVisible(img != null); + + fileUpload = uifactory.addFileElement("rentry.pic", "rentry.pic", descCont); + if(img != null) { + fileUpload.setLabel(null, null); } + fileUpload.setMaxUploadSizeKB(picUploadlimitKB, null, null); + fileUpload.addActionListener(this, FormEvent.ONCHANGE); + + Set<String> mimeTypes = new HashSet<String>(); + mimeTypes.add("image/gif"); + mimeTypes.add("image/jpg"); + mimeTypes.add("image/jpeg"); + mimeTypes.add("image/png"); + fileUpload.limitToMimeType(mimeTypes, null, null); + FormLayoutContainer buttonContainer = FormLayoutContainer.createButtonLayout("buttonContainer", getTranslator()); + formLayout.add("buttonContainer", buttonContainer); + buttonContainer.setElementCssClass("o_sel_repo_save_details"); + uifactory.addFormSubmitButton("submit", buttonContainer); + if (!isSubWorkflow) { + uifactory.addFormCancelButton("cancel", buttonContainer, ureq, getWindowControl()); + } } - /** - * @see org.olat.core.gui.control.DefaultController#doDispose(boolean) - */ + @Override protected void doDispose() { // Controllers autodisposed by basic controller } + @Override + protected boolean validateFormLogic(UserRequest ureq) { + // Check for empty display name + boolean allOk = true; + if (!StringHelper.containsNonWhitespace(displayName.getValue())) { + displayName.setErrorKey("cif.error.displayname.empty", new String[] {}); + allOk = false; + } else if (displayName.hasError()) { + allOk = false; + } else { + displayName.clearError(); + } + + // Check for empty description + if (!StringHelper.containsNonWhitespace(description.getValue())) { + description.setErrorKey("cif.error.description.empty", new String[] {}); + allOk = false; + } else { + description.clearError(); + } + + // Ok, passed all checks + return allOk && super.validateFormLogic(ureq); + } + + @Override + protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { + if (source == fileUpload) { + if (fileUpload.isUploadSuccess()) { + File uploadedFile = fileUpload.getUploadFile(); + imageEl.setMediaResource(new NamedFileMediaResource(uploadedFile, fileUpload.getName(), "", false)); + imageEl.setMaxWithAndHeightToFitWithin(400, 200); + imageEl.setVisible(true); + imageEl.getComponent().setDirty(true); + deleteImage.setVisible(true); + fileUpload.setLabel(null, null); + flc.setDirty(true); + } + } else if (source == deleteImage) { + + VFSLeaf img = repositoryManager.getImage(repositoryEntry); + + if(fileUpload.getUploadFile() != null) { + fileUpload.reset(); + + if(img == null) { + imageEl.setVisible(false); + deleteImage.setVisible(false); + fileUpload.setLabel("rentry.pic", null); + } else { + imageEl.setMediaResource(new VFSMediaResource(img)); + imageEl.setMaxWithAndHeightToFitWithin(400, 200); + imageEl.setVisible(true); + imageEl.setLabel("rentry.pic", null); + deleteImage.setVisible(true); + fileUpload.setLabel(null, null); + } + } else if(img != null) { + repositoryManager.deleteImage(repositoryEntry); + + imageEl.setVisible(false); + deleteImage.setVisible(false); + fileUpload.setLabel("rentry.pic", null); + } + + flc.setDirty(true); + } + super.formInnerEvent(ureq, source, event); + } + + @Override + protected void formOK(UserRequest ureq) { + File uploadedFile = fileUpload.getUploadFile(); + if(uploadedFile != null) { + VFSContainer tmpHome = new LocalFolderImpl(new File(WebappHelper.getTmpDir())); + VFSContainer container = tmpHome.createChildContainer(UUID.randomUUID().toString()); + VFSLeaf newFile = fileUpload.moveUploadFileTo(container);//give it it's real name and extension + boolean ok = repositoryManager.setImage((VFSLeaf)newFile, repositoryEntry); + if (!ok) { + showError("Failed"); + } + container.delete(); + } + + repositoryEntry.setDisplayname(displayName.getValue().trim()); + repositoryEntry.setDescription(description.getValue().trim()); + fireEvent(ureq, Event.CHANGED_EVENT); + } + + @Override + protected void formCancelled(UserRequest ureq) { + fireEvent(ureq, Event.CANCELLED_EVENT); + } + /** * @return Returns the repositoryEntry. */ public RepositoryEntry getRepositoryEntry() { return repositoryEntry; } - -} +} \ No newline at end of file diff --git a/src/main/java/org/olat/repository/controllers/RepositoryEntryImageController.java b/src/main/java/org/olat/repository/controllers/RepositoryEntryImageController.java deleted file mode 100644 index 5dc3630a7da408e20a9faa0a7111a05c8a3485ee..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/repository/controllers/RepositoryEntryImageController.java +++ /dev/null @@ -1,204 +0,0 @@ -/** -* 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 Multimedia- & E-Learning Services (MELS),<br> -* University of Zurich, Switzerland. -* <hr> -* <a href="http://www.openolat.org"> -* OpenOLAT - Online Learning and Training</a><br> -* This file has been modified by the OpenOLAT community. Changes are licensed -* under the Apache 2.0 license as the original file. -*/ - -package org.olat.repository.controllers; - -import java.io.File; -import java.util.HashSet; -import java.util.Set; - -import org.olat.core.CoreSpringFactory; -import org.olat.core.commons.modules.bc.FileUploadController; -import org.olat.core.commons.modules.bc.FolderConfig; -import org.olat.core.commons.modules.bc.FolderEvent; -import org.olat.core.gui.UserRequest; -import org.olat.core.gui.components.Component; -import org.olat.core.gui.components.image.ImageComponent; -import org.olat.core.gui.components.link.Link; -import org.olat.core.gui.components.link.LinkFactory; -import org.olat.core.gui.components.velocity.VelocityContainer; -import org.olat.core.gui.control.Controller; -import org.olat.core.gui.control.Event; -import org.olat.core.gui.control.WindowControl; -import org.olat.core.gui.control.controller.BasicController; -import org.olat.core.gui.translator.Translator; -import org.olat.core.util.WebappHelper; -import org.olat.core.util.vfs.LocalFolderImpl; -import org.olat.core.util.vfs.Quota; -import org.olat.core.util.vfs.VFSContainer; -import org.olat.core.util.vfs.VFSItem; -import org.olat.core.util.vfs.VFSLeaf; -import org.olat.core.util.vfs.VFSMediaResource; -import org.olat.repository.RepositoryEntry; -import org.olat.repository.RepositoryManager; - -/** - * <h3>Description:</h3> - * <p> - * The repository entry image upload controller offers a workflow to upload an - * image for a learning resource - * <p> - * Events fired by this controller: - * <ul> - * <li>CANCELLED_EVENT</li> - * <li>DONE_EVENT</li> - * </ul> - * - * @author Ingmar Kroll - */ -public class RepositoryEntryImageController extends BasicController { - private VelocityContainer vContainer; - private Link deleteButton; - private final FileUploadController uploadCtr; - private final RepositoryEntry repositoryEntry; - - //private File newFile = null; - - private final RepositoryManager repositoryManager; - - - /** - * Display upload form to upload a file to the given currentPath. - * @param uploadDir - * @param wControl - * @param translator - * @param limitKB - */ - public RepositoryEntryImageController(UserRequest ureq, WindowControl wControl, RepositoryEntry repositoryEntry, Translator translator, - int limitKB) { - super(ureq, wControl, translator); - // use velocity files and translations from folder module package - setBasePackage(RepositoryManager.class); - - repositoryManager = CoreSpringFactory.getImpl(RepositoryManager.class); - - this.repositoryEntry = repositoryEntry; - this.vContainer = createVelocityContainer("imageupload"); - // Init upload controller - Set<String> mimeTypes = new HashSet<String>(); - mimeTypes.add("image/gif"); - mimeTypes.add("image/jpg"); - mimeTypes.add("image/jpeg"); - mimeTypes.add("image/png"); - File uploadDir = new File(WebappHelper.getTmpDir()); - VFSContainer uploadContainer = new LocalFolderImpl(uploadDir); - uploadCtr = new FileUploadController(getWindowControl(), uploadContainer, ureq, limitKB, Quota.UNLIMITED, mimeTypes, false, false, false, true); - uploadCtr.hideTitleAndFieldset(); - listenTo(uploadCtr); - vContainer.put("uploadCtr", uploadCtr.getInitialComponent()); - // init the delete button - deleteButton = LinkFactory.createButtonSmall("cmd.delete", this.vContainer, this); - // init the image itself - vContainer.contextPut("hasPortrait", Boolean.FALSE); - displayImage(); - // finished - putInitialPanel(vContainer); - } - - /** - * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, org.olat.core.gui.components.Component, org.olat.core.gui.control.Event) - */ - public void event(UserRequest ureq, Component source, Event event) { - if (source == deleteButton){ - repositoryManager.deleteImage(repositoryEntry); - } - displayImage(); - } - - /** - * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, org.olat.core.gui.control.Controller, org.olat.core.gui.control.Event) - */ - public void event(UserRequest ureq, Controller source, Event event) { - if (source == uploadCtr) { - // catch upload event - if (event instanceof FolderEvent && event.getCommand().equals(FolderEvent.UPLOAD_EVENT)) { - FolderEvent folderEvent = (FolderEvent) event; - // Get file from temp folder location - - VFSContainer tmpHome = new LocalFolderImpl(new File(WebappHelper.getTmpDir())); - VFSItem newFile = tmpHome.resolve(folderEvent.getFilename()); - if (newFile instanceof VFSLeaf) { - boolean ok = repositoryManager.setImage((VFSLeaf)newFile, repositoryEntry); - // Cleanup original file - newFile.delete(); - // And finish workflow - if (ok) { - fireEvent(ureq, Event.DONE_EVENT); - } else { - showError("NoImage"); - } - } else { - showError("Failed"); - } - } - // redraw image - displayImage(); - } - } - - - - /** - * Internal helper to create the image component and push it to the view - */ - private void displayImage() { - ImageComponent ic = getImageComponentForRepositoryEntry("image", repositoryEntry); - if (ic != null) { - // display only within 400x200 in form - ic.setMaxWithAndHeightToFitWithin(400, 200); - vContainer.put("image", ic); - vContainer.contextPut("hasImage",Boolean.TRUE); - }else{ - vContainer.contextPut("hasImage",Boolean.FALSE); - } - } - - /** - * Check if the repo entry does have an images and if yes create an image - * component that displays the image of this repo entry. - * - * @param componentName - * @param repositoryEntry - * @return The image component or NULL if the repo entry does not have an - * image - */ - private ImageComponent getImageComponentForRepositoryEntry(String componentName, RepositoryEntry repositoryEntry) { - VFSLeaf img = repositoryManager.getImage(repositoryEntry); - if (img == null) { - return null; - } - ImageComponent imageComponent = new ImageComponent(componentName); - imageComponent.setMediaResource(new VFSMediaResource(img)); - return imageComponent; - } - - /** - * - * @see org.olat.core.gui.control.DefaultController#doDispose(boolean) - */ - protected void doDispose() { - // controllers autodisposed by basic controller - } -} diff --git a/src/main/java/org/olat/repository/controllers/RepositoryMainController.java b/src/main/java/org/olat/repository/controllers/RepositoryMainController.java index 7bd294479ba8a65d097947d15f11ec7d93a78060..3eb48d5fff4b3d926b65c183fa2d290a712d3657 100644 --- a/src/main/java/org/olat/repository/controllers/RepositoryMainController.java +++ b/src/main/java/org/olat/repository/controllers/RepositoryMainController.java @@ -741,7 +741,8 @@ public class RepositoryMainController extends MainLayoutBasicController implemen addController = new RepositoryAddController(urequest, getWindowControl(), event.getCommand()); listenTo(addController); removeAsListenerAndDispose(cmc); - cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent()); + cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent(), + true, addController.getTitle()); listenTo(cmc); cmc.activate(); return; @@ -750,7 +751,8 @@ public class RepositoryMainController extends MainLayoutBasicController implemen addController = new RepositoryAddController(urequest, getWindowControl(), RepositoryAddController.ACTION_NEW_COURSE); listenTo(addController); removeAsListenerAndDispose(cmc); - cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent()); + cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent(), + true, addController.getTitle()); listenTo(cmc); cmc.activate(); return; @@ -759,7 +761,8 @@ public class RepositoryMainController extends MainLayoutBasicController implemen addController = new RepositoryAddController(urequest, getWindowControl(), RepositoryAddController.ACTION_NEW_TEST); listenTo(addController); removeAsListenerAndDispose(cmc); - cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent()); + cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent(), + true, addController.getTitle()); listenTo(cmc); cmc.activate(); return; @@ -768,7 +771,8 @@ public class RepositoryMainController extends MainLayoutBasicController implemen addController = new RepositoryAddController(urequest, getWindowControl(), RepositoryAddController.ACTION_NEW_SURVEY); listenTo(addController); removeAsListenerAndDispose(cmc); - cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent()); + cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent(), + true, addController.getTitle()); listenTo(cmc); cmc.activate(); return; @@ -777,7 +781,8 @@ public class RepositoryMainController extends MainLayoutBasicController implemen addController = new RepositoryAddController(urequest, getWindowControl(), RepositoryAddController.ACTION_NEW_SHAREDFOLDER); listenTo(addController); removeAsListenerAndDispose(cmc); - cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent()); + cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent(), + true, addController.getTitle()); listenTo(cmc); cmc.activate(); return; @@ -786,7 +791,8 @@ public class RepositoryMainController extends MainLayoutBasicController implemen addController = new RepositoryAddController(urequest, getWindowControl(), RepositoryAddController.ACTION_NEW_WIKI); listenTo(addController); removeAsListenerAndDispose(cmc); - cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent()); + cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent(), + true, addController.getTitle()); listenTo(cmc); cmc.activate(); return; @@ -795,7 +801,8 @@ public class RepositoryMainController extends MainLayoutBasicController implemen addController = new RepositoryAddController(urequest, getWindowControl(), RepositoryAddController.ACTION_NEW_PODCAST); listenTo(addController); removeAsListenerAndDispose(cmc); - cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent()); + cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent(), + true, addController.getTitle()); listenTo(cmc); cmc.activate(); return; @@ -804,7 +811,8 @@ public class RepositoryMainController extends MainLayoutBasicController implemen addController = new RepositoryAddController(urequest, getWindowControl(), RepositoryAddController.ACTION_NEW_BLOG); listenTo(addController); removeAsListenerAndDispose(cmc); - cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent()); + cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent(), + true, addController.getTitle()); listenTo(cmc); cmc.activate(); return; @@ -813,7 +821,8 @@ public class RepositoryMainController extends MainLayoutBasicController implemen addController = new RepositoryAddController(urequest, getWindowControl(), RepositoryAddController.ACTION_NEW_GLOSSARY); listenTo(addController); removeAsListenerAndDispose(cmc); - cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent()); + cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent(), + true, addController.getTitle()); listenTo(cmc); cmc.activate(); return; @@ -822,7 +831,8 @@ public class RepositoryMainController extends MainLayoutBasicController implemen addController = new RepositoryAddController(urequest, getWindowControl(), RepositoryAddController.ACTION_NEW_PORTFOLIO); listenTo(addController); removeAsListenerAndDispose(cmc); - cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent()); + cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent(), + true, addController.getTitle()); listenTo(cmc); cmc.activate(); return; @@ -836,7 +846,8 @@ public class RepositoryMainController extends MainLayoutBasicController implemen addController = new RepositoryAddController(urequest, getWindowControl(), RepositoryAddController.ACTION_NEW_CP); listenTo(addController); removeAsListenerAndDispose(cmc); - cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent()); + cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent(), + true, addController.getTitle()); listenTo(cmc); cmc.activate(); return; diff --git a/src/main/java/org/olat/repository/controllers/_content/bgrep.html b/src/main/java/org/olat/repository/controllers/_content/bgrep.html new file mode 100644 index 0000000000000000000000000000000000000000..de7835560c6cda21303cddeaa1f2ebd85995cec5 --- /dev/null +++ b/src/main/java/org/olat/repository/controllers/_content/bgrep.html @@ -0,0 +1,7 @@ +<div class="o_sel_edit_repositoryentry_popup"> + #if($title) + <h4>$r.translate("properties.for", $title)</h4> + #end + $r.render("desc") + $r.render("buttonContainer") +</div> \ No newline at end of file