Konfiguracja modułów

0

W zwiazku z brakiem modulu XSLT na serwerze, czesc strony na dev.4programmers.net moze nie dzialac. Tyczy sie to konfiguracji modulow oraz edycji tekstow w zakladce Wiki.

Modul XSLT w PHP uzywany jest do transformacji plikow XML. Poniewaz moduly (takie jak np. modul komentarzy czy wiki) moga zawierac konfiguracje. Np. modul komentarzy moze zawierac opcje zezwalania lub zabraniania stosowania znacznikow HTML, czy np. zezwalania na usuwanie komentarzy.

Moduly moga byc przylaczane do innych modulow. Przykladowo, modul komentarzy nie moze funkcjonowac samodzielnie, wiec przylaczany jest do modulu wiki. Tym samym staje sie pluginem -- wlaczamy mozliwosc komentowania tekstow w wiki. Pluginy mozemy konfigurowac niezaleznie od siebie. Tzn. komentarze przydzielone do modulu wiki, moga miec inne opcje, niz komentarze przydzielone do modulu pastebin.

Czyli innymi slowy: w modulu wiki, mozemy zabraniac uzywania HTML w komentarzach, a w pastebin - zezwolic. Idac dalej - moduly i pluginy moga miec niezalezna konfiguracje w zaleznosci od rodzaju tekstu. Czyli, np. w danych tekstach mozemy wlaczac mozliwosc stosowania HTML w komentarzach, mimo, iz globalnie - ta opcja jest wylaczona.

Pozostaje jeszcze kwestia umieszczania modulow w blokach. Wszystko fajnie, umieszczamy modul (np. modul menu) w bloku, ale zeby wszystko dzialalo, nalezy ustawic jeszcze odpowiedni trigger. Czyli w momencie wyswietlania danego bloku, wywolywany jest trigger, ktory z kolei wyswietla menu. Nie jest to zbytnio intuicyjne. Powinno byc tak, iz, wybierajac w panelu, w zakladce "Bloki" modul - np. "Menu", wysylane jest zapytanie AJAXowe. I pokazuje nam sie lista menu, ktora ma byc pokazywana w danym bloku.

Zastanawiam sie jak to rozwiazac :/ Czy dany modul powinien zawierac jakas specjalna metode, ktora by byla wywwolywana przez AJAX ? Ta z kolei wyswietala by liste dostepnych menu ? Hmm, trzeba to przemyslec.

0

Hmm, niestety w dalszym ciągu jest tan sam błąd co wcześniej...

Catchable fatal error: Argument 1 passed to XSLTProcessor::transformToXml() must be an instance of DOMDocument, instance of DOMElement given, called in /public_html/lib/module.class.php on line 141 and defined in /public_html/lib/module.class.php on line 134

Zastanawia mnie tylko fakt, dlaczego na dev.4p.net działa a na innym nie. Mam tu na myśli serwer na debian i w2k8. W obu przypadkach jest taka konfiguracja jakiej wymaga system..

0

Dziwne czemu mi i na serwerze dziala :D
Faktycznie, manual mowi, ze wymagany jest DOMDocument, a w kodzie przekazywane jest DOMElement. I mi dziala, i na serwerze. A chyba nie powinno ;) Powiedz mi jeszcze raz, jakiej Ty wersji PHP uzywasz?

Probowalem rozwiazania okreznego, czyli:

$doc = DOMDocument::loadXML($xml->asXml());
return $proc->transformToXML($doc);

Jednak to nie dziala :/ Niby $doc jest typem DOMDocument i ten obiekt przekazywany jest to transformToXML() ale nie parsuje :/ Zwraca pusty lancuch.

0

Ja mam PHP 5.2.8 z całą biblioteką DOM. nie wiem dlaczego nie działa i ustalam to już jakiś czas. Fajnie by było powtórzyć to co działa na innym serwerze.

Tak btw, dziwne to jest, bo manual PHP mówi: "Do zbudowania tego rozszerzenia nie są wymagane żadne zewnętrzne biblioteki." i "By używać tych funkcji, nie trzeba niczego instalować. Są one częścią jądra PHP."

0

domElement->ownerDocument zwróci domDocument - może to pomoże? Nie zaglądałem w kod.

0

Dzieki Marooned - nie zauwazylem tej wlasciwosci.

Dominium: sprawdz teraz. Sciagnij poprawke : http://4programmers.net/trac/coyote/changeset/2517

1 użytkowników online, w tym zalogowanych: 0, gości: 1