/**
  * 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;
 }
Exemple #4
0
 /**
  * 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;
 }
Exemple #16
0
 /**
  * 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;
    }
Exemple #18
0
 /**
  * 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;
 }
Exemple #19
0
 /**
  * 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;
 }
Exemple #20
0
 /**
  * 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;
 }