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 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