%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/widgets/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/widgets/MarkdownView.php |
<?php
/**
* @link https://www.humhub.org/
* @copyright Copyright (c) 2015 HumHub GmbH & Co. KG
* @license https://www.humhub.com/licences
*/
namespace humhub\widgets;
use Exception;
/**
* MarkdownViewWidget shows Markdown flavored content
*
* @author luke
* @since 0.11
*/
class MarkdownView extends \yii\base\Widget
{
/**
* Markdown to parse
*
* @var string
*/
public $markdown = "";
/**
* Markdown parser class
*
* @var string
*/
public $parserClass = "humhub\libs\Markdown";
/**
* Purify output after parsing
*
* @var boolean
*/
public $purifyOutput = true;
/**
* Stylesheet for Highlight.js
*/
public $highlightJsCss = "github";
/**
* @var boolean return plain output (do not use widget template)
*/
public $returnPlain = false;
public function init()
{
if (!\humhub\libs\Helpers::CheckClassType($this->parserClass, "cebe\markdown\Parser")) {
throw new Exception("Invalid markdown parser class given!");
}
}
public function run()
{
$this->markdown = \yii\helpers\Html::encode($this->markdown);
$parserClass = $this->parserClass;
$parser = new $parserClass;
$html = $parser->parse($this->markdown);
if ($this->purifyOutput) {
$html = \yii\helpers\HtmlPurifier::process($html, function ($config) {
$config->set('URI.AllowedSchemes', ['http' => true, 'https' => true, 'mailto' => true, 'ftp' => true, 'file' => true]);
$config->getHTMLDefinition(true)
->addAttribute('a', 'target', 'Text');
});
}
if ($this->returnPlain) {
return $html;
}
return $this->render('markdownView', ['content' => $html, 'highlightJsCss' => $this->highlightJsCss]);
}
}