2012-04-04 17 views
1

ich eine URL von einem jQuery Dialog zurück zu einem CKEditor Dialog passieren versuchen.Wie URL von jQuery Dialog zu übergeben CKEditor Dialog

Sowohl CKEditor als auch jQuery-Dialoge funktionieren.

Das Problem ist, dass ich nicht weiß, wie CKEditorFuncNum an den Server übergeben wird. Ich tauchte in den Quellcode und suchte nach 'CKEditorFuncNum' und fand einen Weg, um auf diese Variable zuzugreifen.

Jetzt bekomme ich den Fehler:

Uncaught TypeError: Cannot call method 'getDialog' of undefined 


Dies ist der Workflow:

  • Aufruf CKEditor Dialog [OK]
  • Aufruf jQuery-Funktion, die ein Ajax-Request macht [OK]
  • Aufruf jQuery Dialog mit der co ntent der Ajax-Request [OK]
  • schließen Dialog jQuery und URL übergeben zurück zu CKEditor Dialog (URL-Feld) < - hier ist das Problem


ich auf die Schaltfläche Durchsuchen geändert rufen eine jQuery Funktion (jQuery Popup)

... 
{ 
    type : 'button', 
    id : 'browseInternal', 
    label : 'jQuery Popup', 
    onClick :function() { 
    var funcNum = this.getDialog().getParentEditor()._.filebrowserFn; 
    showJQueryPopUp(funcNum); 
    } 
} 
... 


Die jQuery-Funktion erstellt eine get-Anforderung und übergibt den CKEditorFuncNum-Wert. Wie kann ich auf den CKEditorFuncNum-Wert zugreifen? (siehe unten)

function showJQueryPopUp(funcNum) { 
    ajax_url = '../../../site_links?CKEditorFuncNum=' + funcNum; 
    $.get(ajax_url, function(data) { 
     $('#my_dialog_content').html(data); 
     $('#my_dialog').dialog('open'); 
    }); 
}; 


Die Ajax-Anforderung gibt eine Liste von URLs und einige JavaScript-Code:

<a href="#" onclick="modify_link('http://www.google.com'); return false;"> 
    Google 
</a> 
<a href="#" onclick="modify_link('http://www.yahoo.com'); return false;"> 
    Yahoo 
</a> 
<a href="#" onclick="modify_link('http://www.microsoft.com'); return false;"> 
    Microsoft 
</a> 

<script type='text/javascript'> 
    function modify_link(url) { 
    window.parent.CKEDITOR.tools.callFunction(<%= @funcNum %>, url, ''); 
    } 
</script> 



Aufruf window.parent.CKEDITOR. tools.callFunction (...); Ergebnisse in dem folgenden Fehler:

Uncaught TypeError: Cannot call method 'getDialog' of undefined 


Wie resove ich diesen Konflikt?

Ist der Bereich falsch?

Wie bekomme ich den CKEditor-Dialog?

Wie fülle ich das URL-Feld des CKEditor-Dialogfelds mit der ausgewählten URL aus dem jQuery-Dialogfeld?


Ich würde mich über jeden Hinweis freuen. Vielen Dank.

Antwort

0

Ok, hier ist, wie ich es gelöst:

Passing Werte zurück zum Dialog window.parent.CKEDITOR.tools.callFunction...); mit nicht für mich arbeiten. Also habe ich nach einem anderen Weg gesucht, um einen Wert an den CKEditor-Dialog zurückzugeben.

I definiert eine Callback-Funktion (ref) direkt vor dem jQuery-Dialog (showJQueryPopUp()) Aufruf:

... 
{ 
    type : 'button', 
    id : 'browseInternal', 
    label : 'jQuery Popup', 
    onClick :function() { 
     var dialog = this.getDialog(); 
     var selected_url = dialog.getContentElement('info', 'url').getValue(); 

     var ref = CKEDITOR.tools.addFunction(
      function(url) 
      { 
       dialog.getContentElement('info','url').setValue(url); 
      }); 

     var funcNum = this.getDialog().getParentEditor()._.filebrowserFn; 
     var editor_name = this.getDialog().getParentEditor().name; 
     showJQueryPopUp(funcNum, editor_name, ref, selected_url); 
    } 
} 
... 


ich eine Ajax-Anfrage machen vorbei funcNum, ref und selected_url. (ref ist nur eine Zahl)

function showJQueryPopUp(funcNum, editor_name, ref, selected_url) { 
    var ajax_url = '../../../site_links?CKEditorFuncNum=' + funcNum + '&ref=' + ref + '&selected_url=' + selected_url; 
    $.get(ajax_url, function(data) { 
     $('#my_dialog_content').html(data); 
     $('#my_dialog').dialog('open'); 
    }); 
}; 


Das serverseitige Skript die Parameter extrahiert und übergibt sie der Ansicht (@ref):

<a href="#" onclick="modify_link('http://www.google.com'); return false;"> 
    Google 
</a> 
<a href="#" onclick="modify_link('http://www.yahoo.com'); return false;"> 
    Yahoo 
</a> 
<a href="#" onclick="modify_link('http://www.microsoft.com'); return false;"> 
    Microsoft 
</a> 
<script type='text/javascript'> 
    function modify_link(url) { 
    CKEDITOR.tools.callFunction(<%= @ref %>, url); 
    }