From 9201f2bf2a3c054d1ecc854d61b6fcb99c99e391 Mon Sep 17 00:00:00 2001
From: llaffont <llaffont@afi-sa.fr>
Date: Thu, 26 Jun 2014 17:09:01 +0200
Subject: [PATCH] dev #12992 #14706 custom fields

Usergroups have link to custom fields form
---
 .../admin/controllers/AccueilController.php   |  3 ---
 .../controllers/CustomFieldsController.php    |  4 +++-
 .../admin/controllers/UsergroupController.php |  1 +
 .../views/scripts/custom-fields/values.phtml  |  3 +--
 .../admin/views/scripts/usergroup/_form.phtml | 12 +++++++++-
 library/Class/CustomField/Meta.php            |  6 ++---
 library/Class/CustomField/Model.php           | 11 ++++++----
 library/Class/Rss.php                         |  2 +-
 .../CustomFieldsControllerTest.php            | 22 +++++++++++++++++--
 .../controllers/UserGroupControllerTest.php   |  6 +++++
 10 files changed, 53 insertions(+), 17 deletions(-)

diff --git a/application/modules/admin/controllers/AccueilController.php b/application/modules/admin/controllers/AccueilController.php
index 495e296107d..c7975b029bd 100644
--- a/application/modules/admin/controllers/AccueilController.php
+++ b/application/modules/admin/controllers/AccueilController.php
@@ -50,9 +50,6 @@ class Admin_AccueilController extends Zend_Controller_Action {
 			$this->type_module = $module_config['type_module'];
 		}
 			
-		xdebug_break();
-
-
 		$user = Class_Users::getIdentity();
  
 		if ((!$user->isAdminBib() && !$user->hasRightConfigFront())
diff --git a/application/modules/admin/controllers/CustomFieldsController.php b/application/modules/admin/controllers/CustomFieldsController.php
index 13a1b6dd5a4..228d03012ef 100644
--- a/application/modules/admin/controllers/CustomFieldsController.php
+++ b/application/modules/admin/controllers/CustomFieldsController.php
@@ -83,9 +83,11 @@ class Admin_CustomFieldsController extends ZendAfi_Controller_Action {
 
 	public function valuesAction() {
 		$model = Class_CustomField_Model::getModel($this->_getParam('model'));
+		$model_values = $model->find($this->_getParam('id'));
 		$this->view->titre = $this->view->_('Champs personnalisés: %s "%s"',
 																				strtolower($model->getLabel()),
-																				$model->find($this->_getParam('id'))->getLabel());
+																				$model_values->getLabel());
+		$this->view->form = new ZendAfi_Form_Admin_CustomFields_ModelValues(['model_values' => $model_values]);
 	}
 }
 ?>
\ No newline at end of file
diff --git a/application/modules/admin/controllers/UsergroupController.php b/application/modules/admin/controllers/UsergroupController.php
index 75e04e2b353..06e5dd95be8 100644
--- a/application/modules/admin/controllers/UsergroupController.php
+++ b/application/modules/admin/controllers/UsergroupController.php
@@ -64,6 +64,7 @@ class Admin_UsergroupController extends ZendAfi_Controller_Action {
 		}
 
 		$this->view->titre = "Modifier le groupe d'utilisateurs: ".$group->getLibelle();
+		$this->view->group = $group;
 		$this->_setupGroupFormAndSave('edit', $group);
 	}
 
diff --git a/application/modules/admin/views/scripts/custom-fields/values.phtml b/application/modules/admin/views/scripts/custom-fields/values.phtml
index 6ae303218e5..c52ca489f90 100644
--- a/application/modules/admin/views/scripts/custom-fields/values.phtml
+++ b/application/modules/admin/views/scripts/custom-fields/values.phtml
@@ -1,2 +1 @@
-<?php 
-?>
+<?php echo $this->renderForm($this->form); ?>
diff --git a/application/modules/admin/views/scripts/usergroup/_form.phtml b/application/modules/admin/views/scripts/usergroup/_form.phtml
index dc46f2831c7..c155698aa8b 100644
--- a/application/modules/admin/views/scripts/usergroup/_form.phtml
+++ b/application/modules/admin/views/scripts/usergroup/_form.phtml
@@ -1 +1,11 @@
-<?php echo $this->renderForm($this->form); ?>
\ No newline at end of file
+<?php 
+if ($this->group) {
+	echo $this->tagAnchor($this->url(['module' => 'admin',
+																		'controller' => 'custom-fields',
+																		'action' => 'values',
+																		'model' => 'UserGroup',
+																		'id' => $this->group->getId()], null, true),
+												$this->_('Champs personnalisés'));
+}
+echo $this->renderForm($this->form); 
+?>
diff --git a/library/Class/CustomField/Meta.php b/library/Class/CustomField/Meta.php
index 4518c9a50f0..23da3ad537d 100644
--- a/library/Class/CustomField/Meta.php
+++ b/library/Class/CustomField/Meta.php
@@ -24,9 +24,9 @@ class Class_CustomField_Meta extends Storm_Model_Abstract {
 	use Trait_Translator;
 
 	const 
-		TEXT_INPUT = 'TEXT_INPUT',
-		TEXT_AREA = 'TEXT_AREA',
-		SELECT = 'SELECT';
+		TEXT_INPUT = 'text',
+		TEXT_AREA = 'textarea',
+		SELECT = 'select';
 
 	protected static $_models = [];
 
diff --git a/library/Class/CustomField/Model.php b/library/Class/CustomField/Model.php
index 9e0c8457898..47128e4b64b 100644
--- a/library/Class/CustomField/Model.php
+++ b/library/Class/CustomField/Model.php
@@ -78,18 +78,21 @@ class Class_CustomField_Model {
 
 
 	public function getItems() {
-		return Class_CustomField::findAllBy(['where' => 'model = "'.$this->_class_name.'"',
+		return $this->getFields();
+	}
+
+	public function getFields() {
+		return Class_CustomField::findAllBy(['model' => $this->_class_name,
 																				 'order' => 'priority']);
 	}
 
 
 	public function find($id) {
 		$loader = call_user_func([self::CLASS_PREFIX.$this->_class_name, 'getLoader']);
-		xdebug_break();
-		return $loader->find($id);
+		return new Class_CustomField_ModelValues($loader->find($id), $this);
 	}
 
-	
+
 	public function getSousCategories() {
 		return [];
 	}
diff --git a/library/Class/Rss.php b/library/Class/Rss.php
index 3944a632fba..c04d5648a09 100644
--- a/library/Class/Rss.php
+++ b/library/Class/Rss.php
@@ -575,7 +575,7 @@ class Class_Rss extends Storm_Model_Abstract {
 	{
 		$niveau=0; $id=0;
 		$html= '<ul class="treeMenu">';
-		xdebug_break();
+
 		if(count($this->arbre_array) > 0){
 			foreach($this->arbre_array as $menu)
 				{
diff --git a/tests/application/modules/admin/controllers/CustomFieldsControllerTest.php b/tests/application/modules/admin/controllers/CustomFieldsControllerTest.php
index b3fd90915d7..4d4d985b679 100644
--- a/tests/application/modules/admin/controllers/CustomFieldsControllerTest.php
+++ b/tests/application/modules/admin/controllers/CustomFieldsControllerTest.php
@@ -57,14 +57,14 @@ abstract class CustomFieldControllerTestCase extends AbstractControllerTestCase
 									 ['id' => 4,
 										'priority' => 2,
 										'label' => 'Age',
-										'field_type' => Class_CustomField_Meta::TEXT_INPUT,
+										'field_type' => Class_CustomField_Meta::TEXT_AREA,
 										'model' => 'UserGroup']);
 										
 		$this->fixture('Class_CustomField',
 									 ['id' => 5,
 										'priority' => 3,
 										'label' => 'Status',
-										'field_type' => Class_CustomField_Meta::TEXT_INPUT,
+										'field_type' => Class_CustomField_Meta::SELECT,
 										'model' => 'UserGroup']);
 	}
 }
@@ -400,6 +400,24 @@ class CustomFieldsControllerValuesForUserGroupTeachersTest extends CustomFieldCo
 	 public function titleShouldBeCustomFieldsForUserGroupTeacher() {
 		 $this->assertXPathContentContains('//h1', 'Champs personnalisés: groupe d\'utilisateurs "Teachers"');
 	 }
+
+
+	 /** @test */
+	 public function addressInputShouldBePresentOnce() {
+		 $this->assertXPathCount('//label[contains(text(), "Address")]', 1);
+		 
+	 }
+
+	 /** @test */
+	 public function inputForAddressShouldBePresent() {
+		 $this->assertXPath('//form//fieldset//input[@name="field_3"]');
+	 }
+
+
+	 /** @test */
+	 public function textAreaForAgeShouldBePresent() {
+		 $this->assertXPath('//form//fieldset//textarea[@name="field_4"]');
+	 }
  }
 
 
diff --git a/tests/application/modules/admin/controllers/UserGroupControllerTest.php b/tests/application/modules/admin/controllers/UserGroupControllerTest.php
index 0cf61b87d83..05eadd82ce5 100644
--- a/tests/application/modules/admin/controllers/UserGroupControllerTest.php
+++ b/tests/application/modules/admin/controllers/UserGroupControllerTest.php
@@ -414,6 +414,12 @@ class Admin_UserGroupControllerEditGroupStagiairesTest extends Admin_UserGroupCo
 		$this->dispatch('admin/usergroup/edit/id/3', true);
 	}
 
+	
+	/** @test */
+	public function linkToEditCustomFieldsShouldBePresent() {
+		$this->assertXPath('//a[contains(@href, "admin/custom-fields/values/model/UserGroup/id/3")]');
+	}
+
 
 	/** @test */
 	public function inputLibelleShouldContainsStagiaires() {
-- 
GitLab