Profil erweitern
Das Frontend-Users Modul bietet die Möglichkeit das Profil Control (Oberfläche) eines Benutzers zu erweitern.
Über eine frontend-users.xml
können Sie neue Kategorien, Einstellungen und Controls hinzufügen.
frontend-users.xml
Legen Sie in Ihrem Root Verzeichnis eine frontend-users.xml
an.
Beispiel einer frontend-users.xml
<quiqqer>
<frontend-users>
<profile>
<categories>
<category name="user">
<title>
<locale group="quiqqer/frontend-users" var="profile.user.title"/>
</title>
<!-- Meine Daten -->
<settings control="\QUI\FrontendUsers\Controls\Profile\UserData"
name="data"
icon="fa fa-user"
showinprofilebar="1"
>
<title>
<locale group="quiqqer/frontend-users" var="profile.data.title"/>
</title>
</settings>
<!-- Passwort ändern -->
<settings control="\QUI\FrontendUsers\Controls\Profile\ChangePassword"
name="changepassword"
icon="fa fa-key"
showinprofilebar="1"
>
<title>
<locale group="quiqqer/frontend-users" var="profile.changepassword.title"/>
</title>
</settings>
<!-- Avatar -->
<settings name="avatar"
icon="fa fa-camera"
showinprofilebar="1"
>
<title>
<locale group="quiqqer/frontend-users" var="profile.avatar.title"/>
</title>
<template>
OPT_DIR/quiqqer/frontend-users/src/QUI/FrontendUsers/Controls/Profile/avatar.html
</template>
</settings>
<!-- Deleting account -->
<settings control="\QUI\FrontendUsers\Controls\Profile\DeleteAccount"
name="deleteaccount"
icon="fa fa-trash"
showinprofilebar="1"
>
<title>
<locale group="quiqqer/frontend-users" var="profile.deleteaccount.title"/>
</title>
</settings>
</category>
</categories>
</profile>
</frontend-users>
</quiqqer>
-
<quiqqer>
beginnt das XML -
<frontend-users>
beginnt die Angaben für das Frontend-Users Modul -
<profile>
Angaben für das Profil
Angaben einer Kategorie
-
<categories>
Neue kategorien -
<category>
Eine einzelne Kategorie (Eltern Kategorie) - ist ähnlich wie eine Gruppierung -
<title>
Text / Titel der Kategorie (Wird im Menü angezeigt)
Angaben eines Kategorien Setting
-
<settings>
Neue unter Kategorie (Setting) -
<title>
Text / Titel des Setting (Wird im Menü angezeigt) -
<template>
ist optional, gibt ein HTML Template an
Controls oder Template in einem Setting
Sie haben zwei Möglichkeiten ein Kategorie Setting mit Inhalt zu füllen. Wenn Sie lediglich ein Template nutzen möchten um Informationen bereit zustellen, können Sie ein einzelnes Template zur Anzeige angeben.
<settings name="avatar" icon="fa fa-camera">
<title>
<locale group="quiqqer/frontend-users" var="profile.avatar.title"/>
</title>
<template>
OPT_DIR/quiqqer/frontend-users/src/QUI/FrontendUsers/Controls/Profile/avatar.html
</template>
</settings>
Möchten Sie jedoch weitere Logik verwenden, Benutzerdaten ändern oder hinzufügen, können Sie ein Control als Schnittstelle implementiere.
<settings control="\QUI\FrontendUsers\Controls\Profile\DeleteAccount"
Setting Control
Ein Setting Control muss folgende Eigenschaften erfüllen:
- Muss von
QUI\Control
erben - Muss das Interface
QUI\FrontendUsers\Controls\Profile\ControlInterface
implementieren
Das ControlInterface
besagt das folgende zwei Methoden vorhanden sein müssen:
- onSave
- validate
onSave
Wird aufgerufen wenn der Benutzer gespeichert wird.
validate
Prüft die eingetragenen Daten. Wenn Sie einen Benutzer erweitern, müssen Sie diese Daten auf Syntax und Korrektheit prüfen.
Ihr HTML des Controls sollte zusätzlich einen Speicher Button beinhaltet damit das darüberliegende Formular abgesendet werden kann. Möchten Sie dies nicht und möchten eine eigene Speicherroutine implementieren können Sie dies tun. Implementieren Sie hierzu eine eigene Ajax Speicherroutine und nutzen einen eigenen Button anstelle des type="submit"
Buttons.
Beispiel eines Setting Controls
<?php
namespace NAMESPACE\NAMESPACE;
use QUI;
use QUI\Control;
use QUI\FrontendUsers\Controls\Profile\ControlInterface
class MySettingControl extends Control implements ControlInterface
{
/**
* @return string
*/
public function getBody()
{
$Engine = QUI::getTemplateManager()->getEngine();
return $Engine->fetch('PATH_TO_HTML_TEMPLATE.html');
}
/**
* event: on save
*/
public function onSave()
{
$Request = QUI::getRequest();
if (!$Request->request->get('profile-save')) {
return;
}
/* @var $User QUI\Interfaces\Users\User */
$data = $Request->request->all();
$User = $this->getAttribute('User');
$User->setAttributes($data);
$User->save();
}
public function validate()
{
}
}
Berechtigungen
Für jeden <settings>
-Eintrag wird automatisch eine Berechtigung im QUIQQER System angelegt.
Alle settings einer <category>
werden im Berechtigungsmanager unter einer Kategorie zusammengefasst. Damit diese Kategorie eine korrekt übersetzte Überschrift hat, muss eine Sprachvariable nach folgendem Muster angelegt werden:
[namespace/package] permission.quiqqer.frontendUsers.profile.view.{$CATEGORY_NAME}._header
Wobei {$CATEGORY_NAME}
durch den String zu ersetzen ist, der bei beim <category>
-Eintrag als name
-Attribut verwendet wurde (im vorliegenden Beispiel also user
).