Skip to content
Snippets Groups Projects

Dev#12992 custom fields

Merged Patrick Barroca requested to merge dev#12992_custom_fields into WIP
Compare and
+ 85
204
Preferences
Compare changes
Files
@@ -30,7 +30,8 @@ class Admin_UsergroupController extends ZendAfi_Controller_Action {
'messages' => [
'successful_save' => $this->_('Groupe "%s" sauvegardé'),
'successful_add' => $this->_('Le groupe "%s" a été sauvegardé')],
'successful_add' => $this->_('Le groupe "%s" a été sauvegardé'),
'successful_delete' => $this->_('Groupe "%s" supprimé')],
'actions' => [
'add' => ['title' => $this->_("Ajouter un groupe d'utilisateurs")],
@@ -39,6 +40,7 @@ class Admin_UsergroupController extends ZendAfi_Controller_Action {
'form_class_name' => 'ZendAfi_Form_Admin_UserGroup'];
}
public function indexAction() {
$this->view->titre = "Gestion des groupes d'utilisateurs";
$bib= Class_Bib::getPortail();
@@ -73,18 +75,6 @@ class Admin_UsergroupController extends ZendAfi_Controller_Action {
}
public function editAction() {
if (!$group = Class_UserGroup::getLoader()->find((int)$this->_getParam('id'))) {
$this->_redirect('admin/usergroup');
return;
}
$this->view->titre = "Modifier le groupe d'utilisateurs: ".$group->getLibelle();
$this->view->group = $group;
$this->_setupGroupFormAndSave('edit', $group);
}
public function editmembersAction() {
if (!$group = Class_UserGroup::getLoader()->find((int)$this->_getParam('id'))) {
$this->_redirect('admin/usergroup');
@@ -119,139 +109,6 @@ class Admin_UsergroupController extends ZendAfi_Controller_Action {
}
public function deleteAction() {
if ($group = Class_UserGroup::getLoader()->find((int)$this->_getParam('id')))
$group->delete();
$this->_redirect('admin/usergroup');
}
protected function _setupGroupFormAndSave($action, $group) {
$model_values = $this->_getCustomFieldModelValues($group);
$custom_form = $this->_getCustomFieldForm($model_values);
$form = $this->_groupForm($action, $group, $custom_form);
if ($this->_request->isPost() && $form->isValid($this->_request->getPost())) {
$post = array_merge(['rights' => []],
$this->_request->getPost());
$custom_values = [];
foreach ($post as $k=>$v)
if ('field_' == substr($k, 0, 6)) {
$custom_values[$k] = $v;
unset($post[$k]);
}
$group
->updateAttributes($post)
->save();
$custom_form->populate($custom_values);
$custom_form->updateModelValues();
$model_values->save();
$this->_helper->notify($this->_('Le groupe "%s" a été sauvegardé',
$group->getLibelle()));
$this->_redirect('admin/usergroup');
return true;
}
$this->view->form = $form;
$this->renderScript('usergroup/_form.phtml');
return false;
}
protected function _groupForm($action, $group, $custom_form) {
$form = $this->view
->newForm(['id' => 'usergroupform'])
->setAction($this->view->url(['action' => $action]));
$form
->addRequiredTextNamed('libelle')
->setLabel('Libellé *');
$custom_field_names = [];
foreach($custom_form->getElements() as $element) {
$custom_field_names[] = $element->getName();
$form->addElement($element);
}
$form
->addElement('radio',
'group_type',
['label' => $this->view->_('Mode de sélection des utilisateurs'),
'multiOptions' => [Class_UserGroup::TYPE_MANUAL => $this->view->_(Class_UserGroup::TYPE_MANUAL_TEXT),
Class_UserGroup::TYPE_DYNAMIC => $this->view->_(Class_UserGroup::TYPE_DYNAMIC_TEXT)] ] )
->addElement('select',
'role_level',
['label' => $this->view->_('Rôle'),
'multiOptions' => ZendAfi_Acl_AdminControllerRoles::getListeRolesWithoutSuperAdmin()] )
->addDisplayGroup(array_merge(['libelle', 'group_type'], $custom_field_names),
'usergroup',
['legend' => $this->view->_('Groupe')])
->addDisplayGroup(['role_level'],
'dynamic_filter',
['legend' => $this->view->_('Filtre')]);
$this->displayGroupFiltreVisibleOnlyOnDynamicGroup();
$rights = Class_UserGroup::getActivatedRightDefinitionList();
asort($rights);
$form
->addElement('multiCheckbox',
'rights',
['label' => '',
'multiOptions' => $rights])
->addDisplayGroup(['rights'], 'rights_group', ['legend' => $this->view->_('Droits')]);
if (Class_AdminVar::isMultimediaEnabled()) {
$form->addRequiredTextNamed('max_day')
->setLabel('Par jour *')
->setValue(0)
->setValidators(array('Digits'));
$form->addRequiredTextNamed('max_week')
->setLabel('Par semaine *')
->setValue(0)
->setValidators(array('Digits',
new ZendAfi_Validate_FieldsGreater(array('max_day' => 'Par jour'), true)));
$form->addRequiredTextNamed('max_month')
->setLabel('Par mois *')
->setValue(0)
->setValidators(array('Digits',
new ZendAfi_Validate_FieldsGreater(array(
'max_day' => 'Par jour',
'max_week' => 'Par semaine'),
true)));
$form->addDisplayGroup(
array('max_day', 'max_week', 'max_month'),
'multimedia',
array('legend' => 'Quota de réservation multimédia (mn)'));
}
$form->populate($group->toArray());
return $form;
}
public function displayGroupFiltreVisibleOnlyOnDynamicGroup() {
Class_ScriptLoader::getInstance()
->addInlineScript('formSelectToggleVisibilityForElement("input[name=\'group_type\']", "#fieldset-dynamic_filter", ["1"]);');
}
/**
* @return array
*/
@@ -322,7 +179,7 @@ class Admin_UsergroupController extends ZendAfi_Controller_Action {
}
function cateditAction() {
public function cateditAction() {
$form = new ZendAfi_Form_UserGroupCategorie();
$categorie = new Class_UserGroupCategorie();
$this->view->titre = "Modifier une catégorie de groupes";
@@ -398,7 +255,7 @@ class Admin_UsergroupController extends ZendAfi_Controller_Action {
public function listJsonAction() {
$groups = Class_UserGroupCategorie::getTopCategories();
$groups = Class_UserGroupCategorie::getTopCategories();
foreach($groups as $group)
$json_groups []= $group->toJSON(true);