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: 1) 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.
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.
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.
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