Beispiel #1
0
 /**
  * Render editor
  *
  * @param  ElementInterface $element
  *
  * @throws \Zend\Form\Exception\DomainException
  * @return string
  */
 public function render(ElementInterface $element)
 {
     $renderer = $this->getView();
     if (!method_exists($renderer, 'plugin')) {
         // Bail early if renderer is not pluggable
         return '';
     }
     $name = $element->getName();
     if (empty($name) && $name !== 0) {
         throw new Exception\DomainException(sprintf('%s requires that the element has an assigned name;' . ' none discovered', __METHOD__));
     }
     $options = $element->getOptions();
     /*
     $attributes = $element->getAttributes();
     $attributes['value'] = $element->getValue();
     $options['attributes'] = $attributes;
     */
     $editorType = $element->getOption('editor') ?: 'textarea';
     $editor = EditorFactory::load($editorType, $options);
     $html = '';
     if ($editor) {
         $html = $editor->setView($renderer)->render($element);
     }
     if (!$html) {
         $html = $renderer->formTextarea($element);
     }
     return $html;
 }
 /**
  * @see \Zend\Form\View\Helper\FormRadio::render()
  * @param \Zend\Form\ElementInterface $oElement
  * @return string
  */
 public function render(ElementInterface $oElement)
 {
     $aElementOptions = $oElement->getOptions();
     if (isset($aElementOptions['disable-twb']) && $aElementOptions['disable-twb'] == true) {
         $sSeparator = $this->getSeparator();
         $this->setSeparator('');
         $sReturn = parent::render($oElement);
         $this->setSeparator($sSeparator);
         return $sReturn;
     }
     if (isset($aElementOptions['inline']) && $aElementOptions['inline'] == true) {
         $sSeparator = $this->getSeparator();
         $this->setSeparator('');
         $oElement->setLabelAttributes(array('class' => 'radio-inline'));
         $sReturn = sprintf('%s', parent::render($oElement));
         $this->setSeparator($sSeparator);
         return $sReturn;
     }
     if (isset($aElementOptions['btn-group']) && $aElementOptions['btn-group'] == true) {
         $this->setSeparator('');
         $oElement->setLabelAttributes(array('class' => 'btn btn-primary'));
         return sprintf('<div class="btn-group" data-toggle="buttons">%s</div>', parent::render($oElement));
     }
     return sprintf(self::$checkboxFormat, parent::render($oElement));
 }
Beispiel #3
0
 public function render(ElementInterface $element)
 {
     $name = $element->getName();
     if (empty($name) && $name !== 0) {
         throw new Exception\DomainException(sprintf('%s requires that the element has an assigned name; none discovered', __METHOD__));
     }
     $attributes = $element->getAttributes();
     $attributes['name'] = $name;
     $content = (string) $element->getValue();
     $escapeHtml = $this->getEscapeHtmlHelper();
     //ADD OPTIONS
     //	this should really be in Stjonvisi\Form\Element\Img
     //	but it gets overwritten at some point, so the simplest
     //	thing was to add it here.
     //	TODO place this i a more generic place
     $element->setOption('max', $this->getMaxSize())->setOption('mime', '/image\\/jpg|png|gif/')->setOption('url', '/skrar/mynd');
     //OPTIONS
     //	options are used to set attributes and values
     //	to the custom element. We therefore need to remove
     //	label, label_attributes and label_options before we
     //	can convert them into an attribute string.
     $options = $element->getOptions();
     unset($options['label']);
     unset($options['label_attributes']);
     unset($options['label_options']);
     $strings = array_map(function ($key, $value) {
         return sprintf('%s="%s"', $key, $value);
     }, array_keys($options), $options);
     return sprintf('<stjornvisi-rich %s><textarea %s>%s</textarea></stjornvisi-rich>', implode(' ', $strings), $this->createAttributesString($attributes), $escapeHtml($content));
 }
 /**
  * @see FormMultiCheckbox::render()
  * @param ElementInterface $oElement
  * @return string
  */
 public function render(ElementInterface $oElement)
 {
     $aElementOptions = $oElement->getOptions();
     // For inline multi-checkbox
     if (isset($aElementOptions['inline']) && $aElementOptions['inline'] == true) {
         $this->setSeparator('');
         $oElement->setLabelAttributes(array('class' => 'checkbox-inline'));
         return sprintf('%s', parent::render($oElement));
     }
     $this->setSeparator('</div><div class="checkbox">');
     $oElement->setLabelAttributes(array('class' => 'checkbox'));
     return sprintf('<div class="checkbox">%s</div>', parent::render($oElement));
 }
 /**
  * @see \Zend\Form\View\Helper\FormMultiCheckbox::render()
  * @param \Zend\Form\ElementInterface $oElement
  * @return string
  */
 public function render(\Zend\Form\ElementInterface $oElement)
 {
     $aElementOptions = $oElement->getOptions();
     $sCheckboxClass = isset($aElementOptions['inline']) && $aElementOptions['inline'] == false ? 'checkbox' : 'checkbox-inline';
     $aLabelAttributes = $oElement->getLabelAttributes();
     if (empty($aLabelAttributes['class'])) {
         $aLabelAttributes['class'] = $sCheckboxClass;
     } elseif (!preg_match('/(\\s|^)' . $sCheckboxClass . '(\\s|$)/', $aLabelAttributes['class'])) {
         $aLabelAttributes['class'] .= ' ' . $sCheckboxClass;
     }
     $oElement->setLabelAttributes($aLabelAttributes);
     return parent::render($oElement);
 }
 /**
  * @see \Zend\Form\View\Helper\FormMultiCheckbox::render()
  * @param \Zend\Form\ElementInterface $oElement
  * @return string
  */
 public function render(\Zend\Form\ElementInterface $oElement)
 {
     $aElementOptions = $oElement->getOptions();
     // For no inline multi-checkbox
     if ($bNoInline = isset($aElementOptions['inline']) && $aElementOptions['inline'] == false) {
         $sCheckboxClass = 'checkbox';
         $this->setSeparator('</div><div class="checkbox">');
     } else {
         $sCheckboxClass = 'checkbox-inline';
         $this->setSeparator('');
     }
     $oElement->setLabelAttributes(array('class' => $sCheckboxClass));
     return $bNoInline ? '<div class="checkbox">' . parent::render($oElement) . '</div>' : parent::render($oElement);
 }
 /**
  * @see \Zend\Form\View\Helper\FormRadio::render()
  * @param \Zend\Form\ElementInterface $oElement
  * @return string
  */
 public function render(ElementInterface $oElement)
 {
     $aElementOptions = $oElement->getOptions();
     if (isset($aElementOptions['disable-twb']) && $aElementOptions['disable-twb'] == true) {
         $sSeparator = $this->separator;
         $this->separator = '';
         $sReturn = parent::render($oElement);
         $this->separator = $sSeparator;
         return $sReturn;
     }
     if (isset($aElementOptions['inline']) && $aElementOptions['inline'] == true) {
         $this->setSeparator('');
         $oElement->setLabelAttributes(array('class' => 'radio-inline'));
         return sprintf('%s', parent::render($oElement));
     }
     return sprintf(self::$checkboxFormat, parent::render($oElement));
 }
Beispiel #8
0
 /**
  * Renders editor contents
  *
  * @param  ElementInterface $element
  * @return string
  */
 public function render(ElementInterface $element)
 {
     $options = array_merge($this->getOptions(), $element->getOptions());
     $attributes = array_merge($this->getAttributes(), $element->getAttributes());
     // Set up language
     if (!isset($options['language'])) {
         $options['language'] = Pi::service('i18n')->locale;
     }
     $options['language'] = strtolower(str_replace('_', '-', $options['language']));
     $basePath = isset($options['base_path']) ? $options['base_path'] : Pi::path('www') . '/script/editor/ckeditor';
     include_once $basePath . '/ckeditor.php';
     include_once __DIR__ . '/Ckeditor.php';
     $baseUrl = isset($options['base_url']) ? $options['base_url'] : Pi::url('www') . '/script/editor/ckeditor/';
     $ckEditor = new Ckeditor($baseUrl);
     $ckEditor->returnOutput = true;
     $ckEditor->textareaAttributes = array_merge($ckEditor->textareaAttributes, $attributes);
     $this->setupFinder($ckEditor, $options);
     return $ckEditor->editor($element->getName(), $element->getValue(), $options);
 }
Beispiel #9
0
 /**
  * Over writes render method to put layout array into the correct format for
  * Zend Form
  *
  * @param ElementInterface $element Zend Element Interface
  *
  * @return string|void
  * @throws InvalidArgumentException
  */
 public function render(ElementInterface $element)
 {
     if (!$element instanceof MainLayout) {
         throw new InvalidArgumentException(sprintf('%s requires that the element is of type PageLayout', __METHOD__));
     }
     $options = $element->getOptions();
     $element->setLabelOption('disable_html_escape', true);
     $inputOptions = [];
     foreach ($options['layouts'] as $key => &$layout) {
         $inputOptions[$key] = "\n" . '<span class="pageLayoutLabel">' . "\n" . '    <img src="' . $layout['screenShot'] . '" />' . "\n" . '    <span class="pageLayoutTextDisplay">' . "\n" . '        ' . $layout['display'] . "\n" . '    </span>' . "\n" . '    <span class="pageLayoutImageOverlay"></span>' . "\n" . '</span>' . "\n";
     }
     $name = static::getName($element);
     $options = $inputOptions;
     $attributes = $element->getAttributes();
     $attributes['name'] = $name;
     $attributes['type'] = $this->getInputType();
     $selectedOptions = (array) $element->getValue();
     $rendered = $this->renderOptions($element, $options, $selectedOptions, $attributes);
     return $rendered;
 }
Beispiel #10
0
    /**
     * Renders editor contents
     *
     * @param  ElementInterface $element
     * @return string
     */
    public function render(ElementInterface $element)
    {
        $options = array_merge($this->getOptions(), $element->getOptions());
        $attributes = array_merge($this->getAttributes(), $element->getAttributes());
        $view = $this->view;
        // Set up set and skin
        $set = isset($options['set']) ? $options['set'] : 'html';
        $skin = isset($options['skin']) ? $options['skin'] : 'simple';
        // Set up CSS
        $view->css(sprintf('%s/editor/markitup/skins/%s/style.css', Pi::url('script'), $skin));
        $view->css(sprintf('%s/editor/markitup/sets/%s/style.css', Pi::url('script'), $set));
        // Set up JavaScript
        $view->jQuery();
        $view->js(Pi::url('script') . '/editor/markitup/jquery.markitup.js');
        $view->js(sprintf('%s/editor/markitup/sets/%s/set.js', Pi::url('script'), $set));
        $parserpath = '';
        if (!empty($options['sets'][$set]['parser_path'])) {
            $parserpath = $options['sets'][$set]['parser_path'];
        } else {
            $path = sprintf('%s/editor/markitup/sets/%s/preview.php', Pi::path('script'), $set);
            if (file_exists($path)) {
                $parserpath = sprintf('~/sets/%s/preview.php', $set);
            }
        }
        $scriptJs = <<<EOT
\$(document).ready(function()    {
    mySettings.previewParserPath = '{$parserpath}';
    mySettings.previewParserVar = 'preview';
    \$('#%s').markItUp(mySettings);
});
EOT;
        if (isset($attributes['id'])) {
            $id = $attributes['id'];
        } else {
            $id = uniqid($element->getName());
        }
        $element->setAttribute('id', $id);
        $js = sprintf($scriptJs, $id);
        $view->HeadScript('script', $js);
    }
Beispiel #11
0
 /**
  * @param ElementInterface $element
  *
  * @return string
  */
 public function render(ElementInterface $element)
 {
     $name = $element->getName();
     if (empty($name) && $name !== 0) {
         throw new \DomainException(sprintf('%s requires that the element has an assigned name; none discovered', __METHOD__));
     }
     /* @var \Zend\View\Renderer\PhpRenderer $renderer */
     $renderer = $this->getView();
     /* @var \Zend\View\Helper\HeadScript  $headscript */
     $headscript = $renderer->plugin('headscript');
     /* @var \Zend\View\Helper\BasePath  $basepath */
     $basepath = $renderer->plugin('basepath');
     $headscript->appendFile($basepath('js/tinymce/tinymce.jquery.min.js'));
     $headscript->prependFile($basepath('js/jquery.min.js'));
     $headscript->offsetSetScript('1000_tinymce_' . $this->getTheme(), '
         $(document).ready(function() {
         tinyMCE.init({' . $this->additionalOptions() . ',
              setup:  function(editor) {
                 setPlaceHolder = function(editor, show) {
                     placeHolder = $("#placeholder-" + editor.id);
                     if (placeHolder.length == 1) {
                         if (show && editor.getContent() == "") {
                             placeHolder.show();
                         }
                         else {
                             placeHolder.hide();
                         }
                      }
                 },
                 editor.on("focus", function(e) {
                     setPlaceHolder(editor, false);
                 });
                 editor.on("blur", function(e) {
                     setPlaceHolder(editor, true);
                     if (editor.isDirty()) {
                         //console.log("blur event", e);
                         editor.save();
                         var container = e.target.bodyElement;
                         $(container).parents("html").addClass("yk-changed");
                         var form = $(container).parents("form");
                         //console.log("form", form, container);
                         form.submit();
                         $(form).on("yk.forms.done", function(){
                             console.log("done");
                             //$(container).parents("html").removeClass("yk-changed");
                         });
                     }
                 });
             }
         });
         });');
     $attributes = $element->getAttributes();
     $attributes['name'] = $name;
     $attributes['id'] = $name;
     $content = $element->getValue();
     if (!isset($content)) {
         $content = '';
     }
     if (is_string($content)) {
         $class = array_key_exists('class', $attributes) ? $attributes['class'] : '';
         $class .= (empty($class) ?: ' ') . ' tinymce_' . $this->getTheme();
         $attributes['class'] = $class;
         $placeHolder = '';
         $elementOptions = $element->getOptions();
         if (array_key_exists('placeholder', $elementOptions) && !empty($elementOptions['placeholder'])) {
             $placeHolder = '<div id="placeholder-' . $name . '" style="border: 0 none; position: relative; top: 0ex; left: 10px; color: #aaa; height: 0px; overflow: visible;' . (empty($content) ? '' : 'display:none;') . '">' . $this->translator->translate($elementOptions['placeholder']) . '</div>';
         }
         return $placeHolder . sprintf('<div %s >%s</div>', $this->createAttributesString($attributes), $content);
     } else {
         return (string) $content;
     }
 }
Beispiel #12
0
 public function render(ElementInterface $element)
 {
     $name = $element->getName();
     if (empty($name) && $name !== 0) {
         throw new \DomainException(sprintf('%s requires that the element has an assigned name; none discovered', __METHOD__));
     }
     $renderer = $this->getView();
     $headscript = $renderer->plugin('headscript');
     $basepath = $renderer->plugin('basepath');
     $headscript->appendFile($basepath('js/tinymce/tinymce.jquery.min.js'));
     $headscript->prependFile($basepath('js/jquery.min.js'));
     //
     // mode : "textareas",
     $headscript->offsetSetScript('1000_tinymce_' . $this->getTheme(), '
     $(document).ready(function() {
         tinyMCE.init({
             selector : "div.tinymce_' . $this->getTheme() . '",
             inline : true,
             theme : "modern",
             plugins: [
                 "advlist autolink lists charmap anchor",
                 "searchreplace visualblocks code fullscreen",
                 "contextmenu paste textcolor"
             ],
             //toolbar1: "forecolor",
             removed_menuitems: "newdocument",' . PHP_EOL . $this->additionalOptions() . 'setup: function(editor) {
                 setPlaceHolder = function(editor, show) {
                     placeHolder = $("#placeholder-" + editor.id);
                     if (placeHolder.length == 1) {
                         if (show && editor.getContent() == "") {
                             placeHolder.show();
                         }
                         else {
                             placeHolder.hide();
                         }
                      }
                 },
                 editor.on("focus", function(e) {
                     setPlaceHolder(editor, false);
                 });
                 editor.on("blur", function(e) {
                     setPlaceHolder(editor, true);
                     if (editor.isDirty()) {
                         //console.log("blur event", e);
                         editor.save();
                         var container = e.target.bodyElement;
                         $(container).parents("html").addClass("yk-changed");
                         var form = $(container).parents("form");
                         //console.log("form", form, container);
                         form.submit();
                         $(form).on("yk.forms.done", function(){
                             console.log("done");
                             //$(container).parents("html").removeClass("yk-changed");
                         });
                     }
                 });
             }
         });
     });
     ');
     $attributes = $element->getAttributes();
     $attributes['name'] = $name;
     $attributes['id'] = $name;
     $content = $element->getValue();
     if (!isset($content)) {
         $content = '';
     }
     if (is_string($content)) {
         // content is should be in an ordinary textarea
         $escapeHtml = $this->getEscapeHtmlHelper();
         $class = array_key_exists('class', $attributes) ? $attributes['class'] : '';
         $class .= (empty($class) ?: ' ') . ' tinymce_' . $this->getTheme();
         $attributes['class'] = $class;
         $placeHolder = '';
         $elementOptions = $element->getOptions();
         if (array_key_exists('placeholder', $elementOptions) && !empty($elementOptions['placeholder'])) {
             $placeHolder = '<div id="placeholder-' . $name . '" style="border: 0 none; position: relative; top: 0ex; left: 10px; color: #aaa; height: 0px; overflow: visible;' . (empty($content) ? '' : 'display:none;') . '">' . $this->translator->translate($elementOptions['placeholder']) . '</div>';
         }
         return $placeHolder . sprintf('<div %s >%s</div>', $this->createAttributesString($attributes), $content);
         return sprintf('<textarea %s>%s</textarea>', $this->createAttributesString($attributes), $escapeHtml($content));
     } else {
         return (string) $content;
     }
 }
Beispiel #13
0
 public function render(ElementInterface $element)
 {
     $type = $element->getAttribute('type');
     if ($type == 'multi_checkbox' || $type == "radio") {
         $aOptions = $element->getValueOptions();
         $aAtributes = $element->getOptions();
         $aClasse = $element->getAttributes();
         $aClasse = explode(" ", @$aClasse["class"]);
         $sType = $type;
         $selected = $element->getValue();
         $disabled = $element->getAttribute("disabled");
         foreach ($aOptions as $sKey => $aOption) {
             if (is_scalar($aOption)) {
                 $aOption = array('label' => " " . $aOption, 'value' => $sKey);
             }
             $aOption['label_attributes'] = array();
             $classe = "";
             if (!in_array("not-bootstrap", $aClasse)) {
                 $classe = "btn btn-default ";
                 if ($type == "multi_checkbox") {
                     if (@in_array($sKey, $selected)) {
                         $classe .= "active";
                     }
                 } else {
                     if ($type == "radio") {
                         if ($sKey == $selected) {
                             $classe .= "active";
                         }
                     }
                 }
             }
             if (in_array("not-bootstrap", $aClasse)) {
                 $classe .= "not-bootstrap";
             }
             if ($disabled) {
                 $classe .= " disabled";
             }
             if (empty($aOption['label_attributes']['class'])) {
                 $aOption['label_attributes']['class'] = trim($classe);
             } elseif (!preg_match('/(\\s|^)' . preg_quote($classe) . '(\\s|$)/', $aOption['label_attributes']['class'])) {
                 $aOption['label_attributes']['class'] .= trim(' ' . $classe);
             }
             if (isset($aAtributes['data'])) {
                 foreach ($aAtributes['data'] as $key => $value) {
                     $aOption['label_attributes']['data-' . $key] = $value[$sKey];
                 }
             }
             if ($disabled) {
                 if ($type == "multi_checkbox") {
                     if (@in_array($sKey, $selected)) {
                         $aOptions[$sKey] = $aOption;
                     } else {
                         unset($aOptions[$sKey]);
                     }
                 } else {
                     if ($type == "radio") {
                         if ($sKey == $selected) {
                             $aOptions[$sKey] = $aOption;
                         } else {
                             unset($aOptions[$sKey]);
                         }
                     }
                 }
             } else {
                 $aOptions[$sKey] = $aOption;
             }
         }
         $element->setValueOptions($aOptions);
         if (!in_array("not-bootstrap", $aClasse)) {
             return sprintf('<div><div class="btn-group" data-toggle="buttons">%s</div></div>', parent::render($element));
         } else {
             return sprintf('<div>%s</div>', parent::render($element));
         }
     }
     return parent::render($element);
 }