Smarty include, extend
Witam !!!
Myślę, że podejście Chillan`a jest bardziej "user-friendly" ;)
za to mam pytanie.
W jaki sposób radzicie sobie z nakładaniem szablonów na siebie?
Chodzi o to, że powiedzmy mamy 2 różne pluginy, które modyfikują ten sam zestaw szablonów.
W dniu 10/08/2015 o 07:37 PM, Maciej Lew pisze:
Co masz przez to na myśli? Odebranie danych z jakiegoś managera i wciśnięcie ich w pętlę hooków? Czy coś innego?
W dniu 08.10.2015 o 19:16, Tomasz Chiliński pisze:
W dniu 08.10.2015 19:11, Maciej Lew napisał(a):
Nie widzę uniwersalnego rozwiązania takiego problemu. Można by
mechanizmami refleksji spróbować z wnętrza pluginu sprawdzić czy inny
plugin już przesłonił domyślnego managera którego również aktualny
plugin chce przesłonić i w jakiś sposób ostrzec użytkownika przed
konfliktem.
W praktyce okazuje się, że najlepiej realizować kaskadowe zmiany w manager-ach
nie przez tworzenie potomnego managera, a kaskadowe/potokowe przetwarzanie wyników.
W dniu 08.10.2015 o 19:03, Tomasz Chiliński pisze:
W dniu 08.10.2015 18:44, Maciej Lew napisał(a):
Mówiąc o innych sposobach miałem na myśli wstrzykiwanie
zależności w LMS. W tym celu LMS został w większości przerobiony
na fasadę dla "managerów". W klasie LMS są specjalne metody
pozwalające zastąpić domyślnych managerów własnymi.
Cześć,
w jaki sposób rozwiązujesz kaskadowe (łańcuchowe) tworzenie managerów tak,
żeby np. z wielu wtyczek jednocześnie móc modyfikować tego samego managera?
W dniu 08.10.2015 o 12:50, Ernest pisze:
Witam !!!
Panie Maćku,
dzięki za wyjaśnienie i pomoc!
Zastanawiam się czy nie można w jakiś sposób dodać
"automagicznie" ;) hook`ow przynajmniej przed wyświetleniem danego
szablonu?
Takie cuś załatwiłoby praktycznie wszystkie pluginy dodające
coś do wyświetlanej treści.
Druga sprawa to nadpisywanie szablonów.
Jeżeli "poprawiamy" dany blok w którym są includy innych plików
np.
<*************************
{extends file="layout.html"}
{block name=title}::: LMS :{$layout.pagetitle|striphtml} :::{/block}
{block name=module_content}
<!--// $Id$ //-->
{$xajax}
<H1>{$layout.pagetitle}</H1>
<TABLE style="width: 100%;">
<TR>
<TD style="width: 100%;">
{include file="netdev/netdevinfobox.html"} {*-----ten
plik występuje w oryginalnych szablonach i w pluginie----*}
.....
<*****************************
i załączany plik ma taką samą nazwę jak istniejący to smarty
wyświetla plik oryginalny
(taki przynajmniej przypadek był u mnie i jak przypuszczam u kolegi
Jarosława /plugin do mikrotika/)
W jaki sposób można się przed takim problemem uchronić (poza
zmianą nazwy pliku załączanego) ??
Co do innej drogi wykonania zadania to chyba właśnie po to trwają
prace nad systemem wtyczek żeby nie trzeba było gmerać w kodzie
silnika.
Funkcjonalność która się właśnie przepisuje trochę zmienia
podejście do połączeń pomiędzy urządzeniami.
Zamiast(albo obok) zapisywania linków ptp bez wyraźnie
określonego kierunku dodaję tabelę, w której zapisywane są
relacje w stylu wiele do jednego (czyli np switch5 ma port UPLINK(nr
np. 1) i łączy się ze switchem3 (na port 5),
przykładowa tabela: netdevid,uplinkport,dstnetdevid,dstport....(tu
oczywiście dane linku: typ,prędkość)
pozwala to stworzyć wyraźne drzewo(ścieżkę) połączeń od
urządzeń końcowych aż do głównego routera sieci.
Czyli będąc na jakimkolwiek urządzeniu jestem w stanie
jednoznacznie określić na jakim porcie otrzymuje ono sygnał a na
jakich przesyła go dalej.
Dodatkowo od najwcześniejszych wersji LMS`a denerwowało mnie
"ręczne"(właściwie to pamięciowe) określanie numerów portów w
połączeniach dlatego dopisuję do wtyczki okienko ajaxowe na
zasadzie wybierania adresu IP.
Jak skończę to jeśli będą chętni podzielę się wynikami ;)
Uff ale się rozpisałem ;)
Pozdrawiam
Michal Szmigielski
/ernesttar/
W dniu 10/06/2015 o 07:14 PM, Maciej Lew pisze:
Przeszukaj sobie projekt pod kątem występowania metod
"executeHook". Nie są one jeszcze dodane w każdym module, raczej
zostały dodane tam gdzie komuś opłacało się je dodać.
Przejrzenie wszystkich modułów i dodanie hooków to strasznie
dużo roboty i raczej nikt tego nie zrobi tylko po to żeby były i
czekały aż komuś staną się przydatne. Jeśli potrzebujesz
gdzieś hooka gdzie go nie ma to myślę że jak przygotujesz
odpowiedniego commita do głównej gałęzi to zostanie on
przyjęty.
Istnieje także możliwość że to samo zadanie da się zrobić w
inny sposób, bez dodawania hooka. Ale musiałbyś bardziej opisać
co chcesz osiągnąć.
W dniu 06.10.2015 o 16:05, Marcin pisze:
Nazwy uchwytów masz w kodzie są różne w zależności od miejsca
6 paź 2015 16:02 "Ernest" <ernest@poczta.tarman.pl> napisał(a):
Witam !!!
Próbuję właśnie poprzepisywać swoje "dodatki" na pluginy.
Jako, że programista ze mnie dość marny mam pytanie.
W jaki sposób definiować "uchwyty" (Handlers)?
Z tego co zrozumiałem, to w poszczególnych modułach są
umieszczone wpisy typu
"$LMS->executeHook('useradd_validation_before_submit',
array('useradd' => $useradd,...."
czyli uchwyty są zdefiniowane w silniku skryptu.
Zatem wygląda na to, że jest ich trochę mało.
Dodam, że system "wtyczkowy" szalenie mi się podoba z tego
względu, że nie ingeruje bezpośrednio w kod silnika co jest
dość problematyczne (co użytkownik to inne potrzeby więc i inne
modyfikacje kodu/bazy danych).
Pozdrawiam
Michal Szmigielski
/ernesttar/
_______________________________________________
lms mailing list
lms@lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms
_______________________________________________
lms mailing list
lms@lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms
-- lion.net.pl - wdrożenia i rozwój Lan Management System
_______________________________________________
lms mailing list
lms@lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms
_______________________________________________
lms mailing list
lms@lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms
-- lion.net.pl - wdrożenia i rozwój Lan Management System
_______________________________________________
lms mailing list
lms@lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms
_______________________________________________
lms mailing list
lms@lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms