For this field, the minimum and maximum refer to the minimum and maximum rating an object can get.
When the field is shown, there will be `maximum() - minimum() + 1` icons be shown with additional CSS classes that can be set and gotten via `defaultCssClasses(array $cssClasses)` and `getDefaultCssClasses()`.
If a rating values is set, the first `getValue()` icons will instead use the classes that can be set and gotten via `activeCssClasses(array $cssClasses)` and `getActiveCssClasses()`.
-By default, the only default class is `fa-star-o` and the active classes are `fa-star` and `orange`.
+By default, the only default class is `star-o` and the active classes are `star` and `orange`.
### `SelectFormField`
Here, we use `PersonRuntimeCache::getObject()` again and check if the return value is `null`, which is the case for non-existing people.
1. `lookup($searchString)` is used when setting up an internal link and when searching for the linked person.
This method simply searches the first and last name of the people and returns an array with the person data.
- While the `link`, the `objectID`, and the `title` element are self-explanatory, the `image` element can either contain an HTML `<img>` tag, which is displayed next to the search result (WoltLab Suite uses an image tag for users showing their avatar, for example), or a FontAwesome icon class (starting with `fa-`).
+ While the `link`, the `objectID`, and the `title` element are self-explanatory, the `image` element can either contain an HTML `<img>` tag, which is displayed next to the search result (WoltLab Suite uses an image tag for users showing their avatar, for example), or a FontAwesome icon class.
Additionally, the class also implements [IOnlineLocationPageHandler](https://github.com/WoltLab/WCF/blob/master/wcfsetup/install/files/lib/system/page/handler/IOnlineLocationPageHandler.class.php) which is used to determine the online location of users.
To ensure upwards-compatibility if the `IOnlineLocationPageHandler` interface changes, the [TOnlineLocationPageHandler](https://github.com/WoltLab/WCF/blob/master/wcfsetup/install/files/lib/system/page/handler/TOnlineLocationPageHandler.class.php) trait is used.
<htmlopen>div</htmlopen>
<htmlclose>div</htmlclose>
<isBlockElement>1</isBlockElement>
- <wysiwygicon>fa-bath</wysiwygicon>
+ <wysiwygicon>bath</wysiwygicon>
<buttonlabel>wcf.editor.button.example</buttonlabel>
</bbcode>
</import>
-</data>
\ No newline at end of file
+</data>
<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/userMenu.xsd">
<import>
<usermenuitem name="wcf.user.menu.foo">
- <iconclassname>fa-home</iconclassname>
+ <iconclassname>home</iconclassname>
</usermenuitem>
<usermenuitem name="wcf.user.menu.foo.bar">
<options>module_foo_bar</options>
</usermenuitem>
</import>
-</data>
\ No newline at end of file
+</data>
<controller>wcf\acp\form\PersonAddForm</controller>
<parent>wcf.acp.menu.link.person.list</parent>
<permissions>admin.content.canManagePeople</permissions>
- <icon>fa-plus</icon>
+ <icon>plus</icon>
</acpmenuitem>
</import>
</data>
<nav class="contentHeaderNavigation">
<ul>
- <li><a href="{link controller='PersonList'}{/link}" class="button"><span class="icon icon16 fa-list"></span> <span>{lang}wcf.acp.menu.link.person.list{/lang}</span></a></li>
+ <li><a href="{link controller='PersonList'}{/link}" class="button">{icon name='list'} <span>{lang}wcf.acp.menu.link.person.list{/lang}</span></a></li>
{event name='contentHeaderNavigation'}
</ul>
<nav class="contentHeaderNavigation">
<ul>
- <li><a href="{link controller='PersonAdd'}{/link}" class="button"><span class="icon icon16 fa-plus"></span> <span>{lang}wcf.acp.menu.link.person.add{/lang}</span></a></li>
+ <li><a href="{link controller='PersonAdd'}{/link}" class="button">{icon name='plus'} <span>{lang}wcf.acp.menu.link.person.add{/lang}</span></a></li>
{event name='contentHeaderNavigation'}
</ul>
{foreach from=$objects item=person}
<tr class="jsObjectActionObject" data-object-id="{@$person->getObjectID()}">
<td class="columnIcon">
- <a href="{link controller='PersonEdit' object=$person}{/link}" title="{lang}wcf.global.button.edit{/lang}" class="jsTooltip"><span class="icon icon16 fa-pencil"></span></a>
+ <a href="{link controller='PersonEdit' object=$person}{/link}" title="{lang}wcf.global.button.edit{/lang}" class="jsTooltip">{icon name='pencil'}</a>
{objectAction action="delete" objectTitle=$person->getTitle()}
{event name='rowButtons'}
<nav class="contentFooterNavigation">
<ul>
- <li><a href="{link controller='PersonAdd'}{/link}" class="button"><span class="icon icon16 fa-plus"></span> <span>{lang}wcf.acp.menu.link.person.add{/lang}</span></a></li>
+ <li><a href="{link controller='PersonAdd'}{/link}" class="button">{icon name='plus'} <span>{lang}wcf.acp.menu.link.person.add{/lang}</span></a></li>
{event name='contentFooterNavigation'}
</ul>
{foreach from=$objects item=person}
<li>
<div class="box48">
- <span class="icon icon48 fa-user"></span>
+ {icon name='user' size=48}
<div class="details personInformation">
<div class="containerHeadline">
<controller>wcf\acp\form\PersonAddForm</controller>
<parent>wcf.acp.menu.link.person.list</parent>
<permissions>admin.content.canManagePeople</permissions>
- <icon>fa-plus</icon>
+ <icon>plus</icon>
</acpmenuitem>
</import>
</data>
<nav class="contentHeaderNavigation">
<ul>
- <li><a href="{link controller='PersonList'}{/link}" class="button"><span class="icon icon16 fa-list"></span> <span>{lang}wcf.acp.menu.link.person.list{/lang}</span></a></li>
+ <li><a href="{link controller='PersonList'}{/link}" class="button">{icon name='list'} <span>{lang}wcf.acp.menu.link.person.list{/lang}</span></a></li>
{event name='contentHeaderNavigation'}
</ul>
<nav class="contentHeaderNavigation">
<ul>
- <li><a href="{link controller='PersonAdd'}{/link}" class="button"><span class="icon icon16 fa-plus"></span> <span>{lang}wcf.acp.menu.link.person.add{/lang}</span></a></li>
+ <li><a href="{link controller='PersonAdd'}{/link}" class="button">{icon name='plus'} <span>{lang}wcf.acp.menu.link.person.add{/lang}</span></a></li>
{event name='contentHeaderNavigation'}
</ul>
{foreach from=$objects item=person}
<tr class="jsObjectActionObject" data-object-id="{@$person->getObjectID()}">
<td class="columnIcon">
- <a href="{link controller='PersonEdit' object=$person}{/link}" title="{lang}wcf.global.button.edit{/lang}" class="jsTooltip"><span class="icon icon16 fa-pencil"></span></a>
+ <a href="{link controller='PersonEdit' object=$person}{/link}" title="{lang}wcf.global.button.edit{/lang}" class="jsTooltip">{icon name='pencil'}</a>
{objectAction action="delete" objectTitle=$person->getTitle()}
{event name='rowButtons'}
<nav class="contentFooterNavigation">
<ul>
- <li><a href="{link controller='PersonAdd'}{/link}" class="button"><span class="icon icon16 fa-plus"></span> <span>{lang}wcf.acp.menu.link.person.add{/lang}</span></a></li>
+ <li><a href="{link controller='PersonAdd'}{/link}" class="button">{icon name='plus'} <span>{lang}wcf.acp.menu.link.person.add{/lang}</span></a></li>
{event name='contentFooterNavigation'}
</ul>
$results = [];
foreach ($personList as $person) {
$results[] = [
- 'image' => 'fa-user',
+ 'image' => 'user',
'link' => $person->getLink(),
'objectID' => $person->personID,
'title' => $person->getTitle(),
{foreach from=$objects item=person}
<li>
<div class="box48">
- <span class="icon icon48 fa-user"></span>
+ {icon name='user' size=48}
<div class="details personInformation">
<div class="containerHeadline">
<controller>wcf\acp\form\PersonAddForm</controller>
<parent>wcf.acp.menu.link.person.list</parent>
<permissions>admin.content.canManagePeople</permissions>
- <icon>fa-plus</icon>
+ <icon>plus</icon>
</acpmenuitem>
</import>
</data>
<nav class="contentHeaderNavigation">
<ul>
- <li><a href="{link controller='PersonList'}{/link}" class="button"><span class="icon icon16 fa-list"></span> <span>{lang}wcf.acp.menu.link.person.list{/lang}</span></a></li>
+ <li><a href="{link controller='PersonList'}{/link}" class="button">{icon name='list'} <span>{lang}wcf.acp.menu.link.person.list{/lang}</span></a></li>
{event name='contentHeaderNavigation'}
</ul>
<nav class="contentHeaderNavigation">
<ul>
- <li><a href="{link controller='PersonAdd'}{/link}" class="button"><span class="icon icon16 fa-plus"></span> <span>{lang}wcf.acp.menu.link.person.add{/lang}</span></a></li>
+ <li><a href="{link controller='PersonAdd'}{/link}" class="button">{icon name='plus'} <span>{lang}wcf.acp.menu.link.person.add{/lang}</span></a></li>
{event name='contentHeaderNavigation'}
</ul>
{foreach from=$objects item=person}
<tr class="jsObjectActionObject" data-object-id="{@$person->getObjectID()}">
<td class="columnIcon">
- <a href="{link controller='PersonEdit' object=$person}{/link}" title="{lang}wcf.global.button.edit{/lang}" class="jsTooltip"><span class="icon icon16 fa-pencil"></span></a>
+ <a href="{link controller='PersonEdit' object=$person}{/link}" title="{lang}wcf.global.button.edit{/lang}" class="jsTooltip">{icon name='pencil'}</a>
{objectAction action="delete" objectTitle=$person->getTitle()}
{event name='rowButtons'}
<nav class="contentFooterNavigation">
<ul>
- <li><a href="{link controller='PersonAdd'}{/link}" class="button"><span class="icon icon16 fa-plus"></span> <span>{lang}wcf.acp.menu.link.person.add{/lang}</span></a></li>
+ <li><a href="{link controller='PersonAdd'}{/link}" class="button">{icon name='plus'} <span>{lang}wcf.acp.menu.link.person.add{/lang}</span></a></li>
{event name='contentFooterNavigation'}
</ul>
$results = [];
foreach ($personList as $person) {
$results[] = [
- 'image' => 'fa-user',
+ 'image' => 'user',
'link' => $person->getLink(),
'objectID' => $person->personID,
'title' => $person->getTitle(),
<ul class="sidebarItemList">
{foreach from=$boxPersonList item=boxPerson}
<li class="box24">
- <span class="icon icon24 fa-user"></span>
-
+ {icon name='user' size=24}
+
<div class="sidebarItemTitle">
<h3>{anchor object=$boxPerson}</h3>
{capture assign='__boxPersonDescription'}{lang __optional=true}wcf.person.boxList.description.{$boxSortField}{/lang}{/capture}
{foreach from=$objects item=person}
<li>
<div class="box48">
- <span class="icon icon48 fa-user"></span>
+ {icon name='user' size=48}
<div class="details personInformation">
<div class="containerHeadline">
<controller>wcf\acp\form\PersonAddForm</controller>
<parent>wcf.acp.menu.link.person.list</parent>
<permissions>admin.content.canManagePeople</permissions>
- <icon>fa-plus</icon>
+ <icon>plus</icon>
</acpmenuitem>
</import>
</data>
<nav class="contentHeaderNavigation">
<ul>
- <li><a href="{link controller='PersonList'}{/link}" class="button"><span class="icon icon16 fa-list"></span> <span>{lang}wcf.acp.menu.link.person.list{/lang}</span></a></li>
+ <li><a href="{link controller='PersonList'}{/link}" class="button">{icon name='list'} <span>{lang}wcf.acp.menu.link.person.list{/lang}</span></a></li>
{event name='contentHeaderNavigation'}
</ul>
<nav class="contentHeaderNavigation">
<ul>
- <li><a href="{link controller='PersonAdd'}{/link}" class="button"><span class="icon icon16 fa-plus"></span> <span>{lang}wcf.acp.menu.link.person.add{/lang}</span></a></li>
+ <li><a href="{link controller='PersonAdd'}{/link}" class="button">{icon name='plus'} <span>{lang}wcf.acp.menu.link.person.add{/lang}</span></a></li>
{event name='contentHeaderNavigation'}
</ul>
{foreach from=$objects item=person}
<tr class="jsObjectActionObject" data-object-id="{@$person->getObjectID()}">
<td class="columnIcon">
- <a href="{link controller='PersonEdit' object=$person}{/link}" title="{lang}wcf.global.button.edit{/lang}" class="jsTooltip"><span class="icon icon16 fa-pencil"></span></a>
+ <a href="{link controller='PersonEdit' object=$person}{/link}" title="{lang}wcf.global.button.edit{/lang}" class="jsTooltip">{icon name='pencil'}</a>
{objectAction action="delete" objectTitle=$person->getTitle()}
{event name='rowButtons'}
<nav class="contentFooterNavigation">
<ul>
- <li><a href="{link controller='PersonAdd'}{/link}" class="button"><span class="icon icon16 fa-plus"></span> <span>{lang}wcf.acp.menu.link.person.add{/lang}</span></a></li>
+ <li><a href="{link controller='PersonAdd'}{/link}" class="button">{icon name='plus'} <span>{lang}wcf.acp.menu.link.person.add{/lang}</span></a></li>
{event name='contentFooterNavigation'}
</ul>
$results = [];
foreach ($personList as $person) {
$results[] = [
- 'image' => 'fa-user',
+ 'image' => 'user',
'link' => $person->getLink(),
'objectID' => $person->personID,
'title' => $person->getTitle(),
<ul class="sidebarItemList">
{foreach from=$boxPersonList item=boxPerson}
<li class="box24">
- <span class="icon icon24 fa-user"></span>
-
+ {icon name='user' size=24}
+
<div class="sidebarItemTitle">
<h3>{anchor object=$boxPerson}</h3>
{capture assign='__boxPersonDescription'}{lang __optional=true}wcf.person.boxList.description.{$boxSortField}{/lang}{/capture}
<ul class="buttonGroup">
<li>
<a href="#" class="button" id="personInformationAddButton">
- <span class="icon icon16 fa-plus"></span>
+ {icon name='plus'}
<span>{lang}wcf.person.information.add{/lang}</span>
</a>
</li>
{if $information->canEdit()}
<li class="jsOnly">
<a href="#" title="{lang}wcf.global.button.edit{/lang}" class="jsEditInformation jsTooltip">
- <span class="icon icon16 fa-pencil"></span>
+ {icon name='pencil'}
<span class="invisible">{lang}wcf.global.button.edit{/lang}</span>
</a>
</li>
{if $information->canDelete()}
<li class="jsOnly">
<a href="#" title="{lang}wcf.global.button.delete{/lang}" class="jsObjectAction jsTooltip" data-object-action="delete" data-confirm-message="{lang}wcf.person.information.delete.confirmMessage{/lang}">
- <span class="icon icon16 fa-times"></span>
+ {icon name='times'}
<span class="invisible">{lang}wcf.global.button.edit{/lang}</span>
</a>
</li>
{foreach from=$objects item=person}
<li>
<div class="box48">
- <span class="icon icon48 fa-user"></span>
+ {icon name='user' size=48}
<div class="details personInformation">
<div class="containerHeadline">
<controller>wcf\acp\form\PersonAddForm</controller>
<parent>wcf.acp.menu.link.person.list</parent>
<permissions>admin.content.canManagePeople</permissions>
- <icon>fa-plus</icon>
+ <icon>plus</icon>
</acpmenuitem>
</import>
</data>
<nav class="contentHeaderNavigation">
<ul>
- <li><a href="{link controller='PersonList'}{/link}" class="button"><span class="icon icon16 fa-list"></span> <span>{lang}wcf.acp.menu.link.person.list{/lang}</span></a></li>
+ <li><a href="{link controller='PersonList'}{/link}" class="button">{icon name='list'} <span>{lang}wcf.acp.menu.link.person.list{/lang}</span></a></li>
{event name='contentHeaderNavigation'}
</ul>
<nav class="contentHeaderNavigation">
<ul>
- <li><a href="{link controller='PersonAdd'}{/link}" class="button"><span class="icon icon16 fa-plus"></span> <span>{lang}wcf.acp.menu.link.person.add{/lang}</span></a></li>
+ <li><a href="{link controller='PersonAdd'}{/link}" class="button">{icon name='plus'} <span>{lang}wcf.acp.menu.link.person.add{/lang}</span></a></li>
{event name='contentHeaderNavigation'}
</ul>
{foreach from=$objects item=person}
<tr class="jsObjectActionObject" data-object-id="{@$person->getObjectID()}">
<td class="columnIcon">
- <a href="{link controller='PersonEdit' object=$person}{/link}" title="{lang}wcf.global.button.edit{/lang}" class="jsTooltip"><span class="icon icon16 fa-pencil"></span></a>
+ <a href="{link controller='PersonEdit' object=$person}{/link}" title="{lang}wcf.global.button.edit{/lang}" class="jsTooltip">{icon name='pencil'}</a>
{objectAction action="delete" objectTitle=$person->getTitle()}
{event name='rowButtons'}
<nav class="contentFooterNavigation">
<ul>
- <li><a href="{link controller='PersonAdd'}{/link}" class="button"><span class="icon icon16 fa-plus"></span> <span>{lang}wcf.acp.menu.link.person.add{/lang}</span></a></li>
+ <li><a href="{link controller='PersonAdd'}{/link}" class="button">{icon name='plus'} <span>{lang}wcf.acp.menu.link.person.add{/lang}</span></a></li>
{event name='contentFooterNavigation'}
</ul>
$results = [];
foreach ($personList as $person) {
$results[] = [
- 'image' => 'fa-user',
+ 'image' => 'user',
'link' => $person->getLink(),
'objectID' => $person->personID,
'title' => $person->getTitle(),
<ul class="sidebarItemList">
{foreach from=$boxPersonList item=boxPerson}
<li class="box24">
- <span class="icon icon24 fa-user"></span>
-
+ {icon name='user' size=24}
+
<div class="sidebarItemTitle">
<h3>{anchor object=$boxPerson}</h3>
{capture assign='__boxPersonDescription'}{lang __optional=true}wcf.person.boxList.description.{$boxSortField}{/lang}{/capture}
<ul class="buttonGroup">
<li>
<a href="#" class="button" id="personInformationAddButton">
- <span class="icon icon16 fa-plus"></span>
+ {icon name='plus'}
<span>{lang}wcf.person.information.add{/lang}</span>
</a>
</li>
{if $information->canEdit()}
<li class="jsOnly">
<a href="#" title="{lang}wcf.global.button.edit{/lang}" class="jsEditInformation jsTooltip">
- <span class="icon icon16 fa-pencil"></span>
+ {icon name='pencil'}
<span class="invisible">{lang}wcf.global.button.edit{/lang}</span>
</a>
</li>
{if $information->canDelete()}
<li class="jsOnly">
<a href="#" title="{lang}wcf.global.button.delete{/lang}" class="jsObjectAction jsTooltip" data-object-action="delete" data-confirm-message="{lang}wcf.person.information.delete.confirmMessage{/lang}">
- <span class="icon icon16 fa-times"></span>
+ {icon name='times'}
<span class="invisible">{lang}wcf.global.button.edit{/lang}</span>
</a>
</li>
{foreach from=$objects item=person}
<li>
<div class="box48">
- <span class="icon icon48 fa-user"></span>
+ {icon name='user' size=48}
<div class="details personInformation">
<div class="containerHeadline">