Exemplo n.º 1
0
 /**
  * @param array $args
  * @return string
  */
 public function renderEditPositions($args = array())
 {
     // init vars
     $elements = array();
     $output = array();
     // get style
     $style = $this->_variant->isBasic() ? 'jbprice._basic' : 'jbprice._variations';
     $config = $this->_getConfig();
     if (!empty($config)) {
         foreach ($config as $key => $data) {
             if ($element = $this->_variant->get($key)) {
                 if ($this->_variant->isBasic() && !$element->isCore()) {
                     continue;
                 }
                 $data['_price_layout'] = $this->itemLayout;
                 $data['_layout'] = $this->_layout;
                 $data['_index'] = $key;
                 // set params
                 $params = array_merge($data, $args);
                 $elements[] = compact('element', 'params');
             }
         }
     }
     $count = count($elements);
     if ($count) {
         foreach ($elements as $i => $data) {
             $params = array_merge(array('first' => $i == 0, 'last' => $i == $count - 1), $data['params']);
             $data['element']->loadEditAssets();
             $output[$i] = parent::render('element.' . $style, array('element' => $data['element'], 'params' => new AppData($params)));
         }
     }
     return implode(PHP_EOL, $output);
 }
Exemplo n.º 2
0
 /**
  * @param JBCartVariant $variant
  * @return array
  */
 public function getVariantData(JBCartVariant $variant)
 {
     $vars = $this->app->jbvars;
     $data = array();
     if ($variant->isBasic()) {
         $elements = $variant->getCore();
     } elseif ($variant->is(-1)) {
         $elements = $variant->all();
     } else {
         $elements = $variant->getSimple();
     }
     if (count($elements)) {
         /**@type JBCartElementPrice $element */
         foreach ($elements as $paramId => $element) {
             $value = $element->getSearchData();
             $value = $this->_helper->getValue($value);
             $string = (string) $value;
             $numeric = is_numeric($value) ? $vars->number($value) : null;
             $date = $this->_helper->isDate($value) ?: null;
             if (!$this->_helper->isEmpty($string) || (is_numeric($numeric) || !$this->_helper->isEmpty($date))) {
                 $key = $this->_item->id . '__' . $this->identifier . '__' . $variant->getId() . '__' . $element->id();
                 $data[$key] = array('item_id' => $this->_item->id, 'element_id' => $this->identifier, 'param_id' => $element->id(), 'value_s' => $string, 'value_n' => $numeric, 'value_d' => $date, 'variant' => $variant->getId());
             }
         }
     }
     return $data;
 }
Exemplo n.º 3
0
 /**
  * @param JBCartVariant $variant
  * @return $this
  */
 public function bindVariant(JBCartVariant $variant)
 {
     if ($this->_item !== null) {
         $simple = $variant->getSimple();
         $data = $this->data();
         $values = (array) $data->get('values', array());
         $selected = (array) $data->get('selected', array());
         $variations = (array) $data->get('variations', array());
         $variations[$variant->getId()] = $variant->data();
         if (!$variant->isBasic()) {
             $values[$variant->getId()] = array_filter(array_map(create_function('$element', 'return JString::strlen($element->getValue(true)) > 0 ? (array)$element->data() : null;'), $simple));
             $_selected = array_filter(array_map(create_function('$element', 'return JString::strlen($element->getValue(true)) > 0
                 ? JString::trim($element->getValue(true)) : null;'), $simple));
             if ($_selected) {
                 foreach ($_selected as $key => $value) {
                     $selected[$key][$value] = $value;
                 }
             }
         }
         // Reset keys
         $variations = array_values($variations);
         $values = array_values($values);
         $data->set('variations', $variations);
         $data->set('selected', $selected);
         $data->set('values', $variant->isBasic() ? array(self::BASIC_VARIANT => array()) : $values);
         $this->_item->elements->set($this->identifier, (array) $data);
     }
     return $this;
 }