Source of file SSSEO_OpenGraph_SiteTree_DataExtension.php
Size: 3,387 Bytes - Last Modified: 2021-12-24T06:50:23+00:00
/var/www/docs.ssmods.com/process/src/code/v1.0.0/SSSEO_OpenGraph_SiteTree_DataExtension.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 | <?php /** * SSSEO_OpenGraph_SiteTree_DataExtension * * @todo add description * * @namespace SSSEO * @package Open Graph * @author Andrew Gerber <atari@graphiquesdigitale.net> * @version 1.0.0 * * @todo lots * */ class SSSEO_OpenGraph_SiteTree_DataExtension extends DataExtension { //// Model Variables private static $db = array( 'OpenGraphType' => 'Enum(array("off", "article"), "article")', 'OpenGraphTitle' => 'Text', 'OpenGraphDescription' => 'Text', ); private static $has_one = array( 'OpenGraphImage' => 'Image', ); /* Overload Methods ------------------------------------------------------------------------------*/ // CMS Fields public function updateCMSFields(FieldList $fields) { // vars $config = SiteConfig::current_site_config(); $self = $this->owner; $tab = 'Root.SSSEO.OpenGraph'; //// Type $fields->addFieldsToTab($tab, array( DropdownField::create('OpenGraphType', 'og:type', $self->dbObject('OpenGraphType')->enumValues()), )); // if NOT off if ($self->OpenGraphType != 'off') { // $fields->addFieldsToTab($tab, array( ReadonlyField::create('ReadonlyOpenGraphSiteName', 'og:site_name', $config->Title), TextField::create('OpenGraphTitle', 'og:title') ->setAttribute('placeholder', $self->Title), ReadonlyField::create('ReadonlyOpenGraphURL', 'og:url', $self->AbsoluteLink()), TextareaField::create('OpenGraphDescription', 'og:description') ->setAttribute('placeholder', $self->GenerateDescription()), UploadField::create('OpenGraphImage', 'og:image') ->setAllowedExtensions(array('jpg', 'jpeg', 'png', 'gif')) ->setFolderName('SSSEO/OpenGraph/') ->setDescription('file format: JPG, PNG, GIF<br />pixel dimensions: 1200 x 630') )); } else { // $tabset = $fields->findOrMakeTab($tab); $tabset->addExtraClass('error'); } } /* Template Methods ------------------------------------------------------------------------------*/ /** * @name OpenGraphMetadata */ public function OpenGraphMetadata() { $self = $this->owner; if ($self->OpenGraphType != 'off') { // variables $config = SiteConfig::current_site_config(); $metadata = $self->MarkupHeader('Open Graph'); //// Type $metadata .= $self->MarkupFacebook('og:type', $self->OpenGraphType, false); //// Site Name $metadata .= $self->MarkupFacebook('og:site_name', $config->Title, true, $config->Charset); //// URL $metadata .= $self->MarkupFacebook('og:url', $self->AbsoluteLink(), false); //// Title $title = ($self->OpenGraphTitle) ? $self->OpenGraphTitle : $self->Title; $metadata .= $self->MarkupFacebook('og:title', $title, true, $config->Charset); //// Description $description = ($self->OpenGraphDescription) ? $self->OpenGraphDescription : $self->GenerateDescription(); $metadata .= $self->MarkupFacebook('og:description', $description, true, $config->Charset); //// Image if ($self->OpenGraphImage()->exists()) { $metadata .= $self->MarkupFacebook('og:image', $self->OpenGraphImage()->getAbsoluteURL(), false); } //// og:locale //// article:author // in Core //// article:publisher // in Core // return return $metadata; } else { return false; } } /* Class Methods ------------------------------------------------------------------------------*/ // none } |