----
-title: Migrating from WSC 3.1 - Form Builder
-sidebar: sidebar
-permalink: migration_wsc-31_form-builder.html
-folder: migration/wsc-31
-parent: migration_wsc-31_php
----
+# Migrating from WSC 3.1 - Form Builder
## Example: Two Text Form Fields
----
-title: Migrating from WSC 3.1 - Like System
-sidebar: sidebar
-permalink: migration_wsc-31_like.html
-folder: migration/wsc-31
-parent: migration_wsc-31_php
----
+# Migrating from WSC 3.1 - Like System
## Introduction
----
-title: ACL Option Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_acl-option.html
-folder: package/pip
-parent: package_pip
----
+# ACL Option Package Installation Plugin
Add customizable permissions for individual objects.
----
-title: ACP Menu Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_acp-menu.html
-folder: package/pip
-parent: package_pip
----
+# ACP Menu Package Installation Plugin
Registers new ACP menu items.
----
-title: ACP Search Provider Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_acp-search-provider.html
-folder: package/pip
-parent: package_pip
----
+# ACP Search Provider Package Installation Plugin
Registers data provider for the admin panel search.
----
-title: ACP Template Installation Plugin
-sidebar: sidebar
-permalink: package_pip_acp-template.html
-folder: package/pip
-parent: package_pip
----
+# ACP Template Installation Plugin
Add templates for acp pages and forms by providing an archive containing the template files.
----
-title: BBCode Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_bbcode.html
-folder: package/pip
-parent: package_pip
----
+# BBCode Package Installation Plugin
Registers new BBCodes.
----
-title: Box Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_box.html
-folder: package/pip
-parent: package_pip
----
+# Box Package Installation Plugin
Deploy and manage boxes that can be placed anywhere on the site, they come in two flavors: system and content-based.
----
-title: Clipboard Action Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_clipboard_action.html
-folder: package/pip
-parent: package_pip
----
+# Clipboard Action Package Installation Plugin
Registers clipboard actions.
----
-title: Core Object Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_core-object.html
-folder: package/pip
-parent: package_pip
----
+# Core Object Package Installation Plugin
Registers `wcf\system\SingletonFactory` objects to be accessible in templates.
----
-title: Cronjob Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_cronjob.html
-folder: package/pip
-parent: package_pip
----
+# Cronjob Package Installation Plugin
Registers new cronjobs.
The cronjob schedular works similar to the `cron(8)` daemon, which might not available to web applications on regular webspaces.
----
-title: Event Listener Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_event-listener.html
-folder: package/pip
-parent: package_pip
----
+# Event Listener Package Installation Plugin
Registers event listeners.
An explanation of events and event listeners can be found [here](php_api_events.md).
----
-title: File Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_file.html
-folder: package/pip
-parent: package_pip
----
+# File Package Installation Plugin
Adds any type of files with the exception of templates.
----
-title: Language Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_language.html
-folder: package/pip
-parent: package_pip
----
+# Language Package Installation Plugin
Registers new language items.
----
-title: Media Provider Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_media-provider.html
-folder: package/pip
-parent: package_pip
----
+# Media Provider Package Installation Plugin
!!! info "Available since WoltLab Suite 3.1"
----
-title: Menu Item Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_menu-item.html
-folder: package/pip
-parent: package_pip
----
+# Menu Item Package Installation Plugin
Adds menu items to existing menus.
----
-title: Menu Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_menu.html
-folder: package/pip
-parent: package_pip
----
+# Menu Package Installation Plugin
Deploy and manage menus that can be placed anywhere on the site.
----
-title: Object Type Definition Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_object-type-definition.html
-folder: package/pip
-parent: package_pip
----
+# Object Type Definition Package Installation Plugin
Registers an object type definition.
An object type definition is a blueprint for a certain behaviour that is particularized by [objectTypes](package_pip_object-type.md).
----
-title: Object Type Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_object-type.html
-folder: package/pip
-parent: package_pip
----
+# Object Type Package Installation Plugin
Registers an object type.
Read about object types in the [objectTypeDefinition](package_pip_object-type-definition.md) PIP.
----
-title: Option Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_option.html
-folder: package/pip
-parent: package_pip
----
+# Option Package Installation Plugin
Registers new options.
Options allow the administrator to configure the behaviour of installed packages.
----
-title: Page Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_page.html
-folder: package/pip
-parent: package_pip
----
+# Page Package Installation Plugin
Registers page controllers, making them available for selection and configuration, including but not limited to boxes and menus.
----
-title: Package Installation Plugin Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_pip.html
-folder: package/pip
-parent: package_pip
----
+# Package Installation Plugin Package Installation Plugin
Registers new package installation plugins.
----
-title: Script Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_script.html
-folder: package/pip
-parent: package_pip
----
+# Script Package Installation Plugin
Execute arbitrary PHP code during installation, update and uninstallation of the package.
----
-title: Smiley Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_smiley.html
-folder: package/pip
-parent: package_pip
----
+# Smiley Package Installation Plugin
Installs new smileys.
----
-title: SQL Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_sql.html
-folder: package/pip
-parent: package_pip
----
+# SQL Package Installation Plugin
Execute SQL instructions using a MySQL-flavored syntax.
----
-title: Style Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_style.html
-folder: package/pip
-parent: package_pip
----
+# Style Package Installation Plugin
Install styles during package installation.
----
-title: Template Listener Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_template-listener.html
-folder: package/pip
-parent: package_pip
----
+# Template Listener Package Installation Plugin
Registers template listeners.
Template listeners supplement [event listeners](package_pip_event-listener.md), which modify server side behaviour, by adding additional template code to display additional elements.
----
-title: Template Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_template.html
-folder: package/pip
-parent: package_pip
----
+# Template Package Installation Plugin
Add templates for frontend pages and forms by providing an archive containing the template files.
----
-title: User Group Option Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_user-group-option.html
-folder: package/pip
-parent: package_pip
----
+# User Group Option Package Installation Plugin
Registers new user group options (“permissions”).
The behaviour of this package installation plugin closely follows the [option](package_pip_option.md) PIP.
----
-title: User Menu Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_user-menu.html
-folder: package/pip
-parent: package_pip
----
+# User Menu Package Installation Plugin
Registers new user menu items.
----
-title: User Notification Event Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_user-notification-event.html
-folder: package/pip
-parent: package_pip
----
+# User Notification Event Package Installation Plugin
Registers new user notification events.
----
-title: User Option Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_user-option.html
-folder: package/pip
-parent: package_pip
----
+# User Option Package Installation Plugin
Registers new user options (profile fields / user settings).
The behaviour of this package installation plugin closely follows the [option](package_pip_option.md) PIP.
----
-title: User Profile Menu Package Installation Plugin
-sidebar: sidebar
-permalink: package_pip_user-profile-menu.html
-folder: package/pip
-parent: package_pip
----
+# User Profile Menu Package Installation Plugin
Registers new user profile tabs.
----
-title: Persistent Caches
-sidebar: sidebar
-permalink: php_api_caches_persistent-caches.html
-folder: php/api/cache
-parent: php_api_caches
----
+# Persistent Caches
Relational databases are designed around the principle of normalized data that
is organized across clearly separated tables with defined releations between
----
-title: Runtime Caches
-sidebar: sidebar
-permalink: php_api_caches_runtime-caches.html
-folder: php/api/cache
-parent: php_api_caches
----
+# Runtime Caches
Runtime caches store objects created during the runtime of the script and are automatically discarded after the script terminates.
Runtime caches are especially useful when objects are fetched by different APIs, each requiring separate requests.
----
-title: Event List
-sidebar: sidebar
-permalink: php_api_event_list.html
-folder: php
-parent: php_api_events
----
+# Event List
Events whose name is marked with an asterisk are called from a static method and thus do not provide any object, just the class name.
----
-title: Form Node Dependencies
-sidebar: sidebar
-permalink: php_api_form_builder-dependencies.html
-folder: php/api/formBuilder
-parent: php_api_form_builder
----
+# Form Node Dependencies
Form node dependencies allow to make parts of a form dynamically available or unavailable depending on the values of form fields.
Dependencies are always added to the object whose visibility is determined by certain form fields.
----
-title: Form Builder Fields
-sidebar: sidebar
-permalink: php_api_form_builder-form_fields.html
-folder: php/api/formBuilder
-parent: php_api_form_builder
----
+# Form Builder Fields
## Abstract Form Fields
----
-title: Structure of Form Builder
-sidebar: sidebar
-permalink: php_api_form_builder-structure.html
-folder: php/api/formBuilder
-parent: php_api_form_builder
----
+# Structure of Form Builder
Forms built with form builder consist of three major structural elements listed from top to bottom:
----
-title: Form Validation and Form Data
-sidebar: sidebar
-permalink: php_api_form_builder-validation_data.html
-folder: php/api/formBuilder
-parent: php_api_form_builder
----
+# Form Validation and Form Data
## Form Validation
----
-title: Documentation
-sidebar: sidebar
-permalink: php_code-style_documentation.html
-folder: php
-parent: php_code-style
----
+# Documentation
!!! info "The following documentation conventions are used by us for our own packages. While you do not have to follow every rule, you are encouraged to do so."
----
-title: "Tutorial Series Part 1: Base Structure"
-sidebar: sidebar
-permalink: tutorial_tutorial-series_part-1-base-structure.html
-folder: tutorial/tutorial-series
-parent: tutorial_tutorial-series
----
+# Tutorial Series Part 1: Base Structure
In the first part of this tutorial series, we will lay out what the basic version of package should be able to do and how to implement these functions.
----
-title: "Part 2: Event Listeners and Template Listeners"
-sidebar: sidebar
-permalink: tutorial_tutorial-series_part-2-event-listeners-and-template-listeners.html
-folder: tutorial/tutorial-series
-parent: tutorial_tutorial-series
----
+# Part 2: Event Listeners and Template Listeners
In the [first part](tutorial_tutorial-series_part-1-base-structure.md) of this tutorial series, we have created the base structure of our people management package.
In further parts, we will use the package of the first part as a basis to directly add new features.
----
-title: "Tutorial Series Part 3: Person Page and Comments"
-sidebar: sidebar
-permalink: tutorial_tutorial-series_part-3-person-page-and-comments.html
-folder: tutorial/tutorial-series
-parent: tutorial_tutorial-series
----
+# Tutorial Series Part 3: Person Page and Comments
In this part of our tutorial series, we will add a new front end page to our package that is dedicated to each person and shows their personal details.
To make good use of this new page and introduce a new API of WoltLab Suite, we will add the opportunity for users to comment on the person using WoltLab Suite’s reusable comment functionality.
----
-title: Language Naming Conventions
-sidebar: sidebar
-permalink: view_languages_naming-conventions.html
-folder: view
-parent: view_languages
----
+# Language Naming Conventions
This page contains general rules for naming language items and for their values.
API-specific rules are listed on the relevant API page:
----
-title: Template Plugins
-sidebar: sidebar
-permalink: view_template-plugins.html
-folder: view
-parent: view_templates
----
+# Template Plugins
## <span class="label label-info">5.3+</span> `anchor`
----
-title: Templates
-sidebar: sidebar
-permalink: view_templates.html
-folder: view
-parent: view
----
+# Templates
Templates are responsible for the output a user sees when requesting a page (while the PHP code is responsible for providing the data that will be shown).
Templates are text files with `.tpl` as the file extension.