2010-12-10 13 views
41

Zainstalowałem TinyMCE, wszystko działało świetnie. I następnie wykorzystywane Google Zamknięcie pakować mojej witryny JavaScript wraz z TinyMCE_srcŚcieżki TinyMCE, Jak określić, gdzie należy załadować rzeczy takie jak editor_plugin.js

Problem mam jest to, że TinyMCE jest teraz wykonywanie połączeń do:

plugins/paste/editor_plugin.js 
themes/advanced/editor_template.js 
langs/en.js 

i że ścieżki, które są używane są nieważne, to są 404'ingowe:

Jak mogę powiedzieć TinyMCE, gdzie iść, aby uzyskać te pliki?

Próbowałem:

relative_urls : false, 
document_base_url : "http://www.site.com/path1/", 

Ale oni nie mają wpływu na powyższych plików.

Doradzam? Dzięki

+0

w moim przypadku , Nie użyłem czegoś takiego jak "Google Closure". Chciałem tylko załadować TinyMCEs dynamicznie. Używam 'jquery.tinymce.js'. Kiedy ładuję TinyMCE, Firebug daje błędy, gdzie jest oczywiste, że JQuery próbuje załadować coś takiego jak '/ _cms/products // langs/en.js' zamiast'/tinymce/langs/en.js' –

+0

Napotkałem ten sam problem podczas pakowania moich plików javascript. Patrząc na źródło TinyMce, które widzi, ma kilka różnych sposobów na znalezienie adresu bazowego do załadowania swoich modułów. Jedną z nich jest wyszukiwanie w hate dom dla adresu, który jest używany do włączenia tiny_mce.js. To nie powiedzie się, gdy dołączymy plik do pakietu. Naprawiłem problem, dodając tinyMCE.baseURL przed moim tinyMCE.init. –

Odpowiedz

4

Jeśli używasz wtyczki jQuery TinyMCE, możesz załadować wszystko ze zdalnej lokalizacji, po prostu dodaj parametr script_url do kodu init. Załaduje wszystko stamtąd, w tym wszelkie skrypty/obrazy/itp.

$('textarea').tinymce({ 
    script_url: 'http://tinymce.moxiecode.com/js/tinymce/jscripts/tiny_mce/tiny_mce.js' 
}); 

Sprawdź to skrzypce, to w tym cała rzecz zdalnie z witryny TinyMCE: http://jsfiddle.net/xgPzS/22/

+0

nie pomaga :(Nie mogę ustalić, z jakiego powodu, ale JQuery nie wywołuje prawidłowego adresu URL, zamiast podać 404, drukuje żądany adres URL ('$ _SERVER ['REQUEST_URI']'), a Firebug pokazuje następujący błąd: 'niepoprawna flaga wyrażeń regularnych p/_cms/products // themes/simple/editor_template.js' (z powodu'/'JQuery myśli, że to wyrażenie regularne :)) –

+0

To nie jest JS, to odpowiedź od serwera :) Serwer po prostu wypisuje adres URL, do którego próbuje dotrzeć JQuery! JQuery "czeka na" kod JS, ale JS nie istnieje w adresie URL, który żąda –

+0

@Hrant Khachatrian: php powinien wyglądać mniej więcej tak: '$ ('textarea') tinymce ({script_url: ' subdirectory/whatever.js '}); 'Jeśli to zrobisz, wygenerowany kod HTML przesłany do przeglądarki będzie zawierał poprawną ścieżkę do skryptu. Zwróć uwagę na cytowanie ciągów znaków przed tagiem php i po nim. – DarthJDG

9

Możesz zmienić podstawowy adres URL dla TinyMCE umieszczając poniższy kod przed inicjowanie TinyMCE.

var tinyMCEPreInit = { 
    suffix: '', 
    base: '/tinymce/', 
    query: '' 
}; 

Jest to użyteczne, jeśli już załadowałeś tinyMCE z połączonego źródła, a ścieżka podstawowa nie została poprawnie znaleziona.

+3

'var tinyMCEPreInit' musi być' window.tinyMCEPreInit' – huyz

76

miałem ten sam problem, i to mogło być łatwo rozwiązać, jeśli byliśmy w stanie określić url bazową pomocą document_base_url.

Alternatywnie, udało mi się określić podstawowy adres URL przed zainicjowaniem tinymce.

tinyMCE.baseURL = "URL_TO/tinymce/jscripts/tiny_mce/";// trailing slash important 

tinyMCE.init({ 
     mode : "textareas", 
     theme : "simple" 
}); 

TinyMCE działa teraz dobrze.

+16

Testowany w najnowszej wersji 4.0b1 - działa! Musiałem również dodać tinyMCE.suffix = '.min'; – dikirill

+4

W wersji 4.0.16 nie dodawaj ukośnego ukośnika. – DanFromGermany

+0

Nie można znaleźć tego dokumentu w dowolnym miejscu. Czy brakuje mi czegoś lub czy jedynym sposobem, aby się tego nauczyć, jest kopanie kodu źródłowego? –

6

Według tego: http://www.tinymce.com/wiki.php/Configuration:theme_url

tinymce.init({ 
    ... 
    theme_url: (document.location.pathname + '/js/tinymce/themes/modern/theme.js').replace("\/\/", "\/"), 
    skin_url: (document.location.pathname + '/js/tinymce/skins/lightgray/').replace("\/\/", "\/"), 
    ... 

Ale trzeba zachować ostrożność ze ścieżkami. Z pomocą document.location.pathname mam katalog główny projektu. Wymień funkcję potrzebną do zastąpienia podwójnego ukośnika pojedynczym ukośnikiem, ponieważ inny serwer może zwrócić "... // serwer/witrynę" LUB "... // serwer/witrynę /" i może to być: "... // serwer/witryna/js ... "LUB" ... // serwer/witryna // js ... ".

+0

Jedyne, co zadziałało dla mnie. 'document_base_url' i' relative_urls' wydawały się nic nie robić. –

0

Zgodnie z dokumentacją TinyMCE 4.x można określić adres URL dokumentu podczas init.

tinymce.init({ 
     document_base_url: "http://www.example.com/path1/" 
}); 

jeśli używasz CodeIgniter, wystarczy użyć base_url()

tinymce.init({ 
     document_base_url: "<?php echo base_url() ?>" 
}); 

Pamiętaj: relative_url musi być prawda w celu jej pracować doskonale inaczej dostaniesz bezwzględnych adresów URL.

Aby uzyskać więcej informacji: http://www.tinymce.com/wiki.php/Configuration:document_base_url

2

Bundle wszystko używając grunt (instrukcje dotyczące github), to po prostu trzeba skonfigurować skąd załadować cały css za pomocą opcji skin_url

tinymce.init({skin_url: window.location.origin + '/css/tinymce'}) 
+1

''./Css/tinymce/lightgray'' pracował dla mnie. –