Dotclear

Vous n'êtes pas identifié(e).

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2015-02-04 10:19:58

Flagada15
Membre
Inscription : 2011-09-08

Adaptation plugin galleryinsert à CKEditor

Bonjour,

Je suis en train d’essayer d'adapter mon plugin galleryinsert au nouvel éditeur CKE mais cela ne va pas sans mal :)

J'ai bien regardé le post de nikrou et j'avoue que ça m'a bien aidé mais si je comprend bien cela demande tout de même pas mal de changement sur les plugins existants.
Aujourd’hui le popup de mon plugin est géré par un fichier popup.php appelé par un window.open en fonction de trois modes wiki, whtml et wysiwyg puis le retour de ce popup est intégré au billet par des this.encloseSelection ou des document.createTextNode en fonction du mode d'édition.
Pensez-vous qu'il soit possible de conserver au maximum l'architecture d'un plugin actuel avec CKEditor ? Est-ce qu'on peut utiliser une fenetre externe ou est-ce qu'on est obligés de passer par un CKEDITOR.dialog ?

Merci d'avance pour votre aide
a+
Fred

Hors ligne

#2 2015-02-04 10:30:37

nikrou
Membre
Inscription : 2007-10-02
Site Web

Re : Adaptation plugin galleryinsert à CKEditor

Bonjour,

non tu peux continuer à utiliser une fenêtre externe comme pour le gestionnaire de média par exemple.


Je préfère être atteint de parkinson plutôt qu'alzheimer : je prefère renverser un peu de ma bière plutôt qu'oublier de la boire !

Présentez vos photos simplement avec Phyxo !

Hors ligne

#3 2015-02-04 13:12:38

Flagada15
Membre
Inscription : 2011-09-08

Re : Adaptation plugin galleryinsert à CKEditor

ok c'est bon je ne sais pas si j'ai tout fait dans les règles de l'art mais ça a l'air de marcher :)
j'ajoute donc un bouton avec un

$core->addBehavior('ckeditorExtraPlugins', array('GalleryInsertBehaviors', 'ckeditorExtraPlugins'));
class GalleryInsertBehaviors
{
	public static function ckeditorExtraPlugins(ArrayObject $extraPlugins, $context)
	{
		$extraPlugins[] = array(
			'name' => 'GalleryInsert',
			'button' => 'GalleryInsert',
			'url' => DC_ADMIN_URL.'index.php?pf=GalleryInsert/cke-addon/'
		);
	}
}

dans le répertoire cke-addon je crée un fichier plugin.js contenant la commande d'ouverture du popup

CKEDITOR.plugins.add('GalleryInsert', {
    init: function(editor) {
        popup_params={'width':760,'height':500};
	open_url='plugin.php?p=GalleryInsert&popup=1';
	editor.addCommand('GalleryInsertCommand', {
		exec:function(editor){
			$.toolbarPopup(open_url,popup_params);
		}
	});
	editor.ui.addButton("GalleryInsert", {
            label: "GalleryInsert",
            icon: this.path+'icon.png',
            command: 'GalleryInsertCommand',
            toolbar: 'insert'
        });
    }
});

et dans le fichier popup du plugin au moment de sortir le résultat je fais un test pour savoir où insérer le résultat

if ((window.opener.the_toolbar !== undefined)) {
	var tb = window.opener.the_toolbar;
	var data = tb.elements.GalleryInsert.data;
	data.texte = texte;
	tb.elements.GalleryInsert.fncall[tb.mode].call(tb);
}
if ((window.opener.CKEDITOR !== undefined)) {
	var editor_name=window.opener.$.getEditorName();
	var editor=window.opener.CKEDITOR.instances[editor_name];
	editor.insertText(texte);
}

Hors ligne

Vous n'êtes pas identifié(e).

Pied de page des forums

Sites map