======== Settings ======== .. sectionauthor:: Carl Schwan Each Nextcloud application can provide both personal and admin settings. For this you will need to create a section implementing `IIconSection`. This section will be used in the setting sidebar to create a new entry. In our case we will create an admin section class in **/lib/Sections/NotesAdmin.php**: .. code-block:: php l = $l; $this->urlGenerator = $urlGenerator; } public function getIcon(): string { return $this->urlGenerator->imagePath('core', 'actions/settings-dark.svg'); } public function getID(): string { return 'notes'; } public function getName(): string { return $this->l->t('Notes tutorial'); } public function getPriority(): int { return 98; } } The next step is to fill the new admin section with am admin setting. For that, we create a new class in */lib/Settings/NotesAdmin.php**. .. code-block:: php config = $config; $this->l = $l; } /** * @return TemplateResponse */ public function getForm() { $parameters = [ 'mySetting' => $this->config->getSystemValue('my_notes_setting', true), ]; return new TemplateResponse('settings', 'settings/admin', $parameters, ''); } public function getSection() { return 'notes'; // Name of the previously created section. } /** * @return int whether the form should be rather on the top or bottom of * the admin section. The forms are arranged in ascending order of the * priority values. It is required to return a value between 0 and 100. * * E.g.: 70 */ public function getPriority() { return 10; } } The last missing part is to register both classes inside **/appinfo/info.xml**. .. code-block:: xml OCA\NotesTutorial\Settings\NotesAdmin OCA\NotesTutorial\Sections\NotesAdmin .. note:: To register personal sections and settings class use `` and `` instead. Additionally since Nextcloud 23, groups can be granted authorization to access individual admin settings (`see admin docs `_). This is a feature that needs to be enabled for each admin setting class. To do so, the setting class needs to implement `IDelegatedSettings` instead of `ISettings` and implement two additional methods. .. TODO ON RELEASE: Update version number above on release .. code-block:: php l->t('Notes Admin Settings'); } public function getAuthorizedAppConfig(): array { return [ // Allow a list of regex that the user can modify with this setting. 'notes' => ['/notes_.*/', '/my_notes_setting/'], ]; } } Additionally, if your setting class needs to fetch data or send data to some admin-only controllers, you will need to mark the methods in the controller as accessible by the setting with attribute. .. note:: The attribute is only available in Nextcloud 27 or later. In older versions, the ``@AuthorizedAdminSetting(settings=OCA\NotesTutorial\Settings\NotesAdmin)`` annotation can be used. .. code-block:: php :emphasize-lines: 8