summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Almdal <tnalmdal@shaw.ca>2009-08-13 21:31:20 -0700
committerTim Almdal <tnalmdal@shaw.ca>2009-08-13 21:31:20 -0700
commiteeae2dc56c822a2fa32278bfe0f52bc43f665ec2 (patch)
tree0006550496f648418489a71bdde96ccf8ad30694
parentd758266fabff6c9fe4de22fce57bf00962150ee2 (diff)
Added javascript portion of the drop functionality. At this point you can drag selected images and drop them on the micro thumb grid in a different position or onto a branch in the gallery tree. No ajax call is made, it just writes the generated url and post data to the console, so it only works in ff right now.
-rw-r--r--modules/organize/js/organize.js90
-rw-r--r--modules/organize/views/organize_dialog.html.php3
-rw-r--r--modules/organize/views/organize_thumb_grid.html.php5
3 files changed, 68 insertions, 30 deletions
diff --git a/modules/organize/js/organize.js b/modules/organize/js/organize.js
index a1b59676..07c07286 100644
--- a/modules/organize/js/organize.js
+++ b/modules/organize/js/organize.js
@@ -46,23 +46,68 @@
}
},
- droppable: {
+ content_droppable: {
accept: "*",
tolerance: "pointer",
greedy: true,
drop: function(event, ui) {
- // @todo do a ajax call to send the rearrange request to the server
- // organize/move/target_id/
- // post parameters
- // before=id|after=id
- // source=[id1, id2, ...]
- // before or after not supplied then append to end
- // return: json {
- // result: success | msg,
- // tree: null | new tree,
- // content: new thumbgrid
- // }
- // do forget to reset all the stuff in init when updating the content
+ $.organize.do_drop({
+ parent_id: $(".gBranchSelected").attr("ref"),
+ target_id: $(".currentDropTarget").attr("ref"),
+ position: $(".currentDropTarget").css("borderLeftStyle") == "solid" ? "before" : "after",
+ source: $(ui.helper).children("img")
+ });
+ }
+ },
+
+ branch_droppable: {
+ accept: "*",
+ tolerance: "pointer",
+ greedy: true,
+ drop: function(event, ui) {
+ $.organize.do_drop({
+ parent_id: $(event.target).attr("ref"),
+ target_id: -1,
+ position: "after",
+ source: $(ui.helper).children("img")
+ });
+ }
+ },
+
+ do_drop:function(drop_parms) {
+ var source_ids = "";
+ $(drop_parms.source).each(function(i) {
+ source_ids += (source_ids.length ? "&" : "") + "source_id[" + i + "]=" + $(this).attr("ref");
+ });
+ var url = drop_url.replace("__PARENT_ID__", drop_parms.parent_id)
+ .replace("__POSITION__", drop_parms.position)
+ .replace("__TARGET_ID__", drop_parms.target_id);
+
+ console.group("do_drop");
+ console.log("Generated url: " + url);
+ console.log("Post data(ids to move): " + source_ids);
+ console.groupEnd();
+ // @todo do a ajax call to send the rearrange request to the server
+ // organize/move/parent_id/before|after/-1|target_id
+ // post parameters
+ // source=[id1, id2, ...]
+ // before or after not supplied then append to end
+ // return: json {
+ // result: success | msg,
+ // tree: null | new tree,
+ // content: new thumbgrid
+ // }
+ // do forget to reset all the stuff in init when updating the content
+ },
+
+ mouse_move_handler: function(event) {
+ if ($(".gDragHelper").length) {
+ $(".gMicroThumbGridCell").css("borderStyle", "hidden");
+ $(".currentDropTarget").removeClass("currentDropTarget");
+ var borderStyle = event.pageX < $(this).offset().left + $(this).width() / 2 ?
+ "borderLeftStyle" : "borderRightStyle";
+ $(this).css(borderStyle, "solid");
+ $(this).addClass("currentDropTarget");
}
},
@@ -88,27 +133,18 @@
$("#gDialog").dialog("close");
});
- $(".gBranchText span").click($.organize.collapse_or_expand_tree);
- $(".gBranchText").click($.organize.show_album);
-
$("#gMicroThumbPanel").selectable({filter: ".gMicroThumbGridCell"});
- $(".gOrganizeBranch").droppable($.organize.droppable);
- $("#gMicroThumbPanel").droppable($.organize.droppable);
+ $("#gMicroThumbPanel").droppable($.organize.content_droppable);
$.organize.set_handlers();
},
set_handlers: function() {
$(".gMicroThumbGridCell").draggable($.organize.micro_thumb_draggable);
- $(".gMicroThumbGridCell").mousemove(function(event) {
- if ($(".gDragHelper").length) {
- $(".gMicroThumbGridCell").css("borderStyle", "none");
- console.log("pageX:" + event.pageX + ", offset.left:" + $(this).offset().left + ", width:" + $(this).width());
- var side = event.pageX < $(this).offset().left + $(this).width() / 2 ?
- "hidden hidden hidden solid" : "hidden solid hidden hidden";
- $(this).css("borderStyle", side);
- }
- });
+ $(".gMicroThumbGridCell").mousemove($.organize.mouse_move_handler);
+ $(".gOrganizeBranch").droppable($.organize.branch_droppable);
+ $(".gBranchText span").click($.organize.collapse_or_expand_tree);
+ $(".gBranchText").click($.organize.show_album);
},
/**
diff --git a/modules/organize/views/organize_dialog.html.php b/modules/organize/views/organize_dialog.html.php
index f8d6d792..982eba9e 100644
--- a/modules/organize/views/organize_dialog.html.php
+++ b/modules/organize/views/organize_dialog.html.php
@@ -1,4 +1,7 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
+<script type="text/javascript">
+ var drop_url = "<?= url::site("organize/drop/__PARENT_ID__/__POSITION__/__TARGET_ID__?csrf=$csrf") ?>";
+</script>
<div id="gOrganize" class="gDialogPanel">
<h1 style="display:none"><?= t("Organize %name", array("name" => p::purify($title))) ?></h1>
<div id="bd">
diff --git a/modules/organize/views/organize_thumb_grid.html.php b/modules/organize/views/organize_thumb_grid.html.php
index b41c54e8..671e0ce4 100644
--- a/modules/organize/views/organize_thumb_grid.html.php
+++ b/modules/organize/views/organize_thumb_grid.html.php
@@ -1,9 +1,8 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
<? foreach ($item->children(25, $offset) as $child): ?>
-<li class="gMicroThumbGridCell">
+<li class="gMicroThumbGridCell" ref="<?= $child->id ?>">
<div id="gMicroThumb_<?= $child->id ?>"
- class="gMicroThumb <?= $child->is_album() ? "gAlbum" : "gPhoto" ?>"
- ref="<?= $child->id ?>">
+ class="gMicroThumb <?= $child->is_album() ? "gAlbum" : "gPhoto" ?>">
<?= $child->thumb_img(array("class" => "gThumbnail", "ref" => $child->id), 90, true) ?>
</div>
</li>