• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • Examples
  • File List

E:/E/GEAMP/www/openbiz/openbiz/others/ZendX/JQuery/View/Helper/Slider.php

00001 <?php
00026 require_once "ZendX/JQuery/View/Helper/UiWidget.php";
00027 
00037 class ZendX_JQuery_View_Helper_Slider extends ZendX_JQuery_View_Helper_UiWidget
00038 {
00049     public function slider($id, $value = null, array $params = array(), array $attribs = array())
00050     {
00051         if(!isset($attribs['id'])) {
00052             $attribs['id'] = $id;
00053         }
00054 
00055         $jqh = ZendX_JQuery_View_Helper_JQuery::getJQueryHandler();
00056 
00057         $params = $this->initializeStartingValues($value, $params);
00058         $handleCount = $this->getHandleCount($params);
00059 
00060         // Build the Change/Update functionality of the Slider via javascript, updating hidden fields. aswell as hidden fields
00061         $hidden = "";
00062         if(!isset($params['change'])) {
00063             $sliderUpdateFn = 'function(e, ui) {'.PHP_EOL;
00064             for($i = 0; $i < $handleCount; $i++) {
00065                 // Js Func
00066                 if($i === 0) {
00067                     $sliderHiddenId = $attribs['id'];
00068                 } else {
00069                     $sliderHiddenId = $attribs['id']."-".$i;
00070                 }
00071                 $sliderUpdateFn .= $this->getChangeCallback($jqh, $sliderHiddenId, $attribs['id'], $i);
00072 
00073                 // Hidden Fields
00074                 $startValue = $this->getHandleValue($i, $params);
00075                 $hiddenAttribs = array('type' => 'hidden', 'id' => $sliderHiddenId, 'name' => $sliderHiddenId, 'value' => $startValue);
00076                 $hidden .= '<input' . $this->_htmlAttribs($hiddenAttribs) . $this->getClosingBracket(). PHP_EOL;
00077             }
00078             $sliderUpdateFn .= "}".PHP_EOL;
00079             $params['change'] = new Zend_Json_Expr($sliderUpdateFn);
00080         }
00081 
00082         $attribs['id'] .= "-slider";
00083 
00084         if(count($params) > 0) {
00085             $params = ZendX_JQuery::encodeJson($params);
00086         } else {
00087             $params = '{}';
00088         }
00089 
00090         $js = sprintf('%s("#%s").slider(%s);', $jqh, $attribs['id'], $params);
00091         $this->jquery->addOnLoad($js);
00092 
00093         $html = '<div' . $this->_htmlAttribs($attribs) . '>';
00094         for($i = 0; $i < $handleCount; $i++) {
00095             $html .= '<div class="ui-slider-handle"></div>';
00096         }
00097         $html .= '</div>';
00098 
00099         return $hidden.$html;
00100     }
00101 
00102     protected function getChangeCallback($jqh, $sliderHiddenId, $elementId, $handlerNum)
00103     {
00104         if(version_compare($this->jquery->getUiVersion(), "1.7.0") >= 0) {
00105             return sprintf('    %s("#%s").attr("value", %s("#%s-slider").slider("values", %d));'.PHP_EOL,
00106                 $jqh, $sliderHiddenId, $jqh, $elementId, $handlerNum
00107             );
00108         } else {
00109             return sprintf('    %s("#%s").attr("value", %s("#%s-slider").slider("value", %d));'.PHP_EOL,
00110                 $jqh, $sliderHiddenId, $jqh, $elementId, $handlerNum
00111             );
00112         }
00113     }
00114 
00115     protected function getHandleCount($params)
00116     {
00117         if(version_compare($this->jquery->getUiVersion(), "1.7.0") >= 0) {
00118             return count($params['values']);
00119         } else {
00120             return count($params['handles']);
00121         }
00122     }
00123 
00124     protected function getHandleValue($handleNum, $params)
00125     {
00126         if(version_compare($this->jquery->getUiVersion(), "1.7.0") >= 0) {
00127             return $params['values'][$handleNum];
00128         } else {
00129             return $params['handles'][$handleNum]['start'];
00130         }
00131     }
00132 
00133     protected function initializeStartingValues($value, $params)
00134     {
00135         $values = array();
00136         if(isset($params['value'])) {
00137             $values[] = $params['value'];
00138             unset($params['value']);
00139         } else if(isset($params['values'])) {
00140             $values = $params['values'];
00141             unset($params['values']);
00142         } else if(isset($params['handles'])) {
00143             for($i = 0; $i < count($params['handles']); $i++) {
00144                 $values[] = $params['handles'][$i]['start'];
00145             }
00146             unset($params['handles']);
00147         } else if(isset($params['startValue'])) {
00148             $values[] = $params['startValue'];
00149             unset($params['startValue']);
00150         } else if(is_numeric($value)) {
00151             $values[] = $value;
00152         }
00153 
00154         if(version_compare($this->jquery->getUiVersion(), "1.7.0") >= 0) {
00155             $params['values'] = $values;
00156         } else {
00157             $params['handles'] = array();
00158             for($i = 0; $i < count($values); $i++) {
00159                 $params['handles'][$i]['start'] = $values[$i];
00160             }
00161         }
00162         return $params;
00163     }
00164 }

Generated on Thu Apr 19 2012 17:01:19 for openbiz by  doxygen 1.7.2