AnsweredAssumed Answered

Form in share simpleDialog

Question asked by ingon on Jun 16, 2014
I'm trying to show a full functional form in a simpleDialog called from a documentlibrary action, but I can'f make it work, since it never reaches the onSuccess event.

Here is where the action is defined:


   <config evaluator="string-compare" condition="DocLibCustom">
      <dependencies>
         <js src="/components/import/import-actions.js" />
      </dependencies>
   </config>

   <config evaluator="string-compare" condition="DocLibActions">
      <actions>
         <action id="alfresco_import_permissions" type="javascript" label="action.import.permissions"
            icon="import-permissions">
            <param name="function">onActionOpenForm</param>
         </action>
      </actions>
      <actionGroups>
         <actionGroup id="folder-browse">
            <action index="230" id="alfresco_import_permissions" />
         </actionGroup>
      </actionGroups>
   </config>


Here, the onActionOpenForm implementation in the file import-actions.js:


(function() {

   YAHOO.Bubbling.fire("registerAction", {
      actionName : "onActionOpenForm",
      fn : function onActionOpenForm(record) {
         var actionUrl = YAHOO.lang.substitute(Alfresco.constants.PROXY_URI + "alfresco/importer/{uri}",
               {
                  uri : this.doclistMetadata.parent.nodeRef.replace(":/", "")
               });
         var templateUrl = Alfresco.constants.URL_SERVICECONTEXT + "alfresco/import/uploadcontent";
         var uploadZip = new Alfresco.module.SimpleDialog(this.id + "-uploadContent");
         uploadZip.setOptions({
            width : "50em",
            templateUrl : templateUrl,
            actionUrl : actionUrl,
            onSuccess : {
               fn : function DLTB_onUploadContent_success(response) {
                  alert("hi");
               },
               scope : this
            },
            onFailure : {
               fn : function DLTB_onUploadContent_failure(response) {
                  alert("bye");
               },
               scope : this
            }
         });
         uploadZip.show()
      }
   });

})();


Here, the form that is rendered in the popup:


<#assign el=args.htmlid?html>
<div id="${el}-dialog" class="upload-content">
   <div id="${el}-dialogTitle" class="hd">${msg("page.importZipFile.title")}</div>
   <div class="bd">
      <form id="${el}-form" action="" method="post" enctype="multipart/form-data" accept-charset="utf-8">
         <div class="yui-gd">
            <div class="yui-u first"><label for="${el}-filedata">${msg("label.filedata")}:</label></div>
            <div class="yui-u"><input type="file" id="${el}-filedata" name="filedata" tabindex="0" style="width:100%"/></div>
         </div>
         <div class="bdft">
            <input type="submit" id="${el}-ok" value="${msg("button.ok")}" tabindex="0" />
            <input type="button" id="${el}-cancel" value="${msg("button.cancel")}" tabindex="0" />
         </div>
      </form>
   </div>
</div>


Alfresco websccript that is called in the form action:

XML:


<webscript>
   <shortname>Import permissions</shortname>
   <description>Import permissions</description>
   <url>/alfresco/importer/{nodeRef}</url>
   <authentication>none</authentication>
   <format default="json">argument</format>
   <args>
      <arg>
         <shortname>nodeRef</shortname>
         <description>NodeRef</description>
      </arg>
   </args>   
</webscript>


Java class:


package alfresco.beans.web.scripts;

import java.io.IOException;

import org.alfresco.service.cmr.repository.NodeService;
import org.json.simple.JSONObject;
import org.springframework.extensions.webscripts.AbstractWebScript;
import org.springframework.extensions.webscripts.WebScriptRequest;
import org.springframework.extensions.webscripts.WebScriptResponse;

public class ImportPermissions extends AbstractWebScript {

   NodeService nodeService;

   public final NodeService getNodeService() {
      return nodeService;
   }

   public final void setNodeService(NodeService nodeService) {
      this.nodeService = nodeService;
   }

   public ImportPermissions() {
   }

   @SuppressWarnings("unchecked")
   @Override
   public void execute(WebScriptRequest req, WebScriptResponse res) throws IOException {

      JSONObject jsonObject = new JSONObject();
      jsonObject.put("value1", "data1");
      jsonObject.put("value2", "data2");

      String jsonString = jsonObject.toString();
      res.getWriter().write(jsonString);

   }

}


When I click ok in the form, I can debug the alfresco webscript and the execute() method is correct, without errors. The problem I have is that the onSuccess event in onActionOpenForm is never reached, even debugging the simple-dialog.js.

Am I doing anytthing wrong? Do I have to add or remove something in my code??

Thanks in advance!!

Outcomes