poszedłem z xajaxem trochę na około. nie wiem czy dobrze, ale działa.
#v+ php
function stbStatusChange($id, $status) {
    global $STB;
    $obj = new xajaxResponse();
    $x = "'stb_" . $id . "'";
    $xa = "stb_" . $id . "_s";

    if ($status == 1) {

        if ($STB->stbSetActive($id)) {
            $t = 'Ustawilem active dla dekodera id=' . $id;
            $obj->script("removeClass(xajax.$($x),'blend');");
            $obj->assign($xa, "title", 2);
        } else {
            $t = 'Błąd ustawienia active';
        }
        $tekst = '<img src="img/access.gif" alt="[ ' . trans("Disconnect") . ' ]" title="[ ' . trans("Disconnect") . ' ]">';
        $obj->assign($xa, "innerHTML", "$tekst");
    } elseif ($status == 2) {

        if ($STB->stbSetNoActive($id)) {
            $t = 'Ustawilem Noactive dla dekodera id=' . $id;
            $obj->script("addClass(xajax.$($x),'blend');");
            $obj->assign($xa, "title", 1);
        } else {
            $t = 'Błąd ustawienia No active';
        }
        $tekst = '<img src="img/noaccess.gif" alt="[ ' . trans("Connect") . ' ]" title="[ ' . trans("Connect") . ' ]">';
        $obj->assign($xa, "innerHTML", "$tekst");
    }
    $obj->assign("infotag", "innerHTML", $t);
    $obj->script("xajax.$('infotag').style.display='block';");
    return $obj;
}
#v-

#v+ html
<a id="stb_{$stblist[stblist].id}_s" onclick="xajax_stbStatusChange({$stblist[stblist].id},this.getAttributeNode('title').value);" title="{$stblist[stblist].active+1}"><img src="img/{if ! $stblist[stblist].active}no{/if}access.gif" alt="[ {if ! $stblist[stblist].active}{trans("Connect")}{else}{trans("Disconnect")}{/if} ]" title="[ {if ! $stblist[stblist].active}{trans("Connect")}{else}{trans("Disconnect")}{/if} ]"></A>
#v-

musiałem do taga "a" dodać atrybut title i id by móc z xajaxa to wyłapywać, nie znalazłem innego sposobu.
generalnie działa, w bazie zmiany są robione znaczniki sie zmieniają.

czy kod ten jest prawidłowy? czy może coś w tym zmienić? piszę z myślą udostępnienia tego później w core lms.

W dniu 15 listopada 2015 17:38 użytkownik Marcin <marcin@nicram.net> napisał:
Witam ponownie.
Może nie będę zaczynał nowego wątku i zapytam Was w tym.
Męczę się już prawie cały dzień i nie mogę wpaść na rozwiązanie. W pierwszej wiadomości pisałem o zmianie statusu dekodera za pomocą zewnętrznego skryptu, ale wpadło mi do głowy, po co kolejny skrypt, przeładowywać stronę jak mogę skorzystać z xajax.
zrobiłmem krótką funkcję w php i wywołuję ją z html.
#v+ php
function stbStatusChange($id,$status,$url,$test){
    global $STB;
    $obj = new xajaxResponse();

    if ($status == 1) {
        ($STB->stbSetActive($id)) ? $t = 'Ustawilem active dla dekodera id='.$id : $t = 'Błąd ustawienia active';
    } elseif ($status == 2) {
        ($STB->stbSetNoActive($id)) ? $t = 'Ustawilem Noactive dla dekodera id='.$id : $t = 'Błąd ustawienia No active';
    }
    $t .= ' - '.$test;
    $obj->redirect($url,5); //tego chcę się pozbyć zmieniając elementy w html
    $obj->assign("infotag","innerHTML", $t);
    $obj->script("xajax.$('infotag').style.display='block';");
   
    return $obj;
#v-
#v+ html
<a onclick="xajax_stbStatusChange({$stblist[stblist].id},{$stblist[stblist].active+1},window.location.href,this.srcElement);"><img src="img/{if ! $stblist[stblist].active}no{/if}access.gif" alt="[ {if ! $stblist[stblist].active}{trans("Connect")}{else}{trans("Disconnect")}{/if} ]" title="[ {if ! $stblist[stblist].active}{trans("Connect")}{else}{trans("Disconnect")}{/if} ]"></A>
#v-

klikanie na "żaróweczkę ładnie zmienia statusy w bazie. problem tylko, że dopiero po odświeżeniu strony status zostanie "zauważony". Chciałem podmienić obrazek żaróweczki, zmienić clasę podświetlenia wiersza ale nie wiem jak pobrać bieżący element z którego klikam :/.
jak widać obecnie robie reload ale chcę go usunąć.

jak mogę pobrać element z którego klikam, przekazując jego id do php i tam w funcji podmianię klasy i obrazka.
z góry dzięki za pomoc.


W dniu 15 listopada 2015 11:47 użytkownik Marcin <marcin@nicram.net> napisał:


W dniu 14 listopada 2015 20:56 użytkownik Tomasz Chiliński <tomasz.chilinski@chilan.com> napisał:
W dniu 14.11.2015 15:42, Marcin napisał(a):
Witam
Podpowiedzcie jak dostać się do instacji w klasie.
Piszę plugin (jak będzie w pełni działał pojawi się git :)) do
tv.
Stworzyłem sobie klasę TV i w niej istancje.
W menu mam link do mojego modułu "m=stblist" w którym to tworze
sobie nowy obiekt klasy Tv
#v+
$TV = new Tv($DB);
#v-
przekazuję $DB by uniknąć globalnych zmiennych.
teraz jeśli w tym pliku stblist.php, w którym inicjalizuję obiekt
próbuję się dostać do klasyt to jest bez problemu.
Klasa na końcu wyświetla mi listę dekoderów (analogiczne z nodes).

Przekazywanie obiektu $DB do obiektu w pluginie nie jest konieczne.
Można w metodach handlerów pluginu używać LMSDB::getInsance() (to jest
statyczna metoda publiczna).

Dzięki, zrobiłem to w construktorze tej klasy i działa :)

 

Teraz chcę wykorzystać kontroli "podłącz/odłącz" i zrobiłem w
pluginie/modules/stbset.php w którym chce zrobić odpowiednie zmiany
(m=stbset&id=3). Niestety w tym pliku już nie mogę dostać się do
swojej instancji $TV :/
wpisanie na początku "global $TV" niczego nie zmienia i nadal nie
mogę dostać się do klasy :/

podpowiedzcie, jak dostać się w pliku stbset.php do instancji klasy
zainicjowanej w pliku stblist.php?

--

Pozdrawiam
Marcin / nicraM

_______________________________________________
lms mailing list
lms@lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms

--
Pozdrawiam
Tomasz Chiliński, Chilan



--
Pozdrawiam
Marcin / nicraM



--
Pozdrawiam
Marcin / nicraM



--
Pozdrawiam
Marcin / nicraM