4 <meta http-equiv=
"X-UA-Compatible" content=
"IE=edge">
5 <meta name=
"viewport" content=
"width=device-width, initial-scale=1">
6 <meta name=
"description" content=
"">
7 <meta name=
"keywords" content=
" ">
8 <title>BBCode Package Installation Plugin | WoltLab Suite
5.3 Documentation
</title>
10 <link rel=
"stylesheet" href=
"https://docs.woltlab.com/5.3/css/syntax.css">
11 <link rel=
"stylesheet" href=
"https://fonts.googleapis.com/css?family=Open+Sans:400,300,600">
12 <link rel=
"stylesheet" href=
"https://docs.woltlab.com/5.3/css/font-awesome.min.css">
13 <!--<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">-->
14 <link rel=
"stylesheet" href=
"https://docs.woltlab.com/5.3/css/modern-business.css">
15 <link rel=
"stylesheet" href=
"https://docs.woltlab.com/5.3/css/lavish-bootstrap.css">
16 <link rel=
"stylesheet" href=
"https://docs.woltlab.com/5.3/css/customstyles.css">
17 <link rel=
"stylesheet" href=
"https://docs.woltlab.com/5.3/css/theme-blue.css?v=3">
19 <script src=
"https://docs.woltlab.com/5.3/js/jquery.min.js"></script>
20 <script src=
"https://docs.woltlab.com/5.3/js/jquery.cookie.min.js"></script>
21 <script src=
"https://docs.woltlab.com/5.3/js/jquery.navgoco.min.js"></script>
22 <script src=
"https://docs.woltlab.com/5.3/js/bootstrap.min.js"></script>
23 <script src=
"https://docs.woltlab.com/5.3/js/anchor.min.js"></script>
24 <script src=
"https://docs.woltlab.com/5.3/js/toc.js"></script>
25 <script src=
"https://docs.woltlab.com/5.3/js/customscripts.js"></script>
27 <link rel=
"shortcut icon" href=
"https://docs.woltlab.com/5.3/images/favicon.ico">
29 <link rel=
"alternate" type=
"application/rss+xml" title=
"woltlab.github.io" href=
"https://docs.woltlab.com/5.3feed.xml">
32 $(document).ready(function() {
33 // Initialize navgoco with default options
34 $(
"#mysidebar").navgoco({
37 openClass: 'active', // open
38 save: false, // leave false or nav highlighting doesn't work right
50 $(
"#collapseAll").click(function(e) {
52 $(
"#mysidebar").navgoco('toggle', false);
55 $(
"#expandAll").click(function(e) {
57 $(
"#mysidebar").navgoco('toggle', true);
65 $('[
data-toggle=
"tooltip"]').tooltip()
73 <nav class=
"navbar navbar-inverse navbar-fixed-top">
74 <div class=
"container topnavlinks">
75 <div class=
"navbar-header">
76 <button type=
"button" class=
"navbar-toggle" data-toggle=
"collapse" data-target=
"#bs-example-navbar-collapse-1">
77 <span class=
"sr-only">Toggle navigation
</span>
78 <span class=
"icon-bar"></span>
79 <span class=
"icon-bar"></span>
80 <span class=
"icon-bar"></span>
82 <a class=
"fa fa-home fa-lg navbar-brand" href=
"index.html"> <span class=
"projectTitle"> WoltLab Suite
5.3 Documentation
</span></a>
84 <div class=
"collapse navbar-collapse" id=
"bs-example-navbar-collapse-1">
85 <ul class=
"nav navbar-nav navbar-right">
86 <!-- entries without drop-downs appear here -->
90 <li><a href=
"https://www.woltlab.com" target=
"_blank">woltlab.com
</a></li>
96 <li><a href=
"https://github.com/WoltLab/WCF/" target=
"_blank">Code on github.com
</a></li>
100 <!-- entries with drop-downs appear here -->
101 <!-- conditional logic to control which topnav appears for the audience defined in the configuration file.-->
104 <!--comment out this block if you want to hide search-->
107 <div id=
"search-demo-container">
108 <input type=
"text" id=
"search-input" placeholder=
"search...">
109 <ul id=
"results-container"></ul>
111 <script src=
"https://docs.woltlab.com/5.3/js/jekyll-search.js" type=
"text/javascript"></script>
112 <script type=
"text/javascript">
113 SimpleJekyllSearch.init({
114 searchInput: document.getElementById('search-input'),
115 resultsContainer: document.getElementById('results-container'),
116 dataSource: 'https://docs.woltlab.com/
5.3/search.json',
117 searchResultTemplate: '
<li><a href=
"{url}" title=
"BBCode Package Installation Plugin">{title}
</a></li>',
118 noResultsText: 'No results found.',
132 <div class=
"container">
133 <div class=
"col-lg-12"> </div>
136 <div class=
"col-md-3">
140 <ul id=
"mysidebar" class=
"nav">
141 <li class=
"sidebarTitle">WoltLab Suite
5.3</li>
146 <a href=
"#">Getting Started
</a>
152 <li data-identifier=
"index"><a href=
"index.html">Introduction
</a></li>
161 <li data-identifier=
"getting-started_quick-start"><a href=
"getting-started_quick-start.html">Quick Start
</a></li>
171 <a href=
"#">PHP API
</a>
177 <li data-identifier=
"php_pages"><a href=
"php_pages.html">Pages
</a></li>
186 <li data-identifier=
"php_database-objects"><a href=
"php_database-objects.html">Database Objects
</a></li>
195 <li data-identifier=
"php_database-access"><a href=
"php_database-access.html">Database Access
</a></li>
204 <li data-identifier=
"php_exceptions"><a href=
"php_exceptions.html">Exceptions
</a></li>
213 <li class=
"subfolders">
219 <li data-identifier=
"php_api_caches"><a href=
"php_api_caches.html">Caches
</a></li>
224 <li data-identifier=
"php_api_comments"><a href=
"php_api_comments.html">Comments
</a></li>
229 <li data-identifier=
"php_api_cronjobs"><a href=
"php_api_cronjobs.html">Cronjobs
</a></li>
234 <li data-identifier=
"php_api_events"><a href=
"php_api_events.html">Events
</a></li>
239 <li data-identifier=
"php_api_form_builder"><a href=
"php_api_form_builder.html">Form Builder
</a></li>
244 <li data-identifier=
"php_api_package_installation_plugins"><a href=
"php_api_package_installation_plugins.html">Package Installation Plugins
</a></li>
249 <li data-identifier=
"php_api_user_activity_points"><a href=
"php_api_user_activity_points.html">User Activity Points
</a></li>
254 <li data-identifier=
"php_api_user_notifications"><a href=
"php_api_user_notifications.html">User Notifications
</a></li>
259 <li data-identifier=
"php_api_sitemaps"><a href=
"php_api_sitemaps.html">Sitemaps
</a></li>
269 <li data-identifier=
"php_code-style"><a href=
"php_code-style.html">Code Style
</a></li>
278 <li data-identifier=
"php_apps"><a href=
"php_apps.html">Apps
</a></li>
287 <li data-identifier=
"php_gdpr"><a href=
"php_gdpr.html">GDPR
</a></li>
297 <a href=
"#">Languages, Templates & CSS
</a>
303 <li data-identifier=
"view_languages"><a href=
"view_languages.html">Languages
</a></li>
312 <li data-identifier=
"view_templates"><a href=
"view_templates.html">Templates
</a></li>
321 <li data-identifier=
"view_css"><a href=
"view_css.html">CSS
</a></li>
331 <a href=
"#">JavaScript API
</a>
337 <li data-identifier=
"javascript_general-usage"><a href=
"javascript_general-usage.html">General Usage
</a></li>
346 <li class=
"subfolders">
347 <a href=
"#">New API
</a>
352 <li data-identifier=
"javascript_new-api_writing-a-module"><a href=
"javascript_new-api_writing-a-module.html">Writing a module
</a></li>
357 <li data-identifier=
"javascript_new-api_data-structures"><a href=
"javascript_new-api_data-structures.html">Data Structures
</a></li>
362 <li data-identifier=
"javascript_new-api_core"><a href=
"javascript_new-api_core.html">Core Functions
</a></li>
367 <li data-identifier=
"javascript_new-api_dom"><a href=
"javascript_new-api_dom.html">DOM
</a></li>
372 <li data-identifier=
"javascript_new-api_events"><a href=
"javascript_new-api_events.html">Event Handling
</a></li>
377 <li data-identifier=
"javascript_new-api_ajax"><a href=
"javascript_new-api_ajax.html">Ajax
</a></li>
382 <li data-identifier=
"javascript_new-api_dialogs"><a href=
"javascript_new-api_dialogs.html">Dialogs
</a></li>
387 <li data-identifier=
"javascript_new-api_browser"><a href=
"javascript_new-api_browser.html">Browser and Screen Sizes
</a></li>
392 <li data-identifier=
"javascript_new-api_ui"><a href=
"javascript_new-api_ui.html">User Interface
</a></li>
402 <li data-identifier=
"javascript_legacy-api"><a href=
"javascript_legacy-api.html">Legacy API
</a></li>
411 <li data-identifier=
"javascript_helper-functions"><a href=
"javascript_helper-functions.html">Helper Functions
</a></li>
420 <li data-identifier=
"javascript_code-snippets"><a href=
"javascript_code-snippets.html">Code Snippets
</a></li>
430 <a href=
"#">Package Components
</a>
436 <li data-identifier=
"package_package-xml"><a href=
"package_package-xml.html">package.xml
</a></li>
445 <li data-identifier=
"package_pip"><a href=
"package_pip.html">PIPs
</a></li>
455 <a href=
"#">Migration
</a>
461 <li class=
"subfolders">
462 <a href=
"#">Migrating from WSC
5.2</a>
467 <li data-identifier=
"migration_wsc-52_php"><a href=
"migration_wsc-52_php.html">PHP API
</a></li>
472 <li data-identifier=
"migration_wsc-52_templates"><a href=
"migration_wsc-52_templates.html">Templates and Languages
</a></li>
477 <li data-identifier=
"migration_wsc-52_libraries"><a href=
"migration_wsc-52_libraries.html">Third Party Libraries
</a></li>
483 <li class=
"subfolders">
484 <a href=
"#">Migrating from WSC
3.1</a>
489 <li data-identifier=
"migration_wsc-31_php"><a href=
"migration_wsc-31_php.html">PHP API
</a></li>
495 <li class=
"subfolders">
496 <a href=
"#">Migrating from WSC
3.0</a>
501 <li data-identifier=
"migration_wsc-30_php"><a href=
"migration_wsc-30_php.html">PHP API
</a></li>
506 <li data-identifier=
"migration_wsc-30_javascript"><a href=
"migration_wsc-30_javascript.html">JavaScript API
</a></li>
511 <li data-identifier=
"migration_wsc-30_templates"><a href=
"migration_wsc-30_templates.html">Templates
</a></li>
516 <li data-identifier=
"migration_wsc-30_css"><a href=
"migration_wsc-30_css.html">CSS
</a></li>
521 <li data-identifier=
"migration_wsc-30_package"><a href=
"migration_wsc-30_package.html">Package Components
</a></li>
527 <li class=
"subfolders">
528 <a href=
"#">Migrating from WCF
2.1</a>
533 <li data-identifier=
"migration_wcf-21_php"><a href=
"migration_wcf-21_php.html">PHP API
</a></li>
538 <li data-identifier=
"migration_wcf-21_templates"><a href=
"migration_wcf-21_templates.html">Templates
</a></li>
543 <li data-identifier=
"migration_wcf-21_css"><a href=
"migration_wcf-21_css.html">CSS
</a></li>
548 <li data-identifier=
"migration_wcf-21_package"><a href=
"migration_wcf-21_package.html">Package Components
</a></li>
559 <a href=
"#">Tutorials
</a>
565 <li data-identifier=
"tutorial_tutorial-series"><a href=
"tutorial_tutorial-series.html">Tutorial Series
</a></li>
579 var sidebar = $('#mysidebar');
580 var item = sidebar.find('.active');
581 if (item.length ===
0) {
582 var parent = 'package_pip';
584 sidebar.find('li[
data-identifier=
"' + parent + '"]').addClass('active');
588 sidebar.find(
".active").parents('li').toggleClass(
"active");
594 <div class=
"col-md-9">
595 <div class=
"post-header">
596 <h1 class=
"post-title-main">BBCode Package Installation Plugin
</h1>
601 <div class=
"post-content">
607 <!-- this handles the automatic toc. use ## for subheads to auto-generate the on-page minitoc. if you use html tags, you must supply an ID for the heading element in order for it to appear in the minitoc. -->
609 $( document ).ready(function() {
610 // Handler for .ready() called.
612 $('#toc').toc({ minimumHeaders:
0, listType: 'ul', showSpeed:
0, headers: 'h2,h3,h4' });
614 /* this offset helps account for the space taken up by the floating toolbar. */
615 $('#toc').on('click', 'a', function() {
616 var target = $(this.getAttribute('href'))
617 , scroll_target = target.offset().top
619 $(window).scrollTop(scroll_target -
10);
630 <p>Registers new BBCodes.
</p>
632 <h2 id=
"components">Components
</h2>
634 <p>Each bbcode is described as an
<code class=
"language-plaintext highlighter-rouge"><bbcode
></code> element with the mandatory attribute
<code class=
"language-plaintext highlighter-rouge">name
</code>.
635 The
<code class=
"language-plaintext highlighter-rouge">name
</code> attribute must contain alphanumeric characters only and is exposed to the user.
</p>
637 <h3 id=
"htmlopen"><code class=
"language-plaintext highlighter-rouge"><htmlopen
></code></h3>
639 <div class=
"bs-callout bs-callout-info">Optional: Must not be provided if the BBCode is being processed a PHP class (
<code class=
"language-plaintext highlighter-rouge"><classname
></code>).
</div>
641 <p>The contents of this tag are literally copied into the opening tag of the bbcode.
</p>
643 <h3 id=
"htmlclose"><code class=
"language-plaintext highlighter-rouge"><htmlclose
></code></h3>
645 <div class=
"bs-callout bs-callout-info">Optional: Must not be provided if
<code class=
"language-plaintext highlighter-rouge"><htmlopen
></code> is not given.
</div>
647 <p>Must match the
<code class=
"language-plaintext highlighter-rouge"><htmlopen
></code> tag.
648 Do not provide for self-closing tags.
</p>
650 <h3 id=
"classname"><code class=
"language-plaintext highlighter-rouge"><classname
></code></h3>
652 <p>The name of the class providing the bbcode output,
653 the class has to implement the
<code class=
"language-plaintext highlighter-rouge">wcf\system\bbcode\IBBCode
</code> interface.
</p>
655 <p>BBCodes can be statically converted to HTML during input processing using a
656 <code class=
"language-plaintext highlighter-rouge">wcf\system\html\metacode\converter\*MetaConverter
</code> class. This class does not
657 need to be registered.
</p>
659 <h3 id=
"wysiwygicon"><code class=
"language-plaintext highlighter-rouge"><wysiwygicon
></code></h3>
661 <p><span class=
"label label-info">Optional
</span></p>
663 <p>Name of the Font Awesome icon class or path to a
<code class=
"language-plaintext highlighter-rouge">gif
</code>,
<code class=
"language-plaintext highlighter-rouge">jpg
</code>,
<code class=
"language-plaintext highlighter-rouge">jpeg
</code>,
<code class=
"language-plaintext highlighter-rouge">png
</code>, or
<code class=
"language-plaintext highlighter-rouge">svg
</code> image (placed inside the
<code class=
"language-plaintext highlighter-rouge">icon/
</code> directory) to show in the editor toolbar.
</p>
665 <h3 id=
"buttonlabel"><code class=
"language-plaintext highlighter-rouge"><buttonlabel
></code></h3>
667 <div class=
"bs-callout bs-callout-info">Optional: Must be provided if an icon is given.
</div>
669 <p>Explanatory text to show when hovering the icon.
</p>
671 <h3 id=
"sourcecode"><code class=
"language-plaintext highlighter-rouge"><sourcecode
></code></h3>
673 <div class=
"alert alert-danger" role=
"alert"><i class=
"fa fa-exclamation-circle"></i> <b>Warning:
</b> Do not set this to
<code class=
"language-plaintext highlighter-rouge">1</code> if you don’t specify a PHP class for processing. You must perform XSS sanitizing yourself!
</div>
675 <p>If set to
<code class=
"language-plaintext highlighter-rouge">1</code> contents of this BBCode will not be interpreted,
676 but literally passed through instead.
</p>
678 <h3 id=
"isblockelement"><code class=
"language-plaintext highlighter-rouge"><isBlockElement
></code></h3>
680 <p>Set to
<code class=
"language-plaintext highlighter-rouge">1</code> if the output of this BBCode is a HTML block element (according to the HTML specification).
</p>
682 <h3 id=
"attributes"><code class=
"language-plaintext highlighter-rouge"><attributes
></code></h3>
684 <p>Each bbcode is described as an
<code class=
"language-plaintext highlighter-rouge"><attribute
></code> element with the mandatory attribute
<code class=
"language-plaintext highlighter-rouge">name
</code>.
685 The
<code class=
"language-plaintext highlighter-rouge">name
</code> attribute is a
0-indexed integer.
</p>
687 <h4 id=
"html"><code class=
"language-plaintext highlighter-rouge"><html
></code></h4>
689 <div class=
"bs-callout bs-callout-info">Optional: Must not be provided if the BBCode is being processed a PHP class (
<code class=
"language-plaintext highlighter-rouge"><classname
></code>).
</div>
691 <p>The contents of this tag are copied into the opening tag of the bbcode.
692 <code class=
"language-plaintext highlighter-rouge">%s
</code> is replaced by the attribute value.
</p>
694 <h4 id=
"validationpattern"><code class=
"language-plaintext highlighter-rouge"><validationpattern
></code></h4>
696 <p><span class=
"label label-info">Optional
</span></p>
698 <p>Defines a regular expression that is used to validate the value of the attribute.
</p>
700 <h4 id=
"required"><code class=
"language-plaintext highlighter-rouge"><required
></code></h4>
702 <p><span class=
"label label-info">Optional
</span></p>
704 <p>Specifies whether this attribute must be provided.
</p>
706 <h4 id=
"usetext"><code class=
"language-plaintext highlighter-rouge"><usetext
></code></h4>
708 <p><span class=
"label label-info">Optional
</span></p>
709 <div class=
"bs-callout bs-callout-info">Should only be set to
<code class=
"language-plaintext highlighter-rouge">1</code> for the attribute with name
<code class=
"language-plaintext highlighter-rouge">0</code>.
</div>
711 <p>Specifies whether the text content of the BBCode should become this attribute’s value.
</p>
713 <h2 id=
"example">Example
</h2>
715 <div class=
"language-plaintext highlighter-rouge"><div class=
"highlight"><pre class=
"highlight"><code><?xml
version=
"1.0" encoding=
"UTF-8"?
>
716 <data
xmlns=
"http://www.woltlab.com" xmlns:
xsi=
"http://www.w3.org/2001/XMLSchema-instance" xsi:
schemaLocation=
"http://www.woltlab.com http://www.woltlab.com/XSD/2019/bbcode.xsd">
718 <bbcode
name=
"foo">
719 <classname
>wcf\system\bbcode\FooBBCode
</classname
>
721 <attribute
name=
"0">
722 <validationpattern
>^\d+$
</validationpattern
>
723 <required
>1</required
>
728 <bbcode
name=
"example">
729 <htmlopen
>div
</htmlopen
>
730 <htmlclose
>div
</htmlclose
>
731 <isBlockElement
>1</isBlockElement
>
732 <wysiwygicon
>fa-bath
</wysiwygicon
>
733 <buttonlabel
>wcf.editor.button.example
</buttonlabel
>
737 </code></pre></div></div>
752 <div class=
"footerBox">
753 <div class=
"container">
754 <div class=
"footerBoxLeft">
756 <a target=
"_blank" href=
"https://github.com/woltlab/woltlab.github.io/blob/master/pages/package/pip/package_pip_bbcode.md" class=
"btn btn-default githubEditButton no_icon" role=
"button"><i class=
"fa fa-github fa-lg"></i> Edit on GitHub
</a>
757 <p>Site last generated: Mar
5,
2021</p>
759 <div class=
"footerBoxRight">
760 <a class=
"no_icon" href=
"https://www.woltlab.com"><img src=
"https://docs.woltlab.com/5.3/images/woltlab-black.png" srcset=
"https://docs.woltlab.com/5.3/images/woltlab-black@2x.png 2x" height=
"40" width=
"204" alt=
""></a>
765 <div class=
"pageFooter">
766 <div class=
"container">
767 © 2001 ‐
2021 <a class=
"no_icon" href=
"https://www.woltlab.com">WoltLab GmbH
</a>. All rights reserved. |
<a class=
"no_icon" href=
"https://www.woltlab.com/legal-notice/">Legal Notice
</a> |
<a class=
"no_icon" href=
"https://www.woltlab.com/privacy-policy/">Privacy Policy
</a>