Пример #1
0
    /**
     * Merge attributes and parameters
     *
     * Also sets up requires
     * 
     * @param  array $attribs 
     * @param  array $params 
     * @param  string $type 
     * @param  string $dijit Dijit type to use (otherwise, pull from $_dijit)
     * @return array
     */
    protected function _prepareDijit(array $attribs, array $params, $type, $dijit = null)
    {
        $this->dojo->requireModule($this->_module);

        switch ($type) {
            case 'layout':
                $stripParams = array('id');
                break;
            case 'element':
                $stripParams = array('id', 'name', 'value', 'type');
                foreach (array('checked', 'disabled', 'readonly') as $attrib) {
                    if (array_key_exists($attrib, $attribs)) {
                        if ($attribs[$attrib]) {
                            $attribs[$attrib] = $attrib;
                        } else {
                            unset($attribs[$attrib]);
                        }
                    }
                }
                break;
            case 'textarea':
                $stripParams = array('id', 'name', 'type');
                break;
            default:
        }

        foreach ($stripParams as $param) {
            if (array_key_exists($param, $params)) {
                unset($params[$param]);
            }
        }

        // Normalize constraints, if present
        if (array_key_exists('constraints', $params) && is_array($params['constraints'])) {
            require_once 'Zend/Json.php';
            $params['constraints'] = Zend_Json::encode($params['constraints']);
        }
        if (array_key_exists('constraints', $params) && $this->_useDeclarative()) {
            $params['constraints'] = str_replace('"', "'", $params['constraints']);
        }

        $dijit = (null === $dijit) ? $this->_dijit : $dijit;
        if ($this->_useDeclarative()) {
            $attribs = array_merge($attribs, $params);
            $attribs['dojoType'] = $dijit;
        } elseif (!$this->_useProgrammaticNoScript()) {
            $this->_createDijit($dijit, $attribs['id'], $params);
        }

        return $attribs;
    }
Пример #2
0
 /**
  * Merge attributes and parameters
  *
  * Also sets up requires
  * 
  * @param array $attribs 
  * @param array $params 
  * @param mixed $type 
  * @return void
  */
 protected function _prepareDijit(array $attribs, array $params, $type)
 {
     $this->dojo->requireModule($this->_module);
     switch ($type) {
         case 'layout':
             $stripParams = array('id');
             break;
         case 'element':
             $stripParams = array('id', 'name', 'value', 'type');
             foreach (array('checked', 'disabled', 'readonly') as $attrib) {
                 if (array_key_exists($attrib, $attribs)) {
                     if ($attribs[$attrib]) {
                         $attribs[$attrib] = $attrib;
                     } else {
                         unset($attribs[$attrib]);
                     }
                 }
             }
             break;
         case 'textarea':
             $stripParams = array('id', 'name', 'type');
             break;
         default:
     }
     foreach ($stripParams as $param) {
         if (array_key_exists($param, $params)) {
             unset($params[$param]);
         }
     }
     if ($this->_useDeclarative()) {
         $attribs = array_merge($attribs, $params);
         $attribs['dojoType'] = $this->_dijit;
     } elseif (!$this->_useProgrammaticNoScript()) {
         $this->_createDijit($this->_dijit, $id, $params);
     }
     return $attribs;
 }
Пример #3
0
 /**
  * Merge attributes and parameters
  *
  * Also sets up requires
  *
  * @param  array $attribs
  * @param  array $params
  * @param  string $type
  * @param  string $dijit Dijit type to use (otherwise, pull from $_dijit)
  * @return array
  */
 protected function _prepareDijit(array $attribs, array $params, $type, $dijit = null)
 {
     $this->dojo->requireModule($this->_module);
     switch ($type) {
         case 'layout':
             $stripParams = array('id');
             break;
         case 'element':
             $stripParams = array('id', 'name', 'value', 'type');
             foreach (array('checked', 'disabled', 'readonly') as $attrib) {
                 if (array_key_exists($attrib, $attribs)) {
                     if ($attribs[$attrib]) {
                         $attribs[$attrib] = $attrib;
                     } else {
                         unset($attribs[$attrib]);
                     }
                 }
             }
             break;
         case 'textarea':
             $stripParams = array('id', 'name', 'type', 'degrade');
             break;
         default:
     }
     foreach ($stripParams as $param) {
         if (array_key_exists($param, $params)) {
             unset($params[$param]);
         }
     }
     // Normalize constraints, if present
     foreach ($this->_jsonParams as $param) {
         if (array_key_exists($param, $params)) {
             require_once 'Zend/Json.php';
             if (is_array($params[$param])) {
                 $values = array();
                 foreach ($params[$param] as $key => $value) {
                     if (!is_scalar($value)) {
                         continue;
                     }
                     $values[$key] = $value;
                 }
             } elseif (is_string($params[$param])) {
                 $values = (array) $params[$param];
             } else {
                 $values = array();
             }
             $values = Zend_Json::encode($values);
             if ($this->_useDeclarative()) {
                 $values = str_replace('"', "'", $values);
             }
             $params[$param] = $values;
         }
     }
     $dijit = null === $dijit ? $this->_dijit : $dijit;
     if ($this->_useDeclarative()) {
         $attribs = array_merge($attribs, $params);
         if (isset($attribs['required'])) {
             $attribs['required'] = $attribs['required'] ? 'true' : 'false';
         }
         $attribs['dojoType'] = $dijit;
     } elseif (!$this->_useProgrammaticNoScript()) {
         $this->_createDijit($dijit, $attribs['id'], $params);
     }
     return $attribs;
 }
Пример #4
0
 public function setupDojo()
 {
     $this->helper->requireModule('dijit.layout.ContentPane')->registerModulePath('custom', '../custom')->requireModule('custom.foo')->setCdnVersion('1.1')->setDjConfig(array('parseOnLoad' => 'true'))->addStylesheetModule('dijit.themes.tundra')->addStylesheet('/css/custom.css')->addOnLoad('foo');
 }