/** * doRender * * @param string $name * @param XulEngine $engine * @param \SimpleXmlElement $element * @param mixed $data * * @throws \LogicException * @return mixed */ protected static function doRender($name, XulEngine $engine, \SimpleXmlElement $element, $data) { if (!isset($data->view->colSpan)) { throw new \LogicException('Please put "column" tags in "row" tag.'); } $span = XmlHelper::get($element, 'span'); $fill = XmlHelper::getBool($element, 'fill', !(bool) $span); if (!$span) { $span = 12; } if ($fill) { $span = $data->view->colSpan ?: 12; } else { $data->view->colSpan -= $span; } if ((int) $span <= 0) { $span = 12; } if ($data->view->colSpan <= 0) { $data->view->colSpan = 12 + $data->view->colSpan; } $colClass = 'span' . $span; $element['class'] = isset($element['class']) ? $colClass . ' ' . $element['class'] : $colClass; return HtmlRenderer::render('div', $engine, $element, $data); }
/** * addFramework * * @param $element * @param $data * * @return void */ protected static function addFramework($element, $data) { $framework = XmlHelper::get($element, 'framework'); $debug = XmlHelper::getBool($element, 'debug'); $asset = $data->asset; if (!$framework) { return; } $names = explode(',', strtolower($framework)); if (in_array('mootools', $names)) { $asset->mootools($debug); } if (in_array('jquery', $names)) { $asset->jquery($debug); } if (in_array('jquery-ui', $names)) { $asset->jqueryUI($debug); } if (in_array('windwalker', $names)) { $asset->windwalker($debug); } if (in_array('bootstrap', $names)) { $asset->bootstrap($debug); } }
/** * doRender * * @param string $name * @param XulEngine $engine * @param \SimpleXmlElement $element * @param mixed $data * * @throws \LogicException * @return mixed */ protected static function doRender($name, XulEngine $engine, \SimpleXmlElement $element, $data) { // Handle title $title = XmlHelper::get($element, 'title', (string) static::renderChildren($engine, $element, $data)); $element['title'] = trim($title); return $element; }
/** * Method to get the field input markup. * * @return string The field input markup. */ public function getInput() { $input = $this->container->get('input'); $element = $this->element; $doc = JFactory::getDocument(); $default = $input->get('field_default'); // Is checkbox? $checkbox = \Windwalker\Helper\XmlHelper::get($this->element, 'ckeckbox'); if ($checkbox == 'true' || $checkbox == '1') { $checkbox = true; $default = explode(',', $default); } else { $checkbox = false; } // Set Default Vars $vars = $this->value ? $this->value : array(); $vars[] = array('text' => '', 'value' => ''); // Prepare Grid $grid = new JGrid(); $grid->setTableOptions(array('class' => 'adminlist table table-striped', 'id' => 'ak-attr-table')); $grid->setColumns(array('default', 'value', 'text', 'operate')); // Set TH $grid->addRow(array('class' => 'row1')); $grid->setRowCell('default', JText::_('LIB_WINDWALKER_ATTR_DEFAULT')); $grid->setRowCell('value', JText::_('LIB_WINDWALKER_ATTR_VALUE')); $grid->setRowCell('text', JText::_('LIB_WINDWALKER_ATTR_TEXT')); $grid->setRowCell('operate', JText::_('LIB_WINDWALKER_ATTR_OPERATE')); foreach ($vars as $key => $var) { $checked = ''; if ($checkbox) { if (in_array($var['value'], $default)) { $checked = 'checked'; } } else { if ($var['value'] === $default) { $checked = 'checked'; } } //Set Operate buttons $add_btn = '<a class="ak-delete-option btn" onclick="WindwalkerCCKList.addOption(this);"><i class="icon-save-new"></i></a>'; $del_btn = '<a class="ak-delete-option btn" onclick="WindwalkerCCKList.deleteOption(this);"><i class="icon-delete"></i></a>'; // Set TR $grid->addRow(array('class' => 'row' . $key % 2)); // Set TDs if ($checkbox) { $grid->setRowCell('default', '<input type="checkbox" class="attr-default" id="option-' . $key . '" name="attrs[default][]" value="' . $var['value'] . '" ' . $checked . '/>'); } else { $grid->setRowCell('default', '<input type="radio" class="attr-default" id="option-' . $key . '" name="attrs[default]" value="' . $var['value'] . '" ' . $checked . '/>'); } $grid->setRowCell('value', '<input type="text" class="attr-value input-medium" name="attrs[options][value][]" value="' . $var['value'] . '" onfocus="WindwalkerCCKList.addAttrRow(this);" onblur="WindwalkerCCKList.setDefault(this)" />'); $grid->setRowCell('text', '<input type="text" class="attr-text input-medium" name="attrs[options][text][]" value="' . $var['text'] . '" onfocus="WindwalkerCCKList.addAttrRow(this);" />'); $grid->setRowCell('operate', $add_btn . $del_btn); } // Set Javascript $doc->addScriptDeclaration("\n\n var akfields_num = " . (count($vars) - 1) . ' ;'); $this->addScript(count($vars) - 1); return (string) $grid; }
/** * doRender * * @param string $name * @param XulEngine $engine * @param \SimpleXmlElement $element * @param mixed $data * * @throws \LogicException * @return mixed */ protected static function doRender($name, XulEngine $engine, \SimpleXmlElement $element, $data) { $tabsetName = XmlHelper::get($element, 'name', 'myTab'); $data->tabSetName = $tabsetName; $html = JHtmlBootstrap::startTabSet($tabsetName, array('active' => XmlHelper::get($element, 'active'))); $html .= $e = static::renderChildren($engine, $element, $data); $html .= JHtmlBootstrap::endTabSet(); return $html; }
/** * executeInstance * * @param string $name * @param \SimpleXmlElement $element * @param mixed $data * * @return mixed */ protected static function executeInstance($name, $element, $data) { $method = XmlHelper::get($element, 'method'); $instance = ArrayHelper::getByPath($data, $name); if (!is_callable(array($instance, $method))) { throw new \InvalidArgumentException(sprintf('Object or method: $data->%s->%s() not exists.', $name, $method)); } return call_user_func_array(array($instance, $method), static::getArguments($element, $data)); }
/** * doRender * * @param string $name * @param XulEngine $engine * @param \SimpleXmlElement $element * @param mixed $data * * @throws \LogicException * @return mixed */ protected static function doRender($name, XulEngine $engine, \SimpleXmlElement $element, $data) { $tabName = XmlHelper::get($element, 'name'); $label = $element['label'] ? (string) $element['label'] : $data->view->option . '_EDIT_FIELDS_' . $tabName; $html = JHtmlBootstrap::addTab($data->tabSetName, $tabName, \JText::_($label)); $html .= static::renderChildren($engine, $element, $data); $html .= JHtmlBootstrap::endTab(); return $html; }
/** * doRender * * @param string $name * @param XulEngine $engine * @param \SimpleXmlElement $element * @param mixed $data * * @throws \LogicException * @return mixed */ protected static function doRender($name, XulEngine $engine, \SimpleXmlElement $element, $data) { $element['static'] = $handler = XmlHelper::get($element, 'handler', 'print_r'); $element->addChild('argument')->addAttribute('data', XmlHelper::get($element, 'data')); $element->addChild('argument', 1); if ($handler == 'print_r') { return new HtmlElement('pre', parent::doRender($name, $element, $data)); } else { return parent::doRender($name, $element, $data); } }
/** * doRender * * @param string $name * @param XulEngine $engine * @param \SimpleXmlElement $element * @param mixed $data * * @throws \LogicException * @return mixed */ protected static function doRender($name, XulEngine $engine, \SimpleXmlElement $element, $data) { $layoutName = XmlHelper::get($element, 'name'); if (!$layoutName) { throw new \InvalidArgumentException('Please add "name" to <layout> tag.'); } $layout = new FileLayout($layoutName); $displayData = array('view' => $data); $args = static::getArguments($element, $data, 'data'); $displayData = array_merge($displayData, $args); return $layout->render($displayData); }
/** * doRender * * @param string $name * @param XulEngine $engine * @param \SimpleXmlElement $element * @param mixed $data * * @throws \LogicException * @return mixed */ protected static function doRender($name, XulEngine $engine, \SimpleXmlElement $element, $data) { $cols = static::renderChildren($engine, $element, $data); $gridHelper = $data->grid; $grid = $data->xulControl->grid; $grid->addRow(array(), 1); foreach ($cols as $key => $value) { $attribs = XmlHelper::getAttributes($element); $title = XmlHelper::get($value, 'title'); unset($attribs['title']); $grid->addColumn($key, $attribs); $grid->setRowCell($key, $title, $attribs); } }
/** * doRender * * @param string $name * @param XulEngine $engine * @param \SimpleXmlElement $element * @param mixed $data * * @throws \LogicException * @return mixed */ protected static function doRender($name, XulEngine $engine, \SimpleXmlElement $element, $data) { $itemsKey = XmlHelper::get($element, 'data', 'items'); $items = (array) ArrayHelper::getByPath($data, $itemsKey); $rows = new HtmlElements(); foreach ($items as $i => $item) { // Prepare data $item = new Data($item); $data->xulControl->currentItem = $item; // Prepare item for GridHelper $data->grid->setItem($item, $i); $rows[] = RowRenderer::render('row', $engine, $element, $data); } return $rows; }
/** * doRender * * @param string $name * @param XulEngine $engine * @param \SimpleXmlElement $element * @param mixed $data * * @throws \LogicException * @return mixed */ protected static function doRender($name, XulEngine $engine, \SimpleXmlElement $element, $data) { $field = XmlHelper::get($element, 'field'); $ele = new \SimpleXMLElement('<root></root>'); $attrs = $element->attributes(); foreach ($attrs as $key => $attr) { $ele[$key] = $attr; } if (!$field) { $ele[0] = (string) static::renderChildren($engine, $element, $data); return $ele; } $ele[0] = $data->xulControl->currentItem->{$field}; return $ele; }
/** * doRender * * @param string $name * @param \SimpleXmlElement $element * @param mixed $data * * @throws \LogicException * @return mixed */ protected static function doRender($name, XulEngine $engine, \SimpleXmlElement $element, $data) { $dataKey = XmlHelper::get($element, 'data'); $sidebar = $dataKey ? ArrayHelper::getByPath($data, $dataKey) : $data->sidebar; if (empty($sidebar)) { return ''; } $html = new HtmlElements(); $html[] = new HtmlElement('h4', JText::_(XmlHelper::get($element, 'title', 'JOPTION_MENUS'))); $html[] = $sidebar; $element->addChild('block', $html); if (!isset($data->view->colSpan)) { throw new \LogicException('Please put "sidebar" tag in "row" tag.'); } return parent::doRender($name, $engine, $element, $data); }
/** * doRender * * @param string $name * @param \SimpleXmlElement $element * @param mixed $data * * @throws \UnexpectedValueException * @return mixed */ protected static function doRender($name, XulEngine $engine, \SimpleXmlElement $element, $data) { XmlHelper::def($element, 'action', $data->uri->path); XmlHelper::def($element, 'method', 'post'); XmlHelper::def($element, 'id', $data->view->name . '-form'); XmlHelper::def($element, 'name', 'adminForm'); XmlHelper::def($element, 'class', 'form-validate'); XmlHelper::def($element, 'enctype', 'multipart/form-data'); $attributes = XmlHelper::getAttributes($element); $footerHandler = XmlHelper::get($element, 'type', 'default'); $footerHandler = array(__CLASS__, 'render' . ucfirst($footerHandler) . 'Footer'); // Build hidden inputs $footer = HtmlBuilder::create('input', null, array('type' => 'hidden', 'name' => 'option', 'value' => $data->view->option)); $footer .= HtmlBuilder::create('input', null, array('type' => 'hidden', 'name' => 'task', 'value' => '')); $footer .= is_callable($footerHandler) ? call_user_func_array($footerHandler, array()) : ''; $footer .= JHtml::_('form.token'); // Wrap inputs $children = static::renderChildren($engine, $element, $data); $children .= HtmlBuilder::create('div', $footer, array('id' => 'hidden-inputs')); return HtmlBuilder::create($name, $children, $attributes); }
/** * doRender * * @param string $name * @param \SimpleXmlElement $element * @param mixed $data * * @throws \UnexpectedValueException * @return mixed */ protected static function doRender($name, XulEngine $engine, \SimpleXmlElement $element, $data) { $formVar = XmlHelper::get($element, 'form', 'form'); $fieldset = XmlHelper::get($element, 'name'); if (!$fieldset) { throw new \UnexpectedValueException('Need "name" attribute in XUL <fieldset> element.'); } $form = $data->{$formVar}; if (!$form instanceof \JForm) { throw new \UnexpectedValueException(sprintf('No form data found in $data->%s.', $formVar)); } $option = $data->view->option ?: 'LIB_WINDWALKER'; $label = XmlHelper::get($element, 'label', $option . '_EDIT_FIELDSET_' . $fieldset); $label = String::parseVariable($label, $data); $html = '<legend>' . \JText::_(strtoupper($label)) . '</legend>'; foreach ($form->getFieldset($fieldset) as $field) { $html .= $field->getControlGroup() . "\n\n"; } $html = HtmlBuilder::create('fieldset', $html, XmlHelper::getAttributes($element)); return $html; }
/** * Method to get the field input markup. * * @return string The field input markup. */ public function getOptions() { if ($this->value) { $this->value = XmlHelper::get($this->element, 'default'); } $element = $this->element; $types = array('raw', 'int', 'uint', 'float', 'bool', 'word', 'alnum', 'base64', 'string', 'safehtml', 'array', 'url', 'path', 'username', 'tel'); // Includes $includes = $element['include']; if ($includes) { $includes = explode(',', $includes); foreach ($includes as &$include) { $include = trim($include); } $types = $includes; } // Excludes $excludes = (string) $element['exclude']; if ($excludes) { $excludes = explode(',', $excludes); foreach ($excludes as &$exclude) { $exclude = trim($exclude); } } else { $excludes = array(); } // Set Options $options = array(); foreach ($types as $type) { $type = str_replace('.xml', '', $type); // Excludes if (in_array($type, $excludes)) { continue; } $options[] = JHtml::_('select.option', (string) $type, JText::_('LIB_WINDWALKER_FILTERLIST_' . strtoupper($type))); } // Merge any additional options in the XML definition. $options = array_merge(parent::getOptions(), $options); return $options; }
/** * Method to get the field input markup. * * @return string The field input markup. */ protected function getInput() { $plugin = JPluginHelper::isEnabled('system', 'ezset'); if (!$plugin) { return print_r($plugin, 1) . '需要先啟動外掛!'; } $this->loadScript(); $editor = \JEditor::getInstance('codemirror'); $client = \Windwalker\Helper\XmlHelper::get($this->element, 'client', 'site'); $content = $this->getContent($client); $params['linenumbers'] = 1; $params['tabmode'] = 'shift'; $params['width'] = 400; $params['height'] = 300; $params['syntax'] = 'css'; $doc = \JFactory::getDocument(); $doc->addStyleDeclaration(<<<CSS .custom-css-field .CodeMirror { \tw/idth: 700px; \theight: 400px; } CSS ); $save = JText::_('PLG_SYSTEM_EZSET_SAVE'); $output = $editor->display($this->name, $content, '400px', '400px', 400, 400, false, null, null, null, $params); $output = <<<HTML <fieldset class="adminform custom-css-field"> \t<div style="margin-bottom: 25px;" class="custom-css-toolbar"> \t\t<button class="btn btn-default" type="button" data-client="{$client}" \t\t\tonclick="EzsetCustomCSS.save('#{$this->id}', '{$this->name}', this, event);"><i class="icon-save"></i> {$save}</button> \t</div> \t<div style="height: 400px; margin-bottom: 30px;">{$output}</div> </fieldset> HTML; return $output; }
/** * Method to get the field input markup. * * @return string The field input markup. */ public function getOptions() { //$this->value = JRequest::getVar('field_type') ; $this->setFieldData(); $input = $this->container->get('input'); if (!$this->value) { $this->value = XmlHelper::get($this->element, 'default'); } $input->set('field_type', $this->value, 'method', true); $element = $this->element; $types = JFolder::files(__DIR__ . '/../Resource/Form'); JFactory::getApplication()->triggerEvent('onCCKEnginePrepareFieldtypes', array(&$types, &$this, &$element)); $options = array(); foreach ($types as $type) { $type = str_replace('.xml', '', $type); if ($type == 'index.html') { continue; } $options[] = JHtml::_('select.option', (string) $type, JText::_('LIB_WINDWALKER_FIELDTYPE_' . strtoupper($type))); } // Merge any additional options in the XML definition. $options = array_merge(parent::getOptions(), $options); return $options; }
/** * getLink * * @return string */ public function getLink() { $input = JFactory::getApplication()->input; // Avoid self $id = $input->get('id'); $option = $input->get('option'); $view = $input->get('view'); $layout = $input->get('layout'); $select = \Windwalker\Helper\XmlHelper::get($this->element, 'select'); return 'index.php?option=' . $this->extension . '&view=' . $select . '&layout=modal&tmpl=component&function=jSelect' . ucfirst($this->component) . '_' . $this->id; }
/** * Get Finder link. * * @return string The link string. */ public function getLink() { $input = Container::getInstance()->get('input'); $handler = $this->element['handler'] ? (string) $this->element['handler'] : $input->get('option'); $root = XmlHelper::get($this->element, 'root', '/'); $start_path = XmlHelper::get($this->element, 'start_path', '/'); $onlymimes = XmlHelper::get($this->element, 'onlymimes', ''); $root = $this->convertPath($root); $start_path = $this->convertPath($start_path); $link = "index.php?option={$handler}&task=finder.elfinder.display&tmpl=component&finder_id={$this->id}&root={$root}&start_path={$start_path}&onlymimes={$onlymimes}"; return $link; }
/** * Method test of get() * * @param \SimpleXMLElement $element * @param string $attr * @param string $value * @param string $expected * * @return void * * @dataProvider elementProvider * * @covers \Windwalker\Helper\XmlHelper::get */ public function testGet($element, $attr, $value, $expected) { $getAttr = XmlHelper::get($element->{$attr}, $value); $this->assertEquals($getAttr, $expected); }
/** * renderChildren * * @param XulEngine $engine * @param \SimpleXmlElement $element * @param mixed $data * * @return string */ public static function renderChildren(XulEngine $engine, $element, $data) { $html = new HtmlElements(); if (!$data instanceof Data) { $data = new Data($data); } $data = clone $data; $children = $element->xpath('*'); if (count($children)) { foreach ($children as $child) { // Replace all attributes with variable. foreach ($child->attributes() as $key => $attr) { $child[$key] = String::parseVariable((string) $attr, $data); } $namespaces = $child->getNamespaces(); $name = $class = $child->getName(); $ns = 'Control'; if (array_key_exists('html', $namespaces)) { $ns = 'Html'; $class = 'Html'; } $renderer = XmlHelper::get($child, 'renderer'); if (!$renderer || !is_subclass_of($renderer, __CLASS__)) { $prefix = $data->xulControl->classPrefix; $renderer = $engine->findRenderer($class, $ns, $prefix); } $html[] = call_user_func_array(array($renderer, 'render'), array($name, $engine, $child, $data)); } } else { $html = String::parseVariable((string) $element, $data); } return $html; }