Drag'n'Drop (Ajax) w PF v7
|
pixiproject |
Dodany dnia 26.02.2009 21:13:25
|
Przedszkolak
Postów: 28 Ostrzeżeń: 1
Data rejestracji: 08.02.2009 14:09
Złamana licencja
|
Czy istniej jakakolwiek możliwość zastosowania tego http://mintajax.p...ag-n-Drop/ w PHP-Fusion v7. Mam na myśli, że panele na stronie mogłyby się poruszać tak jak w linku. Jeśli istnieje taka możliwość prosiłbym o jakieś wskazówki. Z góry dziękuję.
PW od moderatora:
- Przeniesienie tematu - hoopak 26.02 - 21:23
|
|
|
|
Wścibski Gość |
Dodany dnia 24.11.2024 22:37:23
|
Pan Kontekstualny
Postów: n^x
Data rejestracji: Zawsze
|
|
IP: localhost |
|
|
Pieka |
Dodany dnia 26.02.2009 21:58:53
|
Postów: 19882 Pomógł: 767
v7.02.03 Data rejestracji: 23.02.2005 18:12
|
Nie ma potrzeby mieszania w to jakiejkolwiek odmiany Ajaxa, skoro mamy jQuery do dyspozycji. Idealnym przykladem jest strona testowa Wooyi: http://fusionv7.2.... Tylko zawalu nie dostan przy przegladaniu
Jestem jaki jestem
|
|
|
|
pixiproject |
Dodany dnia 26.02.2009 22:33:49
|
Przedszkolak
Postów: 28 Ostrzeżeń: 1
Data rejestracji: 08.02.2009 14:09
Złamana licencja
|
Heh. Strona --> Świetna, przynajmniej jesli chodzi o zastosowanie jQuery. Te zwijanie i chowanie paneli też genialne. Tylko czy istnieje szansa na stworzenie jakiegoś topic'u, w którym byłoby opisane co i jak ? |
|
|
|
DJPromo |
Dodany dnia 26.02.2009 23:41:44
|
Bywalec
Postów: 630 Pomógł: 41
v7.02.07 Data rejestracji: 13.06.2006 18:51
|
Genialne Czy jest możliwość, żeby ktoś opisał jak to albo mniej więcej nakierował jak zabrać się za napisanie tego
Pomogłem Kliknij Pomógł
Życie to chwila zbyt krótka aby móc .... Życie to chwila / trzeba patrzeć i podziwiać
|
|
|
|
ELO320 |
Dodany dnia 27.02.2009 06:11:38
|
Początkujący
Postów: 152 Ostrzeżeń: 2
Data rejestracji: 28.04.2007 18:08
|
Powiem że to niezły bajer. xD Sam chciałbym mieć coś takiego na własnej stronie Mało co mi gały nie wylazły jak to zobaczyłem ;p |
|
|
|
pixiproject |
Dodany dnia 27.02.2009 08:21:57
|
Przedszkolak
Postów: 28 Ostrzeżeń: 1
Data rejestracji: 08.02.2009 14:09
Złamana licencja
|
Na stronie mintAjax jest opisane co i jak. Tylko, że mam problemy z podpięciem tego pod PHP-FUSION. No ale skoro można zrobić to samo z jQuery - pozostaje tylko czekać aż Wooya podzieli się z nami swoim kodem xD. |
|
|
|
Artur-M |
Dodany dnia 14.03.2009 10:53:28
|
Początkujący
Postów: 225 Pomógł: 5 Ostrzeżeń: 4
Data rejestracji: 16.12.2008 17:42
|
To jak Wooya? Oświecisz nas instrukcją na Drag&Drop w panelach?
Edytowane przez Artur-M dnia 26.03.2009 11:00:52
|
|
|
|
Wooya |
Dodany dnia 25.03.2009 17:07:53
|
Zaawansowany
Postów: 1449 Pomógł: 22
Data rejestracji: 30.01.2005 15:40
|
Ok. No to po kolei :)
Jak pozwolić na dowolne układanie paneli na stronie.
Uwaga! Na przykładzie domyślnego theme z PFv7 czyli Gillette. W innych themach analogicznie.
1) pobieramy jQuery UI dla jQuery 1.2.6 ze strony http://jqueryui.com i wgrywamy plik jquery-ui-1.5.3.custom.min.js do katalogu themes/Gillete (ja go wgrałem pod nazwą jquery-ui.min.js)
2) otwieramy plik themes/Gillette/theme.php i dodajemy za:
require_once INCLUDES."theme_functions_include.php";
kod:
require_once INCLUDES."output_handling_include.php";
add_to_head("
<script type='text/javascript' src='".THEME."jquery-ui.min.js'></script>
<script type='text/javascript'>
$(document).ready(function(){
$('#left_panels').sortable({
connectWith: ['#right_panels'],
placeholder: 'placeholder',
revert: true,
opacity: 0.75,
scroll: true,
zIndex: 2000,
handle: '.scapmain',
tolerance: 'pointer',
scroll: false,
distance: 20,
forcePlaceholderSize: true
}).css('cursor', 'default');
$('#right_panels').sortable({
connectWith: ['#left_panels'],
placeholder: 'placeholder',
revert: true,
opacity: 0.75,
scroll: true,
zIndex: 2000,
handle: '.scapmain',
tolerance: 'pointer',
scroll: false,
distance: 20,
forcePlaceholderSize: true
}).css('cursor', 'default');
});
</script>");
3) odnajdujemy w pliku themes/Gillette/theme.php funkcje render_page() i modyfikujemy linijki odpowiedzialne za stałe LEFT i RIGHT:
if (LEFT) { echo "<td class='side-border-left' valign='top'><ul id='left_panels'>".LEFT."</ul></td>"; }
if (RIGHT) { echo "<td class='side-border-right' valign='top'><ul id='right_panels'>".RIGHT."</ul></td>"; }
4) odnajdujemy w pliku themes/Gillette/theme.php funkcje openside() oraz closeside() i modyfikujemy ją jak poniżej:
function openside($title, $collapse = false, $state = "on") {
global $panel_collapse; $panel_collapse = $collapse;
echo "<li id='".$boxname."'>\n";
echo "<table cellpadding='0' cellspacing='0' width='100%'>\n<tr>\n";
echo "<td class='scapmain-left'></td>\n";
echo "<td class='scapmain'>$title</td>\n";
if ($collapse == true) {
$boxname = str_replace(" ", "", $title);
echo "<td class='scapmain' align='right'>".panelbutton($state, $boxname)."</td>\n";
}
echo "<td class='scapmain-right'></td>\n";
echo "</tr>\n</table>\n";
echo "<table cellpadding='0' cellspacing='0' width='100%' class='spacer'>\n<tr>\n";
echo "<td class='side-body'>\n";
if ($collapse == true) { echo panelstate($state, $boxname); }
}
function closeside() {
global $panel_collapse;
if ($panel_collapse == true) { echo "</div>\n"; }
echo "</td>\n</tr>\n</table>\n";
echo "</li>\n\n";
}
5) do pliku themes/Gillete/styles.css dodajemy:
#left_panels,#right_panels li {
list-style-type: none;
margin: 0px;
padding: 0px;
width: 175px;
}
I to wszytko :) Możemy teraz układać sobie panele na stronie jak chcemy ;)
PS1: trza by jeszcze dopisać funkcję w JS zapamiętującą w cookie a następnie przywracającą położenie paneli z cookie, ale... mi sie nie chce :P Może kiedyś ;)
PS2: nie do końca prawidłowo wyglądaja panele po prawej, ale to kwestia zabawy z CSS...
Przykładowe działanie powyższych modyfikacji w skórce Gillette na stronie http://fusionv7.2...l/news.php
Edytowane przez Wooya dnia 25.03.2009 17:11:04
... Pomagam tylko przy najnowszych wersjach PHP-Fusion ...
|
|
|
|
Artur-M |
Dodany dnia 26.03.2009 10:57:46
|
Początkujący
Postów: 225 Pomógł: 5 Ostrzeżeń: 4
Data rejestracji: 16.12.2008 17:42
|
Ok, wszystko fajnie ale...
1. Czy tak można, że jak po np. lewej stronie nie ma już żadnych paneli, to część z newsami się rozciąga i strona jest 1-stronna? A jak chcemy panel wrócić na lewą stronę, to kolumna z newsami automatycznie się zmniejsza?
2. Czy można oszukać wygląd strony i ustawić jej układ na: kolumna z newsami, kolumna z panelami, kolumna z panelami? Czyli efekt podobny do tego: http://www.kibice...
Edytowane przez Artur-M dnia 26.03.2009 11:07:43
|
|
|
|
Wooya |
Dodany dnia 26.03.2009 13:11:31
|
Zaawansowany
Postów: 1449 Pomógł: 22
Data rejestracji: 30.01.2005 15:40
|
Pewnie, że można. Kwestia odpowiedniego kodu CSS. Czy wszystko mam za was robić? Trochę pomyśleć i zrobić sobie samemu!
... Pomagam tylko przy najnowszych wersjach PHP-Fusion ...
|
|
|
|
Maclaw |
Dodany dnia 25.07.2009 16:42:02
|
Przedszkolak
Postów: 22 Pomógł: 2 Ostrzeżeń: 1
Data rejestracji: 09.05.2009 19:16
Złamana licencja
|
I jak z tą fukcją z cookie? Napisałby ktoś? |
|
|
|
bartek124 |
Dodany dnia 25.07.2009 21:04:25
|
Weteran
Postów: 3264 Pomógł: 236
v7.02.06 Data rejestracji: 26.05.2007 12:25
|
Może sam spróbujesz. Zobacz a accordion_navigation_panel, jak to jest zrobione. Dodatkowo masz tam odpowiedni plugin jQuery obsługujący cookie przez JS.
Nie pomagam na komunikatorach oraz PW!
|
|
|
|
szyty |
Dodany dnia 28.09.2009 22:04:11
|
Przedszkolak
Postów: 6 Ostrzeżeń: 1
Data rejestracji: 26.04.2009 18:59
|
Ja mam trochę inny problem:
Wyskakuje mi
Notice: Undefined variable: boxname in /home/szyty/domains/7legion.info/public_html/themes/Lineage2/theme.php on line 145
Oto zawartość pliku w tym miejscu (funkcja openside() ):
GeSHi: PHP function openside($title, $collapse = false, $state = "on") { global $panel_collapse; $panel_collapse = $collapse; echo "<li id='".$boxname."'>\n"; echo "<table cellpadding='0' cellspacing='0' width='100%'>\n<tr>\n"; echo "<td><img src='".THEME."/images/side-left.gif' align='left'></td>\n"; echo "<td class='scapmain' align='center' width='100%'>$title</td>\n"; if ($collapse == true) { echo "<td class='scapmain' align='right'>".panelbutton($state, $boxname)."</td>\n"; } echo "<td><img src='".THEME."/images/side-right.gif' align='right'></td>\n"; echo "</tr>\n</table>\n"; echo "<table cellpadding='0' cellspacing='0' width='100%'>\n<tr>\n"; echo "<td class='side-body'>\n"; if ($collapse == true) { echo panelstate($state, $boxname); } }
Zinterpretowano w sekund: 0.028, wykorzystano GeSHi 1.0.8.10
Widzę, że na stronie http://fusionv7.2...l/news.php
też to nie za dobrze działa bo wyskakuje podobny error.
P.S.
Moja strona również trochę się rozjeżdża.
Edytowane przez szyty dnia 28.09.2009 22:07:33
|
|
|
|
Artur-M |
Dodany dnia 30.09.2009 21:34:29
|
Początkujący
Postów: 225 Pomógł: 5 Ostrzeżeń: 4
Data rejestracji: 16.12.2008 17:42
|
U mnie występuje dokładnie ten sam błąd. Co jest nie tak? |
|
|
|
adi2 |
Dodany dnia 29.07.2010 20:14:23
|
Przedszkolak
Postów: 82 Ostrzeżeń: 4
v7.02.03 Data rejestracji: 20.01.2010 15:46
|
Hmmm u mnie to samo tylko, ze w linii 144.
Moja linia 144:
echo "<li id='".$boxname."'>\n";
Panelami też poruszać nie mogę ;/
Edytowane przez Pieka dnia 29.07.2010 22:18:00
|
|
|
|
Gander |
Dodany dnia 29.07.2010 23:15:23
|
Bywalec
Postów: 720 Pomógł: 37
Data rejestracji: 22.05.2005 23:17
|
To oznacza że zmienna $boxname jest niezdefiniowana w momencie gdy próbuje się wykorzystać jej zawartość. W funkcji widocznej w poście @szyty-ego widać że ta zmienna nie została zdefiniowana (co jest dziwne skoro ma być wartością atrybutu id w znaczniku HTML). Najpewniej miała to być jakoś zmodyfikowana nazwa panelu ze zmiennej $title, ale twórca kodu zapomniał to wstawić. |
|
|
|
adi2 |
Dodany dnia 30.07.2010 07:29:56
|
Przedszkolak
Postów: 82 Ostrzeżeń: 4
v7.02.03 Data rejestracji: 20.01.2010 15:46
|
To poprawił mi by to ktoś albo na jaką zmienną mam poprawić? |
|
|
|
czarny_plock |
Dodany dnia 20.03.2011 17:28:59
|
Przedszkolak
Postów: 15 Ostrzeżeń: 2
Data rejestracji: 06.01.2011 14:19
|
Też mam ten problem. :/
Notice: Undefined variable: boxname in /var/www/virtual/3887276.cba.pl/fusion/themes/g r e y/theme.php on line 144
Kliknij i zaczekaj na załadowanie kodu ...
Wiadomość doklejona:
Pomoże ktoś?
Edytowane przez czarny_plock dnia 21.03.2011 15:07:42
|
|
|
|
maad |
Dodany dnia 02.06.2011 19:46:12
|
Początkujący
Postów: 132 Ostrzeżeń: 2
Data rejestracji: 20.05.2007 19:45
|
Fajny temat a nikt nie chce podjac sie rozwiazania problemu. |
|
|
|
walus16 |
Dodany dnia 10.09.2012 18:42:07
|
Przedszkolak
Postów: 9
Data rejestracji: 22.06.2010 18:10
|
Witam, usiadłem dzisiaj do komputera z myślą iż w PHP-Fusion v7.02 przydałaby się zmiana wyglądu zarządzania panelami. Działa już przenoszenie paneli tylko nie wiem jak zrobić zapisywanie efektów przenoszenia do bazy MySQL. Pomożecie?
panels.php
<?php
require_once "../maincore.php";
require_once THEMES."templates/admin_header.php";
echo "<script type='text/javascript'>
$(document).ready(function() {
$('.dragbox').each(function(){
$('.dragbox').mouseover(function(){
$(this).find('.dragbox-content').toggle();
})
$('.dragbox').mouseout(function(){
$(this).find('.dragbox-content').toggle();
})
.click(function(){
updateWidgetData();
})
.end()
});
$('.column').sortable({
handle : 'h2',
placeholder: 'placeholder',
connectWith: '.column',
forcePlaceholderSize: true,
opacity: 0.4,
start: function(event, ui){
if($.browser.mozilla || $.browser.safari)
$(ui.item).find('.dragbox-content').toggle();
},
stop: function(event, ui){
ui.item.css({'top':'0','left':'0'}); //Opera fix
if(!$.browser.mozilla && !$.browser.safari)
updateWidgetData();
}
})
.disableSelection();
});
function updateWidgetData(){
var items=[];
$('.column').each(function(){
var columnId=$(this).attr('id');
$('.dragbox', this).each(function(i){
var item={
id: $(this).attr('id'),
order : i,
column: columnId
};
items.push(item);
});
});
var sortorder={ items: items };
// Tutaj powinien zanaleźć się kod do zapisu w bazie danych MySQL.
}
</script>";
if (isset($_GET['action']) && $_GET['action'] == "refresh") {
$i = 1;
$result = mysql_query("SELECT * FROM ".DB_PANELS." WHERE panel_side='1' ORDER BY panel_order");
while ($data = mysql_fetch_assoc($result)) {
$result2 = mysql_query("UPDATE ".DB_PANELS." SET panel_order='$i' WHERE panel_id='".$data['panel_id']."'");
$i++;
}
$i = 1;
$result = mysql_query("SELECT * FROM ".DB_PANELS." WHERE panel_side='2' ORDER BY panel_order");
while ($data = mysql_fetch_assoc($result)) {
$result2 = mysql_query("UPDATE ".DB_PANELS." SET panel_order='$i' WHERE panel_id='".$data['panel_id']."'");
$i++;
}
$i = 1;
$result = mysql_query("SELECT * FROM ".DB_PANELS." WHERE panel_side='3' ORDER BY panel_order");
while ($data = mysql_fetch_assoc($result)) {
$result2 = mysql_query("UPDATE ".DB_PANELS." SET panel_order='$i' WHERE panel_id='".$data['panel_id']."'");
$i++;
}
$i = 1;
$result = mysql_query("SELECT * FROM ".DB_PANELS." WHERE panel_side='4' ORDER BY panel_order");
while ($data = mysql_fetch_assoc($result)) {
$result2 = mysql_query("UPDATE ".DB_PANELS." SET panel_order='$i' WHERE panel_id='".$data['panel_id']."'");
$i++;
}
}
if ((isset($_GET['action']) && $_GET['action'] == "delete") && (isset($_GET['panel_id']) && isnum($_GET['panel_id']))) {
$data = mysql_fetch_assoc(mysql_query("SELECT * FROM ".DB_PANELS." WHERE panel_id='".$_GET['panel_id']."'"));
$result = mysql_query("DELETE FROM ".DB_PANELS." WHERE panel_id='".$_GET['panel_id']."'");
$result = mysql_query("UPDATE ".DB_PANELS." SET panel_order=panel_order-1 WHERE panel_side='$panel_side' AND panel_order>='".$data['panel_order']."'");
redirect(FUSION_SELF.$aidlink);
}
if ((isset($_GET['action']) && $_GET['action'] == "setstatus") && (isset($_GET['panel_id']) && isnum($_GET['panel_id']))) {
$result = mysql_query("UPDATE ".DB_PANELS." SET panel_status='".intval($_GET['status'])."' WHERE panel_id='".$_GET['panel_id']."'");
}
opentable($locale['400']);
?>
<div class='column tbl2 col1' id='column2'>
<?php $result = mysql_query("SELECT * FROM ".DB_PANELS." WHERE panel_side='2' ORDER BY panel_order");
while ($data = mysql_fetch_assoc($result)) { ?>
<div class='dragbox' id='item<?= $data['panel_id'] ?>'>
<h2>
<div class='dragbox-name-content'><img src='<?= ADMIN ?>images/drag.png' alt='' /> <?= $data['panel_name'] ?></div>
<div class='dragbox-content' style='display:none;'>
<a href='panel_editor.php<?= $aidlink ?>&action=edit&panel_id=<?= $data['panel_id'] ?>&panel_side=1' title='<?= $locale['434'] ?>' class='tip'><img src='<?= THEMES ?>templates/images/edit.png' alt='<?= $locale['434'] ?>' /></a>
<?php if ($data['panel_status'] == 0) { ?>
<a href='<?= FUSION_SELF.$aidlink ?>&action=setstatus&status=1&panel_id=<?= $data['panel_id'] ?>' title='<?= $locale['435'] ?>' class='tip'><img src='<?= THEMES ?>templates/images/on.png' alt='<?= $locale['435'] ?>' /></a>
<?php } else { ?>
<a href='<?= FUSION_SELF.$aidlink ?>&action=setstatus&status=0&panel_id=<?= $data['panel_id'] ?>' title='<?= $locale['436'] ?>' class='tip'><img src='<?= THEMES ?>templates/images/off.png' alt='<?= $locale['436'] ?>' /></a>
<?php } ?>
<a href='<?= FUSION_SELF.$aidlink ?>&action=delete&panel_id=<?= $data['panel_id'] ?>&panel_side=<?= $data['panel_side'] ?>' onclick='return confirm('<?= $locale['440'] ?>');' title='<?= $locale['437'] ?>' class='tip'><img src='<?= THEMES ?>templates/images/delete.png' alt='<?= $locale['437'] ?>' /></a>
</div>
<div class='clear'></div>
</h2>
</div>
<?php } ?>
</div>
<div class='column tbl2 col2' id='column1'>
<?php $result = mysql_query("SELECT * FROM ".DB_PANELS." WHERE panel_side='1' ORDER BY panel_order");
while ($data = mysql_fetch_assoc($result)) { ?>
<div class='dragbox' id='item<?= $data['panel_id'] ?>'>
<h2>
<div class='dragbox-name-content'><img src='<?= ADMIN ?>images/drag.png' alt='' /> <?= $data['panel_name'] ?></div>
<div class='dragbox-content' style='display:none;'>
<a href='panel_editor.php<?= $aidlink ?>&action=edit&panel_id=<?= $data['panel_id'] ?>&panel_side=1' title='<?= $locale['434'] ?>' class='tip'><img src='<?= THEMES ?>templates/images/edit.png' alt='<?= $locale['434'] ?>' /></a>
<?php if ($data['panel_status'] == 0) { ?>
<a href='<?= FUSION_SELF.$aidlink ?>&action=setstatus&status=1&panel_id=<?= $data['panel_id'] ?>' title='<?= $locale['435'] ?>' class='tip'><img src='<?= THEMES ?>templates/images/on.png' alt='<?= $locale['435'] ?>' /></a>
<?php } else { ?>
<a href='<?= FUSION_SELF.$aidlink ?>&action=setstatus&status=0&panel_id=<?= $data['panel_id'] ?>' title='<?= $locale['436'] ?>' class='tip'><img src='<?= THEMES ?>templates/images/off.png' alt='<?= $locale['436'] ?>' /></a>
<?php } ?>
<a href='<?= FUSION_SELF.$aidlink ?>&action=delete&panel_id=<?= $data['panel_id'] ?>&panel_side=<?= $data['panel_side'] ?>' onclick='return confirm('<?= $locale['440'] ?>');' title='<?= $locale['437'] ?>' class='tip'><img src='<?= THEMES ?>templates/images/delete.png' alt='<?= $locale['437'] ?>' /></a>
</div>
<div class='clear'></div>
</h2>
</div>
<?php } ?>
</div>
<?
closetable();
require_once THEMES."templates/footer.php";
?>
PW od moderatora:
- Przeniesienie posta - bogdan 10.09.2012 18:42
|
|
|