summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/rearrange/controllers/rearrange.php52
-rw-r--r--modules/rearrange/helpers/rearrange_installer.php31
-rw-r--r--modules/rearrange/images/Thumbs.dbbin0 -> 18944 bytes
-rw-r--r--modules/rearrange/images/arrow_refresh.pngbin0 -> 685 bytes
-rw-r--r--modules/rearrange/images/collapsable-last.gifbin0 -> 655 bytes
-rw-r--r--modules/rearrange/images/collapsable.gifbin0 -> 1518 bytes
-rw-r--r--modules/rearrange/images/cross.pngbin0 -> 655 bytes
-rw-r--r--modules/rearrange/images/disk.pngbin0 -> 620 bytes
-rw-r--r--modules/rearrange/images/expandable-last.gifbin0 -> 670 bytes
-rw-r--r--modules/rearrange/images/expandable.gifbin0 -> 1539 bytes
-rw-r--r--modules/rearrange/images/folder_add.pngbin0 -> 668 bytes
-rw-r--r--modules/rearrange/images/folder_delete.pngbin0 -> 666 bytes
-rw-r--r--modules/rearrange/images/folder_edit.pngbin0 -> 733 bytes
-rw-r--r--modules/rearrange/images/leaf-last.gifbin0 -> 615 bytes
-rw-r--r--modules/rearrange/images/leaf.gifbin0 -> 1458 bytes
-rw-r--r--modules/rearrange/images/line_bg.gifbin0 -> 93 bytes
-rw-r--r--modules/rearrange/images/line_bg_over.gifbin0 -> 251 bytes
-rw-r--r--modules/rearrange/images/line_bg_over_last.gifbin0 -> 235 bytes
-rw-r--r--modules/rearrange/images/minus.gifbin0 -> 267 bytes
-rw-r--r--modules/rearrange/images/page_add.pngbin0 -> 739 bytes
-rw-r--r--modules/rearrange/images/page_delete.pngbin0 -> 740 bytes
-rw-r--r--modules/rearrange/images/page_edit.pngbin0 -> 807 bytes
-rw-r--r--modules/rearrange/images/plus.gifbin0 -> 167 bytes
-rw-r--r--modules/rearrange/images/root.gifbin0 -> 1004 bytes
-rw-r--r--modules/rearrange/images/spacer.gifbin0 -> 43 bytes
-rw-r--r--modules/rearrange/images/spinner.gifbin0 -> 1553 bytes
-rw-r--r--modules/rearrange/images/tree_line.gifbin0 -> 197 bytes
-rw-r--r--modules/rearrange/index.htm337
-rw-r--r--modules/rearrange/js/jquery.simple.tree.js451
-rw-r--r--modules/rearrange/loadTree.php32
30 files changed, 903 insertions, 0 deletions
diff --git a/modules/rearrange/controllers/rearrange.php b/modules/rearrange/controllers/rearrange.php
new file mode 100644
index 00000000..d5cebd4a
--- /dev/null
+++ b/modules/rearrange/controllers/rearrange.php
@@ -0,0 +1,52 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2008 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+class Rearrange_Controller extends REST_Controller {
+ protected $resource_type = "item";
+
+ public function _show($item) {
+ throw new Exception("@todo Rearrange_Controller::_show NOT IMPLEMENTED");
+ }
+
+ public function _index() {
+ // @todo: represent this in different formats
+ $root = ORM::factory("item", 1);
+ $this->_show($root);
+ }
+
+ public function _form_add($item_id) {
+ throw new Exception("@todo Rearrange_Controller::_form_add NOT IMPLEMENTED");
+ }
+
+ public function _form_edit($tag) {
+ throw new Exception("@todo Rearrange_Controller::_form_edit NOT IMPLEMENTED");
+ }
+
+ public function _create($tag) {
+ throw new Exception("@todo Rearrange_Controller::_create NOT IMPLEMENTED");
+ }
+
+ public function _delete($tag) {
+ throw new Exception("@todo Rearrange_Controller::_delete NOT IMPLEMENTED");
+ }
+
+ public function _update($tag) {
+ throw new Exception("@todo Rearrange_Controller::_update NOT IMPLEMENTED");
+ }
+}
diff --git a/modules/rearrange/helpers/rearrange_installer.php b/modules/rearrange/helpers/rearrange_installer.php
new file mode 100644
index 00000000..e2a82160
--- /dev/null
+++ b/modules/rearrange/helpers/rearrange_installer.php
@@ -0,0 +1,31 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2008 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+class rearrange_installer {
+ public static function install() {
+ $version = module::get_version("rearrange");
+ if ($version == 0) {
+ module::set_version("rearrange", 1);
+ }
+ }
+
+ public static function uninstall() {
+ module::delete("rearrange");
+ }
+}
diff --git a/modules/rearrange/images/Thumbs.db b/modules/rearrange/images/Thumbs.db
new file mode 100644
index 00000000..27137dce
--- /dev/null
+++ b/modules/rearrange/images/Thumbs.db
Binary files differ
diff --git a/modules/rearrange/images/arrow_refresh.png b/modules/rearrange/images/arrow_refresh.png
new file mode 100644
index 00000000..0de26566
--- /dev/null
+++ b/modules/rearrange/images/arrow_refresh.png
Binary files differ
diff --git a/modules/rearrange/images/collapsable-last.gif b/modules/rearrange/images/collapsable-last.gif
new file mode 100644
index 00000000..5d1ea601
--- /dev/null
+++ b/modules/rearrange/images/collapsable-last.gif
Binary files differ
diff --git a/modules/rearrange/images/collapsable.gif b/modules/rearrange/images/collapsable.gif
new file mode 100644
index 00000000..20dbdad2
--- /dev/null
+++ b/modules/rearrange/images/collapsable.gif
Binary files differ
diff --git a/modules/rearrange/images/cross.png b/modules/rearrange/images/cross.png
new file mode 100644
index 00000000..1514d51a
--- /dev/null
+++ b/modules/rearrange/images/cross.png
Binary files differ
diff --git a/modules/rearrange/images/disk.png b/modules/rearrange/images/disk.png
new file mode 100644
index 00000000..99d532e8
--- /dev/null
+++ b/modules/rearrange/images/disk.png
Binary files differ
diff --git a/modules/rearrange/images/expandable-last.gif b/modules/rearrange/images/expandable-last.gif
new file mode 100644
index 00000000..fb468bc3
--- /dev/null
+++ b/modules/rearrange/images/expandable-last.gif
Binary files differ
diff --git a/modules/rearrange/images/expandable.gif b/modules/rearrange/images/expandable.gif
new file mode 100644
index 00000000..451f6a30
--- /dev/null
+++ b/modules/rearrange/images/expandable.gif
Binary files differ
diff --git a/modules/rearrange/images/folder_add.png b/modules/rearrange/images/folder_add.png
new file mode 100644
index 00000000..529fe8fe
--- /dev/null
+++ b/modules/rearrange/images/folder_add.png
Binary files differ
diff --git a/modules/rearrange/images/folder_delete.png b/modules/rearrange/images/folder_delete.png
new file mode 100644
index 00000000..112b0163
--- /dev/null
+++ b/modules/rearrange/images/folder_delete.png
Binary files differ
diff --git a/modules/rearrange/images/folder_edit.png b/modules/rearrange/images/folder_edit.png
new file mode 100644
index 00000000..ad669cc7
--- /dev/null
+++ b/modules/rearrange/images/folder_edit.png
Binary files differ
diff --git a/modules/rearrange/images/leaf-last.gif b/modules/rearrange/images/leaf-last.gif
new file mode 100644
index 00000000..e5d301db
--- /dev/null
+++ b/modules/rearrange/images/leaf-last.gif
Binary files differ
diff --git a/modules/rearrange/images/leaf.gif b/modules/rearrange/images/leaf.gif
new file mode 100644
index 00000000..2f5c2ef1
--- /dev/null
+++ b/modules/rearrange/images/leaf.gif
Binary files differ
diff --git a/modules/rearrange/images/line_bg.gif b/modules/rearrange/images/line_bg.gif
new file mode 100644
index 00000000..3189f90b
--- /dev/null
+++ b/modules/rearrange/images/line_bg.gif
Binary files differ
diff --git a/modules/rearrange/images/line_bg_over.gif b/modules/rearrange/images/line_bg_over.gif
new file mode 100644
index 00000000..421883d7
--- /dev/null
+++ b/modules/rearrange/images/line_bg_over.gif
Binary files differ
diff --git a/modules/rearrange/images/line_bg_over_last.gif b/modules/rearrange/images/line_bg_over_last.gif
new file mode 100644
index 00000000..b43d2b60
--- /dev/null
+++ b/modules/rearrange/images/line_bg_over_last.gif
Binary files differ
diff --git a/modules/rearrange/images/minus.gif b/modules/rearrange/images/minus.gif
new file mode 100644
index 00000000..e4f90c27
--- /dev/null
+++ b/modules/rearrange/images/minus.gif
Binary files differ
diff --git a/modules/rearrange/images/page_add.png b/modules/rearrange/images/page_add.png
new file mode 100644
index 00000000..d5bfa071
--- /dev/null
+++ b/modules/rearrange/images/page_add.png
Binary files differ
diff --git a/modules/rearrange/images/page_delete.png b/modules/rearrange/images/page_delete.png
new file mode 100644
index 00000000..3141467c
--- /dev/null
+++ b/modules/rearrange/images/page_delete.png
Binary files differ
diff --git a/modules/rearrange/images/page_edit.png b/modules/rearrange/images/page_edit.png
new file mode 100644
index 00000000..046811ed
--- /dev/null
+++ b/modules/rearrange/images/page_edit.png
Binary files differ
diff --git a/modules/rearrange/images/plus.gif b/modules/rearrange/images/plus.gif
new file mode 100644
index 00000000..c253770d
--- /dev/null
+++ b/modules/rearrange/images/plus.gif
Binary files differ
diff --git a/modules/rearrange/images/root.gif b/modules/rearrange/images/root.gif
new file mode 100644
index 00000000..27012fbd
--- /dev/null
+++ b/modules/rearrange/images/root.gif
Binary files differ
diff --git a/modules/rearrange/images/spacer.gif b/modules/rearrange/images/spacer.gif
new file mode 100644
index 00000000..1d11fa9a
--- /dev/null
+++ b/modules/rearrange/images/spacer.gif
Binary files differ
diff --git a/modules/rearrange/images/spinner.gif b/modules/rearrange/images/spinner.gif
new file mode 100644
index 00000000..085ccaec
--- /dev/null
+++ b/modules/rearrange/images/spinner.gif
Binary files differ
diff --git a/modules/rearrange/images/tree_line.gif b/modules/rearrange/images/tree_line.gif
new file mode 100644
index 00000000..2d6fa89c
--- /dev/null
+++ b/modules/rearrange/images/tree_line.gif
Binary files differ
diff --git a/modules/rearrange/index.htm b/modules/rearrange/index.htm
new file mode 100644
index 00000000..7ada5ce9
--- /dev/null
+++ b/modules/rearrange/index.htm
@@ -0,0 +1,337 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>SimpleTree Drag&Drop</title>
+<style>
+body
+{
+ font: normal 12px arial, tahoma, helvetica, sans-serif;
+ margin:0;
+ padding:20px;
+}
+.simpleTree
+{
+
+ margin:0;
+ padding:0;
+ /*
+ overflow:auto;
+ width: 250px;
+ height:350px;
+ overflow:auto;
+ border: 1px solid #444444;
+ */
+}
+.simpleTree li
+{
+ list-style: none;
+ margin:0;
+ padding:0 0 0 34px;
+ line-height: 14px;
+}
+.simpleTree li span
+{
+ display:inline;
+ clear: left;
+ white-space: nowrap;
+}
+.simpleTree ul
+{
+ margin:0;
+ padding:0;
+}
+.simpleTree .root
+{
+ margin-left:-16px;
+ background: url(images/root.gif) no-repeat 16px 0 #ffffff;
+}
+.simpleTree .line
+{
+ margin:0 0 0 -16px;
+ padding:0;
+ line-height: 3px;
+ height:3px;
+ font-size:3px;
+ background: url(images/line_bg.gif) 0 0 no-repeat transparent;
+}
+.simpleTree .line-last
+{
+ margin:0 0 0 -16px;
+ padding:0;
+ line-height: 3px;
+ height:3px;
+ font-size:3px;
+ background: url(images/spacer.gif) 0 0 no-repeat transparent;
+}
+.simpleTree .line-over
+{
+ margin:0 0 0 -16px;
+ padding:0;
+ line-height: 3px;
+ height:3px;
+ font-size:3px;
+ background: url(images/line_bg_over.gif) 0 0 no-repeat transparent;
+}
+.simpleTree .line-over-last
+{
+ margin:0 0 0 -16px;
+ padding:0;
+ line-height: 3px;
+ height:3px;
+ font-size:3px;
+ background: url(images/line_bg_over_last.gif) 0 0 no-repeat transparent;
+}
+.simpleTree .folder-open
+{
+ margin-left:-16px;
+ background: url(images/collapsable.gif) 0 -2px no-repeat #fff;
+}
+.simpleTree .folder-open-last
+{
+ margin-left:-16px;
+ background: url(images/collapsable-last.gif) 0 -2px no-repeat #fff;
+}
+.simpleTree .folder-close
+{
+ margin-left:-16px;
+ background: url(images/expandable.gif) 0 -2px no-repeat #fff;
+}
+.simpleTree .folder-close-last
+{
+ margin-left:-16px;
+ background: url(images/expandable-last.gif) 0 -2px no-repeat #fff;
+}
+.simpleTree .doc
+{
+ margin-left:-16px;
+ background: url(images/leaf.gif) 0 -1px no-repeat #fff;
+}
+.simpleTree .doc-last
+{
+ margin-left:-16px;
+ background: url(images/leaf-last.gif) 0 -1px no-repeat #fff;
+}
+.simpleTree .ajax
+{
+ background: url(images/spinner.gif) no-repeat 0 0 #ffffff;
+ height: 16px;
+ display:none;
+}
+.simpleTree .ajax li
+{
+ display:none;
+ margin:0;
+ padding:0;
+}
+.simpleTree .trigger
+{
+ display:inline;
+ margin-left:-32px;
+ width: 28px;
+ height: 11px;
+ cursor:pointer;
+}
+.simpleTree .text
+{
+ cursor: default;
+}
+.simpleTree .active
+{
+ cursor: default;
+ background-color:#F7BE77;
+ padding:0px 2px;
+ border: 1px dashed #444;
+}
+#drag_container
+{
+ background:#ffffff;
+ color:#000;
+ font: normal 11px arial, tahoma, helvetica, sans-serif;
+ border: 1px dashed #767676;
+}
+#drag_container ul
+{
+ list-style: none;
+ padding:0;
+ margin:0;
+}
+
+#drag_container li
+{
+ list-style: none;
+ background-color:#ffffff;
+ line-height:18px;
+ white-space: nowrap;
+ padding:1px 1px 0px 16px;
+ margin:0;
+}
+#drag_container li span
+{
+ padding:0;
+}
+
+#drag_container li.doc, #drag_container li.doc-last
+{
+ background: url(images/leaf.gif) no-repeat -17px 0 #ffffff;
+}
+#drag_container .folder-close, #drag_container .folder-close-last
+{
+ background: url(images/expandable.gif) no-repeat -17px 0 #ffffff;
+}
+
+#drag_container .folder-open, #drag_container .folder-open-last
+{
+ background: url(images/collapsable.gif) no-repeat -17px 0 #ffffff;
+}
+.contextMenu
+{
+ display:none;
+}
+</style>
+<script type="text/javascript" src="js/jquery.js"></script>
+<script type="text/javascript" src="js/jquery.simple.tree.js"></script>
+<script type="text/javascript">
+var simpleTreeCollection;
+$(document).ready(function(){
+ simpleTreeCollection = $('.simpleTree').simpleTree({
+ autoclose: true,
+ afterClick:function(node){
+ //alert("text-"+$('span:first',node).text());
+ },
+ afterDblClick:function(node){
+ //alert("text-"+$('span:first',node).text());
+ },
+ afterMove:function(destination, source, pos){
+ //alert("destination-"+destination.attr('id')+" source-"+source.attr('id')+" pos-"+pos);
+ },
+ afterAjax:function()
+ {
+ //alert('Loaded');
+ },
+ animate:true
+ //,docToFolderConvert:true
+ });
+});
+</script>
+</head>
+
+<body>
+<div class="contextMenu" id="myMenu1">
+ <ul>
+ <li id="add"><img src="images/folder_add.png" /> Add child</li>
+ <li id="reload"><img src="images/arrow_refresh.png" /> Reload</li>
+ <li id="edit"><img src="images/folder_edit.png" /> Edit</li>
+ <li id="delete"><img src="images/folder_delete.png" /> Delete</li>
+ </ul>
+</div>
+<div class="contextMenu" id="myMenu2">
+ <ul>
+ <li id="edit"><img src="images/page_edit.png" /> Edit</li>
+ <li id="delete"><img src="images/page_delete.png" /> Delete</li>
+ </ul>
+</div>
+<ul class="simpleTree">
+ <li class="root" id='1'><span>Tree Root 1</span>
+ <ul>
+
+ <li class="open" id='2'><span>Tree Node 1</span>
+ <ul>
+
+ <li id='3'><span>Tree Node 1-1</span>
+ <ul class="ajax">
+ <li id='4'>{url:loadTree.php?tree_id=1}</li>
+ </ul>
+ </li>
+
+ </ul>
+ </li>
+
+ <li id='5'><span>Tree Node 2</span>
+ <ul>
+
+ <li id='6'><span>Tree Node 2-1</span>
+ <ul>
+
+ <li id='7'><span>Tree Node 2-1-1</span></li>
+
+ <li id='8'><span>Tree Node 2-1-2</span></li>
+
+ <li id='9'><span>Tree Node 2-1-3</span></li>
+
+ <li id='10'><span>Tree Node 2-1-4</span>
+ <ul class="ajax">
+ <li id='11'>{url:loadTree.php?tree_id=1}</li>
+ </ul>
+ </li>
+
+ </ul>
+ </li>
+
+ <li id='12'><span>Tree Node 2-2</span>
+ <ul>
+
+ <li id='13'><span>Tree Node 2-2-1</span></li>
+
+ </ul>
+ </li>
+
+
+ <li id='14'><span>Tree Node 2-3</span>
+ <ul>
+
+ <li id='15'><span>Tree Node 2-3-1</span>
+ <ul>
+
+ <li id='16'><span>Tree Node 2-3-1-1</span></li>
+
+ <li id='17'><span>Tree Node 2-3-1-2</span></li>
+
+ <li id='18'><span>Tree Node 2-3-1-3</span>
+ <ul>
+
+ <li id='19'><span>Tree Node 2-3-1-3-1</span></li>
+
+ </ul>
+ </li>
+
+ <li id='20'><span>Tree Node 2-3-1-4</span></li>
+
+ <li id='21'><span>Tree Node 2-3-1-5</span></li>
+
+ <li id='22'><span>Tree Node 2-3-1-6</span>
+ <ul>
+
+ <li id='23'><span>Tree Node 2-3-1-6-1</span></li>
+
+ </ul>
+ </li>
+
+ <li id='24'><span>Tree Node 2-3-1-7</span></li>
+
+ <li id='25'><span>Tree Node 2-3-1-8</span></li>
+
+ <li id='26'><span>Tree Node 2-3-1-9</span>
+ <ul>
+
+ <li id='27'><span>Tree Node 2-3-1-9-1</span></li>
+
+ </ul>
+ </li>
+
+ </ul>
+ </li>
+
+ </ul>
+ </li>
+
+ </ul>
+ </li>
+
+ </ul>
+ </li>
+</ul>
+
+</body>
+
+</html>
diff --git a/modules/rearrange/js/jquery.simple.tree.js b/modules/rearrange/js/jquery.simple.tree.js
new file mode 100644
index 00000000..8e3bc783
--- /dev/null
+++ b/modules/rearrange/js/jquery.simple.tree.js
@@ -0,0 +1,451 @@
+/*
+* jQuery SimpleTree Drag&Drop plugin
+* Update on 22th May 2008
+* Version 0.3
+*
+* Licensed under BSD <http://en.wikipedia.org/wiki/BSD_License>
+* Copyright (c) 2008, Peter Panov <panov@elcat.kg>, IKEEN Group http://www.ikeen.com
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* * Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in the
+* documentation and/or other materials provided with the distribution.
+* * Neither the name of the Peter Panov, IKEEN Group nor the
+* names of its contributors may be used to endorse or promote products
+* derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY Peter Panov, IKEEN Group ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL Peter Panov, IKEEN Group BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+$.fn.simpleTree = function(opt){
+ return this.each(function(){
+ var TREE = this;
+ var ROOT = $('.root',this);
+ var mousePressed = false;
+ var mouseMoved = false;
+ var dragMoveType = false;
+ var dragNode_destination = false;
+ var dragNode_source = false;
+ var dragDropTimer = false;
+ var ajaxCache = Array();
+
+ TREE.option = {
+ drag: true,
+ animate: false,
+ autoclose: false,
+ speed: 'fast',
+ afterAjax: false,
+ afterMove: false,
+ afterClick: false,
+ afterDblClick: false,
+ // added by Erik Dohmen (2BinBusiness.nl) to make context menu cliks available
+ afterContextMenu: false,
+ docToFolderConvert:false
+ };
+ TREE.option = $.extend(TREE.option,opt);
+ $.extend(this, {getSelected: function(){
+ return $('span.active', this).parent();
+ }});
+ TREE.closeNearby = function(obj)
+ {
+ $(obj).siblings().filter('.folder-open, .folder-open-last').each(function(){
+ var childUl = $('>ul',this);
+ var className = this.className;
+ this.className = className.replace('open','close');
+ if(TREE.option.animate)
+ {
+ childUl.animate({height:"toggle"},TREE.option.speed);
+ }else{
+ childUl.hide();
+ }
+ });
+ };
+ TREE.nodeToggle = function(obj)
+ {
+ var childUl = $('>ul',obj);
+ if(childUl.is(':visible')){
+ obj.className = obj.className.replace('open','close');
+
+ if(TREE.option.animate)
+ {
+ childUl.animate({height:"toggle"},TREE.option.speed);
+ }else{
+ childUl.hide();
+ }
+ }else{
+ obj.className = obj.className.replace('close','open');
+ if(TREE.option.animate)
+ {
+ childUl.animate({height:"toggle"},TREE.option.speed, function(){
+ if(TREE.option.autoclose)TREE.closeNearby(obj);
+ if(childUl.is('.ajax'))TREE.setAjaxNodes(childUl, obj.id);
+ });
+ }else{
+ childUl.show();
+ if(TREE.option.autoclose)TREE.closeNearby(obj);
+ if(childUl.is('.ajax'))TREE.setAjaxNodes(childUl, obj.id);
+ }
+ }
+ };
+ TREE.setAjaxNodes = function(node, parentId, callback)
+ {
+ if($.inArray(parentId,ajaxCache) == -1){
+ ajaxCache[ajaxCache.length]=parentId;
+ var url = $.trim($('>li', node).text());
+ if(url && url.indexOf('url:'))
+ {
+ url=$.trim(url.replace(/.*\{url:(.*)\}/i ,'$1'));
+ $.ajax({
+ type: "GET",
+ url: url,
+ contentType:'html',
+ cache:false,
+ success: function(responce){
+ node.removeAttr('class');
+ node.html(responce);
+ $.extend(node,{url:url});
+ TREE.setTreeNodes(node, true);
+ if(typeof TREE.option.afterAjax == 'function')
+ {
+ TREE.option.afterAjax(node);
+ }
+ if(typeof callback == 'function')
+ {
+ callback(node);
+ }
+ }
+ });
+ }
+
+ }
+ };
+ TREE.setTreeNodes = function(obj, useParent){
+ obj = useParent? obj.parent():obj;
+ $('li>span', obj).addClass('text')
+ .bind('selectstart', function() {
+ return false;
+ }).click(function(){
+ $('.active',TREE).attr('class','text');
+ if(this.className=='text')
+ {
+ this.className='active';
+ }
+ if(typeof TREE.option.afterClick == 'function')
+ {
+ TREE.option.afterClick($(this).parent());
+ }
+ return false;
+ }).dblclick(function(){
+ mousePressed = false;
+ TREE.nodeToggle($(this).parent().get(0));
+ if(typeof TREE.option.afterDblClick == 'function')
+ {
+ TREE.option.afterDblClick($(this).parent());
+ }
+ return false;
+ // added by Erik Dohmen (2BinBusiness.nl) to make context menu actions
+ // available
+ }).bind("contextmenu",function(){
+ $('.active',TREE).attr('class','text');
+ if(this.className=='text')
+ {
+ this.className='active';
+ }
+ if(typeof TREE.option.afterContextMenu == 'function')
+ {
+ TREE.option.afterContextMenu($(this).parent());
+ }
+ return false;
+ }).mousedown(function(event){
+ mousePressed = true;
+ cloneNode = $(this).parent().clone();
+ var LI = $(this).parent();
+ if(TREE.option.drag)
+ {
+ $('>ul', cloneNode).hide();
+ $('body').append('<div id="drag_container"><ul></ul></div>');
+ $('#drag_container').hide().css({opacity:'0.8'});
+ $('#drag_container >ul').append(cloneNode);
+ $("<img>").attr({id : "tree_plus",src : "images/plus.gif"}).css({width: "7px",display: "block",position: "absolute",left : "5px",top: "5px", display:'none'}).appendTo("body");
+ $(document).bind("mousemove", {LI:LI}, TREE.dragStart).bind("mouseup",TREE.dragEnd);
+ }
+ return false;
+ }).mouseup(function(){
+ if(mousePressed && mouseMoved && dragNode_source)
+ {
+ TREE.moveNodeToFolder($(this).parent());
+ }
+ TREE.eventDestroy();
+ });
+ $('li', obj).each(function(i){
+ var className = this.className;
+ var open = false;
+ var cloneNode=false;
+ var LI = this;
+ var childNode = $('>ul',this);
+ if(childNode.size()>0){
+ var setClassName = 'folder-';
+ if(className && className.indexOf('open')>=0){
+ setClassName=setClassName+'open';
+ open=true;
+ }else{
+ setClassName=setClassName+'close';
+ }
+ this.className = setClassName + ($(this).is(':last-child')? '-last':'');
+
+ if(!open || className.indexOf('ajax')>=0)childNode.hide();
+
+ TREE.setTrigger(this);
+ }else{
+ var setClassName = 'doc';
+ this.className = setClassName + ($(this).is(':last-child')? '-last':'');
+ }
+ }).before('<li class="line">&nbsp;</li>')
+ .filter(':last-child').after('<li class="line-last"></li>');
+ TREE.setEventLine($('.line, .line-last', obj));
+ };
+ TREE.setTrigger = function(node){
+ $('>span',node).before('<img class="trigger" src="images/spacer.gif" border=0>');
+ var trigger = $('>.trigger', node);
+ trigger.click(function(event){
+ TREE.nodeToggle(node);
+ });
+ if(!$.browser.msie)
+ {
+ trigger.css('float','left');
+ }
+ };
+ TREE.dragStart = function(event){
+ var LI = $(event.data.LI);
+ if(mousePressed)
+ {
+ mouseMoved = true;
+ if(dragDropTimer) clearTimeout(dragDropTimer);
+ if($('#drag_container:not(:visible)')){
+ $('#drag_container').show();
+ LI.prev('.line').hide();
+ dragNode_source = LI;
+ }
+ $('#drag_container').css({position:'absolute', "left" : (event.pageX + 5), "top": (event.pageY + 15) });
+ if(LI.is(':visible'))LI.hide();
+ var temp_move = false;
+ if(event.target.tagName.toLowerCase()=='span' && $.inArray(event.target.className, Array('text','active','trigger'))!= -1)
+ {
+ var parent = event.target.parentNode;
+ var offs = $(parent).offset({scroll:false});
+ var screenScroll = {x : (offs.left - 3),y : event.pageY - offs.top};
+ var isrc = $("#tree_plus").attr('src');
+ var ajaxChildSize = $('>ul.ajax',parent).size();
+ var ajaxChild = $('>ul.ajax',parent);
+ screenScroll.x += 19;
+ screenScroll.y = event.pageY - screenScroll.y + 5;
+
+ if(parent.className.indexOf('folder-close')>=0 && ajaxChildSize==0)
+ {
+ if(isrc.indexOf('minus')!=-1)$("#tree_plus").attr('src','images/plus.gif');
+ $("#tree_plus").css({"left": screenScroll.x, "top": screenScroll.y}).show();
+ dragDropTimer = setTimeout(function(){
+ parent.className = parent.className.replace('close','open');
+ $('>ul',parent).show();
+ }, 700);
+ }else if(parent.className.indexOf('folder')>=0 && ajaxChildSize==0){
+ if(isrc.indexOf('minus')!=-1)$("#tree_plus").attr('src','images/plus.gif');
+ $("#tree_plus").css({"left": screenScroll.x, "top": screenScroll.y}).show();
+ }else if(parent.className.indexOf('folder-close')>=0 && ajaxChildSize>0)
+ {
+ mouseMoved = false;
+ $("#tree_plus").attr('src','images/minus.gif');
+ $("#tree_plus").css({"left": screenScroll.x, "top": screenScroll.y}).show();
+
+ $('>ul',parent).show();
+ /*
+ Thanks for the idea of Erik Dohmen
+ */
+ TREE.setAjaxNodes(ajaxChild,parent.id, function(){
+ parent.className = parent.className.replace('close','open');
+ mouseMoved = true;
+ $("#tree_plus").attr('src','images/plus.gif');
+ $("#tree_plus").css({"left": screenScroll.x, "top": screenScroll.y}).show();
+ });
+
+ }else{
+ if(TREE.option.docToFolderConvert)
+ {
+ $("#tree_plus").css({"left": screenScroll.x, "top": screenScroll.y}).show();
+ }else{
+ $("#tree_plus").hide();
+ }
+ }
+ }else{
+ $("#tree_plus").hide();
+ }
+ return false;
+ }
+ return true;
+ };
+ TREE.dragEnd = function(){
+ if(dragDropTimer) clearTimeout(dragDropTimer);
+ TREE.eventDestroy();
+ };
+ TREE.setEventLine = function(obj){
+ obj.mouseover(function(){
+ if(this.className.indexOf('over')<0 && mousePressed && mouseMoved)
+ {
+ this.className = this.className.replace('line','line-over');
+ }
+ }).mouseout(function(){
+ if(this.className.indexOf('over')>=0)
+ {
+ this.className = this.className.replace('-over','');
+ }
+ }).mouseup(function(){
+ if(mousePressed && dragNode_source && mouseMoved)
+ {
+ dragNode_destination = $(this).parents('li:first');
+ TREE.moveNodeToLine(this);
+ TREE.eventDestroy();
+ }
+ });
+ };
+ TREE.checkNodeIsLast = function(node)
+ {
+ if(node.className.indexOf('last')>=0)
+ {
+ var prev_source = dragNode_source.prev().prev();
+ if(prev_source.size()>0)
+ {
+ prev_source[0].className+='-last';
+ }
+ node.className = node.className.replace('-last','');
+ }
+ };
+ TREE.checkLineIsLast = function(line)
+ {
+ if(line.className.indexOf('last')>=0)
+ {
+ var prev = $(line).prev();
+ if(prev.size()>0)
+ {
+ prev[0].className = prev[0].className.replace('-last','');
+ }
+ dragNode_source[0].className+='-last';
+ }
+ };
+ TREE.eventDestroy = function()
+ {
+ // added by Erik Dohmen (2BinBusiness.nl), the unbind mousemove TREE.dragStart action
+ // like this other mousemove actions binded through other actions ain't removed (use it myself
+ // to determine location for context menu)
+ $(document).unbind('mousemove',TREE.dragStart).unbind('mouseup').unbind('mousedown');
+ $('#drag_container, #tree_plus').remove();
+ if(dragNode_source)
+ {
+ $(dragNode_source).show().prev('.line').show();
+ }
+ dragNode_destination = dragNode_source = mousePressed = mouseMoved = false;
+ //ajaxCache = Array();
+ };
+ TREE.convertToFolder = function(node){
+ node[0].className = node[0].className.replace('doc','folder-open');
+ node.append('<ul><li class="line-last"></li></ul>');
+ TREE.setTrigger(node[0]);
+ TREE.setEventLine($('.line, .line-last', node));
+ };
+ TREE.convertToDoc = function(node){
+ $('>ul', node).remove();
+ $('img', node).remove();
+ node[0].className = node[0].className.replace(/folder-(open|close)/gi , 'doc');
+ };
+ TREE.moveNodeToFolder = function(node)
+ {
+ if(!TREE.option.docToFolderConvert && node[0].className.indexOf('doc')!=-1)
+ {
+ return true;
+ }else if(TREE.option.docToFolderConvert && node[0].className.indexOf('doc')!=-1){
+ TREE.convertToFolder(node);
+ }
+ TREE.checkNodeIsLast(dragNode_source[0]);
+ var lastLine = $('>ul >.line-last', node);
+ if(lastLine.size()>0)
+ {
+ TREE.moveNodeToLine(lastLine[0]);
+ }
+ };
+ TREE.moveNodeToLine = function(node){
+ TREE.checkNodeIsLast(dragNode_source[0]);
+ TREE.checkLineIsLast(node);
+ var parent = $(dragNode_source).parents('li:first');
+ var line = $(dragNode_source).prev('.line');
+ $(node).before(dragNode_source);
+ $(dragNode_source).before(line);
+ node.className = node.className.replace('-over','');
+ var nodeSize = $('>ul >li', parent).not('.line, .line-last').filter(':visible').size();
+ if(TREE.option.docToFolderConvert && nodeSize==0)
+ {
+ TREE.convertToDoc(parent);
+ }else if(nodeSize==0)
+ {
+ parent[0].className=parent[0].className.replace('open','close');
+ $('>ul',parent).hide();
+ }
+
+ // added by Erik Dohmen (2BinBusiness.nl) select node
+ if($('span:first',dragNode_source).attr('class')=='text')
+ {
+ $('.active',TREE).attr('class','text');
+ $('span:first',dragNode_source).attr('class','active');
+ }
+
+ if(typeof(TREE.option.afterMove) == 'function')
+ {
+ var pos = $(dragNode_source).prevAll(':not(.line)').size();
+ TREE.option.afterMove($(node).parents('li:first'), $(dragNode_source), pos);
+ }
+ };
+
+ TREE.addNode = function(id, text, callback)
+ {
+ var temp_node = $('<li><ul><li id="'+id+'"><span>'+text+'</span></li></ul></li>');
+ TREE.setTreeNodes(temp_node);
+ dragNode_destination = TREE.getSelected();
+ dragNode_source = $('.doc-last',temp_node);
+ TREE.moveNodeToFolder(dragNode_destination);
+ temp_node.remove();
+ if(typeof(callback) == 'function')
+ {
+ callback(dragNode_destination, dragNode_source);
+ }
+ };
+ TREE.delNode = function(callback)
+ {
+ dragNode_source = TREE.getSelected();
+ TREE.checkNodeIsLast(dragNode_source[0]);
+ dragNode_source.prev().remove();
+ dragNode_source.remove();
+ if(typeof(callback) == 'function')
+ {
+ callback(dragNode_destination);
+ }
+ };
+
+ TREE.init = function(obj)
+ {
+ TREE.setTreeNodes(obj, false);
+ };
+ TREE.init(ROOT);
+ });
+} \ No newline at end of file
diff --git a/modules/rearrange/loadTree.php b/modules/rearrange/loadTree.php
new file mode 100644
index 00000000..a13faae9
--- /dev/null
+++ b/modules/rearrange/loadTree.php
@@ -0,0 +1,32 @@
+<li id='35'><span class="text">Tree Node Ajax 1</span></li>
+<li id='36'><span class="text">Tree Node Ajax 2</span></li>
+<li id='37'><span class="text">Tree Node Ajax 3</span>
+ <ul>
+ <li id='38'><span class="text">Tree Node Ajax 3-1</span>
+ <ul>
+ <li id='39'><span class="text">Tree Node Ajax 3-1-1</span></li>
+ <li id='40'><span class="text">Tree Node Ajax 3-1-2</span></li>
+ <li id='41'><span class="text">Tree Node Ajax 3-1-3</span></li>
+ <li id='42'><span class="text">Tree Node Ajax 3-1-4</span></li>
+ </ul>
+ </li>
+ <li id='43'><span class="text">Tree Node Ajax 3-2</span></li>
+ <li id='44'><span class="text">Tree Node Ajax 3-3</span>
+ <ul>
+ <li id='45'><span class="text">Tree Node Ajax 3-3-1</span></li>
+ <li id='46'><span class="text">Tree Node Ajax 3-3-2</span></li>
+ <li id='47'><span class="text">Tree Node Ajax 3-3-3</span></li>
+ </ul>
+ </li>
+ <li id='48'><span class="text">Tree Node Ajax 3-4</span></li>
+ <li id='49'><span class="text">Tree Node Ajax 3-5</span>
+ <ul>
+ <li id='50'><span class="text">Tree Node Ajax 3-5-1</span></li>
+ <li id='51'><span class="text">Tree Node Ajax 3-5-2</span></li>
+ <li id='52'><span class="text">Tree Node Ajax 3-5-3</span></li>
+ </ul>
+ </li>
+ <li id='53'><span class="text">Tree Node Ajax 3-6</span></li>
+ </ul>
+</li>
+<li id='54'><span class="text">Tree Node Ajax 4</span></li> \ No newline at end of file