Skip to content
Snippets Groups Projects
Commit 20a110bd authored by Dorian Merz's avatar Dorian Merz
Browse files

Merge branch 'instance/fid' into instance/fid_adlr

parents 6f9c3911 56a0c97a
No related merge requests found
...@@ -14,12 +14,6 @@ role_display_priority[] = "full_access>limited_access>basic_access" ...@@ -14,12 +14,6 @@ role_display_priority[] = "full_access>limited_access>basic_access"
role_display_order = "full_access>limited_access>basic_access" role_display_order = "full_access>limited_access>basic_access"
[Admin] [Admin]
; Whitelist of all fields that admins shall be able
; to change for other users
;editable_user_fields[] = 'HomeLibrary'
editable_user_fields[] = 'Permissions'
editable_user_fields[] = 'Salutation'
;list of user fields to be shown in overview table ;list of user fields to be shown in overview table
overview_fields[] = 'UserName' overview_fields[] = 'UserName'
overview_fields[] = 'Firstname' overview_fields[] = 'Firstname'
......
<?php <?php
/** /**
* Copyright (C) 2019 Leipzig University Library * Copyright (C) 2020 Leipzig University Library
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as * it under the terms of the GNU General Public License version 2 as
...@@ -20,22 +20,25 @@ ...@@ -20,22 +20,25 @@
*/ */
use fid\Hydrator\UserHydrator; use fid\Hydrator\UserHydrator;
use fid\InputFilter\AdminEditFormInputFilter;
use fid\InputFilter\RootAwareBaseInputFilter; use fid\InputFilter\RootAwareBaseInputFilter;
use Zend\Filter\StringTrim;
use Zend\Form\Element\Collection; use Zend\Form\Element\Collection;
use Zend\Form\Element\Hidden; use Zend\Form\Element\Hidden;
use Zend\Form\Element\Radio; use Zend\Form\Element\Radio;
use Zend\Form\Element\Select; use Zend\Form\Element\Select;
use Zend\Form\Element\Submit; use Zend\Form\Element\Submit;
use Zend\Form\Element\Text; use Zend\Form\Element\Text;
use Zend\Validator\Regex; use Zend\Form\Fieldset;
use Zend\Validator\StringLength; use Zend\Form\InputFilterProviderFieldset;
return [ return [
'name' => 'admin-edit-form', 'name' => 'user-update-form',
'hydrator' => UserHydrator::class, 'hydrator' => UserHydrator::class,
'elements' => [ 'validation_group' => [
'id',
'job_title',
'permissions'
],
'elements' => [
'id' => [ 'id' => [
'spec' => [ 'spec' => [
'name' => 'id', 'name' => 'id',
...@@ -44,9 +47,9 @@ return [ ...@@ -44,9 +47,9 @@ return [
], ],
'salutation' => [ 'salutation' => [
'spec' => [ 'spec' => [
'name' => 'salutation', 'name' => 'salutation',
'type' => Select::class, 'type' => Select::class,
'options' => [ 'options' => [
'label' => 'label_salutation', 'label' => 'label_salutation',
'options' => [ 'options' => [
'mr' => [ 'mr' => [
...@@ -60,15 +63,21 @@ return [ ...@@ -60,15 +63,21 @@ return [
], ],
'empty_option' => '', 'empty_option' => '',
], ],
'attributes' => [
'disabled' => true,
],
], ],
], ],
'academic_title' => [ 'academic_title' => [
'spec' => [ 'spec' => [
'name' => 'academic_title', 'name' => 'academic_title',
'type' => Text::class, 'type' => Text::class,
'options' => [ 'options' => [
'label' => 'label_academic_title', 'label' => 'label_academic_title',
], ],
'attributes' => [
'readonly' => true,
],
], ],
], ],
'firstname' => [ 'firstname' => [
...@@ -79,7 +88,7 @@ return [ ...@@ -79,7 +88,7 @@ return [
'label' => 'label_firstname', 'label' => 'label_firstname',
], ],
'attributes' => [ 'attributes' => [
'required' => true, 'readonly' => true,
], ],
], ],
], ],
...@@ -91,7 +100,7 @@ return [ ...@@ -91,7 +100,7 @@ return [
'label' => 'label_lastname', 'label' => 'label_lastname',
], ],
'attributes' => [ 'attributes' => [
'required' => true, 'readonly' => true,
], ],
], ],
], ],
...@@ -100,21 +109,23 @@ return [ ...@@ -100,21 +109,23 @@ return [
'name' => 'home_library', 'name' => 'home_library',
'type' => Select::class, 'type' => Select::class,
'options' => [ 'options' => [
'label' => 'label_home_library', 'label' => 'label_home_library',
'use_hidden_element' => true,
], ],
'attributes' => [ 'attributes' => [
'required' => true, 'disabled' => true,
], ],
], ],
], ],
'college' => [ 'college' => [
'spec' => [ 'spec' => [
'name' => 'college', 'name' => 'college',
'type' => Text::class, 'type' => Text::class,
'options' => [ 'options' => [
'label' => 'label_college', 'label' => 'label_college',
] ],
'attributes' => [
'readonly' => true,
],
], ],
], ],
'job_title' => [ 'job_title' => [
...@@ -153,110 +164,116 @@ return [ ...@@ -153,110 +164,116 @@ return [
], ],
], ],
], ],
'submit' => [ 'addresses' => [
'spec' => [ 'spec' => [
'name' => 'submit', 'name' => 'addresses',
'type' => Submit::class, 'type' => Fieldset::class,
'attributes' => [ 'elements' => [
'value' => 'label_update_submit', 'address_0' => [
], 'spec' => [
], 'name' => 0,
], 'type' => Fieldset::class,
], 'options' => [
'input_filter' => [ 'template' => 'fid/user/address-fieldset.phtml',
'type' => RootAwareBaseInputFilter::class, ],
'id' => [ 'elements' => [
'name' => 'id', 'id' => [
'required' => true, 'spec' => [
], 'name' => 'id',
'salutation' => [ 'type' => Hidden::class,
'name' => 'salutation', ],
'required' => false, ],
'filters' => [ 'line1' => [
StringTrim::class => [ 'spec' => [
'name' => StringTrim::class, 'name' => 'line1',
], 'options' => [
], 'label' => 'label_address_0_line_1',
], ],
'academic_title' => [ 'attributes' => [
'name' => 'academic_title', 'readonly' => true,
'required' => false, ],
'filters' => [ ],
StringTrim::class => [ ],
'name' => StringTrim::class, 'line2' => [
], 'spec' => [
], 'name' => 'line2',
], 'options' => [
'firstname' => [ 'label' => 'label_address_0_line_2',
'name' => 'firstname', ],
'required' => false, 'attributes' => [
'filters' => [ 'readonly' => true,
StringTrim::class => [ ],
'name' => StringTrim::class, ],
], ],
], 'zip' => [
'validators' => [ 'spec' => [
StringLength::class => [ 'name' => 'zip',
'name' => StringLength::class, 'options' => [
'options' => [ 'label' => 'label_address_0_zip',
'max' => 255 ],
], 'attributes' => [
], 'readonly' => true,
Regex::class => [ ],
'name' => Regex::class, ],
'options' => [ ],
'pattern' => '/^\D*$/', 'city' => [
'spec' => [
'name' => 'city',
'options' => [
'label' => 'label_address_0_city',
],
'attributes' => [
'readonly' => true,
],
],
],
'country' => [
'spec' => [
'name' => 'country',
'options' => [
'label' => 'label_address_0_country',
],
'attributes' => [
'readonly' => true,
],
],
],
],
],
],
], ],
], ],
], ],
], 'data' => [
'lastname' => [ 'spec' => [
'name' => 'lastname', 'name' => 'data',
'required' => false, 'type' => InputFilterProviderFieldset::class,
'filters' => [
StringTrim::class => [
'name' => StringTrim::class,
], ],
], ],
'validators' => [ 'submit' => [
StringLength::class => [ 'spec' => [
'name' => StringLength::class, 'name' => 'submit',
'options' => [ 'type' => Submit::class,
'max' => 255 'attributes' => [
] 'value' => 'label_update_submit',
],
Regex::class => [
'name' => Regex::class,
'options' => [
'pattern' => '/^\D*$/',
], ],
], ],
], ],
], ],
'home_library' => [ 'input_filter' => [
'name' => 'home_library', 'type' => RootAwareBaseInputFilter::class,
'filters' => [ 'id' => [
StringTrim::class => [ 'name' => 'id',
'name' => StringTrim::class, 'required' => true,
],
], ],
], 'job_title' => [
'college' => [ 'name' => 'job_title',
'name' => 'college', 'required' => true,
'required' => false, ],
'filters' => [ 'submit' => [
StringTrim::class => [ 'name' => 'submit',
'name' => StringTrim::class, 'required' => true,
],
], ],
], ],
'job_title' => [ ];
'name' => 'job_title',
'required' => true,
],
'submit' => [
'name' => 'submit',
'required' => true,
],
],
];
\ No newline at end of file
...@@ -20,19 +20,23 @@ ...@@ -20,19 +20,23 @@
* @license http://opensource.org/licenses/gpl-2.0.php GNU GPLv2 * @license http://opensource.org/licenses/gpl-2.0.php GNU GPLv2
*/ */
use Zend\Form\Element as Element; use Zend\Form\Element;
use Zend\Form\Element\Checkbox;
use Zend\Form\Element\Submit; use Zend\Form\Element\Submit;
use Zend\Form\Form;
use Zend\Form\View\Helper\FormElementErrors; use Zend\Form\View\Helper\FormElementErrors;
use Zend\Form\View\Helper\FormLabel; use Zend\Form\View\Helper\FormLabel;
use Zend\Form\View\Helper\FormRadio; use Zend\Form\View\Helper\FormRadio;
use Zend\Form\View\Helper\FormSelect; use Zend\Form\View\Helper\FormSelect;
use Zend\Form\View\Helper\FormSubmit; use Zend\Form\View\Helper\FormSubmit;
/** @var Form $form */
/** @var FormLabel $formLabel */ /** @var FormLabel $formLabel */
/** @var FormRadio $formRadio */ /** @var FormRadio $formRadio */
/** @var FormSelect $formSelect */ /** @var FormSelect $formSelect */
/** @var FormSubmit $formSubmit */ /** @var FormSubmit $formSubmit */
/** @var FormElementErrors $formElementErrors */ /** @var FormElementErrors $formElementErrors */
$form = $this->form;
$formLabel = $this->formLabel(); $formLabel = $this->formLabel();
$formRadio = $this->formRadio(); $formRadio = $this->formRadio();
$formSelect = $this->formSelect(); $formSelect = $this->formSelect();
...@@ -47,14 +51,12 @@ $this->headTitle($title = $this->translate("fid::user_edit_form_title", [ ...@@ -47,14 +51,12 @@ $this->headTitle($title = $this->translate("fid::user_edit_form_title", [
'%%userid%%' => $user->getId(), '%%userid%%' => $user->getId(),
'%%username%%' => $user->getUsername() '%%username%%' => $user->getUsername()
])); ]));
$editableFields = $this->config['Admin']['editable_user_fields'] ?? [];
$form->setAttributes(['class' => 'row']);
echo $this->form()->openTag($form);
?> ?>
<h2 class="row col-md-12"><?= $title ?></h2> <h2><?= $title ?></h2>
<div class="row col-md-12"><?= $this->transEsc("fid::required_fields_note") ?></div> <div><?= $this->transEsc("fid::required_fields_note") ?></div>
<?= $this->flashmessages() ?> <?= $this->flashmessages() ?>
<?= $this->form()->openTag($form) ?>
<br/> <br/>
<? /* id */ ?> <? /* id */ ?>
...@@ -64,13 +66,10 @@ echo $this->form()->openTag($form); ...@@ -64,13 +66,10 @@ echo $this->form()->openTag($form);
<?php <?php
/** @var Element\Select $elemSalutation */ /** @var Element\Select $elemSalutation */
$elemSalutation = $form->get('salutation'); $elemSalutation = $form->get('salutation');
$elemSalutation->setLabelAttributes(['class' => 'col-md-3']); $elemSalutation->setLabelAttributes(['class' => 'col-md-4']);
$elemSalutation->setAttributes(['class' => 'col-md-3']); $elemSalutation->setAttributes(['class' => 'form-control']);
if (!in_array('Salutation', $editableFields)) {
$elemSalutation->setAttribute('readonly', '1');
}
?> ?>
<div class="row"> <div class="form-group">
<?= $this->formLabel($elemSalutation) ?> <?= $this->formLabel($elemSalutation) ?>
<?= $this->formSelect($elemSalutation) ?> <?= $this->formSelect($elemSalutation) ?>
</div> </div>
...@@ -79,29 +78,22 @@ if (!in_array('Salutation', $editableFields)) { ...@@ -79,29 +78,22 @@ if (!in_array('Salutation', $editableFields)) {
<?php <?php
/** @var Element\Text $elemAcademicTitle */ /** @var Element\Text $elemAcademicTitle */
$elemAcademicTitle = $form->get('academic_title'); $elemAcademicTitle = $form->get('academic_title');
$elemAcademicTitle->setLabelAttributes(['class' => 'col-md-3']); $elemAcademicTitle->setLabelAttributes(['class' => 'col-md-4']);
$elemAcademicTitle->setAttributes(['class' => 'col-md-3']); $elemAcademicTitle->setAttributes(['class' => 'form-control']);
if (!in_array('AcademicTitle', $editableFields)) {
$elemAcademicTitle->setAttribute('readonly', '1');
}
?> ?>
<div class="row"> <div class="form-group">
<?= $this->formLabel($elemAcademicTitle) ?> <?= $this->formLabel($elemAcademicTitle) ?>
<?= $this->formElement($elemAcademicTitle) ?> <?= $this->formElement($elemAcademicTitle) ?>
<br/>
</div> </div>
<? /* firstname */ ?> <? /* firstname */ ?>
<?php <?php
/** @var Element\Text $elemFirstname */ /** @var Element\Text $elemFirstname */
$elemFirstname = $form->get('firstname'); $elemFirstname = $form->get('firstname');
$elemFirstname->setLabelAttributes(['class' => 'col-md-3']); $elemFirstname->setLabelAttributes(['class' => 'col-md-4']);
$elemFirstname->setAttributes(['class' => 'col-md-3']); $elemFirstname->setAttributes(['class' => 'form-control']);
if (!in_array('Firstname', $editableFields)) {
$elemFirstname->setAttribute('readonly', '1');
}
?> ?>
<div class="row"> <div class="form-group">
<?= $this->formLabel($elemFirstname) ?> <?= $this->formLabel($elemFirstname) ?>
<?= $this->formElement($elemFirstname) ?> <?= $this->formElement($elemFirstname) ?>
<?= $this->formElementErrors($elemFirstname) ?> <?= $this->formElementErrors($elemFirstname) ?>
...@@ -111,45 +103,23 @@ if (!in_array('Firstname', $editableFields)) { ...@@ -111,45 +103,23 @@ if (!in_array('Firstname', $editableFields)) {
<?php <?php
/** @var Element\Text $elemLastname */ /** @var Element\Text $elemLastname */
$elemLastname = $form->get('lastname'); $elemLastname = $form->get('lastname');
$elemLastname->setLabelAttributes(['class' => 'col-md-3']); $elemLastname->setLabelAttributes(['class' => 'col-md-4']);
$elemLastname->setAttributes(['class' => 'col-md-3']); $elemLastname->setAttributes(['class' => 'form-control']);
if (!in_array('Lastname', $editableFields)) {
$elemLastname->setAttribute('readonly', '1');
}
?> ?>
<div class="row"> <div class="form-group">
<?= $this->formLabel($elemLastname) ?> <?= $this->formLabel($elemLastname) ?>
<?= $this->formElement($elemLastname) ?> <?= $this->formElement($elemLastname) ?>
<?= $this->formElementErrors($elemLastname) ?> <?= $this->formElementErrors($elemLastname) ?>
</div> </div>
<? /* college */ ?>
<?php
/** @var Element\Text $elemCollege */
$elemCollege = $form->get('college');
$elemCollege->setLabelAttributes(['class' => 'col-md-3']);
$elemCollege->setAttributes(['class' => 'col-md-3']);
if (!in_array('College', $editableFields)) {
$elemCollege->setAttribute('readonly', '1');
}
?>
<div class="row">
<?= $this->formLabel($elemCollege) ?>
<?= $this->formElement($elemCollege) ?>
<?= $this->formElementErrors($elemCollege) ?>
</div>
<? /* home library */ ?> <? /* home library */ ?>
<?php <?php
/** @var Element\Select $elemHomeLibrary */ /** @var Element\Select $elemHomeLibrary */
$elemHomeLibrary = $form->get('home_library'); $elemHomeLibrary = $form->get('home_library');
$elemHomeLibrary->setLabelAttributes(['class' => 'col-md-3']); $elemHomeLibrary->setLabelAttributes(['class' => 'col-md-4']);
$elemHomeLibrary->setAttributes(['class' => 'col-md-6']); $elemHomeLibrary->setAttributes(['class' => 'form-control']);
if (!in_array('HomeLibrary', $editableFields)) {
$elemHomeLibrary->setAttribute('disabled', '1');
}
?> ?>
<div class="row"> <div class="form-group">
<?= $this->formLabel($elemHomeLibrary) ?> <?= $this->formLabel($elemHomeLibrary) ?>
<?= $this->formSelect($elemHomeLibrary) ?> <?= $this->formSelect($elemHomeLibrary) ?>
<?= $this->formElementErrors($elemHomeLibrary) ?> <?= $this->formElementErrors($elemHomeLibrary) ?>
...@@ -159,15 +129,12 @@ if (!in_array('HomeLibrary', $editableFields)) { ...@@ -159,15 +129,12 @@ if (!in_array('HomeLibrary', $editableFields)) {
<?php <?php
/** @var Element\Radio $elemJobTitle */ /** @var Element\Radio $elemJobTitle */
$elemJobTitle = $form->get('job_title'); $elemJobTitle = $form->get('job_title');
$elemJobTitle->setLabelAttributes(['class' => 'col-md-3']); $elemJobTitle->setLabelAttributes(['class' => 'col-md-4']);
$elemJobTitle->setAttributes(['class' => 'col-md-6']); $elemJobTitle->setAttributes(['class' => 'form-control']);
if (!in_array('JobTitle', $editableFields)) {
$elemJobTitle->setAttribute('readonly', '1');
}
?> ?>
<div class="row"> <div class="form-group">
<?= $this->formLabel($elemJobTitle) ?> <?= $this->formLabel($elemJobTitle) ?>
<?= $this->formElement($elemJobTitle) ?> <?= $this->formSelect($elemJobTitle) ?>
<?= $this->formElementErrors($elemJobTitle) ?> <?= $this->formElementErrors($elemJobTitle) ?>
</div> </div>
...@@ -176,34 +143,29 @@ if (!in_array('JobTitle', $editableFields)) { ...@@ -176,34 +143,29 @@ if (!in_array('JobTitle', $editableFields)) {
/** @var Element\Collection $elemPermissions */ /** @var Element\Collection $elemPermissions */
/** @var Element\Select[] $elemPermissionsElems */ /** @var Element\Select[] $elemPermissionsElems */
$elemPermissions = $form->get('permissions'); $elemPermissions = $form->get('permissions');
$elemPermissions->setLabelAttributes(['class' => 'col-md-3']);
$elemPermissionsElems = $elemPermissions->getElements(); $elemPermissionsElems = $elemPermissions->getElements();
$permissions = $this->config['Admin']['permission_options'] ?? []; $permissions = $this->config['Admin']['permission_options'] ?? [];
foreach ($permissions as $permission) { foreach ($permissions as $permission) {
$element = $elemPermissionsElems[$permission]; $element = $elemPermissionsElems[$permission];
$element->setLabel("permission_$permission"); $element->setLabel("permission_$permission");
$element->setAttributes(['class' => 'col-md-2']); $element->setAttributes(['class' => 'form-control']);
$element->setLabelAttributes(['class' => 'col-md-6']); $element->setLabelAttributes(['class' => 'col-md-4']);
$element->setAttribute('id', $element->getName()); $element->setAttribute('id', $element->getName());
$elements[] = $element; $elements[] = $element;
} }
?> ?>
<div class="row"> <h3><?= $this->formLabel($elemPermissions) ?></h3>
<?= $this->formLabel($elemPermissions) ?> <?php foreach ($elements ?? [] as $element): ?>
<div class="col-md-9"> <div class="form-group">
<?php foreach ($elements as $element): ?> <?= $this->formLabel($element) ?>
<div class="row"> <?= $this->formElement($element) ?>
<?= $this->formElement($element) ?>
<?= $this->formLabel($element) ?>
</div>
<? endforeach; ?>
<div class="row">
<?= $this->formElementErrors($elemPermissions) ?>
</div>
</div>
</div> </div>
<?php endforeach; ?>
<? /* addresses */ ?>
<?= $this->render('fid/user/address-collection.phtml') ?>
<? /* submit button */ ?> <? /* submit button */ ?>
<?php <?php
...@@ -211,10 +173,10 @@ foreach ($permissions as $permission) { ...@@ -211,10 +173,10 @@ foreach ($permissions as $permission) {
$elemSubmit = $form->get('submit'); $elemSubmit = $form->get('submit');
$elemSubmit->setAttributes(['class' => 'btn btn-primary']); $elemSubmit->setAttributes(['class' => 'btn btn-primary']);
?> ?>
<div class="row"> <div class="form-group">
<div class="col-lg-11 col-md-9 col-sm-11 col-xs-12"> <div class="col-lg-11 col-md-9 col-sm-11 col-xs-12">
<?= $this->formSubmit($elemSubmit) ?> <?= $this->formSubmit($elemSubmit) ?>
<a href="<?= $this->url('fid/admin/list') ?>" <a href="<?= $this->url('myresearch-profile') ?>"
class="btn btn-primary"> class="btn btn-primary">
<?= $this->transEsc('Cancel') ?> <?= $this->transEsc('Cancel') ?>
</a> </a>
...@@ -222,4 +184,3 @@ $elemSubmit->setAttributes(['class' => 'btn btn-primary']); ...@@ -222,4 +184,3 @@ $elemSubmit->setAttributes(['class' => 'btn btn-primary']);
</div> </div>
<?= $this->form()->closeTag($form) ?> <?= $this->form()->closeTag($form) ?>
<!-- fid: admin - edit - END -->
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment