Gestione di media (immagini e documenti)
Una delle fondamentali mancanze dalla versione di base dell’editor TinyMCE è il tool di gestione di immagini, documenti e links. Se però avete provato TinyMCE attivando l’interfaccia avanzata, avrete notato che è presente un bottone di aggiunta delle immagini, bottone che però, nella versione “non modificata” dello script, come chiedeva Pino, solleva l’errore
Callback function: fileBrowserCallBack could not be found.
oppure apre una popup recitante “Example of filebrowser callback: field_name: src, url: , type: image“, esattamente come la seguente

E allora, come è possibile caricare le immagini nella textarea di TinyMCE?
In seguito vedremo come integrare un caricatore di immagini (e documenti) attraverso l’uso di due plugin esterni e di uno script da noi realizzato.
MCFileManager e MCImageManager
Questi due componenti (con licenza commerciale di circa €30) possono essere utilizzati anche in versione stand-alone (da soli) senza quindi essere legati all’editor HTML WYSIWYG TinyMCE. L’integrazione di questi due componeneti è decisamente semplice, come mostrato dalle guide presenti nel wiki (Installazione di MCFileBrowser e Installazione di MCImageBrowser).
L’installazione prevede semplicemente di caricare i due prodotti nella cartella plug-in di TinyMCE (/tiny_mce/plugins/), aggiungerli alla direttiva dei plugin nella pagina come nel prossimo listato e configurare correttamente i file di configurazione dei due componenti (config.php) per selezionare e impostare le cartelle di destinazione dei files.
Integrazione
tinyMCE.init({ ...plugins : "imagemanager,filemanager"});
Unica pecca di questi due splendidi componenti (che potete provare nella pagina di Moxiecode) è che sono a pagamento.
iBrowser
(Non funziona con la versione 3.0 di TinyMCE)
iBrowser è un software di “terze parti” prodotto da Jaeger Consulting, che pare però aver smesso di produrlo nell’ormai lontano 5 Agosto 2005. Questo prodotto funziona, da quanto letto nei post trovati per la rete, correttamente con TinyMCE fino alla versione 2.X. Ho deciso di non provarlo soprattutto visto che la versione 3.0 di TinyMCE è in Release Candidate e quindi quasi pronta a “sbarcare” sulle nostre piattaforme.
Se avete modo di provarlo, come ultima spiaggia o anche solo per diletto, fatemi sapere come lo avete trovato.
CustomFileBrowser
Lo chiamo così, con un nome che indica chiaramente che questo è il vostro file browser, unico e raro (un po’ come l’amaro Averna), creato da voi. Qui le cose si complicano un po’, ma vediamo di riuscire a fare funzionare correttamente tutto.
La funzione fileBrowserCallBack creata dagli sviluppatori di TinyMCE è un’interfaccia (chi ha studiato Java o un altro linguaggio di programmazione ad oggetti dovrebbe capire immediatamente di cosa sto parlando) su cui implementare la propria funzione.
Una funzione tipo (inserita nella pagina del form, tra i tag <script> di TinyMCE) potrebbe avere questa forma:
var URLdiRitorno = "";
var finestraBrowser;
var nomeCampoBrowser;
function fileBrowserCallBack( field_name, url, type, win ){
window.open('http://vostro_sito/upload.php',
'', 'width=600,height=400');finestraBrowser = win;
nomeCampoBrowser = field_name;
}
function ritornoBrowser(url) {
finestraBrowser.document.forms[0].elements[nomeCampoBrowser].value = url;
}
Essendo TinyMCE sviluppato in Javascript (linguaggio di programmazione lato client, ovvero il lato dell’utente) non possiede uno strumento di upload di documenti, capace di interagire lato server (server side). Andiamo così a caricare una pagina da voi creata, che convenzionamente ho chiamato upload.php, attraverso la funzione Javascript window.open: upload.php è una pagina che vi deve permettere di caricare i vostri file sul server (non necessariamente) e passarli successivamente alla finestra di TinyMCE.
Supponiamo che la vostra pagina popup creata ad hoc visualizzi le miniature delle immagini presenti in una determinata cartella del server: ogni immagine potrebbe essere linkata a TinyMCE via javascript con la chiamata a ritornoBrowser nel metodo onclick della stessa immagine.

Esempio:
<img src="image.jpg" onclick="opener.opener.ritornoBrowser('http://vostro_sito/image.jpg');" />
Se non avete mai avuto la possibilità di programmare in ASP o, meglio, in PHP diventa abbastanza complicato riuscire ad implementare una pagina di upload correttamente funzionante.
17 May 2009 alle 10:35
Bel sito!
27 July 2009 alle 22:38
Ottimo il sito che mi è stato molto utile in fase di prima configurazione del componente.
Ora però sto tentando di duplicare il plugin AdvLink per poter utilizzare due file separati di risorse esterne (link_list (che funziona) e doc_list). Anche cambiando i riferimenti di Advlink e prendendo spunto da quel poco di codice del plugin “example”, non riesco nemmeno a fare in modo che si veda il nuovo pulsante. Puoi dirmi qual’è il trucco, od è una cosa improponibile ? Grazie anticipatamente dell’eventuale aiuto. Moreno
31 August 2009 alle 11:55
Girando per la rete ho trovato un image manager di nome tinybrowser che funziona perfettamente ed è gratuito ma in inglese. Se è consentito posto il link.
31 August 2009 alle 12:51
Certo che è consentito, non devi neanche chiedere.
31 August 2009 alle 16:23
eccolo qui
http://www.lunarvis.com
fammi sapere che ne pensi, io lo trovo interessante, fcile e completo
4 September 2009 alle 5:25
Purtroppo il tempo è tiranno e le mie conoscenze limitate, ma a me (ho provato in locale) non funziona.
Non riesco ad interfacciare correttamente TinyMCE e TinyBrowser. I permessi di scrittura alle cartelle ci sono …
@Giancarlo: E’ possibile avere un piccolo esempio?
@Simone: Ti ricordo che la pizza (+ birretta) è nel forno!
Bye a tutti …
5 September 2009 alle 16:42
Dunque, se mi è consentito rispondo a Graziano e spero che sia utile anche per altri.
Premessa – per quanto mi riguarda non mi limito a fare dei test soltanto in locale poiché il più delle volte non funzionano come in rete.
All’interno della cartella tinybrowser c’è un file readme dove è spiegato perfettamente il suo funzionamento con tinymce (TinyBrowser Installation Method 1)
1) Copiare la cartella tinybrowser e il suo contenuto nella cartella plugins di TinyMCE.
2) dopo il codice javascript
inserire il seguente
N.B. attenzione ai percorsi che assegnate,, devono essere relativi alla vostra istallazione (per quanto mi riguarda uso sempre dgli indirizzi assoluti per non sbagliarmi es. http://miosito/…)
3) aggiungere questa linea di codice nel file dove chiamate TinyMCE, in genere dopo le dichiarazioni dei buttons. attenzione a non dimenticare la virgola dopo (come al solito la sintassi mi ha fatto impazzire)
file_browser_callback : “tinyBrowser”,
4) Edittare il TinyBrowser configuration file se necessario(config_tinybrowser.php).
il settaggio più importante è il percorso per i file da uploadare (dato che questa cartella viene creata in automatico dal TinyBrowser se non esiste, io non ho toccato questo file).
Se hai un server Unix-based. credo si debbano cambiare i permessi $tinybrowser['unixpermissions']. (non nel mio caso)
5) questo e tutto! ora cliccando sui bottoni image, media e link dovrebbe apparire il TinyBrowser.
Ovviamente il theame del tinymce deve essere un advanced dove sono presenti i buttons image media ecc…
ciao a tutti, spero sia utile
8 September 2009 alle 7:57
Grazie a tutti per la collaborazione …
La pagina “editor.php” funziona, le icone di tinymce ci sono, tinybrowser è al posto giusto, ma qualcosa mi sfugge.
Quando seleziono l’icona “alberello” (insert/edit image), mi si apre la finestra “insert/edit image” e di fianco al campo “image URL” appare l’icona “browser” (quindi ci siamo …), ma cliccandoci sopra NON MI SI APRE NULLA.
Quale parametro dovrei settare per far funzionare il tutto … Grazie.
Bye
11 September 2009 alle 19:38
se tutto è nel punto giusto la chiamata dovrebbe essere il punto 3 che ti avevo elencato…
3) aggiungere questa linea di codice nel file dove chiamate TinyMCE, in genere dopo le dichiarazioni dei buttons. attenzione a non dimenticare la virgola dopo (come al solito la sintassi mi ha fatto impazzire)
file_browser_callback : “tinyBrowser”,
Di seguito ti riporto anche la mia chiamata magari ti può essere di aiuto.
tinyMCE.init({
// General options
mode : “exact”,
elements : “testonotizia”,
theme : “advanced”,
language : “it”,
plugins : “safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template”,
// Theme options
theme_advanced_buttons1 : “save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull”,
theme_advanced_buttons2 : “cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor”,
theme_advanced_buttons3 : “tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen”,
theme_advanced_buttons4 : “insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak”,
theme_advanced_toolbar_location : “top”,
theme_advanced_toolbar_align : “left”,
theme_advanced_statusbar_location : “bottom”,
theme_advanced_resizing : true,
// Example content CSS (should be your site CSS)
content_css : “css/content.css”,
// Drop lists for link/image/media/template dialogs
template_external_list_url : “lists/template_list.js”,
external_link_list_url : “lists/link_list.js”,
external_image_list_url : “lists/image_list.js”,
media_external_list_url : “lists/media_list.js”,
file_browser_callback : “tinyBrowser”,
// Replace values for the template plugin
template_replace_values : {
username : “Some User”,
staffid : “991234″
}
});
13 September 2009 alle 22:34
Grazie sempre per la vostra disponibilità, ma dopo due giorni di lotta con il codice … ancora nulla!!!
La possibilità di utilizzare “tinybrowser” come indicato da Giancarlo mi porta sempre a quanto indicato nel mio precedente commento.
L’ultima parte del codice poi non mi è chiara …
// Drop lists for link/image/media/template dialogs
template_external_list_url : “lists/template_list.js”,
external_link_list_url : “lists/link_list.js”,
external_image_list_url : “lists/image_list.js”,
media_external_list_url : “lists/media_list.js”,
file_browser_callback : “tinyBrowser”,
// Replace values for the template plugin
template_replace_values : {
username : “Some User”,
staffid : “991234″
}
Ho cercato di riprendere anche la soluzione proposta da Simone attraverso la funzione fileBrowserCallBack, ma anche in questo caso trovo un muro!!
Riesco a creare un file php che legge la cartella images in un array (potrei anche arrivare a mostrare delle miniature), ma non capisco come si riesca a collegare il tutto.
Buona giornata a tutti!!!
26 September 2009 alle 19:30
Ciao Simone, ciao a tutti
dopo un anno mi rifaccio vivo per… riaffrontare il medesimo problema che per vari motivi l’anno scorso non ho potuto concludere.
Ho provato a creare e personalizzare una gestione db con tinymce e va tutto bene.
Ho provato ad integrare il tuo suggerimento fileBrowserCallBack con la mia funzione di upload (un pò diversa quindi dall’esempio della scelta img)
ma…
un pò come dice graziano, carico l’immagine con la mia funzione, ma non so come passare il tutto a tiny
Quello che io ho fatto è:
-inserire file_browser_callback : “fileBrowserCallBack”, nella pagina di editor
-inserire la funzione
var URLdiRitorno = “”;
var finestraBrowser;
var nomeCampoBrowser;
function fileBrowserCallBack( field_name, url, type, win ){
window.open(‘http://www.miosito.it/upload_persits1.asp’,
”, ‘width=600,height=400′);finestraBrowser = win;
nomeCampoBrowser = field_name;
}
function ritornoBrowser(url) {
finestraBrowser.document.forms[0].elements[nomeCampoBrowser].value = url;
}
-quando clicco sul pulsante immagine mi compare la finestra di tiny con il pulsantino di sfoglia
-clicco sul pulsantino di sfoglia
-parte il mio programma di upload
-carico l’immagine sul server
-e poi… come faccio a tornare a tiny?
-ho provato pure a mettere dopo l’upload una pagina che mi visualizza l’immagine appena caricata e ho messo pure:
<img src="/public/test/” onClick=”opener.opener.ritornoBrowser(‘http://www.miosito.it/public/test/’);
ma cliccando sull’immagine non succede nulla
Forse devo mettere un link ad una pagina? quale?
—
Ho provato pure la soluzione proposta da Giancarlo:
-tutta la directory tinybrowser copiata dentro la directory D:\www\miosito.it\tinymce\jscripts\tiny_mce\plugins\
-inserita la riga
file_browser_callback : “tinyBrowser”,
dentro la pagina di editor
-Ma cliccando sul pulsante sfoglia NON succede nulla come a graziano
grazie
Pino
9 October 2009 alle 13:00
nessun passante mi sa dare un aiuto?
Simone dove sei?
ciao
8 October 2010 alle 17:21
In merito al link indicato da Giancarlo:
http://www.lunarvis.com
mi sembra che il software in questione sia a pagamento.
Felicità a tutti.
12 January 2011 alle 16:23
Ciao a tutti,
ottima la spiegazione, ma l’ultima parte dove cliccando sull’immagine dovrei tornare all’inizio ed avere l’immagine inserita non funziona:
function ritornoBrowser(url) {
finestraBrowser.document.forms[0].elements[nomeCampoBrowser].value = url;
}
come nomecampobrowser quale va specificato?
20 July 2011 alle 23:45
l’errore sta nel codice
Esempio:
il link per mettere l’immagine è WINDOW.OPEN e poi bisogna far chiudere il popup:
PROVA INSERIMENTO
3 August 2011 alle 14:21
Ciao!
Ho un problema…ho inserito TinyMCE in una pagina HTML secondo istruzioni (almeno credo…), ma riesco a visualizzare l’editor solo su IE e Chrome. A me invece interessa maggiormente su Firefox (versione 5.0). Dove sbaglio?
Di seguito posto la parte relativa all’head e poi quella del body.
HEAD:
tinyMCE.init({
// General options
mode : “textareas”,
theme : “advanced”,
plugins : “autolink,wordcount,advlist,autoresize,autosave,bbcode,fullpage,legacyoutput,tabfocus,lists,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template”,
// Theme options
theme_advanced_buttons1 : “save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect”,
theme_advanced_buttons2 : “cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor”,
theme_advanced_buttons3 : “tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen”,
theme_advanced_buttons4 : “insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,|,insertfile,insertimage”,
theme_advanced_toolbar_location : “top”,
theme_advanced_toolbar_align : “left”,
theme_advanced_statusbar_location : “bottom”,
theme_advanced_resizing : true,
// Skin options
skin : “o2k7″,
skin_variant : “silver”,
// Example content CSS (should be your site CSS)
content_css : “css/example.css”,
// Drop lists for link/image/media/template dialogs
template_external_list_url : “js/template_list.js”,
external_link_list_url : “js/link_list.js”,
external_image_list_url : “js/image_list.js”,
media_external_list_url : “js/media_list.js”,
// Replace values for the template plugin
template_replace_values : {
username : “Some User”,
staffid : “991234″
}
});
BODY:
Grazie in anticipo,
Luca
3 August 2011 alle 15:43
…ho dimenticato un pezzo:
BODY:
3 August 2011 alle 15:49
…ce la posso fare eh…
3 August 2011 alle 15:54
provo senza ”
textarea name=”content” style=”width:100%” cols=”100″ rows=”28″ >
/form>
se non si vede, cmq, il codice è quello dell’esempio riportato sul sito di tiny
25 March 2012 alle 21:10
Salve,
E’ la prima volta che cerco di utilizzare un editor all’interno di una pagina web, lo vorrei mettere all’interno di una pagina wordpress, e per questo sto provando a metterlo prima come semplice file html, ma appena aggiungo
theme : “advanced”,non visualizzo più niente. Sono sicuro di aver messo l’indirizzo giusto allo script.Qui trovate il link dove sto facendo le prove.
Secondo voi perché non visualizzo correttamente tutto, in fondo non basterebbe copiare/incollare il codice di esempio e sostituire il percorso dove è installato lo script?
3 January 2013 alle 13:45
Ciao Simone e complimenti per le utili informazioni sul TinyMCE
l’ho istallato correttamente sul mio sito WP.
Lo utilizzo inserendo immagini, testi con caratteri e dimensioni diversi. Salvo e tutto ok.
quando visualizzo il sito, pero’, non mi fa vedere le immagini e perde tutte le formattazioni, dimensioni del testo.
per vedere la pagina corretta devo cliccare sull’articolo per visualizzarlo correttamente.
Io utilizzo Columbus Theme.
E’ una configurazione e del Tiny o del Columbus ?
sono un neofita di WP come avrai inteso.
grazie delle info
paolo