bleicher: Caller fensterübergreifend?

Grüße,
ich quäle mich derzeit mit TinyMCE, in der hoffnung damit was erreichen zu können - und stehe leider vor einem blöden problem -
gegeben ist eine Funktion, in dieser wird ein Objekt/Array mit ein paar werten erstellt, diesen will ich an ein Popupfenster geben, dort verarbeiten (user input) und ein rückgabewert in die aufrufende funktion kriegen.

ist es überhaupt machbar?

der hintergrund - ich versuche beim einfügen von bildern in TinyMCE ein popupFenster mit der gallerie zur wahl öffnen.

danke@advance
MFG
bleicher

P.S:ich glaube mich zu errinern, dass es möglich im HTML ein metha-tag z ube3nutzen, woraufhin alle relativen pfadangaben auf root bezogen werden - ich habe das bei meinen epirementen mit mod_rewrite benutzt, kann aber ums verrecken nciht errinern - weiss da wer was^^?

--
__________________________-

FirefoxMyth
  1. Hallo,

    gegeben ist eine Funktion, in dieser wird ein Objekt/Array mit ein paar werten erstellt, diesen will ich an ein Popupfenster geben, dort verarbeiten (user input) und ein rückgabewert in die aufrufende funktion kriegen.

    Also eine asynchrone Operation. Man wartet auf den User-Input, dann geht es weiter.

    Wie bei allen solchen asynchronen Abläufen kann JavaScript nicht warten, sondern nur bei einem gewissen Ereignis weitermachen – z.B. durch einen Callback.

    ist es überhaupt machbar?

    Ja. Übergebe eine Callback-Funktion, welche vom Script im Popup ausgeführt wird, wenn die Operationen dort beendet sind. Die Callback-Funktion erhält das Ergebnis als Parameter.

    Die Callback-Funktion kann z.B. durch geschickte Verschachtelung (Closure), durch this-Binding oder Currying Zugriff auf die Daten und Werte des Scripts im Ausgangsfenster haben, selbst wenn diese nicht global zugänglich sind.

    P.S:ich glaube mich zu errinern, dass es möglich im HTML ein metha-tag z ube3nutzen, woraufhin alle relativen pfadangaben auf root bezogen werden

    <http://de.selfhtml.org/html/kopfdaten/basis.htm@title=<base href>>

    Mathias

    1. Grüße,

      P.S:ich glaube mich zu errinern, dass es möglich im HTML ein metha-tag z ube3nutzen, woraufhin alle relativen pfadangaben auf root bezogen werden

      <http://de.selfhtml.org/html/kopfdaten/basis.htm@title=<base href>>

      danke - genau das wars^^ gedächtniss...
      MFG
      bleicher

      --
      __________________________-

      FirefoxMyth
  2. Lieber bleicher,

    vielleicht hilft Dir mein Artikel über Custom Filebrowser Implementation weiter? Der ist aber schon ziemlich alt...

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Grüße,

      Lieber bleicher,
      vielleicht hilft Dir mein Artikel über Custom Filebrowser Implementation weiter? Der ist aber schon ziemlich alt...

      danke sehr - es hilft sehr, allerdings werde ich aus dem allerletzten abschnitt nicht schlau -

        
      var FileBrowserDialogue = {  
          init : function () {  
              // Here goes your code for setting your custom things onLoad.  
          },  
          mySubmit : function () {  
              var URL = document.my_form.my_field.value;  
              var win = tinyMCEPopup.getWindowArg("window");  
        
              // insert information now  
              win.document.getElementById(tinyMCEPopup.getWindowArg("input")).value = URL;  
        
              // are we an image browser  
              if (typeof(win.ImageDialog) != "undefined") {  
                  // we are, so update image dimensions...  
                  if (win.ImageDialog.getImageData)  
                      win.ImageDialog.getImageData();  
        
                  // ... and preview if necessary  
                  if (win.ImageDialog.showPreviewImage)  
                      win.ImageDialog.showPreviewImage(URL);  
              }  
        
              // close popup window  
              tinyMCEPopup.close();  
          }  
      }  
        
      tinyMCEPopup.onInit.add(FileBrowserDialogue.init, FileBrowserDialogue);  
      
      

      ich komme nciht drauf, wie ich die Funktion mySubmit auslöse - die ist definitiv nicht einfach aufrufbar. wird sie nach erfüllen der init() automatiosch ausgefüllt? oder löst beliebiges submit im popup sie aus?

      danke@advance
      MFG
      bleicher

      --
      __________________________-

      FirefoxMyth
      1. Lieber bleicher,

        ich komme nciht drauf, wie ich die Funktion mySubmit auslöse

        Du solltest diese Funktion dem Formular als onsubmit-Handler geben, damit sowohl das Klicken eines Buttons, als auch das Benutzen der Enter-Taste das Formular abschicken (aka "das Dialogfenster schließen") kann. Dieses kannst Du in der init-Funktion abwickeln.

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. Grüße,

          Lieber bleicher,

          ich komme nciht drauf, wie ich die Funktion mySubmit auslöse

          Du solltest diese Funktion dem Formular als onsubmit-Handler geben, damit sowohl das Klicken eines Buttons, als auch das Benutzen der Enter-Taste das Formular abschicken (aka "das Dialogfenster schließen") kann. Dieses kannst Du in der init-Funktion abwickeln.

          danke schön - klappt zwar immer noch nicht, aber ich werde nicht aufhören zu versuchen!

          oder bin ich knietief im Fehler?

          Fehlermedlung (gid() ist nur ein alias für document.getElementById() - ich bin schreibfaul^^):

          Uncaught exception: ReferenceError: Undefined variable: mySubmit
          Error thrown at line 5, column 2 in <anonymous function: init>() in http://localhost/dev/images.php?type=image:
             gid("pfad").onsubmit=mySubmit;
          called via Function.prototype.call() from line 5, column 7846 in <anonymous function: _onDOMLoaded>(f) in http://localhost/dev/tiny_mce/tiny_mce_popup.js:
             f.func.call(f.scope,b.editor)
          called via Function.prototype.call() from line 1, column 3720 in <anonymous function: each>(i, f, h) in http://localhost/dev/tiny_mce/tiny_mce.js:
             if(f.call(h,i[j],j,i)===false)
          called from line 5, column 6766 in <anonymous function: _onDOMLoaded>() in http://localhost/dev/tiny_mce/tiny_mce_popup.js:
             tinymce.each(b.listeners,function(f){f.func.call(f.scope,b.editor)});
          called from line 5, column 9232 in <anonymous function: _wait>() in http://localhost/dev/tiny_mce/tiny_mce_popup.js:
             tinyMCEPopup._onDOMLoaded()

            
          <!DOCTYPE html>  
          <html>  
          <head>  
            <title></title>  
            
          	<link rel="stylesheet" type="text/css" href="main.css">  
          	<style type="text/css">  
          	</style>  
          	  
          	<script src="helpers.js"></script>  
          	<script type="text/javascript" src="tiny_mce/tiny_mce_popup.js"></script>  
          	<script type="text/javascript">  
          var FileBrowserDialogue = {  
              init : function () {  
                  // Here goes your code for setting your custom things onLoad.  
          		gid("pfad").onsubmit=mySubmit;  
              },  
              mySubmit : function () {  
                  var URL = gid("test").value;  
                  var win = tinyMCEPopup.getWindowArg("window");  
            
                  // insert information now  
                  win.document.getElementById(tinyMCEPopup.getWindowArg("input")).value = URL;  
            
                  // are we an image browser  
                  if (typeof(win.ImageDialog) != "undefined") {  
                      // we are, so update image dimensions...  
                      if (win.ImageDialog.getImageData)  
                          win.ImageDialog.getImageData();  
            
                      // ... and preview if necessary  
                      if (win.ImageDialog.showPreviewImage)  
                          win.ImageDialog.showPreviewImage(URL);  
                  }  
            
                  // close popup window  
                  tinyMCEPopup.close();  
              }  
          }  
            
          tinyMCEPopup.onInit.add(FileBrowserDialogue.init, FileBrowserDialogue);  
            
          	</script>  
          </head>  
          <body>  
          <form action="" method="get" id="pfad">  
          <input type="text" id="test"></input>  
          <input type="submit">  
          </form>  
          </body>  
          </html>  
            
          
          

          MFG
          bleicher

          --
          __________________________-

          FirefoxMyth
          1. Lieber bleicher,

            ich bin schreibfaul^^):

            Deine Schreibfaulheit ist der Grund, warum es nicht "funzt".

            Vergleiche

              gid("pfad").onsubmit=mySubmit;  
            

            mit

            var FileBrowserDialogue = {
                ...
                mySubmit : function () {

            Jetzt klar?

            Liebe Grüße,

            Felix Riesterer.

            --
            ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
            1. Grüße,

              Deine Schreibfaulheit ist der Grund, warum es nicht "funzt".
              Vergleiche

                gid("pfad").onsubmit=mySubmit;  
              

              mit

              var FileBrowserDialogue = {
                  ...
                  mySubmit : function () {
              Jetzt klar?

              aaah! schande über mein haupt >_> - danke sehr!
              MFG
              bleicher

              --
              __________________________-

              FirefoxMyth