Source of file Link.php
Size: 2,337 Bytes - Last Modified: 2021-12-23T10:58:56+00:00
/var/www/docs.ssmods.com/process/src/code/Link.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | <?php namespace WebOfTalent\Links; use SilverStripe\CMS\Model\SiteTree; use SilverStripe\Forms\HTMLEditor\HTMLEditorField; use SilverStripe\View\Requirements; use SilverStripe\Forms\HiddenField; use SilverStripe\Forms\TextField; use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\TreeDropdownField; use SilverStripe\Forms\FieldList; use SilverStripe\ORM\DataObject; /** * Defines the Link page type. */ class Link extends DataObject { private static $table_name = 'Link'; private static $db = [ 'URL' => 'Text', 'Title' => 'Text', 'Description' => 'HTMLText', 'LinkType' => "Enum('External,Internal')", 'SortOrder' => 'Int', ]; private static $classesToAddLinksTo = ['Page']; private static $has_one = [ 'LinksFolder' => 'WebOfTalent\Links\LinksFolder', 'InternalPage' => SiteTree::class ]; private static $many_many = [ 'Pages' => SiteTree::class ]; public function getCMSFields() { Requirements::javascript('weboftalent/links:/javascript/linkedit.js'); $localeField = new HiddenField('Locale'); $localeField->setValue($this->LinksFolder()->Locale); $fields = new FieldList( new TextField('Title', 'Link title'), new DropdownField('LinkType', 'Internal or External Link', singleton('WebOfTalent\Links\Link')->dbObject('LinkType')->enumValues() ), new TextField('URL'), new TreeDropdownField('InternalPageID', 'Choose an internal link', SiteTree::class), new HTMLEditorField('Description'), $localeField ); return $fields; } public function LoadLink() { $refreshedLink = DataObject::get_one('WebOfTalent\Links\Link', 'Link_Live.ID='.$this->ID); return $refreshedLink->URL; } public function getWebsiteAddress() { $result = $this->URL; if ($this->LinkType == 'Internal') { $targetPage = DataObject::get_by_id('Page', $this->InternalPageID); if ($targetPage) { $result = $targetPage->Link(); } else { $result = '#'; } } if (!$result) { $result = '#'; } return $result; } } |