2016-08-10 4 views
-1

Um einen Link zu bestimmten Dateien einzufügen, möchte ich dem Link-Dialog einen Button hinzufügen, der meinen eigenen php-Dateibrowser öffnet.CKEditor: Wert zurück an Link-Plugin übergeben

In diesem Dateibrowser kann ich bestimmte Verzeichnisse durchsuchen, um schließlich eine PDF-Datei auszuwählen.

Durch Klicken auf eine Datei möchte ich die URL dieser Datei an das link-dialogs URL-Feld übergeben. Und das ist der Punkt, an dem ich nicht weiter komme.

Die URL, die ich beim Klicken auf die Datei alarmiere, ist diejenige, die ich brauche. Alles, was ich brauche, ist das Javascript, um es an das URL-Feld des Openers zu übergeben. Ich habe mehrere vorgeschlagene Lösungen ausprobiert, die ich in diesem Forum gefunden habe, aber nichts half.

In meinem Filebrowser habe ich eine Liste von Dateien. Jede Datei hat einen Link wie diesen:

<a href="javascript:passvalue('*my_file_with_path*');">*filename*</a> 

Dies ist Javascript Teil ich in meinem Dateibrowser versucht:

<script> 
    function passvalue(url) { 
     alert (url); 
     opener.SetValue(url, 'url'); 
     window.close(); 
    } 
</script> 

Das Skript weist den richtigen Wert. Aber die nächste Zeile gibt den Wert nicht zurück.

Anstelle von "opener.SetValue (url, 'url');" Ich habe auch versucht window.opener.CKEDITOR.tools.callFunction(ckeditorfuncnum, url);
mit dem ckeditorfuncnum an das Skript übergeben und
opener.SetUrl(url);

UPDATE: es scheint, als ob der zweite Versuch (‚window.opener.CKEditor ...‘) die richtige wäre. Da in meinem Eingabefeld kein Wert angezeigt wird, habe ich versucht, eine Fehlermeldung zurückzugeben ... Die Fehlermeldung wird im Fenster mit den CKEditor-Feldern angezeigt.

+0

Sie den Code der Lösungen, die Sie versucht haben, schreiben müssen. Stackoverflow soll Ihnen keinen freien Code geben. – Christophvh

+0

Ich habe verschiedene Optionen ausprobiert, die ich in diesem Forum gefunden habe: (URL enthält den zurückzusendenden Wert) - "opener.SetUrl (url);" - "opener.SetValue (url, 'url');" - "window.opener.CKEditor.tool.callFunction (funcnum, url);" (funcum enthält den Wert, der an das Skript gesendet wird) – mdz

+0

Aktualisieren Sie Ihren ursprünglichen Beitrag und fügen Sie so viele Codes wie möglich hinzu, die für Ihre Frage relevant sind. Es ist fast unmöglich, Ihre Frage mit den von Ihnen gegebenen Informationen zu beantworten – Christophvh

Antwort

0

Für alle, die hier in das gleiche Problem laufen könnte, ist die Lösung:

function passvalue(url) { 
    var dialog = window.opener.CKEDITOR.dialog.getCurrent(); 
    dialog.setValueOf('info', 'url', url); 
    dialog.setValueOf('info', 'protocol', 'http://'); 
    window.close(); 
    }