cancel
Showing results for 
Search instead for 
Did you mean: 

Popup bei custom Action erstellen

schurik
Champ in-the-making
Champ in-the-making
Hallo Zusammen,

ich bin noch anfänger im Umgang mit alfresco. Ich habe ein custom Action erstellt, dass in Share angezeigt wird (nach folgender anleitung http://ecmarchitect.com/images/articles/alfresco-actions/actions-article-2ed.pdf). Beim draufklicken soll ein neues Fenster aufgehen, wo der Benutzer noch einige Werte angeben soll, die für die Java-Methode benötigt werden.

Die Action ruft im Moment die executeImpl in einer Java-Methode auf. Ich muss aber mit der Action ein Fenster in Share öffnen, wo der Benutzer eingaben tätigt und daraufhin erst die executeImpl-Methode aufrufen.

Wäre für Hilfe mit einem Code-Beispiel sehr dankbar.
12 REPLIES 12

schurik
Champ in-the-making
Champ in-the-making
Hallo Jan,

danke für die Hilfestellung. Da die rechte automatisch vergeben werden sollen, gebe ich der Site eine Gruppe als Member mit, die die entsprechenden Berechtigungen besitzt. Somit haben alle Mitglieder der Gruppe die Rechte.

Ich habe Alfresco.module.SimpleDialog und benutze die doBeforeFormSubmit-Methode um ein Alfresco.util.PopupManager.displayMessage Anzuzeigen. Damit der Benutzer weiß, dass im Hintergrund etwas passiert. Jedoch wird wird das Popup auch angezeigt wenn ich im SimpleDialog auf Abbrechen gehe. Hier wollte ich die Methode onCancel Nutzen, um das Popup verschwinden zu lassen. Jedoch wird onCancel nicht aufgerufen, wenn ich das SimpleDialog schließe. Hast du eine Erklärung dafür?

Anbei der Code für das SimpleDialog.


this.modules.import = new Alfresco.module.SimpleDialog(this.id + "-iv").setOptions({
               width: "30em",
               templateUrl: templateUrl",
               actionUrl: actionUrl,
               doSetupFormsValidation:{
                  fn: doSetupFormsValidation,
                  scope: this
               },
               doBeforeFormSubmit:{
                  fn: doBeforeFormSubmit,
                  scope: this
               },
               firstFocus: this.id + "-iv-v",
               doBeforeDialogShow:{
                  fn: fillDialogFields,
                  scope: this
               },
               onSuccess:{
                  fn: function DLTB_onNewFolder_callback(response){
                       Alfresco.logger.debug("- onSuccess", "", "");
                       Alfresco.util.PopupManager.displayMessage({
                           text: "Import war erfolgreich."
                            });
                       that.loadingMessage = false;
                  },
                  scope: this
               },
               onFailure:{
                  fn: function doal_docExport_failure(response){
                     Alfresco.util.PopupManager.displayMessage({
                        text: "Fehler beim Import."
                     });
                     that.loadingMessage = false;
                      },
                      scope: this
                   },
                   onCancel:{
                  fn: function doal_docExport_cancel(p_form){
                     Alfresco.logger.debug("- CANCEL ", "", "");
                     Alfresco.util.PopupManager.displayMessage({
                        text: "Import Abgebrochen."
                     });
                     that.loadingMessage = false;
                      },
                      scope: this
                   },
                   destroyOnHide: true
            });

Gruß Schurik

jpfi_4454
Champ in-the-making
Champ in-the-making
Hi,
du übergibst deine onCancel-Methode als Funktion innerhalb des setOptions() Aufrufs.
onCancel ist jedoch eine unbekannte Option für Alfresco.module.SimpleDialog.
Du musst stattdessen direkt die onCancel-Methode für deinen Dialog übersschreiben. Um dies zu tun bietet dir JavaScript & YUI verschiedenen Möglichkeiten, bspw direkt per prototype die Funktion überschreiben (Alfresco.module.SimpleDialog.prototype.hide = function doal_hide(){…} ) oder aber sauber einen eigenen SimpleDialog über Yahoo.extend(Alfresco.module.YourSimpleDialog, Alfresco.module.SimpleDialog){…}

VG, Jan

schurik
Champ in-the-making
Champ in-the-making
Hallo Jan,

danke für die Info, hatte es irgendwo im web so gesehen und dachte das die Methode bekannt ist.

Wie immer hab ich jedoch ne weitere Frage  Smiley Surprisedops:

Ich habe folgendes Problem. Ich erstelle eine CMIS-Verbindung zu einem anderen Repository in der klasse "CMIS". Hier wird eine CMIS-Session aufgebaut und gespeichert, damit nicht jedesmal die Verbindung von neuem aufgebaut werden muss. Ich habe die Klasse als bean in einer xxx-context.xml definiert.

<bean id="cmis" class="xxx.xxx.CMIS" />

und übergebe die bean an unterschiedliche Java-Klassen.

<bean id="Service1" parent="baseJavaScriptExtension" class="xxx.xxx.Service1">
       <property name="extensionName">
           <value>service1</value>
       </property>
       <property name="cmis">
         <ref bean="cmis" />
      </property>    
   </bean>

Das Problem ist jetzt, dass die Session für jeden Benutzer gleich ist. Wenn User1 sich anmeldet und zum ersten mal die CMIS-Verbindung mit seinen Daten aufbaut, wird die Session gespeichert. Meldet sich User2 jetzt an und führt auch eine action aus, so benutzt er die session die bereits existiert (also mit den Userdaten von User1).

Ich kenne mich mit Spring nicht wirklich aus. Kann ich beispielsweise in der context.xml sagen, dass für jeden User ein eigenes Objekt angelegt werden soll (mit singleton="false" geht es nicht). Hoffe mein Problem ist einigermaßen versändlich, ich brauche eine möglichkeit ein Objekt bzw. eine Variable für jeden Benutzer zu speichern.

Danke im Vorraus