user.xml
XML schema: user.xsd · Linking and validation.
user.xml extends user objects and the backend user panel. Declare package-owned user attributes and present them with categories, settings groups, and inputs.
For new backend extensions, use user/window/categories/category/settings. This uses the same settings renderer as other QUIQQER XML settings areas.
User Attributes And Backend Settings
Create user.xml in the package root. This complete example adds two user attributes and a category for editing their values:
<?xml version="1.0" encoding="UTF-8"?>
<quiqqer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://www.quiqqer.com/docs/schemas/2.x/user.xsd">
<user>
<attributes>
<attribute>vendor.package.reference</attribute>
<attribute>vendor.package.enabled</attribute>
</attributes>
<window>
<categories>
<category name="vendor.package.settings" index="20">
<text>Package Settings</text>
<icon>fa fa-cog</icon>
<settings name="vendor.package.account" index="10">
<title>Account Options</title>
<input conf="vendor.package.reference" type="text">
<text>Reference</text>
<description>Reference used by this package for the user.</description>
</input>
<input conf="vendor.package.enabled" type="checkbox">
<text>Enable package feature</text>
</input>
</settings>
</category>
</categories>
</window>
</user>
</quiqqer>The structure has three levels:
<category>adds an entry to the user panel toolbar.<settings>groups related fields under a title.<input>binds a form field to the user attribute named byconf.
Use stable, package-scoped category names. The index attribute controls the order of categories and settings groups. A category can contain several settings groups, and a settings group can contain several inputs.
Use locale references for labels in a translated package:
<text>
<locale group="vendor/package" var="user.settings.title"/>
</text>The same locale-reference structure works in settings titles and input text or descriptions.
Attribute Values And Saving
In a user panel, conf="vendor.package.reference" identifies a user attribute. It does not refer to a package configuration section. Do not add the <config>/<section>/<conf> declarations from settings.xml to user.xml.
The user panel fills the form from the user's attributes and extra attributes. When leaving a category, it collects form values into the user model. The normal user save operation persists those changes.
Read a package attribute in PHP with:
$reference = $User->getAttribute('vendor.package.reference');To store a sensitive attribute encrypted, declare it with encrypt="1":
<attribute encrypt="1">vendor.package.secret</attribute>Attribute declarations and form bindings must use the same names.
Settings Controls
Use the standard settings elements for text fields, checkboxes, selects, and other controls. The renderer also supports custom controls through data-qui:
<input conf="vendor.package.reference"
type="text"
data-qui="package/vendor/package/bin/controls/UserReference">
<text>Reference</text>
</input>Replace the example module path with an existing control in your package. User panel controls receive the current uid, User, and Panel context.
See Settings XML for the shared UI structure and Controls And Inputs for reusable controls. In this context, field values belong to the user, not package config.
Deprecated Backend Tabs
The older user/window/tab structure is deprecated. Use the categories and settings structure above for new backend user-panel extensions.
Profile Window
user/profile/tab is a separate extension point for the profile window and is still supported. It is distinct from the deprecated backend window/tab format. The profile window reads template-based tabs; the backend settings-category structure described above belongs under user/window.
<profile>
<tab name="vendor_package">
<text>Package Settings</text>
<image>fa fa-user</image>
<template>OPT_DIR/vendor/package/templates/user_profile.html</template>
</tab>
</profile>Place this optional section under <user>. Keep profile tab names unique and use an existing template from your package. Template form field names should match the user attribute names when the UI stores those attributes directly.
XML Example And Schema
The documentation repository contains the complete user.xml example and its user.xsd structural schema. The schema checks the outer structure while allowing extensible settings content. It does not validate JavaScript modules, template paths, locale keys, or runtime permissions.
See XML Schemas for linking the schema in your XML file and validating it locally.
