Example #1
0
 /**
  * @param WikiLingo\Renderer $renderer
  * @param WikiLingo\Parser $parser
  * @return mixed|string
  */
 public function render($renderer, $parser)
 {
     $element = $renderer->element(__CLASS__, 'br');
     $element->setInline();
     $element->staticChildren[] = $this->renderedChildren;
     return $element->render();
 }
Example #2
0
    /**
     * @param WikiLingo\Expression\Plugin $plugin
     * @param string $body
     * @param WikiLingo\Renderer $renderer
     * @param WikiLingo\Parser $parser
     * @return string
     */
    public function render(WikiLingo\Expression\Plugin &$plugin, &$body = '', &$renderer, &$parser)
    {
        $plugin->allowLineAfter = false;
        $id = $plugin->id();
        $parser->scripts->addScript(<<<JS
\$(function() {
\tvar tabs = \$('#{$id}');
\ttabs.tabs();
});
JS
);
        if (!empty($plugin->privateAttributes['titles'])) {
            $ul = $renderer->helper('ul');
            foreach ($plugin->privateAttributes['titles'] as $tabId => $title) {
                $a = $renderer->helper('a');
                $a->attributes['href'] = '#' . $tabId;
                $a->staticChildren[] = $title;
                $li = $renderer->helper('li');
                $li->children[] = $a;
                $ul->children[] = $li;
            }
            $body = $ul->render() . $body;
        }
        $tabs = parent::render($plugin, $body, $renderer, $parser);
        return $tabs;
    }
Example #3
0
 /**
  * @param WikiLingo\Renderer $renderer
  * @param WikiLingo\Parser $parser
  * @return mixed|string
  */
 public function render($renderer, $parser)
 {
     $element = $renderer->element(__CLASS__, 'div');
     $element->classes[] = 'title';
     $element->staticChildren[] = $this->renderedChildren;
     return $element->render();
 }
Example #4
0
 /**
  * @param WikiLingo\Expression\Plugin $plugin
  * @param string $body
  * @param WikiLingo\Renderer $renderer
  * @param WikiLingo\Parser $parser
  * @return string
  */
 public function render(WikiLingo\Expression\Plugin &$plugin, &$body, &$renderer, &$parser)
 {
     $header = $renderer->helper('h3');
     $header->staticChildren[] = $plugin->parameter('title');
     $accordion = parent::render($plugin, $body, $renderer, $parser);
     return $header->render() . $accordion;
 }
Example #5
0
 /**
  * @param WikiLingo\Renderer $renderer
  * @param WikiLingo\Parser $parser
  * @return mixed|string
  */
 public function render($renderer, $parser)
 {
     $element = $renderer->element(__CLASS__, 'span');
     $element->attributes['style'] = 'color:' . $this->color . ';';
     $element->staticChildren[] = $this->renderedChildren;
     return $element->render();
 }
Example #6
0
 /**
  * @param WikiLingo\Renderer $renderer
  * @param WikiLingo\Parser $parser
  * @return mixed|string
  */
 public function render($renderer, $parser)
 {
     $element = $renderer->element(__CLASS__, "tr");
     foreach ($this->columns as $column) {
         $element->staticChildren[] = $column->render($renderer, $parser);
     }
     return $element->render();
 }
 /**
  * @param WikiLingo\Renderer $renderer
  * @param WikiLingo\Parser $parser
  * @return string
  */
 public function render($renderer, $parser)
 {
     $elementTerm = $renderer->element(__CLASS__, 'dt');
     $elementTerm->staticChildren[] = $this->term;
     $elementDescription = $renderer->element(__CLASS__, 'dd');
     $elementDescription->staticChildren[] = $this->description;
     return $elementTerm->render() . $elementDescription->render();
 }
Example #8
0
 /**
  * @param WikiLingo\Renderer $renderer
  * @param WikiLingo\Parser $parser
  * @return mixed|string
  */
 public function render($renderer, $parser)
 {
     $element = $renderer->element(__CLASS__, "td");
     $element->classes[] = 'table-cell';
     $parser->scripts->addCss('td.table-cell{min-width:50px;}');
     $element->staticChildren[] = $this->renderedChildren;
     return $element->render();
 }
Example #9
0
 /**
  * @param WikiLingo\Renderer $renderer
  * @param WikiLingo\Parser $parser
  * @return mixed|string
  */
 public function render($renderer, $parser)
 {
     $tableParser = new ExpressionParser\Table();
     $element = $renderer->element(__CLASS__, 'table');
     $table = $tableParser->parse($this->renderedChildren);
     $element->staticChildren[] = $table->render($renderer, $parser);
     $result = $element->render();
     return $result;
 }
Example #10
0
 /**
  * @param WikiLingo\Renderer $renderer
  * @param WikiLingo\Parser $parser
  * @return mixed|string
  */
 public function render($renderer, $parser)
 {
     if ($parser->wysiwyg) {
         $element = $renderer->element(__CLASS__, 'span');
         $element->staticChildren[] = $this->parsed->text;
         return $element->render();
     }
     return $this->parsed->text;
 }
Example #11
0
 /**
  * @param WikiLingo\Renderer $renderer
  * @param WikiLingo\Parser $parser
  * @return mixed|string
  */
 public function render($renderer, $parser)
 {
     $element = Type::Element($renderer->element(__CLASS__, 'div'));
     $parser->scripts->addCss('.center {text-align: center ! important;}');
     $element->classes[] = 'center';
     $element->staticChildren[] = $this->renderedChildren;
     $rendered = $element->render();
     return $rendered;
 }
Example #12
0
    /**
     * @param WikiLingo\Renderer $renderer
     * @param WikiLingo\Parser $parser
     * @return mixed|string
     */
    public function render($renderer, $parser)
    {
        $id = $this->id();
        $element = $renderer->element(__CLASS__, 'textarea');
        $element->attributes['id'] = $id;
        $element->classes[] = 'Code';
        $code = $this->parsed->text;
        $modeIsWikiLingo = false;
        $mode = null;
        $element->attributes['disabled'] = 'true';
        if ($code[0] !== ' ') {
            $pattern = '/^(?P<mode>[a-zA-Z0-9]+)/';
            preg_match($pattern, $code, $matches);
            if (!empty($matches['mode'])) {
                //if the mode is not set, normalize it to lower-case
                $possibleMode = strtolower($matches['mode']);
                if ($possibleMode == 'wikilingo') {
                    $modeIsWikiLingo = true;
                    $mode = (object) array("mode" => "wikiLingo");
                } else {
                    if (!empty(self::$modes[$possibleMode])) {
                        $mode = self::$modes[$possibleMode];
                    }
                }
            }
        }
        if ($mode != null) {
            $modeName = $mode->mode;
            $code = substr($code, strlen($modeName) + 1);
            $element->detailedAttributes['data-mode'] = $modeName;
            $parser->scripts->addScriptLocation("~codemirror/codemirror/lib/codemirror.js")->addCssLocation("~codemirror/codemirror/lib/codemirror.css")->addCss(<<<CSS
.CodeMirror {
height: auto;
}
.CodeMirror-scroll {
overflow-y: hidden;
overflow-x: auto;
}
CSS
)->addScript(<<<JS
var editor = CodeMirror.fromTextArea(document.getElementById('{$id}'), {
mode:'{$modeName}',
lineNumbers: false,
readOnly: true
});
JS
);
            if ($modeIsWikiLingo) {
                $parser->scripts->addCssLocation("~wikilingo/codemirror/wikiLingo.css")->addScriptLocation("~wikilingo/codemirror/wikiLingo.js");
            } else {
                $parser->scripts->addScriptLocation("~codemirror/codemirror/mode/{$modeName}/{$modeName}.js");
            }
        }
        $element->staticChildren[] = $code;
        return $element->render();
    }
Example #13
0
 /**
  * @param WikiLingo\Renderer $renderer
  * @param WikiLingo\Parser $parser
  * @return mixed|string
  */
 public function render($renderer, $parser)
 {
     if ($this->allowed) {
         return $this->parsed->text;
     } else {
         if (isset($parser->wysiwyg)) {
             $element = $renderer->element(__CLASS__, "code");
             $element->staticChildren[] = htmlspecialchars($this->parsed->text);
             $parser->events->triggerExpressionTagRender($element, $this);
             return $element->render();
         }
         return htmlspecialchars($this->parsed->text);
     }
 }
Example #14
0
 /**
  * @param WikiLingo\Renderer $renderer
  * @param WikiLingo\Parser $parser
  * @return string
  */
 public function render($renderer, $parser)
 {
     $tagType = 'h' . $this->count;
     $children = '';
     foreach ($this->parsed->children as $child) {
         $children .= $parser->renderer->render($child);
     }
     if ($this->pointer) {
         $tagType = 'a';
         $children = strip_tags($children);
     }
     $element = Type::Element($renderer->element(__CLASS__, $tagType));
     $element->staticChildren[] = $children;
     if (isset($this->modifier)) {
         $element->detailedAttributes['data-modifier'] = $this->modifier;
         //TODO: add in js to make expandable
         switch ($this->modifier) {
             case 'toggle':
                 $helper = Type::Helper($renderer->helper('a'));
                 $helper->staticChildren[] = '[+]';
                 $helper->attributes['href'] = '#';
                 $element->staticChildren[] = $helper->render();
                 break;
             case 'hidden':
                 $helper = Type::Helper($renderer->helper('a'));
                 $helper->staticChildren[] = '[-]';
                 $helper->attributes['href'] = '#';
                 $element->staticChildren[] = $helper->render();
                 break;
         }
     }
     if ($this->id == null || $this->block->variableContext != null) {
         $id = trim(preg_replace("/[^0-9a-zA-Z_]+/", "-", trim(strip_tags($children))), '-');
         $id = $parser->events->triggerExpressionBlockTypeHeaderIdLookup($id, $this);
         $this->id = $id;
         if (!isset(self::$ids[$id])) {
             self::$ids[$id] = 1;
         } else {
             $this->id .= self::$ids[$id];
             self::$ids[$id]++;
         }
     }
     if ($this->pointer) {
         $element->attributes['href'] = '#' . urlencode($this->id);
     } else {
         $element->attributes['id'] = $this->id;
     }
     $header = $element->render();
     return $header;
 }
Example #15
0
 /**
  * @param WikiLingo\Renderer $renderer
  * @param WikiLingo\Parser $parser
  * @return mixed|string
  */
 public function render($renderer, $parser)
 {
     $element = $renderer->element(__CLASS__, 'a');
     $sides = explode("|", $this->renderedChildren);
     if (isset($sides[1])) {
         $element->detailedAttributes['data-href'] = $href = array_shift($sides);
         $text = implode('|', $sides);
     } else {
         $href = $this->renderedChildren;
         $text = $this->renderedChildren;
     }
     $element->staticChildren[] = $text;
     $element->attributes['href'] = $href;
     return $element->render();
 }
Example #16
0
 /**
  * @param WikiLingo\Renderer $renderer
  * @param WikiLingo\Parser $parser
  * @return mixed|string
  */
 public function render($renderer, $parser)
 {
     $element = $renderer->element(__CLASS__, 'a');
     $sides = explode("|", $this->renderedChildren);
     if (isset($sides[1])) {
         $text = $sides[1];
         $href = $sides[0];
     } else {
         $text = $this->renderedChildren;
         $href = $this->renderedChildren;
     }
     $element->staticChildren[] = $text;
     $element->attributes['href'] = $href;
     $element->detailedAttributes['data-wiki-link-type'] = $this->type;
     $parser->events->triggerExpressionWikiLinkTypeRender($element, $this);
     return $element->render();
 }
Example #17
0
 /**
  * @param WikiLingo\Renderer $renderer
  * @param WikiLingo\Parser $parser
  * @return mixed|string
  */
 public function render($renderer, $parser)
 {
     $scripts = $parser->scripts;
     $allowWhiteSpace = true;
     if ($parent = $this->parent()) {
         $parentExpression = $parent->expression;
         $allowWhiteSpace = $parentExpression->allowWhiteSpace;
     }
     $scripts->addCss("span.whitespace {white-space: pre;}");
     $element = $renderer->element(__CLASS__, 'span');
     if ($allowWhiteSpace == false) {
         $parser->scripts->addCss("span.hidden {display: none;content: ''}");
         $element->classes[] = 'hidden';
     }
     $element->classes[] = 'whitespace';
     $element->staticChildren[] = $this->parsed->text;
     return $element->render();
 }
Example #18
0
 /**
  * @param WikiLingo\Renderer $renderer
  * @param WikiLingo\Parser $parser
  * @return mixed|string
  */
 public function render($renderer, $parser)
 {
     $element = $renderer->element(__CLASS__, 'span');
     $key = $element->detailedAttributes["key"] = substr($this->parsed->text, 1, -1);
     $set = false;
     if (empty($this->variableContext)) {
         $parser->events->triggerExpressionVariableLookup($key, $element, $this);
         $set = true;
     } else {
         $i = $parser->variableContextStack->last()->i;
         if (isset($this->variableContext[$i]) && isset($this->variableContext[$i][$key])) {
             $element->staticChildren[] = $this->variableContext[$i][$key];
             $set = true;
         }
     }
     if ($set === false) {
         $element->staticChildren[] = $key;
     }
     return $element->render();
 }
Example #19
0
    /**
     * @param WikiLingo\Renderer $renderer
     * @param WikiLingo\Parser $parser
     * @return mixed|string
     */
    public function render($renderer, $parser)
    {
        if (!$parser->wysiwyg) {
            self::$renderedCount++;
            //FIRST
            //Bind initial render so that PastLink::$ui is set, this is only done once per parser render
            if (self::$renderedCount == 1) {
                $parser->events->bind(new Event\PostRender(function ($rendered) {
                    PastLink::$ui = new FLP\UI($rendered);
                    PastLink::$ui->setContextAsFuture();
                }));
            }
            //EVERY
            //each child needs to be sent as a phrase to the ui
            $children = $this->renderedChildren;
            $parser->events->bind(new Event\PostRender(function ($rendered) use($children) {
                PastLink::$ui->addPhrase(new Phraser\Phrase($children));
            }));
            $value = new FLP\Metadata();
            $value->text = $children;
            FLP\Events::triggerMetadataLookup('', $value);
            $pair = new FLP\Pair($this->past, $value);
            FLP\Pairs::add($pair);
            $assembled = new FLP\PairAssembler();
            $assembled->futureText = new Phraser\Phrase($children);
            $assembled->pastText = new Phraser\Phrase($pair->past->text);
            $assembled->pair = $pair;
            $assembled->increment();
            self::$pairs[] = $assembled;
            //LAST
            //if this is the last item in the count, then setup the post-render, reset the counters
            if (self::$existingCount == self::$renderedCount) {
                $parser->events->bind(new Event\PostRender(function ($rendered) use($parser) {
                    $rendered = PastLink::$ui->render();
                    $pairs = self::$pairs;
                    $pairsJson = json_encode($pairs);
                    $counts = json_encode(FLP\PairAssembler::$counts);
                    //use an actual length, when more than 1, php turns from array to associative array, so there is no length
                    $length = self::$existingCount;
                    $parser->scripts->addScriptLocation("~flp/flp/scripts/flp.js")->addScriptLocation("~flp/flp/scripts/flp.Link.js")->addScript(<<<JS
(function() {
    var counts = {$counts},
        length = {$length},
        flpData = {$pairsJson},
        phrases = \$('span.phrases'),
        phrasesLookupTable = {};

        for(var x = 0; x < length; x++){
            if(!phrasesLookupTable[flpData[x].futureText.sanitized]){
                phrasesLookupTable[flpData[x].futureText.sanitized] = [];
            }
            phrasesLookupTable[flpData[x].futureText.sanitized].push(flpData[x]);
        }


    for (var i = 0; i < {$length}; i++) {
        var pastLink = new flp.Link({
            beginning: phrases.filter('span.pastlink-beginning' + i),
            middle: phrases.filter('span.pastlink' + i),
            end: phrases.filter('span.pastlink-end' + i),
            to: 'past',
            count: counts[flpData[i].futureText.sanitized],
            pairs: phrasesLookupTable[flpData[i].futureText.sanitized]
        });
        flp.addPastLink(pastLink);
    }
})();
JS
);
                }));
                FLP\SendToPast::send();
            }
        }
        $element = $renderer->element(__CLASS__, 'span');
        $element->staticChildren[] = $this->renderedChildren;
        $element->detailedAttributes['data-past'] = $this->past;
        $rendered = $element->render();
        return $rendered;
    }
Example #20
0
 /**
  * @param WikiLingo\Renderer $renderer
  * @param WikiLingo\Parser $parser
  * @return mixed|string
  */
 public function render($renderer, $parser)
 {
     $element = $renderer->element(__CLASS__, "a");
     $parser->events->triggerExpressionWordLinkRender($element, $this);
     return $element->render();
 }
 /**
  * @param WikiLingo\Renderer $renderer
  * @param WikiLingo\Parser $parser
  * @return mixed|string
  */
 public function render($renderer, $parser)
 {
     $element = $renderer->element(__CLASS__, 'pre');
     $element->staticChildren[] = $this->parsed->text;
     return $element->render();
 }
 /**
  * @param WikiLingo\Renderer $renderer
  * @param WikiLingo\Parser $parser
  * @return mixed|string
  */
 public function render($renderer, $parser)
 {
     $element = Type::Element($renderer->element(__CLASS__, 'hr'));
     $element->setInline();
     return $element->render();
 }
Example #23
0
    /**
     * @param WikiLingo\Expression\Plugin $plugin
     * @param string $body
     * @param WikiLingo\Renderer $renderer
     * @param WikiLingo\Parser $parser
     * @return string
     */
    public function render(WikiLingo\Expression\Plugin &$plugin, &$body = '', &$renderer, &$parser)
    {
        $plugin->allowLineAfter = false;
        $id = $plugin->id();
        $anchors = array();
        if (!$parser->wysiwyg) {
            if (!empty($plugin->privateAttributes['titles'])) {
                //menu
                $ul = Type::Helper($renderer->helper('ul'));
                $ul->attributes['id'] = $id . '-menu';
                $i = 1;
                //anchors for sections
                foreach ($plugin->privateAttributes['titles'] as $sectionId => $title) {
                    $link = Type::Helper($renderer->helper('span'));
                    $link->attributes['href'] = $sectionId;
                    $link->attributes['onclick'] = <<<JS
\$.fn.fullpage.moveTo({$i});
return false;
JS;
                    $i++;
                    //$anchors[] = $a->attributes['data-index'] = $i++;
                    //$a->attributes['id'] = $sectionId . '-anchor';
                    $link->staticChildren[] = $title;
                    $li = Type::Helper($renderer->helper('li'));
                    $li->children[] = $link;
                    $ul->children[] = $li;
                }
                $body .= $ul->render();
                $anchorsJson = json_encode($anchors);
                Type::Scripts($parser->scripts)->addScriptLocation('~/bower_components/fullPage.js/jquery.fullPage.js')->addCssLocation('~/bower_components/fullPage.js/jquery.fullPage.css')->addScript(<<<JS
    \$(function() {
        \$.fn.fullpage({
            anchors: {$anchorsJson},
            easing: 'easeInOutQuad',
            scrollSpeed: 1100,
            menu: '#{$id}-menu'
        });
    });
JS
)->addCss(<<<CSS
#{$id}-menu {
    height: 40px;
    left: 0;
    margin: 0;
    padding: 0;
    position: fixed;
    top: 0;
    width: 100%;
    list-style: none outside none;
}

#{$id}-menu li {
    background-color: rgba(255, 255, 255, 0.5);
    color: #000000;
    border-radius: 10px;
    display: inline-block;
    margin: 10px;
}

#{$id}-menu li.active {
    background-color: rgba(0, 0, 0, 0.5);
    color: #FFFFFF;
}

#{$id}-menu li span {
    display: block;
    padding: 9px 18px;
    text-decoration: none;
    color: inherit;
    cursor: pointer;
}

CSS
);
            }
        }
        $tabs = parent::render($plugin, $body, $renderer, $parser);
        return $tabs;
    }
Example #24
0
 /**
  * @param WikiLingo\Renderer $renderer
  * @param WikiLingo\Parser $parser
  * @return mixed|string
  */
 public function render($renderer, $parser)
 {
     $element = $renderer->element(__CLASS__, 'span');
     $element->staticChildren[] = htmlspecialchars($this->parsed->text);
     return $element->render();
 }
Example #25
0
 /**
  * @param WikiLingo\Expression\Plugin $plugin
  * @param string $body
  * @param WikiLingo\Renderer $renderer
  * @param WikiLingo\Parser $parser
  * @return string
  */
 public function render(WikiLingo\Expression\Plugin &$plugin, &$body = '', &$renderer, &$parser)
 {
     $elementName = $parser->wysiwyg && !empty($this->wysiwygTagType) ? $this->wysiwygTagType : $this->htmlTagType;
     $element = $renderer->element($this->expressionType, $elementName);
     $element->classes[] = (!empty($this->attributes['class']) ? $this->attributes['class'] . ' ' : '') . $plugin->type;
     $element->attributes['id'] = $id = $plugin->id();
     $parser->plugins[] = $id;
     $style = $this->stylize($plugin->parametersRaw);
     if (!empty($style)) {
         $element->attributes['style'] = $style;
     }
     $this->attributeDefaults($plugin->attributes);
     foreach ($plugin->attributes as $attribute => $value) {
         $element->attributes[$attribute] = $value;
     }
     if ($parser->wysiwyg) {
         $parser->scripts->addScript("");
     }
     $element->detailedAttributes += $this->detailedAttributes;
     $element->detailedAttributes['data-plugin-type'] = $plugin->type;
     $element->detailedAttributes['data-draggable'] = $this->draggable ? 'true' : 'false';
     $element->detailedAttributes['data-plugin-parameters'] = empty($plugin->parametersRaw) ? null : urlencode(json_encode($plugin->parametersRaw));
     $element->detailedAttributes['data-in-line'] = $plugin->inLine ? 'true' : 'false';
     if ($plugin->inLine) {
         $element->detailedAttributes['contenteditable'] = 'false';
         if ($this->hasHtmlBody == false && !$this->bodyIsAutoGenerated) {
             $element->setInline();
         }
     }
     if (!empty($body)) {
         $element->staticChildren[] = $body;
     }
     $renderedPluginElement = $element->render();
     return $renderedPluginElement;
 }