summaryrefslogtreecommitdiff
path: root/framework/Web/UI/JuiControls/TJuiDraggable.php
diff options
context:
space:
mode:
authorFabio Bas <ctrlaltca@gmail.com>2013-12-04 23:40:28 +0100
committerFabio Bas <ctrlaltca@gmail.com>2013-12-04 23:40:37 +0100
commit1e3d5c170fd3bf18d1e153473e020b1fa5294d05 (patch)
tree5c0d0bb542b7be76589a16406664eb5f9317a95e /framework/Web/UI/JuiControls/TJuiDraggable.php
parent0d613aaf34d76fab8788e5677997d4374a3afcd1 (diff)
jQuery-ui based draggable and droppable
Diffstat (limited to 'framework/Web/UI/JuiControls/TJuiDraggable.php')
-rw-r--r--framework/Web/UI/JuiControls/TJuiDraggable.php91
1 files changed, 91 insertions, 0 deletions
diff --git a/framework/Web/UI/JuiControls/TJuiDraggable.php b/framework/Web/UI/JuiControls/TJuiDraggable.php
new file mode 100644
index 00000000..eb174eb0
--- /dev/null
+++ b/framework/Web/UI/JuiControls/TJuiDraggable.php
@@ -0,0 +1,91 @@
+<?php
+/**
+ * TJuiDraggable class file.
+ *
+ * @author Fabio Bas <ctrlaltca[at]gmail[dot]com>
+ * @link http://www.pradosoft.com/
+ * @copyright Copyright &copy; 2013-2013 PradoSoft
+ * @license http://www.pradosoft.com/license/
+ * @version $Id: TJuiDraggable.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @package System.Web.UI.JuiControls
+ */
+
+Prado::using('System.Web.UI.JuiControls.TJuiControlAdapter');
+
+/**
+ * TJuiDraggable class.
+ *
+ *
+ * <code>
+ * <com:TJuiDraggable
+ * ID="drag1"
+ * Style="border: 1px solid red; width:100px;height:100px"
+ * Options.Axis="y"
+ * >
+ * drag me
+ * </com:TJuiDraggable>
+ * </code>
+ *
+ * @author Fabio Bas <ctrlaltca[at]gmail[dot]com>
+ * @version $Id: TJuiDraggable.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @package System.Web.UI.JuiControls
+ * @since 3.3
+ */
+class TJuiDraggable extends TActivePanel implements IJuiOptions
+{
+ /**
+ * Creates a new callback control, sets the adapter to
+ * TActiveControlAdapter. If you override this class, be sure to set the
+ * adapter appropriately by, for example, by calling this constructor.
+ */
+ public function __construct()
+ {
+ parent::__construct();
+ $this->setAdapter(new TJuiControlAdapter($this));
+ }
+
+ /**
+ * Object containing defined javascript options
+ * @return TJuiControlOptions
+ */
+ public function getOptions()
+ {
+ static $options;
+ if($options===null)
+ $options=new TJuiControlOptions($this);
+ return $options;
+ }
+
+ /**
+ * Array containing valid javascript options
+ * @return array()
+ */
+ public function getValidOptions()
+ {
+ return array('addClasses', 'appendTo', 'axis', 'cancel', 'connectToSortable', 'containment', 'cursor', 'cursorAt', 'delay', 'disabled', 'distance', 'grid', 'handle', 'helper', 'iframeFix', 'opacity', 'refreshPositions', 'revert', 'revertDuration', 'scope', 'scroll', 'scrollSensitivity', 'scrollSpeed', 'snap', 'snapMode', 'snapTolerance', 'stack', 'zIndex');
+ }
+
+ /**
+ * @return array list of callback options.
+ */
+ protected function getPostBackOptions()
+ {
+ $options = $this->getOptions()->toArray();
+ return $options;
+ }
+
+ /**
+ * Ensure that the ID attribute is rendered and registers the javascript code
+ * for initializing the active control.
+ */
+ protected function addAttributesToRender($writer)
+ {
+ parent::addAttributesToRender($writer);
+
+ $writer->addAttribute('id',$this->getClientID());
+ $options=TJavascript::encode($this->getPostBackOptions());
+ $cs=$this->getPage()->getClientScript();
+ $code="jQuery('#".$this->getClientId()."').draggable(".$options.");";
+ $cs->registerEndScript(sprintf('%08X', crc32($code)), $code);
+ }
+}