Искате да инициализирате количката си с артикулите, които потребителят е избрал за покупка, всяко падане трябва
<script>
function dropped(source, nodes, copy, target) {
if(target.id == "myCardId") {
var list = dojo.cookie("mycart");
// split or initialize list (delimiter : comma)
list = list = "" ? [] : list.split(",");
if(dojo.indexOf(nodes[0].id), list) != -1)
// allready there, return
return;
else {
// combine list with every dropped node
dojo.forEach(nodes, function(dropItem) { list.push(dropItem.id); });
// set cookie with new variable
dojo.cookie("mycart", list.join(",");
}
}
}
....
dojo.subscribe("dnd/drop", dropped);
</script>
Може да се имплементира в PHP така, докато няма да навлизам в подробности как получавате изгледа на елементите, заради примера - имате ги в db_data;
<?php
if(isset($_COOKIE) && !empty($_COOKIE['mycart'])) {
$cartContents = "<ul class=\"dndContainer\">";
foreach(explode(",", $_COOKIE['mycart']) as $id)
$cartContents .= "<li class=\"dndItem\">".$db_data[$id]->title."</li>";
$cartContent .= "</ul>";
}
?>
<div id="dragSource"><? print generateView(); ?></div>
<div id="myCartId"><? print $cartContents; ?></div>
алтернативно за големи колички, бисквитката е излишна и ще затрупа заглавките, горният скрипт може след това да изпрати XHR с идентификатор и сървър, след което да го добави към сесията, използвайки същата логика като javascript - в този случай просто заменете $_COOKIE с $_SESSION
person
mschr
schedule
07.05.2012