Błąd w Firefoksie:
Kod
q is not a constructor
Po podpięciu tiny_mce_src.js zamiast skompresowanego tiny_mce.js wyskakuje
Kod
o is not a constructor
(9377 out of range 1262)
tiny_mce_src.js (wiersz 9377)
Mam najnowszą wersję TinyMCE. Problem występuje, kiedy otwieram news do edycji.
Tak wygląda skrypt ładujący TinyMCE na żądanie
//o - obiekt textarea
//bbcode - tutaj i tak nie stosuję tego argumentu
function Editor(o, bbcode)
{
var that = this;
include('plugins/tinymce/tiny_mce.js', function() {
//Reszta kodu wykona się po załadowaniu pliku tiny_mce.js
if(!o.id) o.id = o.name;
that.o = tinymce.add(new tinymce.Editor(o.id, {
//Global settings
dialog_type: 'modal',
gecko_spellcheck: true,
document_base_url: document.baseURI,
//Entities - UTF-8 needs only critical characters
entities: '160,nbsp,38,amp,60,lt,62,gt',
//Theme
theme: 'advanced',
theme_advanced_resizing: true,
theme_advanced_toolbar_location: 'top',
theme_advanced_toolbar_align: 'left',
theme_advanced_statusbar_location: 'bottom',
//Formats
theme_advanced_blockformats: 'p,div,h3,h4,blockquote,dt,dd,code,samp',
//Plugins
plugins: 'safari,table,fullscreen,pagebreak,media,emotions,contextmenu,searchreplace',
//Buttons
theme_advanced_buttons1: 'formatselect,fontselect,fontsizeselect,table,image,media,charmap,emotions,|,repl
ace,|,fullscreen,code,help,|,undo,redo',
theme_advanced_buttons2: 'cut,copy,paste,removeformat,|,bold,italic,underline,strikethrough,|,sub,sup,|,ju
stifyleft,justifycenter,justifyright,justifyfull,|,numlist,bullist,|,blockquote,l
ink,|,forecolor,backcolor',
theme_advanced_buttons3: ''
}));
that.o.render();
});
}
Editor.prototype.emots = function() {};
Editor.prototype.protect = function() {};
Editor.prototype.preview = function(opt,where,text) {
if(text == undefined) text = this.o.value;
if(this.box == undefined && !where)
{
this.box = document.createElement('div');
this.box.className = 'preview';
this.o.getElement().form.parentNode.insertBefore(this.box, this.o.getElement().form)
}
this.box.innerHTML = this.o.getContent();
this.box.scrollIntoView()
};
A to już sekcja <body>
f = document.forms['news']; //tak, to obiekt formularza
e = new Editor(f.txt); //tutaj ładujemy TinyMCE, f.txt istnieje
e.emots(); //jak wydać w poprzednim fragmencie, linijka nic nie robi
e.protect(); //też nic nie robi
var e2 = new Editor(f.text); //drugi edytor, f.text istnieje
e2.emots();
Nie wywołuję TinyMCE.init(). Wydaje mi się, że nie ma potrzeby.
Co jest przyczyną problemu? Czy to bug w TinyMCE, czy moja wina?A tak przy okazji zapytam. TinyMCE będzie jako wtyczka w CMS-ie. Chcę stworzyć możliwość podpięcia dowolnego edytora, a więc fragment kodu dołączający bibliotekę wygląda tak:
if(!empty($cfg['wysiwyg'])) {
$content->addScript('plugins/'.$cfg['wysiwyg'].'/loader.js');
}
else
{
/* załaduj standardowy edytor */
}
1. Czy jest sens wspierać inne edytory niż TinyMCE?
2. Co myślicie o opcji, aby admin mógł włączyć WYSIWYG tylko wybranym redaktorom?
3. Jak ulepszyć wyżej przedstawiony sposób ładowania edytora TinyMCE?
„Jesteśmy różni, pochodzimy z różnych stron Polski, mamy różne zainteresowania, ale łączy nas jeden cel. Cel ten to Ojczyna, dla której chcemy żyć i pracować.” Roman Dmowski