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
W dniu 15.11.2015 22:22, Marcin napisał(a):
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.
Staraj się unikać kodu html w modułach php, więc tu w obsłudze wywołania ajaksowego trzeba byłoby efekt działania zwrócić do kodu html/javascript przez xajaxResponse::call() albo xajaxResponse::script() i dopiero kodem w javascript w szabonie html wykonać odpowiednie zmiany w treści wizualnej.
W dniu 16 listopada 2015 09:01 użytkownik Tomasz Chiliński < tomasz.chilinski@chilan.com> napisał:
W dniu 15.11.2015 22:22, Marcin napisał(a):
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.
Staraj się unikać kodu html w modułach php, więc tu w obsłudze wywołania ajaksowego trzeba byłoby efekt działania zwrócić do kodu html/javascript przez xajaxResponse::call() albo xajaxResponse::script() i dopiero kodem w javascript w szabonie html wykonać odpowiednie zmiany w treści wizualnej.
Masz rację, nie pomyślałem o tym. poprawię. dziękuję
-- Pozdrawiam Tomasz Chiliński, Chilan _______________________________________________ lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms
zrobiłem tak: #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)) { $obj->script("removeClass(xajax.$($x),'blend');"); $obj->assign($xa, "title", 2); $obj->call("changeStatus",$xa, 1); } else { $t = 'Błąd ustawienia active'; } } elseif ($status == 2) {
if ($STB->stbSetNoActive($id)) { $obj->script("addClass(xajax.$($x),'blend');"); $obj->assign($xa, "title", 1); $obj->call('changeStatus',$xa, 2); } else { $t = 'Błąd ustawienia No active'; } } $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> ... function changeStatus(i,s){ var e = document.getElementById(i); if (s == 1) { e.innerHTML = '<img src="img/access.gif" alt="[ Disconnect ]" title="[ Disconnect ]">'; } else if (s == 2) { e.innerHTML = '<img src="img/noaccess.gif" alt="[ Connect ]" title="[ Connect ]">'; } } </script> #v-
[problem pojawił sie tylko z tłumaczeniem :/
W dniu 16 listopada 2015 09:01 użytkownik Tomasz Chiliński < tomasz.chilinski@chilan.com> napisał:
W dniu 15.11.2015 22:22, Marcin napisał(a):
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.
Staraj się unikać kodu html w modułach php, więc tu w obsłudze wywołania ajaksowego trzeba byłoby efekt działania zwrócić do kodu html/javascript przez xajaxResponse::call() albo xajaxResponse::script() i dopiero kodem w javascript w szabonie html wykonać odpowiednie zmiany w treści wizualnej.
-- Pozdrawiam Tomasz Chiliński, Chilan _______________________________________________ lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms
W dniu 16.11.2015 11:31, Marcin napisał(a):
zrobiłem tak: #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)) { $obj->script("removeClass(xajax.$($x),'blend');"); $obj->assign($xa, "title", 2); $obj->call("changeStatus",$xa, 1); } else { $t = 'Błąd ustawienia active'; } } elseif ($status == 2) { if ($STB->stbSetNoActive($id)) { $obj->script("addClass(xajax.$($x),'blend');"); $obj->assign($xa, "title", 1); $obj->call('changeStatus',$xa, 2); } else { $t = 'Błąd ustawienia No active'; } } $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> ... function changeStatus(i,s){ var e = document.getElementById(i); if (s == 1) { e.innerHTML = '<img src="img/access.gif" alt="[ Disconnect ]" title="[ Disconnect ]">'; } else if (s == 2) { e.innerHTML = '<img src="img/noaccess.gif" alt="[ Connect ]" title="[ Connect ]">'; } } </script> #v-
[problem pojawił sie tylko z tłumaczeniem :/
A na czym polega problem? Nigdy nie miałem problemu z tłumaczeniami w javascript w oparciu o smarty., np. ... alt="[ {trans("Disconnect")} ]" ...
tak, sorki. zrobiłem literówkę, z jednej strony ' a z drugiej " i tego nie zauważyłem, uznałem, że nie zadziała :/
2015-11-16 11:34 GMT+01:00 Tomasz Chiliński tomasz.chilinski@chilan.com:
W dniu 16.11.2015 11:31, Marcin napisał(a):
zrobiłem tak: #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)) { $obj->script("removeClass(xajax.$($x),'blend');"); $obj->assign($xa, "title", 2); $obj->call("changeStatus",$xa, 1); } else { $t = 'Błąd ustawienia active'; } } elseif ($status == 2) { if ($STB->stbSetNoActive($id)) { $obj->script("addClass(xajax.$($x),'blend');"); $obj->assign($xa, "title", 1); $obj->call('changeStatus',$xa, 2); } else { $t = 'Błąd ustawienia No active'; } } $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> ... function changeStatus(i,s){ var e = document.getElementById(i); if (s == 1) { e.innerHTML = '<img src="img/access.gif" alt="[ Disconnect ]" title="[ Disconnect ]">'; } else if (s == 2) { e.innerHTML = '<img src="img/noaccess.gif" alt="[ Connect ]" title="[ Connect ]">'; } } </script> #v-
[problem pojawił sie tylko z tłumaczeniem :/
A na czym polega problem? Nigdy nie miałem problemu z tłumaczeniami w javascript w oparciu o smarty., np. ... alt="[ {trans("Disconnect")} ]" ...
-- Pozdrawiam Tomasz Chiliński, Chilan _______________________________________________ lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms
uczestnicy (2)
-
Marcin
-
Tomasz Chiliński