Ejemplo n.º 1
0
 /**
  * Create, configure and return an instance of Nbbc\BBcode.
  *
  * @return Nbbc
  */
 public function nbbc()
 {
     if ($this->nbbc === null) {
         $nbbc = new Nbbc();
         $nbbc->setEnableSmileys(false);
         $nbbc->setAllowAmpersand(true);
         $nbbc->addRule('attach', ['allow_in' => ['listitem', 'block', 'columns', 'inline', 'link'], 'class' => "image", 'content' => Nbbc::BBCODE_REQUIRED, 'end_tag' => Nbbc::BBCODE_REQUIRED, 'method' => [$this, 'doAttachment'], 'mode' => Nbbc::BBCODE_MODE_CALLBACK, 'plain_content' => [], 'plain_start' => "[image]"]);
         $nbbc->addRule('attachment', ['allow_in' => ['listitem', 'block', 'columns', 'inline', 'link'], 'class' => "image", 'content' => Nbbc::BBCODE_REQUIRED, 'end_tag' => Nbbc::BBCODE_REQUIRED, 'method' => [$this, 'removeAttachment'], 'mode' => Nbbc::BBCODE_MODE_CALLBACK, 'plain_content' => [], 'plain_start' => "[image]"]);
         $nbbc->addRule('code', ['after_endtag' => "sns", 'after_tag' => "sn", 'allow_in' => ['listitem', 'block', 'columns'], 'before_endtag' => "sn", 'before_tag' => "sns", 'class' => 'code', 'content' => Nbbc::BBCODE_VERBATIM, 'mode' => Nbbc::BBCODE_MODE_ENHANCED, 'plain_end' => "\n", 'plain_start' => "\n<b>Code:</b>\n", 'template' => "\n<pre>{\$_content/v}\n</pre>\n"]);
         $nbbc->addRule('hr', ['after_endtag' => "sns", 'after_tag' => "sns", 'allow_in' => ['listitem', 'block', 'columns'], 'before_endtag' => "sns", 'before_tag' => "sns", 'plain_end' => "\n", 'plain_start' => "\n", 'simple_end' => "", 'simple_start' => ""]);
         $nbbc->addRule('img', ['allow_in' => ['listitem', 'block', 'columns', 'inline', 'link'], 'class' => "image", 'content' => Nbbc::BBCODE_REQUIRED, 'end_tag' => Nbbc::BBCODE_REQUIRED, 'method' => [$this, 'doImage'], 'mode' => Nbbc::BBCODE_MODE_CALLBACK, 'plain_content' => [], 'plain_start' => "[image]"]);
         $nbbc->addRule('quote', ['after_endtag' => "sns", 'after_tag' => "sns", 'allow_in' => ['listitem', 'block', 'columns'], 'before_endtag' => "sns", 'before_tag' => "sns", 'method' => [$this, 'doQuote'], 'mode' => Nbbc::BBCODE_MODE_CALLBACK, 'plain_end' => "\n", 'plain_start' => "\n<b>Quote:</b>\n"]);
         // The original NBBC rule was copied here and the regex was updated to meet our new criteria.
         $nbbc->addRule('size', ['allow' => ['_default' => '/^[0-9.]+(em|px)?$/D'], 'allow_in' => ['listitem', 'block', 'columns', 'inline', 'link'], 'class' => "inline", 'method' => [$this, 'doSize'], 'mode' => Nbbc::BBCODE_MODE_CALLBACK]);
         $nbbc->addRule('snapback', ['after_endtag' => "sns", 'after_tag' => "sn", 'allow_in' => ['listitem', 'block', 'columns'], 'before_endtag' => "sn", 'before_tag' => "sns", 'class' => 'code', 'content' => Nbbc::BBCODE_VERBATIM, 'mode' => Nbbc::BBCODE_MODE_ENHANCED, 'plain_end' => "\n", 'plain_start' => "\n<b>Snapback:</b>\n", 'template' => ' <a href="' . url('/discussion/comment/{$_content/v}#Comment_{$_content/v}', true) . '" class="SnapBack">»</a> ']);
         $nbbc->addRule('spoiler', ['after_endtag' => "sns", 'after_tag' => "sns", 'allow_in' => ['listitem', 'block', 'columns'], 'before_endtag' => "sns", 'before_tag' => "sns", 'plain_end' => "\n", 'plain_start' => "\n", 'simple_end' => "</div>\n", 'simple_start' => "\n<div class=\"Spoiler\">"]);
         $nbbc->addRule('url', ['allow_in' => ['listitem', 'block', 'columns', 'inline'], 'class' => "link", 'content' => Nbbc::BBCODE_REQUIRED, 'method' => [$this, 'doURL'], 'mode' => Nbbc::BBCODE_MODE_CALLBACK, 'plain_content' => ['_content', '_default'], 'plain_end' => "</a>", 'plain_link' => ['_default', '_content'], 'plain_start' => "<a rel=\"nofollow\" href=\"{\$link}\">"]);
         $nbbc->addRule('video', ['after_endtag' => "sns", 'after_tag' => "sns", 'allow_in' => ['listitem', 'block', 'columns'], 'before_endtag' => "sns", 'before_tag' => "sns", 'method' => [$this, 'doVideo'], 'mode' => Nbbc::BBCODE_MODE_CALLBACK, 'plain_end' => "\n", 'plain_start' => "\n<b>Video:</b>\n"]);
         $nbbc->addRule('youtube', ['allow_in' => ['listitem', 'block', 'columns', 'inline'], 'class' => "link", 'content' => Nbbc::BBCODE_REQUIRED, 'method' => [$this, 'doYouTube'], 'mode' => Nbbc::BBCODE_MODE_CALLBACK, 'plain_content' => ['_content', '_default'], 'plain_end' => "\n", 'plain_link' => ['_default', '_content'], 'plain_start' => "\n<b>Video:</b>\n"]);
         // Prevent unsupported tags from displaying
         $nbbc->addRule('table', []);
         $nbbc->addRule('tr', []);
         $nbbc->addRule('td', []);
         $this->EventArguments['BBCode'] = $nbbc;
         $this->fireEvent('AfterBBCodeSetup');
         $this->nbbc = $nbbc;
     }
     return $this->nbbc;
 }