----
-title: Creating a simple package
-sidebar: sidebar
-permalink: getting-started_quick-start.html
-folder: getting-started
----
+# Creating a simple package
## Setup and Requirements
----
-title: WoltLab Suite 5.3 Documentation
-sidebar: sidebar
-permalink: index.html
-toc: false
----
+# WoltLab Suite 5.3 Documentation
## Introduction
----
-title: Code Snippets - JavaScript API
-sidebar: sidebar
-permalink: javascript_code-snippets.html
-folder: javascript
----
+# Code Snippets - JavaScript API
This is a list of code snippets that do not fit into any of the other articles
and merely describe how to achieve something very specific, rather than explaining
----
-title: General JavaScript Usage
-sidebar: sidebar
-permalink: javascript_general-usage.html
-folder: javascript
----
+# General JavaScript Usage
## The History of the Legacy API
----
-title: JavaScript Helper Functions
-sidebar: sidebar
-permalink: javascript_helper-functions.html
-folder: javascript
----
+# JavaScript Helper Functions
## Introduction
----
-title: Legacy JavaScript API
-sidebar: sidebar
-permalink: javascript_legacy-api.html
-folder: javascript
----
+# Legacy JavaScript API
## Introduction
----
-title: Ajax Requests - JavaScript API
-sidebar: sidebar
-permalink: javascript_new-api_ajax.html
-folder: javascript
----
+# Ajax Requests - JavaScript API
## Ajax inside Modules
----
-title: Browser and Screen Sizes - JavaScript API
-sidebar: sidebar
-permalink: javascript_new-api_browser.html
-folder: javascript
----
+# Browser and Screen Sizes - JavaScript API
## `Ui/Screen`
----
-title: Core Modules and Functions - JavaScript API
-sidebar: sidebar
-permalink: javascript_new-api_core.html
-folder: javascript
----
+# Core Modules and Functions - JavaScript API
A brief overview of common methods that may be useful when writing any module.
----
-title: Data Structures - JavaScript API
-sidebar: sidebar
-permalink: javascript_new-api_data-structures.html
-folder: javascript
----
+# Data Structures - JavaScript API
## Introduction
----
-title: Dialogs - JavaScript API
-sidebar: sidebar
-permalink: javascript_new-api_dialogs.html
-folder: javascript
----
+# Dialogs - JavaScript API
## Introduction
----
-title: Working with the DOM - JavaScript API
-sidebar: sidebar
-permalink: javascript_new-api_dom.html
-folder: javascript
----
+# Working with the DOM - JavaScript API
## Helper Functions
----
-title: Event Handling - JavaScript API
-sidebar: sidebar
-permalink: javascript_new-api_events.html
-folder: javascript
----
+# Event Handling - JavaScript API
## `EventKey`
----
-title: User Interface - JavaScript API
-sidebar: sidebar
-permalink: javascript_new-api_ui.html
-folder: javascript
----
+# User Interface - JavaScript API
## `Ui/Alignment`
----
-title: Writing a Module - JavaScript API
-sidebar: sidebar
-permalink: javascript_new-api_writing-a-module.html
-folder: javascript
----
+# Writing a Module - JavaScript API
## Introduction
----
-title: WCF 2.1.x - CSS
-sidebar: sidebar
-permalink: migration_wcf-21_css.html
-folder: migration/wcf-21
----
+# WCF 2.1.x - CSS
The LESS compiler has been in use since WoltLab Community Framework 2.0, but was replaced with a SCSS compiler in WoltLab Suite 3.0. This change was motivated by SCSS becoming the de facto standard for CSS pre-processing and some really annoying shortcomings in the old LESS compiler.
----
-title: WCF 2.1.x - Package Components
-sidebar: sidebar
-permalink: migration_wcf-21_package.html
-folder: migration/wcf-21
----
+# WCF 2.1.x - Package Components
## package.xml
----
-title: WCF 2.1.x - PHP
-sidebar: sidebar
-permalink: migration_wcf-21_php.html
-folder: migration/wcf-21
----
+# WCF 2.1.x - PHP
## Message Processing
----
-title: WCF 2.1.x - Templates
-sidebar: sidebar
-permalink: migration_wcf-21_templates.html
-folder: migration/wcf-21
----
+# WCF 2.1.x - Templates
## Page Layout
----
-title: Migrating from WSC 3.0 - CSS
-sidebar: sidebar
-permalink: migration_wsc-30_css.html
-folder: migration/wsc-30
----
+# Migrating from WSC 3.0 - CSS
## New Style Variables
----
-title: Migrating from WSC 3.0 - JavaScript
-sidebar: sidebar
-permalink: migration_wsc-30_javascript.html
-folder: migration/wsc-30
----
+# Migrating from WSC 3.0 - JavaScript
## Accelerated Guest View / Tiny Builds
----
-title: Migrating from WSC 3.0 - Package Components
-sidebar: sidebar
-permalink: migration_wsc-30_package.html
-folder: migration/wsc-30
----
+# Migrating from WSC 3.0 - Package Components
## Cronjob Scheduler uses Server Timezone
----
-title: Migrating from WSC 3.0 - PHP
-sidebar: sidebar
-permalink: migration_wsc-30_php.html
-folder: migration/wsc-30
----
+# Migrating from WSC 3.0 - PHP
## Approval-System for Comments
----
-title: Migrating from WSC 3.0 - Templates
-sidebar: sidebar
-permalink: migration_wsc-30_templates.html
-folder: migration/wsc-30
----
+# Migrating from WSC 3.0 - Templates
## Comment-System Overhaul
----
-title: Migrating from WSC 3.1 - PHP
-sidebar: sidebar
-permalink: migration_wsc-31_php.html
-folder: migration/wsc-31
----
+# Migrating from WSC 3.1 - PHP
## Form Builder
----
-title: Migrating from WSC 5.2 - Third Party Libraries
-sidebar: sidebar
-permalink: migration_wsc-52_libraries.html
-folder: migration/wsc-52
----
+# Migrating from WSC 5.2 - Third Party Libraries
## SCSS Compiler
----
-title: Migrating from WSC 5.2 - PHP
-sidebar: sidebar
-permalink: migration_wsc-52_php.html
-folder: migration/wsc-52
----
+# Migrating from WSC 5.2 - PHP
## Comments
----
-title: Migrating from WSC 5.2 - Templates and Languages
-sidebar: sidebar
-permalink: migration_wsc-52_templates.html
-folder: migration/wsc-52
----
+# Migrating from WSC 5.2 - Templates and Languages
## `{jslang}`
----
-title: Migrating from WSC 5.3 - JavaScript
-sidebar: sidebar
-permalink: migration_wsc-53_javascript.html
-folder: migration/wsc-53
----
+# Migrating from WSC 5.3 - JavaScript
## `WCF_CLICK_EVENT`
----
-title: Migrating from WSC 5.3 - Third Party Libraries
-sidebar: sidebar
-permalink: migration_wsc-53_libraries.html
-folder: migration/wsc-53
----
+# Migrating from WSC 5.3 - Third Party Libraries
## Guzzle
----
-title: Migrating from WSC 5.3 - PHP
-sidebar: sidebar
-permalink: migration_wsc-53_php.html
-folder: migration/wsc-53
----
+# Migrating from WSC 5.3 - PHP
## Minimum requirements
----
-title: Migrating from WSC 5.3 - Session Handling and Authentication
-sidebar: sidebar
-permalink: migration_wsc-53_session.html
-folder: migration/wsc-53
----
+# Migrating from WSC 5.3 - Session Handling and Authentication
WoltLab Suite 5.4 includes a completely refactored session handling.
As long as you only interact with sessions via `WCF::getSession()`, especially when you perform read-only accesses, you should not notice any breaking changes.
----
-title: Migrating from WSC 5.3 - Templates and Languages
-sidebar: sidebar
-permalink: migration_wsc-53_templates.html
-folder: migration/wsc-523
----
+# Migrating from WSC 5.3 - Templates and Languages
## `{csrfToken}`
----
-title: Database PHP API
-permalink: package_database-php-api.html
-folder: package
-parent: package_pip
----
+# Database PHP API
{% include callout.html content="Available since WoltLab Suite 5.2." type="info" %}
----
-title: package.xml
-sidebar: sidebar
-permalink: package_package-xml.html
-folder: package
----
+# package.xml
The `package.xml` is the core component of every package.
It provides the meta data (e.g. package name, description, author) and the instruction set for a new installation and/or updating from a previous version.
----
-title: Package Installation Plugins
-sidebar: sidebar
-permalink: package_pip.html
-folder: package
----
+# Package Installation Plugins
Package Installation Plugins (PIPs) are interfaces to deploy and edit content as well as components.
----
-title: Caches
-sidebar: sidebar
-permalink: php_api_caches.html
-folder: php/api
----
+# Caches
WoltLab Suite offers two distinct types of caches:
----
-title: Comments
-sidebar: sidebar
-permalink: php_api_comments.html
-folder: php/api
----
+# Comments
## User Group Options
----
-title: Cronjobs
-sidebar: sidebar
-permalink: php_api_cronjobs.html
-folder: php/api
----
+# Cronjobs
Cronjobs offer an easy way to execute actions periodically, like cleaning up the database.
----
-title: Events
-sidebar: sidebar
-permalink: php_api_events.html
-folder: php/api
----
+# Events
WoltLab Suite's event system allows manipulation of program flows and data without having to change any of the original source code.
At many locations throughout the PHP code of WoltLab Suite Core and mainly through inheritance also in the applications and plugins, so called *events* are fired which trigger registered *event listeners* that get access to the object firing the event (or at least the class name if the event has been fired in a static method).
----
-title: Form Builder
-sidebar: sidebar
-permalink: php_api_form_builder.html
-folder: php/api
----
+# Form Builder
{% include callout.html content="Form builder is only available since WoltLab Suite Core 5.2." type="info" %}
----
-title: Package Installation Plugins
-sidebar: sidebar
-permalink: php_api_package_installation_plugins.html
-folder: php/api
----
+# Package Installation Plugins
A package installation plugin (PIP) defines the behavior to handle a specific [instruction](package_package-xml.html#instruction) during package installation, update or uninstallation.
----
-title: Sitemaps
-sidebar: sidebar
-permalink: php_api_sitemaps.html
-folder: php/api
----
+# Sitemaps
{% include callout.html content="This feature is available with WoltLab Suite 3.1 or newer only." type="warning" %}
----
-title: User Activity Points
-sidebar: sidebar
-permalink: php_api_user_activity_points.html
-folder: php/api
----
+# User Activity Points
Users get activity points whenever they create content to award them for their contribution.
Activity points are used to determine the rank of a user and can also be used for user conditions, for example for automatic user group assignments.
----
-title: User Notifications
-sidebar: sidebar
-permalink: php_api_user_notifications.html
-folder: php/api
----
+# User Notifications
WoltLab Suite includes a powerful user notification system that supports notifications directly shown on the website and emails sent immediately or on a daily basis.
----
-title: Apps for WoltLab Suite
-sidebar: sidebar
-permalink: php_apps.html
-folder: php
----
+# Apps for WoltLab Suite
## Introduction
----
-title: Code Style
-sidebar: sidebar
-permalink: php_code-style.html
-folder: php
----
+# Code Style
{% include callout.html content="The following code style conventions are used by us for our own packages. While you do not have to follow every rule, you are encouraged to do so." type="info" %}
----
-title: Database Access
-sidebar: sidebar
-permalink: php_database-access.html
-folder: php
----
+# Database Access
[Database Objects][php_database-objects] provide a convenient and object-oriented approach to work with the database, but there can be use-cases that require raw access including writing methods for model classes. This section assumes that you have either used [prepared statements](https://en.wikipedia.org/wiki/Prepared_statement) before or at least understand how it works.
----
-title: Database Objects
-sidebar: sidebar
-permalink: php_database-objects.html
-folder: php
----
+# Database Objects
WoltLab Suite uses a unified interface to work with database rows using an object based approach instead of using native arrays holding arbitrary data. Each database table is mapped to a model class that is designed to hold a single record from that table and expose methods to work with the stored data, for example providing assistance when working with normalized datasets.
----
-title: Exceptions
-sidebar: sidebar
-permalink: php_exceptions.html
-folder: php
----
+# Exceptions
## SPL Exceptions
----
-title: General Data Protection Regulation (GDPR)
-sidebar: sidebar
-permalink: php_gdpr.html
-folder: php
----
+# General Data Protection Regulation (GDPR)
## Introduction
----
-title: Page Types
-sidebar: sidebar
-permalink: php_pages.html
-folder: php
----
+# Page Types
## AbstractPage
----
-title: Tutorial Series
-sidebar: sidebar
-permalink: tutorial_tutorial-series.html
-folder: tutorial
----
+# Tutorial Series
In this tutorial series, we will code a package that allows administrators to create a registry of people.
In this context, "people" does not refer to users registered on the website but anybody living, dead or fictional.
----
-title: CSS
-sidebar: sidebar
-permalink: view_css.html
-folder: view
----
+# CSS
## SCSS and CSS
----
-title: Languages
-sidebar: sidebar
-permalink: view_languages.html
-folder: view
----
+# Languages
WoltLab Suite offers full i18n support with its integrated language system,
including but not limited to dynamic phrases using template scripting and the