2010-04-05 13 views
1

J'utilise InnovaStudio WYSIWYG Editor et j'essaie de remplacer Asset Manager d'InnovaStudio par CKFinder. Il y a une ligne dans la configuration de l'éditeur pour l'URL à utiliser pour le gestionnaire d'actifs. Je l'ai signalé à CKFinder. La partie que je n'arrive pas à faire fonctionner consiste à remplir le champ avec le chemin du fichier à double-clic depuis CKFinder.Intégration de CKFinder avec InnovaStudio WYSIWYG Editor

Il semble utiliser le paramètre 'func' pour spécifier la fonction de rappel. L'URL que j'appelle est:

L'éditeur WYSIWYG d'InnovaStudio fournit la fonction de rappel setAssetValue(v) pour le réglage de la valeur du champ. Le paramètre v doit contenir l'URL. CKFinder apparaît comme prévu lorsqu'il est appelé, mais aucun double-clic sur les vignettes ou l'option "select" du menu contextuel ne fonctionne. Le comportement normal/attendu est que CKFinder se ferme et le champ cible est rempli avec l'URL pour l'actif sélectionné.


Informations additionnelles: Le InnovaStudio WYSIWYG Editor a un "pop-up" pour ajouter une image ou d'un fichier flash au contenu. Cette fenêtre est dans un iframe. Quand il appelle CKFinder (ou son propre gestionnaire d'actifs), c'est aussi dans un iframe. Il semble que CKFinder recherche dans la portée de la fenêtre principale plutôt que l'iframe image/flash qui contient réellement le champ qui doit être rempli.

Répondre

0

(sorte de) Solution

J'ai découvert, en creusant à travers le DOM avec Firebug, que InnovaStudio crée un objet ISWindow où il met les références aux fenêtres qu'il engendre. J'ai modifié ma fonction de rappel pour boucler sur cet objet et appeler la fonction setAssetValue() pour le iframe approprié. Cela a fonctionné, mais CKEditor ne s'est toujours pas fermé. Je suppose que c'est parce qu'il ne "savait" pas comment fermer l'iframe qu'il était à l'intérieur. Y at-il un moyen de dire à CKFinder comment fermer la fenêtre à l'intérieur? Je peux envisager d'autres cas où l'utilisation d'un iframe serait utile.

Je préférerais avoir CKFinder pour utiliser l'affichage iframe, mais j'ai finalement réussi à utiliser le popup CKFinder standard.

ligne de configuration Editeur:oEdit1.cmdAssetManager = "parent.BrowseServerIS();";

Fonctions de soutien:

// InnovaStudio WYSIWYG Editor version 
function BrowseServerIS() 
{ 
    // You can use the "CKFinder" class to render CKFinder in a page: 
    var finder = new CKFinder(); 
    // The path for the installation of CKFinder (default = "/ckfinder/"). 
    finder.BasePath = '/common/ckfinder/'; 
    // Name of a function which is called when a file is selected in CKFinder. 
    finder.SelectFunction = SetFileFieldIS; 
    // Launch CKFinder 
    finder.Popup(); 
} 

// InnovaStudio WYSIWYG Editor version 
function SetFileFieldIS(fileUrl, data) 
{ 
    for (var i in ISWindow.objs) { 
     if ((null != ISWindow.objs[i].rt.frm.contentWindow) 
      && ('function' == typeof ISWindow.objs[i].rt.frm.contentWindow.setAssetValue)) { 
     ISWindow.objs[i].rt.frm.contentWindow.setAssetValue(fileUrl); 
     } 
    } 
} 
+0

Je viens de vérifier que ce code fonctionne avec InnovaStudio WYSIWYG Editor 5.3 – Sonny