/** * @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); }
/** * 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); }
/** * 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); }
/** * @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); }
/** * @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; } }
/** * @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; }
/** * @param string $position * @param array $args * @return bool|string */ public function renderPosition($position, $args = array()) { // init vars $elements = array(); $output = array(); $style = isset($args['style']) ? 'email.' . $args['style'] : 'email.default'; $layout = $this->_layout; // render elements foreach ($this->_getConfigPosition($position) as $index => $config) { if ($element = $this->_element->create($config['type'], $config['group'], $config)) { $element->setConfig($config); $element->setOrder($this->_order); $element->setMailer($this->_mailer); $args['_layout'] = $this->_layout; $args['_position'] = $position; $args['_index'] = $index; // set params $params = array_merge((array) $config, $args); $params = $this->app->data->create($params); if (!$element->canAccess() || !$element->hasValue()) { continue; } $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), (array) $data['params']))); } // restore layout $this->_layout = $layout; return implode(PHP_EOL, $output); }
/** * @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); }
/** * @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); }