mirror of
				https://gitlab.com/Chill-Projet/chill-bundles.git
				synced 2025-10-31 17:28:23 +00:00 
			
		
		
		
	The `custom field long choice` aim to provide a way to deal with choices
with a big possibilities.
The `custom field long choice` allow :
- to persist different options in the database ;
- each option has a key, a text (translatable string), and eventually a
  parent, and an internal_key
- every key can be activate or not. If the parent is inactivated, all
  childs are inactivated
- the internal key have two purposes :
    - link to an external csv file, with their own key ;
    - add a special class to results, to allow custom layout.
Currently, the field exists, but some elements are missing :
- a script for CSV import
- possibility to select multiple items
- edition of options
- handle of option without parents
- tests are missing
		
	
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Application\Migrations;
 | |
| 
 | |
| use Doctrine\DBAL\Migrations\AbstractMigration;
 | |
| use Doctrine\DBAL\Schema\Schema;
 | |
| 
 | |
| /**
 | |
|  * Auto-generated Migration: Please modify to your needs!
 | |
|  */
 | |
| class Version20151210205610 extends AbstractMigration
 | |
| {
 | |
|     /**
 | |
|      * @param Schema $schema
 | |
|      */
 | |
|     public function up(Schema $schema)
 | |
|     {
 | |
|         $this->abortIf($this->connection->getDatabasePlatform()->getName() != 'postgresql', 'Migration can only be executed safely on \'postgresql\'.');
 | |
| 
 | |
|         $this->addSql('CREATE SEQUENCE custom_field_long_choice_options_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
 | |
|         $this->addSql('CREATE TABLE custom_field_long_choice_options (id INT NOT NULL, '
 | |
|                 . 'parent_id INT DEFAULT NULL, '
 | |
|                 . 'key VARCHAR(15) NOT NULL, '
 | |
|                 . 'text jsonb NOT NULL, '
 | |
|                 . 'active boolean NOT NULL,'
 | |
|                 . 'internal_key VARCHAR(50) NOT NULL DEFAULT \'\', '
 | |
|                 . 'PRIMARY KEY(id))');
 | |
|         $this->addSql('CREATE INDEX IDX_14BBB8E0727ACA70 ON custom_field_long_choice_options (parent_id)');
 | |
|         $this->addSql('ALTER TABLE custom_field_long_choice_options ADD CONSTRAINT cf_long_choice_self_referencing '
 | |
|                 . 'FOREIGN KEY (parent_id) REFERENCES custom_field_long_choice_options (id) '
 | |
|                 . 'NOT DEFERRABLE INITIALLY IMMEDIATE');
 | |
|         
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param Schema $schema
 | |
|      */
 | |
|     public function down(Schema $schema)
 | |
|     {
 | |
|         // this down() migration is auto-generated, please modify it to your needs
 | |
|         $this->abortIf($this->connection->getDatabasePlatform()->getName() != 'postgresql', 'Migration can only be executed safely on \'postgresql\'.');
 | |
| 
 | |
|         $this->addSql('ALTER TABLE custom_field_long_choice_options DROP CONSTRAINT cf_long_choice_self_referencing');
 | |
|         $this->addSql('DROP SEQUENCE custom_field_long_choice_options_id_seq CASCADE');
 | |
|         $this->addSql('DROP TABLE custom_field_long_choice_options');
 | |
|     }
 | |
| }
 |