Witam !!! W dniu 11/06/2015 o 01:55 PM, Tomasz Chiliński pisze:
W dniu 06.11.2015 13:39, Ernest napisał(a):
Witam !!!
Witam,
Panie Tomku mam następujące pytanie/propozycję:
Czy w module pluginlist, na liscie dostępnych pluginów dałoby się umieścić przycisk Install/Uninstall i skorelowane z nim hook`i ?
Aktualnie jeżeli plugin nie korzysta ze swoich własnych tabel to w zasadzie wystarczy skopiować go do katalogu z pluginami i włączyć, jeżeli natomiast dochodzą to tego tabele własne wtyczki to przy każdym uruchomieniu trzeba sprawdzać czy wymagane tabele są utworzone i zapewnić korelacje z pozostałymi tabelami.
Akcja install pozwalałaby takie coś przeprowadzić tylko raz na specjalne życzenie. Uninstall podobnie. Chyba, że takowy hook dostępny jest w momencie włączania(aktywacji) pluginu.
Nie do końca jest tak, że sprawdzana jest obecność dodatkowych tabel dla wtyczki. W rzeczywistości następuje sprawdzenie obecności rekordu w dbinfo z keytype dbversion_PluginName i:
- Jeśli w ogóle nie ma takiego rekordu następuje ładowanie pliku
doc/lms.{pgsql,mysql} z katalogu z pluginem. 2) Jeśli jest taki rekord, ale ma datę starszą niż pliki z aktualizacjami schematu pluginu to następuje załadowanie tych plików aktualizacji.
Czyli jak rozumiem tym sposobem załatwiona jest aktualizacja schematu bazy danych. To częściowo wyjaśnia zachowanie LMS`a przy próbach z pluginem Mikrotik na nowszej wersji LMS`a gdzie nie zgrywały się numery baz (teraz nie jestem w stanie odtworzyć tego efektu) ale zachowanie było takie, że lms na okrągło próbował aktualizować schemat głównej bazy pomimo tego, że był już "up to date"
Może lepszym rozwiązaniem byłoby przerzucić dbałość o zgodność z wersją bazy (ew widełki wersji schematów) na twórcę plugina ? IMHO ktoś kto pisał wtyczkę powinien się zatroszczyć o zgodność z core a nie odwrotnie.
W związku z powyższym - nie da się załatwić załadowania schematu i potem jego uaktualniania w ramach pluginu akcjami install i uninstall.
To powinien wg mnie załatwiać sam plugin przy swoim "init"
Pozostaje w takim wypadku jeszcze ewentualne odinstalowanie wtyczki (skasowanie dodatkowych tabel).
Nie wiem czy to byłoby pożądane zachowanie, gdyby akcja uninstall powodowała skasowanie danych w bazie danych używanych przez wtyczkę. Chyba przy takim podejściu lepiej byłoby mieć akcje install/uninstall i enable/disable (właśnie tak jest w cacti). Wtedy wyłączenie pluginu nie powoduje skasowania danych w bazie danych.
Myślę, że takie podejście byłoby najprostsze (i chyba najlepsze) z punktu widzenia twórcy/nadzorcy samego silnika. ;)
Jak rozumiem sprawami szablonów zajmuje się Marcin ?? ;)
Dodatkowo, oczywiście jeśli pan Tomek nie będzie miał nic przeciwko temu, prośba do wszystkich, którzy piszą własne wtyczki o wzbogacenie oryginalnych plików szablonów (oczywiście tych których dotyczy wtyczka no chyba, że już będą zrobione to wtedy jakikolwiek inny) o bloki ( na wzór vioipaccounts ) i wysłanie ich jako commit`a na git. Myślę, że taka akcja bardzo ułatwi życie nam wszystkim przy pisaniu kolejnych wtyczek.
Osobiście widzę to tak, że dzielimy szablon na jak najmniejsze bloki (nazwapliku-wyróżnik_bloku), dzięki którym wtyczki maja punkt zaczepienia dla swoich danych i nie trzeba rozszerzać głównego pliku tylko fragment o który nam chodzi przez co zmniejsza się niebezpieczeństwo konfliktu pomiędzy wtyczkami. Poniżej przykładowy fragment.
Pozdrawiam Michał Szmigielski /ernesttar/
(fragment pliku "netdev/netdevinfobox.html" wzbogacony o bloki) ..... {if $netdevinfo.model} {block name="netdevinfobox-model"}<!-- dodatkowy znacznik bloku --> <TR> <TD WIDTH="1%"> <IMG SRC="img/netdev_model.gif" ALT=""> </TD> <TD WIDTH="1%"> <B>{trans("Model:")}</B> </TD> <TD WIDTH="98%"> {$netdevinfo.model} </TD> </TR> {/block} {/if} {if $netdevinfo.serialnumber} {block name="netdevinfobox-serial"} <!-- dodatkowy znacznik bloku --> <TR> <TD WIDTH="1%"> <IMG SRC="img/serialnumber.gif" ALT=""> </TD> <TD WIDTH="1%" NOWRAP> <B>{trans("Serial number:")}</B> </TD> <TD WIDTH="98%"> {$netdevinfo.serialnumber} </TD> </TR> {/block} {/if} ...
W dniu 10/08/2015 o 08:15 PM, Tomasz Chiliński pisze:
W dniu 08.10.2015 19:37, Maciej Lew napisał(a):
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?
Mniej więcej tak.
lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms