Skip to content
Snippets Groups Projects
Commit 768ce85d authored by Ghislain Loas's avatar Ghislain Loas
Browse files

Merge branch 'hotline#98626_champs_personnalises_et_filtre' into 'hotline'

hotline #98626 articles, mass edit : fix custom field save

See merge request !3346
parents 0cacf973 ddf3c296
Branches
Tags
3 merge requests!3350Hotline,!3346hotline #98626 articles, mass edit : fix custom field save,!3343WIP: dev#100249: ArteVOD : add a dashboard
Pipeline #9020 canceled with stage
in 21 minutes and 55 seconds
- ticket #98626 : Articles, modification par lots : correction de la prise en compte des champs personnalisés
\ No newline at end of file
......@@ -113,30 +113,39 @@ abstract class ZendAfi_Controller_Plugin_MultiSelection_Abstract extends ZendAfi
if (!$this->_request->isPost())
return;
if(!$post = $this->processMulticheckboxFromPost($form,true))
if ((!$post = $this->processMulticheckboxFromPost($form, true)) && !($custom_values = $this->getCustomValues()))
return $this->_helper->notify($this->_('Les données transmises sont vide. Les modifications n\'ont pas été prises en compte.'));
foreach($models as $model) {
$model->updateAttributes($post);
do {
$model = array_shift($models);
} while ($model && $this->_formSaveModelWithPost($form, $model, $post));
return true;
}
if ((!$form->isValidModelAndArray($model, $this->_getPost())))
return $this->_helper->notify($this->_('Le formulaire est invalide. Les modifications n\'ont pas été prises en compte.'));
$this->_doBeforeSave($model);
protected function _formSaveModelWithPost($form, $model, $post) {
$model->updateAttributes($post);
if (!$model->save())
return $this->_helper->notify($this->_('La sauvegarde a échoué. Les modifications n\'ont pas été prises en compte.'));
if ((!$form->isValidModelAndArray($model, $this->_getPost()))) {
$this->_helper->notify($this->_('Le formulaire est invalide. Les modifications n\'ont pas été prises en compte.'));
return false;
}
$model_values = $this->_getCustomFieldModelValues($model);
$custom_form = $this->_getCustomFieldForm($model_values);
$custom_form->populate($this->getCustomValues());
$custom_form->updateModelValues();
$model_values->save();
$this->_doBeforeSave($model);
$this->_doAfterSave($model);
if (!$model->save()) {
$this->_helper->notify($this->_('La sauvegarde a échoué. Les modifications n\'ont pas été prises en compte.'));
return false;
}
$model_values = $this->_getCustomFieldModelValues($model);
$custom_form = $this->_getCustomFieldForm($model_values);
$custom_form->populate($this->getCustomValues());
$custom_form->updateModelValues();
$model_values->save();
$this->_doAfterSave($model);
return true;
}
......
......@@ -47,12 +47,14 @@ abstract class MultiSelectionArticlesTestCase extends Admin_AbstractControllerTe
$article_hackaton = $this->fixture('Class_Article',
['id' => 12,
'id_cat' => 30,
'pick_day' => null,
'titre' => 'Inscrivez vous au Hackaton',
'contenu' => 'Un évenement qui a la classe']);
$article_hackaton_annecy = $this->fixture('Class_Article',
['id' => 1301,
'id_cat' => 30,
'pick_day' => null,
'titre' => 'Inscrivez vous au Hackaton à Annecy',
'contenu' => 'Un évenement qui a la classe']);
......@@ -528,6 +530,44 @@ class MultiSelectionArticlesPostDatasTest extends MultiSelectionArticlesPostTest
class MultiSelectionArticlesWithCustomFieldsPostDatasTest extends MultiSelectionArticlesPostTestCase {
public function setUp() {
parent::setUp();
$meta = $this->fixture('Class_CustomField_Meta',
['id' => 3,
'label' => 'Animation',
'field_type' => Class_CustomField_Meta::SELECT,
'options_list' => 'Atelier;Club;Soirée',
'indexable' => 1]);
$this->fixture('Class_CustomField',
['id' => 3,
'priority' => 3,
'meta' => $meta,
'model' => 'Article']);
$this->postDispatch('admin/cms/edit-multiple', ['field_3' => 'Club',
'pick_day' => '',
'keepValueOf_pick_day' => '1']);
}
/** @test */
public function shoudlRedirectToCmsIndex() {
$this->assertRedirect();
}
/** @test */
public function customFieldValueForClubShouldHaveBeenCreated() {
$this->assertCount(2, Class_CustomField_Value::findAllBy(['value' => 'Club']));
}
}
class MultiSelectionArticlesPostDatasWithWorkflowEnabledTest extends MultiSelectionArticlesPostTestCase {
public function setUp() {
......
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