Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Własny system widgetów jax, php
Forum PHP.pl > Forum > Po stronie przeglądarki
Stron: 1, 2
karis
Cze,

Na jakiej zasadzie można wykonać podobnie jak ma Wordpress do zarządzania panelami (widgetami), że jak się przeciągnie na daną pozycję to tam się potem zapisuje automatycznie pozycja.
Wiem, że to mozna wykonac w ajaxie, tylko nie wiem jak to ugryźć
Mam taki skrypt
http://www.dhtmlgoodies.com/scripts/drag-d...rag-drop-2.html
no i nie wiem jak tu mozna zrobic aby zapisywało pozycje.
Samą obsługę ajaxa znam, wiem jak wysłąć dane do skryptu, tylko nie wiem jaki to jest uchwyt dla pozycji.
Proszę mi to jakos wyjaśnić smile.gif
piotrooo89
zapisywanie widgetu w bazie danych, później przy renderowaniu strony pobiera pozycje widgeta i tam go wyświetla.
karis
no wow, odkryłeś ameryke! tyle to nawet początkujący w php wie

przeczytaj dokładnie opis mojego problemu
fander
offsetTop, offsetLeft
karis
może mi ktoś dokładniej wytłumaczyć?
f1xer
no i po co się denerwować, kolega wyraźnie i zwięźle napisał rozwiązanie twojego problemu. Znasz ajaxa tak? umiesz wysłać zapytanie tak? więc w momencie jak coś zostanie puszczone nad kontenerem to wysyłasz zapytanie zapisania do bazy i już masz w bazie info o tym że coś gdzieś jest. Dalej jak strona się wczytuje to pobierasz te dane z bazy i renderujesz wygląd strony. A więcej szczegółów bez znajomości ani skryptu ani bazy to się raczej nie poda. I skoro podałeś przykład WP to zawsze możesz zaglądnąć do jego kodu źródłowego.
karis
dobra, ale co jest uchwytem informującym o pozycji?
vokiel
Co do pozycji to wystarczy informacja o kolejności w danym kontenerze
karis
Jak taką informacje umieścić?
piotrooo89
jak jak? normalnie. masz kilka div'ów w których masz warunek i zależnie od niego ładujesz danego widgeta. np jeśli w divie pierwszym masz kalendarz to sprawdzasz czy id pluginu zgadza się z id danego diva jak tak wyświetlasz.

ps.
Cytat
przeczytaj dokładnie opis mojego problemu


przeczytałem dokładnie i dałem Ci odpowiedź.

i

Cytat
no wow, odkryłeś ameryke!


czemu na mnie krzyczysz?
karis
aha czyli robiuć to na takiej zasadzie:

  1. <div id="1"></div> - ZAPYTANIE: SELECT `id` FROM `panele` WHERE `pozycja`=1
  2. <div id="2"></div> - ZAPYTANIE: SELECT `id` FROM `panele` WHERE `pozycja`=2
  3. <div id="3"></div> - ZAPYTANIE: SELECT `id` FROM `panele` WHERE `pozycja`=3
  4. <div id="4"></div> - ZAPYTANIE: SELECT `id` FROM `panele` WHERE `pozycja`=4
  5. <div id="5"></div> - ZAPYTANIE: SELECT `id` FROM `panele` WHERE `pozycja`=5
  6. <div id="6"></div> - ZAPYTANIE: SELECT `id` FROM `panele` WHERE `pozycja`=6

nie krzycze na ciebie
f1xer
tak dokładnie tak jak napisałeś, z zapisywaniem jest tak samo tylko sobie wstawiasz rekord do bazy danych informujący o tym na której pozycji jest dany widget
karis
no dobra ale jak ugryźć to że po przesunięciu zapisze nową pozycje, co tu bedzie zawuerało wskaźnij pozycji? o to mi cały czas chodzi
f1xer
no to zależy jak napiszesz skrypt, napisz go tak żebyś wiedział do jakiego elementu co zostało wrzucone i wtedy będziesz miał np. dwa divy (1 - id=kontener 2-id=box1) i jak box1 zostanie przeciagniety do kontenera to se zapiszesz to w bazie ze box1(czyli nasz widget) został zapisany w pozycji kontener) możesz też sprawdzać sobię kolejność elementów w kontenerze i dopisywac do bazy ze np. box1 jest 3 elementem w pozycji kontener
karis
ale to jest mało elastyczne

nie znasz jakiego elastyczniejszego sposobu?
f1xer
ale co jest mało elastyczne? mi się wydaje dość elastycznym rozwiązaniem możesz określić co w tym jest mało elastycznego?
karis
wg mnie bedzie troche ciężko z tymi divami, spróbuję troche pokombinować.

jeśli ktoś ma inne rozwiązanie to badzo proszę się podzielić ze mną smile.gif
vokiel
Masz określone pola, w które możesz przeciągnąć boxy.
Masz sobie boksy które możesz przeciągać. Każdy box ma odpowiednik w bazie BOX (ID, ID_POLA, KOLEJNOSC) -> na potrzeby przykładu.

1. Przesuniecie boxa
- w obrębie kontenera - update kolejnosc set nowa kolejnosc
- przeniesienie do innego kontenera - update id_pola set nowe_id
2. Wyswietlanie
- kontener na boxy 1 - select from box where id_pola =1
- kontener na boxy 2 - select from box where id_pola =2
itd...
karis
znalazłem coś takiego

http://jqueryui.com/demos/sortable/#portlets

chcę wykonać funkcje alert dla zdarzenia update

oto mój kod:

Kod
<script type="text/javascript">
    $(function() {
        $(".column").sortable({
            connectWith: '.column'
            update: function(event, ui) { alert('kupa'); }
        });

        $(".portlet").addClass("ui-widget ui-widget-content ui-helper-clearfix ui-corner-all")
            .find(".portlet-header")
                .addClass("ui-widget-header ui-corner-all")
                .prepend('<span class="ui-icon ui-icon-plusthick"></span>')
                .end()
            .find(".portlet-content");

        $(".portlet-header .ui-icon").click(function() {
            $(this).toggleClass("ui-icon-minusthick");
            $(this).parents(".portlet:first").find(".portlet-content").toggle();
        });

        $(".column").disableSelection();
    });
    </script>


i po tym nie działa. w ogóle nie chcą się przenosić

możesz mi napisać jak to poprawie zrobic?
erix
Najpierw sobie zobacz, co jest w konsoli błędów.

Bo błąd jest typowo składniowy. tongue.gif
karis
no już sprawdziłem

Błąd: missing } after property list
Plik źródłowy: file:///C:/Users/xxxx/Desktop/sortowanie/demos/sortable/portlets.html
Wiersz: 23, Kolumna: 3
Kod źródłowy:
update: function(event, ui) { alert('kupa'); }}

no wstawiam tą klamrę za i nadal nie działa.

gdzie ta klamra powinna sie znaleźć?
erix
Nie chodzi o klamrę.

Poczytaj o składni JSON. I niech ktoś mu pokaże paluchem, w którym to miejscu, to otrzyma tytuł debila dnia. tongue.gif
karis
no czytałem i nadal nie moge sobie z tym poradzić

zlitujcie się i powiedzcie gdzie mam błąd, po cholere jest to forum skoro tutaj same pyszałki są
f1xer
Forum jest dla programistów, albo chcesz się nauczyć programować, albo kopiować. Jeżeli jeszcze raz przeczytasz o JSON to na pewno wpadniesz na pomysł o co chodzi. Zrozum że lepiej zmuszać do myślenia niż podawać rozwiązania na tacy tym bardziej że tak jak napisano to błąd składniowy http://pl.wikipedia.org/wiki/JSON przejrzyj sobie dokładnie tą stronę zobacz przykład struktury, następnie popatrz na swój kod i pomyśl. Na prawdę warto pomęczyć się trochę w poszukiwaniu błędu już nigdy więcej go nie popełnisz smile.gif.
karis
haha
wpadłem już smile.gif

brakowało przecinka po pierwszym atrybucie ^^

a jaki macie pomysł, by zapisać aktualną pozycję oraz nazwę kontentera do którego się przeciągneło dany div? chodzi mi o uchwyt, bo ajaxa znam i umiem zapisac dane
erix
Najpierw się zbluzgało użytkowników, teraz pytamy?

Cytat
a jaki macie pomysł, by zapisać aktualną pozycję oraz nazwę kontentera do którego się przeciągneło dany div?

To znaczy? Nie widzę jakoś problemu?
karis
chciałbym, miec jakis wskaźnik w jakiejś zmiennej z nazwą kontenera, d ktorego przeciągnełą się element oraz zzmienę z pozycją np 1, 2, 3, 4, 5
jak to zrobic?
erix
Masz przecież metody parent() i index().
karis
dobra, ale jak to użyć? parent() to chyba bedzie wskazywał rodzica elementu czyli kontener, do którego zostanie przeniesiony, a co z pozycją? jak to opracować?
erix
Napisałem: index().
karis
dobra, ale jak to użyć, bo nie mogę się dokopac do teego w dokumentacji
erix
http://docs.jquery.com/Core/index

10 sekund szukania?
karis
dzięki smile.gif

ale cos tu nie gra

http://katmia.home.pl/public_html/sortowan...e/portlets.html

zobacz sam

dziwnie te pozycje wyswietla

jak zrobic zeby bylo dobrze?
erix
Kod
var index = $("div").index

Dziwisz się, skoro pobierasz pozycję względem wszystkich divów na stronie, a nie tylko widgetów? [;
karis
no ale jak wpisuje zamiast div np .portlet to wtedy pokazuje mi w alercie -1 bez przerwy
erix
Pokaż lepiej cały plik.

Używałem index nieraz i wystarczy tylko uważnie skonstruować całe wyrażenie (zmienną z listą) oraz użyć index na odpowiednim obiekcie. Ale wszystko jest w dokumentacji.
karis
oto cały plik

http://wklej.to/mfuM

pomoże ktoś?
erix
I co po całym pliku?

Dostałeś na tacy wskazówki, jeszcze Ci mało?
karis
Cytat
Pokaż lepiej cały plik.


no to ci pokazałem nie rozumiem o co ci chodzi

pomozesz mi czy nie?

kombinowałem z tym indeksem dla różnych divów, ale w większości zawsze wracana jest pozycja -1, 0 lub 2
erix
Przecież cały czas pomagam... ;/

Pokaż, jak kombinowałeś - gotowca ode mnie nie dostaniesz.
karis
kombinowałem tak jak w przykładach tutaj
http://docs.jquery.com/Core/index

dodawałem zamiast #foobar .portlet oraz .columnt zmieniałem tylko nnazwe selektora.

no i jak robiłem z tych przukładów to wyświetlało tylko 13 albo 14 niezależxnie, który dic przeciągnę

tam wyżej podałem całą zawartość mojego pliku.
erix
Kombinowałeś, ale napisałem - musisz dać zmienną, która przechowuje wszystkie interesujące Cię divy (ale nie wszystkie na stronie!) i w ramach tej zmiennej używaj index.
karis
nie wiem czy ja dobrze robie czy jestem juz glupi ze nie rozumiem co sie do mnie mowi.

no zobacz wstawiam klasę .portlet i jej przypisuję metodę indeks

wstawiałem również ._column, oraz .column oraz .column2 no i lipa

jakbyś to zrobił?
erix
Ech, widzę że bez jakiegoś przykładu się nie obejdzie...
Kod
var stos = $('div.widgety');

stos.click(function(){
    alert(stos.index(this));
});


Ten kod po kliknięciu pokazuje, który index ma element względem kolekcji. I zrób analogicznie u siebie.
karis
ehhhh ;/

no Twoje rozwiązanie działa, nie powiem, że nie, ale tylko jak zrobie tak, ze przypisze osobne zdarzenie click na kazdego elemtnyu

po kliknięciu tylko na kazdy widget zrwaca mi pozycje

http://katmia.home.pl/public_html/sortowan...e/portlets.html

ale po przeciągnieciu cały czas zwraca -1
erix
Zdarzenie update, a nie stop...
karis
Ale to nic nie daje

Wręcz przeciwnie, pojawiają mi się 2 alerty zamiast jednego

jak to skonstruować?

erix, powiesz mi, czy jesteś taki cienki bolek??
erix
Nie powiem Ci wprost, a już na pewno nie z takimi odzywkami.

Męcz się Ty - masz zlecenie - jest odpowiedni dział. Dostałeś już tyle wskazówek, że dałbyś radę sam zrobić, gdybyś się trochę wysilił.
karis
męczę się i nie mogę

pomóż w końcu po to jest to forum
webdice
Cytat(karis @ 21.07.2009, 19:48:31 ) *
(...) erix, powiesz mi, czy jesteś taki cienki bolek??


Uważaj z takimi odzywkami.

Cytat(karis @ 22.07.2009, 00:46:49 ) *
(...) pomóż w końcu po to jest to forum


Przystopuj człowieku, wymagać sobie możesz od rodziców jak Cię tak rozpieścili. To że piszesz na forum publicznym NIE znaczy że ktoś będzie za Ciebie pracował.

Pomoc dostałeś i przestań zachowywać się jak rozpieszczony bachor.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.