/** * Update the page filtering, allowing CMS searchable content tagging. */ public function updateSearchForm($form) { // Update the page filtering, allowing multiple tags. Requirements::javascript(FUSION_PATH . '/javascript/fusion.js'); // Instantiate a field containing the existing tags. $form->Fields()->insertBefore(ListboxField::create('q[Tagging]', 'Tags', FusionTag::get()->map('Title', 'Title')->toArray(), ($filtering = $this->owner->getRequest()->getVar('q')) && isset($filtering['Tagging']) ? $filtering['Tagging'] : array(), null, true), 'q[Term]'); // Allow extension. $this->owner->extend('updateCMSMainTaggingExtensionSearchForm', $form); }
/** * Display the appropriate tagging field. */ public function updateCMSFields(FieldList $fields) { $fields->removeByName('FusionTags'); // Determine whether consolidated tags are found in the existing relationships. $types = array(); foreach (singleton('FusionService')->getFusionTagTypes() as $type => $field) { $types[$type] = $type; } $types = array_intersect($this->owner->many_many(), $types); if (empty($types)) { // There are no consolidated tags found, therefore instantiate a tagging field. $fields->addFieldToTab('Root.Tagging', ListboxField::create('FusionTags', 'Tags', FusionTag::get()->map()->toArray())->setMultiple(true)); } // Allow extension. $this->owner->extend('updateTaggingExtensionCMSFields', $fields); }
/** * Update the fusion tag to remove this tag type. */ public function onAfterDelete() { parent::onAfterDelete(); $fusion = FusionTag::get()->byID($this->owner->FusionTagID); $types = unserialize($fusion->TagTypes); unset($types[$this->owner->ClassName]); $fusion->TagTypes = !empty($types) ? serialize($types) : null; $fusion->write(); }
/** * Confirm that the fusion tag has been given a title and doesn't already exist. */ public function validate() { $result = parent::validate(); $this->Title = strtolower($this->Title); if ($result->valid() && !$this->Title) { $result->error('"Title" required!'); } else { if ($result->valid() && FusionTag::get_one('FusionTag', "ID != " . (int) $this->ID . " AND Title = '" . Convert::raw2sql($this->Title) . "'")) { $result->error('Tag already exists!'); } } // Allow extension. $this->extend('validateFusionTag', $result); return $result; }
/** * Confirm that the fusion tag has been given a title and doesn't already exist. */ public function validate() { $result = parent::validate(); $this->Title = strtolower($this->Title); if ($result->valid() && !$this->Title) { $result->error('"Title" required!'); } else { if ($result->valid() && FusionTag::get_one('FusionTag', array('ID != ?' => $this->ID, 'Title = ?' => $this->Title))) { $result->error('Tag already exists!'); } } // Allow extension. $this->extend('validateFusionTag', $result); return $result; }