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
[JAVASCRIPT] pobierz, plaintext
  1. //o - obiekt textarea
  2. //bbcode - tutaj i tak nie stosuję tego argumentu
  3. function Editor(o, bbcode)
  4. {
  5. var that = this;
  6. include('plugins/tinymce/tiny_mce.js', function() {
  7.  
  8. //Reszta kodu wykona się po załadowaniu pliku tiny_mce.js
  9. if(!o.id) o.id = o.name;
  10. that.o = tinymce.add(new tinymce.Editor(o.id, {
  11.  
  12. //Global settings
  13. dialog_type: 'modal',
  14. gecko_spellcheck: true,
  15. document_base_url: document.baseURI,
  16.  
  17. //Entities - UTF-8 needs only critical characters
  18. entities: '160,nbsp,38,amp,60,lt,62,gt',
  19.  
  20. //Theme
  21. theme: 'advanced',
  22. theme_advanced_resizing: true,
  23. theme_advanced_toolbar_location: 'top',
  24. theme_advanced_toolbar_align: 'left',
  25. theme_advanced_statusbar_location: 'bottom',
  26.  
  27. //Formats
  28. theme_advanced_blockformats: 'p,div,h3,h4,blockquote,dt,dd,code,samp',
  29.  
  30. //Plugins
  31. plugins: 'safari,table,fullscreen,pagebreak,media,emotions,contextmenu,searchreplace',
  32.  
  33. //Buttons
  34. theme_advanced_buttons1: 'formatselect,fontselect,fontsizeselect,table,image,media,charmap,emotions,|,repl
    ace,|,fullscreen,code,help,|,undo,redo'
    ,
  35.  
  36. 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'
    ,
  37.  
  38. theme_advanced_buttons3: ''
  39.  
  40. }));
  41. that.o.render();
  42. });
  43. }
  44.  
  45. Editor.prototype.emots = function() {};
  46. Editor.prototype.protect = function() {};
  47. Editor.prototype.preview = function(opt,where,text) {
  48. if(text == undefined) text = this.o.value;
  49. if(this.box == undefined && !where)
  50. {
  51. this.box = document.createElement('div');
  52. this.box.className = 'preview';
  53. this.o.getElement().form.parentNode.insertBefore(this.box, this.o.getElement().form)
  54. }
  55. this.box.innerHTML = this.o.getContent();
  56. this.box.scrollIntoView()
  57. };
[JAVASCRIPT] pobierz, plaintext

A to już sekcja <body>
[JAVASCRIPT] pobierz, plaintext
  1. f = document.forms['news']; //tak, to obiekt formularza
  2. e = new Editor(f.txt); //tutaj ładujemy TinyMCE, f.txt istnieje
  3. e.emots(); //jak wydać w poprzednim fragmencie, linijka nic nie robi
  4. e.protect(); //też nic nie robi
  5.  
  6. var e2 = new Editor(f.text); //drugi edytor, f.text istnieje
  7. e2.emots();
[JAVASCRIPT] pobierz, plaintext

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:
  1. if(!empty($cfg['wysiwyg']))
  2. {
  3. $content->addScript('plugins/'.$cfg['wysiwyg'].'/loader.js');
  4. }
  5. else
  6. {
  7. /* załaduj standardowy edytor */
  8. }
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?