Index: src/main/java/org/onehippo/addon/frontend/gallerypicker/dialog/GalleryPickerDialog.html
===================================================================
--- src/main/java/org/onehippo/addon/frontend/gallerypicker/dialog/GalleryPickerDialog.html (revision 326)
+++ src/main/java/org/onehippo/addon/frontend/gallerypicker/dialog/GalleryPickerDialog.html (revision )
@@ -37,6 +37,7 @@
+
Index: src/main/java/org/onehippo/addon/frontend/gallerypicker/dialog/GalleryPickerDialog.java
===================================================================
--- src/main/java/org/onehippo/addon/frontend/gallerypicker/dialog/GalleryPickerDialog.java (revision 326)
+++ src/main/java/org/onehippo/addon/frontend/gallerypicker/dialog/GalleryPickerDialog.java (revision )
@@ -2,18 +2,22 @@
import org.apache.wicket.RequestCycle;
import org.apache.wicket.Session;
+import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.upload.FileUpload;
import org.apache.wicket.markup.html.form.upload.FileUploadField;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.protocol.http.WebRequestCycle;
import org.hippoecm.frontend.editor.plugins.linkpicker.LinkPickerDialog;
+import org.hippoecm.frontend.i18n.types.TypeChoiceRenderer;
import org.hippoecm.frontend.plugin.IPluginContext;
import org.hippoecm.frontend.plugin.config.IPluginConfig;
import org.hippoecm.frontend.plugins.gallery.model.DefaultGalleryProcessor;
@@ -27,11 +31,14 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import javax.jcr.ItemNotFoundException;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
+import java.rmi.RemoteException;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -41,6 +48,11 @@
@SuppressWarnings({"UnusedDeclaration"})
private static Logger log = LoggerFactory.getLogger(GalleryPickerDialog.class);
+ private String type;
+ private List types;
+ private DropDownChoice folderChoice;
+ private AbstractDefaultAjaxBehavior behav;
+ private boolean enableUploading;
public GalleryPickerDialog(IPluginContext context, IPluginConfig config, IModel model) {
super(context, config, model);
@@ -49,13 +61,25 @@
if (config.getAsBoolean("enable.upload", false)) {
fragment = createUploadForm(config);
+ enableUploading = true;
- } else{
+ } else {
fragment = new Fragment("fragment", "empty-fragment", this);
}
add(fragment);
}
+ @Override
+ protected void setOkEnabled(boolean isset) {
+ if (enableUploading) {
+ updateTypes();
+ folderChoice.setChoices(types);
+ behav.onRequest();
+ }
+ super.setOkEnabled(isset);
+ }
+
+
@SuppressWarnings("unchecked")
private Fragment createUploadForm(final IPluginConfig config) {
Fragment fragment = new Fragment("fragment", "upload-fragment", this);
@@ -91,9 +115,8 @@
GalleryWorkflow workflow = (GalleryWorkflow) manager.getWorkflow("shortcuts", folderNode);
String nodeName = getNodeNameCodec().encode(filename);
String localName = getLocalizeCodec().encode(filename);
- List galleryTypes = workflow.getGalleryTypes();
- Document document = workflow.createGalleryItem(nodeName, galleryTypes.get(0));
- node = (HippoNode) (((UserSession) Session.get())).getJcrSession().getNodeByUUID(document.getIdentity());
+ Document document = workflow.createGalleryItem(nodeName, (folderChoice.getInput() != null) ? folderChoice.getInput() : type);
+ node = (HippoNode) (((UserSession) Session.get())).getJcrSession().getNodeByIdentifier(document.getIdentity());
DefaultWorkflow defaultWorkflow = (DefaultWorkflow) manager.getWorkflow("core", node);
if (!node.getLocalizedName().equals(localName)) {
defaultWorkflow.localizeName(localName);
@@ -147,20 +170,47 @@
}
};
+ types = new ArrayList();
+
+ updateTypes();
+ type = types.get(0);
+
+ folderChoice = new DropDownChoice("type", new PropertyModel(this, "type"), types,
+ new TypeChoiceRenderer(this));
+ folderChoice.setNullValid(false);
+ folderChoice.setRequired(true);
+ folderChoice.setOutputMarkupId(true);
+
+ behav = new AbstractDefaultAjaxBehavior() {
+ @Override
+ protected void respond(AjaxRequestTarget target) {
+ target.addComponent(folderChoice);
+ }
+ };
+ folderChoice.add(behav);
+
+ uploadForm.add(folderChoice);
uploadButton.setOutputMarkupId(true);
- uploadField.add(new AjaxEventBehavior("onchange") {
+ uploadField.add(new
+
+ AjaxEventBehavior("onchange") {
- private static final long serialVersionUID = 1L;
+ private static final long serialVersionUID = 1L;
- @Override
+ @Override
- protected void onEvent(AjaxRequestTarget target) {
+ protected void onEvent
+ (AjaxRequestTarget
+ target) {
- uploadButton.setEnabled(true);
- target.addComponent(uploadButton);
- }
+ uploadButton.setEnabled(true);
+ target.addComponent(uploadButton);
+ }
- });
+ }
+
+ );
uploadButton.setEnabled(false);
uploadForm.add(uploadField);
uploadForm.add(uploadButton);
+
fragment.add(uploadForm);
//add(uploadForm);
@@ -168,10 +218,13 @@
WebRequestCycle requestCycle = (WebRequestCycle) RequestCycle.get();
HttpServletRequest httpServletReq = requestCycle.getWebRequest().getHttpServletRequest();
String ua = httpServletReq.getHeader("User-Agent");
- if (ua.indexOf("Macintosh") > -1) {
+ if (ua.indexOf("Macintosh") > -1)
+
+ {
uploadField.add(new AttributeAppender("class", true, new Model("browse-button-osx"), " "));
uploadButton.add(new AttributeAppender("class", true, new Model("upload-button-osx"), " "));
}
+
return fragment;
}
@@ -196,4 +249,23 @@
StringCodecFactory stringCodecFactory = settingsService.getStringCodecFactory();
return stringCodecFactory.getStringCodec("encoding.display");
}
+
+ private void updateTypes() {
+ WorkflowManager manager = ((UserSession) Session.get()).getWorkflowManager();
+ try {
+ //Get the selected folder from the folderReference Service
+ Node folderNode = getFolderModel().getObject();
+ GalleryWorkflow workflow = (GalleryWorkflow) manager.getWorkflow("shortcuts", folderNode);
+ List galleryTypes = workflow.getGalleryTypes();
+ this.types = galleryTypes;
+ } catch (RemoteException e) {
+ log.error("", e);
+ } catch (MappingException e) {
+ log.error("", e);
+ } catch (ItemNotFoundException e) {
+ log.error("", e);
+ } catch (RepositoryException e) {
+ log.error("", e);
-}
+ }
+ }
+}