Пример #1
0
 /**
  * @param $args
  * @return string
  */
 public function renderAdminPosition($args = array())
 {
     // init vars
     $elements = array();
     $output = array();
     $layout = $this->_layout;
     $style = isset($args['style']) ? $args['style'] : 'adminedit';
     $this->_order = isset($args['order']) ? $args['order'] : $this->_order;
     $shipping = $this->_order->getShipping();
     // render elements
     $shippingFields = $this->_order->getShippingFields();
     foreach ($shippingFields as $identifier => $data) {
         if ($element = $this->_order->getShippingFieldElement($identifier)) {
             if ($shipping && !$shipping->hasShippingField($identifier)) {
                 continue;
             }
             $element->bindData($data);
             $params = array_merge(array('_layout' => $this->_layout, '_index' => $identifier), $args);
             $elements[] = compact('element', 'params');
         }
     }
     foreach ($elements as $i => $data) {
         $output[$i] = parent::render('element.' . $style, array('element' => $data['element'], 'params' => array_merge(array('first' => $i == 0, 'last' => $i == count($elements) - 1), $data['params'])));
     }
     // restore layout
     $this->_layout = $layout;
     return implode(PHP_EOL, $output);
 }
Пример #2
0
 /**
  * Render the output of a position
  *
  * @param string $position The position to render
  * @param array $args A list of arguments to pass on to the layout
  *
  * @return string The html code generated
  *
  * @since 2.0
  */
 public function renderPosition($position, $args = array())
 {
     // init vars
     $elements = array();
     $output = array();
     $trusted_mode = !$this->app->user->get()->guest && $this->_submission->isInTrustedMode();
     $show_tooltip = $this->_submission->showTooltip();
     // get style
     $style = isset($args['style']) ? $args['style'] : 'submission.block';
     // store layout
     $layout = $this->_layout;
     // render elements
     foreach ($this->_getConfigPosition($position) as $index => $data) {
         if ($element = $this->_item->getElement($data['element'])) {
             if (!$element->canAccess()) {
                 continue;
             }
             $data['_layout'] = $this->_layout;
             $data['_position'] = $position;
             $data['_index'] = $index;
             // set params
             $params = array_merge((array) $data, $args);
             // check value
             $elements[] = compact('element', 'params');
         }
     }
     foreach ($elements as $i => $data) {
         $params = array_merge(array('first' => $i == 0, 'last' => $i == count($elements) - 1), compact('trusted_mode', 'show_tooltip'), $data['params']);
         // trigger elements beforesubmissiondisplay event
         $render = true;
         $this->app->event->dispatcher->notify($this->app->event->create($this->_item, 'element:beforesubmissiondisplay', array('render' => &$render, 'element' => $data['element'], 'params' => $params)));
         if ($render) {
             $output[$i] = parent::render("element.{$style}", array('element' => $data['element'], 'params' => $params));
             // trigger elements aftersubmissiondisplay event
             $this->app->event->dispatcher->notify($this->app->event->create($this->_item, 'element:aftersubmissiondisplay', array('html' => &$output[$i], 'element' => $data['element'], 'params' => $params)));
         }
     }
     // restore layout
     $this->_layout = $layout;
     return implode("\n", $output);
 }
Пример #3
0
 /**
  * Render the output of the position
  * 
  * @param string $position The name of the position to render
  * @param array $args The list of arguments to pass on to the layout
  * 
  * @return string The html code generated
  * 
  * @since 2.0
  */
 public function renderPosition($position, $args = array())
 {
     // init vars
     $elements = array();
     $output = array();
     // get style
     $style = isset($args['style']) ? $args['style'] : 'default';
     // store layout
     $layout = $this->_layout;
     // render elements
     foreach ($this->_getConfigPosition($position) as $data) {
         if ($element = $this->_item->getElement($data['element'])) {
             if (!$element->canAccess($this->_user)) {
                 continue;
             }
             // set params
             $params = array_merge($data, $args);
             // check value
             if ($element->hasValue($this->app->data->create($params))) {
                 // trigger elements beforedisplay event
                 $render = true;
                 $this->app->event->dispatcher->notify($this->app->event->create($this->_item, 'element:beforedisplay', array('render' => &$render, 'element' => $element, 'params' => $params, 'user' => $this->_user)));
                 if ($render) {
                     $elements[] = compact('element', 'params');
                 }
             }
         }
     }
     foreach ($elements as $i => $data) {
         $params = array_merge(array('first' => $i == 0, 'last' => $i == count($elements) - 1), $data['params']);
         $output[$i] = parent::render("element.{$style}", array('element' => $data['element'], 'params' => $params));
         // trigger elements afterdisplay event
         $this->app->event->dispatcher->notify($this->app->event->create($this->_item, 'element:afterdisplay', array('html' => &$output[$i], 'element' => $data['element'], 'params' => $params)));
     }
     // restore layout
     $this->_layout = $layout;
     return implode("\n", $output);
 }
Пример #4
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);
 }
Пример #5
0
 /**
  * @param $args
  * @return string
  */
 public function renderAdminPosition($args = array())
 {
     // init vars
     $layout = $this->_layout;
     $style = isset($args['style']) ? $args['style'] : 'adminedit';
     $this->_order = isset($args['order']) ? $args['order'] : $this->_order;
     if ($shipping = $this->_order->getShipping()) {
         $output = parent::render('element.' . $style, array('element' => $shipping, 'params' => $args));
         // restore layout
         $this->_layout = $layout;
         return $output;
     }
 }
Пример #6
0
 /**
  * @param string $layout
  * @param array  $args
  * @return string|void
  */
 public function render($layout, $args = array())
 {
     // set order
     $this->_order = isset($args['order']) ? $args['order'] : null;
     // init vars
     $render = true;
     $result = '';
     // trigger beforedisplay event
     if ($this->_order) {
         $this->app->jbevent->fire($this->_order, 'validator:beforedisplay', array('render' => &$render, 'html' => &$result));
     }
     // render layout
     if ($render) {
         $result .= parent::render($layout, $args);
         // trigger afterdisplay event
         if ($this->_order) {
             $this->app->jbevent->fire($this->_order, 'validator:afterdisplay', array('html' => &$result));
         }
     }
     return $result;
 }
Пример #7
0
 /**
  * Retrieve positions of a layout and add system positions if not exists - Title, Attach.
  * @param string $dir point separated path to layout, last part is layout
  * @return array The positions array
  * @since 2.0
  */
 public function getPositions($dir)
 {
     $positions = parent::getPositions($dir);
     $positions['positions'] = array_merge($positions['positions'], array(self::POSITION_ATTACH => 'Attachments'));
     return $positions;
 }
Пример #8
0
 /**
  * @param array $args
  * @return string
  */
 public function renderAdminPosition($args = array())
 {
     // init vars
     $elements = array();
     $output = array();
     $style = isset($args['style']) ? $args['style'] : 'adminedit';
     $layout = $this->_layout;
     $this->_order = isset($args['order']) ? $args['order'] : $this->_order;
     $fields = $this->_order->getFields();
     // render elements
     foreach ($fields as $identifier => $data) {
         if ($element = $this->_order->getFieldElement($identifier)) {
             $element->bindData($data);
             $data['_layout'] = $this->_layout;
             $data['_index'] = $identifier;
             // set params
             $params = array_merge((array) $data, $args);
             // check value
             $elements[] = compact('element', 'params');
         }
     }
     foreach ($elements as $i => $data) {
         $output[$i] = parent::render('element.' . $style, array('element' => $data['element'], 'params' => array_merge(array('first' => $i == 0, 'last' => $i == count($elements) - 1), $data['params'])));
     }
     // restore layout
     $this->_layout = $layout;
     return implode(PHP_EOL, $output);
 }
Пример #9
0
 /**
  * @param string $position
  * @param array  $args
  * @return string|void
  */
 public function renderPosition($position, $args = array())
 {
     $output = array();
     $_index = 0;
     // get style
     $style = isset($args['style']) ? $args['style'] : 'default';
     $config = $this->_getConfigPosition($position);
     foreach ($config as $index => $data) {
         if ($element = $this->_jbprice->getElement($data['identifier'])) {
             if (!$element->canAccess()) {
                 continue;
             }
             // Backward Compatibility. Delete later.
             if (!is_numeric($index)) {
                 $index = $_index++;
             }
             $data['_layout'] = $this->_layout;
             $data['_position'] = $position;
             $data['_index'] = $index;
             // set params
             $params = array_merge(array('first' => $index == 1, 'last' => $index == count($config) - 1, 'item_template' => $this->_template, 'item_application_id' => $this->_application, 'moduleParams' => $this->_moduleParams), $args, $data);
             if (!$element->hasFilterValue($params)) {
                 continue;
             }
             $attrs = array('id' => 'jbfilter-id-' . $this->_jbprice->identifier . '-' . trim($data['identifier'], '_'), 'class' => array('element-' . strtolower($element->getElementType()), 'element-tmpl-' . (array_key_exists('jbzoo_filter_render', $params) ? $params['jbzoo_filter_render'] : '_auto_')));
             $value = $this->_getRequest($data['identifier']);
             $elementHTML = $this->elementRender($element, $value, $params, $attrs);
             if (empty($elementHTML)) {
                 continue;
             }
             if ($style) {
                 $output[$index] = parent::render('element.jbpricefilter.' . $style, array('element' => $element, 'params' => $params, 'attrs' => $attrs, 'value' => $value, 'config' => $element->config, 'elementHTML' => $elementHTML));
             } else {
                 $output[$index] = $elementHTML;
             }
         }
     }
     return implode(PHP_EOL, $output);
 }