declare(strict_types=1);
namespace wcf\data\acp\menu\item;
use wcf\data\DatabaseObjectEditor;
+use wcf\data\IEditableCachedObject;
+use wcf\system\cache\builder\ACPMenuCacheBuilder;
/**
* Provides functions to edit ACP menu items.
* @method ACPMenuItem getDecoratedObject()
* @mixin ACPMenuItem
*/
-class ACPMenuItemEditor extends DatabaseObjectEditor {
+class ACPMenuItemEditor extends DatabaseObjectEditor implements IEditableCachedObject {
/**
* @inheritDoc
*/
protected static $baseClass = ACPMenuItem::class;
+
+ /**
+ * @inheritDoc
+ */
+ public static function resetCache() {
+ ACPMenuCacheBuilder::getInstance()->reset();
+ }
}
use wcf\system\devtools\pip\IGuiPackageInstallationPlugin;
use wcf\system\form\builder\container\IFormContainer;
use wcf\system\form\builder\field\dependency\ValueFormFieldDependency;
+use wcf\system\form\builder\field\IconFormField;
use wcf\system\form\builder\field\SingleSelectionFormField;
use wcf\system\form\builder\field\TextFormField;
use wcf\system\form\builder\field\validation\FormFieldValidationError;
use wcf\system\form\builder\field\validation\FormFieldValidatorUtil;
use wcf\system\form\builder\field\validation\RegularExpressionFormFieldValidator;
use wcf\system\form\builder\IFormDocument;
-use wcf\system\style\StyleHandler;
/**
* Installs, updates and deletes ACP menu items.
return $value === 0 || $value == 3;
}));
- // TODO: if an `IconFormField` class should be added, use that class instead
- $dataContainer->appendChild(SingleSelectionFormField::create('icon')
+ $dataContainer->appendChild(IconFormField::create('icon')
->label('wcf.acp.pip.acpMenu.icon')
->description('wcf.acp.pip.acpMenu.icon.description')
- ->filterable()
->required()
- ->options(function(): array {
- $icons = array_map(function(string $icon): string {
- return 'fa-' . $icon;
- }, StyleHandler::getInstance()->getIcons());
-
- return array_combine($icons, $icons);
- })
->addDependency(
ValueFormFieldDependency::create('parentMenuItem')
->field($parentMenuItemFormField)
use wcf\system\form\builder\container\IFormContainer;
use wcf\system\form\builder\field\ClassNameFormField;
use wcf\system\form\builder\field\dependency\ValueFormFieldDependency;
+use wcf\system\form\builder\field\IconFormField;
use wcf\system\form\builder\field\SingleSelectionFormField;
use wcf\system\form\builder\field\TextFormField;
use wcf\system\form\builder\field\validation\FormFieldValidatorUtil;
use wcf\system\form\builder\IFormDocument;
use wcf\system\menu\user\IUserMenuItemProvider;
-use wcf\system\style\StyleHandler;
/**
* Installs, updates and deletes user menu items.
/** @var SingleSelectionFormField $parentMenuItemFormField */
$parentMenuItemFormField = $form->getNodeById('parentMenuItem');
- // TODO: if an `IconFormField` class should be added, use that class instead
- $dataContainer->appendChild(SingleSelectionFormField::create('iconClassName')
+ $dataContainer->appendChild(IconFormField::create('iconClassName')
->objectProperty('iconclassname')
->label('wcf.acp.pip.userMenu.iconClassName')
->description('wcf.acp.pip.userMenu.iconClassName.description')
- ->filterable()
->required()
- ->options(function(): array {
- $icons = array_map(function(string $icon): string {
- return 'fa-' . $icon;
- }, StyleHandler::getInstance()->getIcons());
-
- return array_combine($icons, $icons);
- })
->addDependency(
// only first level menu items support icons
ValueFormFieldDependency::create('parentMenuItem')