Source of file SimpleListField.php
Size: 3,498 Bytes - Last Modified: 2021-12-23T10:21:10+00:00
/var/www/docs.ssmods.com/process/src/forms/SimpleListField/SimpleListField.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 | <?php class SimpleListField extends TextareaField { /** * List of Scenarios */ private static $scenarios = array(); /** * Scenario to use */ private $scenario = null; /** * Constructor */ public function __construct($name, $title = null, $value = null) { parent::__construct($name, $title, $value); // preload scenarios self::preloadScenarios(); } /* * @return Field */ public function Field($properties = array()) { // Load TinyMCE if needed if( isset(self::$scenarios[$this->scenario]['fields']) ){ $fields = self::$scenarios[$this->scenario]['fields']; foreach($fields as $field){ if(isset($field['type']) && $field['type'] == 'htmleditor'){ HtmlEditorField::include_js(); break; } } } // Assets Requirements::css(SimpleListFieldDir . '/forms/SimpleListField/css/SimpleListField.css'); Requirements::javascript(SimpleListFieldDir . '/forms/SimpleListField/js/jquery.serializejson.min.js'); Requirements::javascript(SimpleListFieldDir . '/forms/SimpleListField/js/SimpleListField.js'); // Set attributes $this->setAttribute('type', 'hidden'); $this->addExtraClass('hide'); if($this->scenario) { $this->setAttribute('data-scenario', (string)$this->scenario); // heading if(( isset(self::$scenarios[$this->scenario]['heading']) && !self::$scenarios[$this->scenario]['heading'] )) $this->setAttribute('data-heading', 0); else $this->setAttribute('data-heading', 1); // fields if( isset(self::$scenarios[$this->scenario]['fields']) && self::$scenarios[$this->scenario]['fields'] && is_array(self::$scenarios[$this->scenario]['fields']) ){ $this->setAttribute('data-fields', json_encode(self::$scenarios[$this->scenario]['fields'])); } } // Render the fields return $this->customise($properties)->renderWith($this->getTemplates()); } /** * Field type */ public function Type() { return 'text simplelist'; } /** * Set scenarios */ public function setScenarios($scenarios = array()){ self::$scenarios = $scenarios; return $this; } /** * Set scenarios */ public static function staticSetScenarios($scenarios = array()){ self::$scenarios = $scenarios; } /** * Get scenarios */ public static function getScenarios($key = null){ // preload scenarios self::preloadScenarios(); return self::$scenarios; } /** * Add single scenario */ public function addScenario($scenario = array()){ array_push(self::$scenarios, $scenario); return $this; } /** * Add single scenario by using yml configuration */ public static function addScenarioFromYml($key){ $cfg = Config::inst()->get('SimpleListField', 'Scenarios'); if( isset($cfg[$key]) ){ if( (isset($cfg[$key]['preload']) && !$cfg[$key]['preload']) || !isset($cfg[$key]['preload']) ){ self::$scenarios[$key] = $cfg[$key]; } } } /** * Set Scenario to use */ public function useScenario($scenarioName = null){ $this->scenario = $scenarioName; return $this; } /** * Preload scenarios */ protected static $preloaded_scenario = false; public static function preloadScenarios(){ if(self::$preloaded_scenario === false){ self::$preloaded_scenario = true; $scenarios = Config::inst()->get('SimpleListField', 'Scenarios'); foreach($scenarios as $key => $val){ if( isset($val['preload']) && $val['preload'] ){ self::$scenarios[$key] = $val; } } } } } |