Source of file SSSEO_SchemaDotOrg_SiteTree_DataExtension.php
Size: 3,486 Bytes - Last Modified: 2021-12-24T06:50:23+00:00
/var/www/docs.ssmods.com/process/src/code/v1.0.0/SSSEO_SchemaDotOrg_SiteTree_DataExtension.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 | <?php /** * SSSEO_SchemaDotOrg_SiteTree_DataExtension * * @todo add description * * @namespace SSSEO * @package Open Graph * @author Andrew Gerber <atari@graphiquesdigitale.net> * @version 1.0.0 * * @todo lots * */ class SSSEO_SchemaDotOrg_SiteTree_DataExtension extends DataExtension { //// Model Variables private static $db = array( 'SchemaDotOrgType' => 'Enum(array( "off", "Article", "Blog", "Book", "Event", "LocalBusiness", "Organisation", "Person", "Product", "Review", "Other" ), "Article")', 'SchemaDotOrgTitle' => 'Text', 'SchemaDotOrgDescription' => 'Text', ); private static $has_one = array( 'SchemaDotOrgImage' => 'Image', ); /* Overload Methods ------------------------------------------------------------------------------*/ // CMS Fields public function updateCMSFields(FieldList $fields) { // vars $config = SiteConfig::current_site_config(); $self = $this->owner; $tab = 'Root.SSSEO.SchemaDotOrg'; //// Type $fields->addFieldsToTab($tab, array( DropdownField::create('SchemaDotOrgType', 'itemscope itemtype', $self->dbObject('SchemaDotOrgType')->enumValues()), )); // if NOT off if ($self->SchemaDotOrgType != 'off') { // $fields->addFieldsToTab($tab, array( TextField::create('SchemaDotOrgTitle', 'itemprop name') ->setAttribute('placeholder', $self->Title), TextareaField::create('SchemaDotOrgDescription', 'itemprop description') ->setAttribute('placeholder', $self->GenerateDescription()), UploadField::create('SchemaDotOrgImage', 'itemprop image') ->setAllowedExtensions(array('jpg', 'jpeg', 'png', 'gif')) ->setFolderName('SSSEO/SchemaDotOrg/') ->setDescription('file format: JPG, PNG, GIF<br />pixel dimensions for thumbnail: < 400 px wide<br />pixel dimensions for full-bleed image >= 400 px wide<br />Please see <a href="https://developers.google.com/+/web/snippet/article-rendering">Article Rendering</a> for more information.') )); } else { // $tabset = $fields->findOrMakeTab($tab); $tabset->addExtraClass('error'); } } /* Template Methods ------------------------------------------------------------------------------*/ /** * @name SchemaDotOrgItemscope */ public function SchemaDotOrgItemscope() { $self = $this->owner; if ($self->SchemaDotOrgType != 'off') { return ' itemscope itemtype="http://schema.org/' . $self->SchemaDotOrgType . '" '; } } /** * @name SchemaDotOrgMetadata */ public function SchemaDotOrgMetadata() { $self = $this->owner; if ($self->SchemaDotOrgType != 'off') { // variables $config = SiteConfig::current_site_config(); $metadata = $self->MarkupHeader('Schema.org'); //// Title $title = ($self->SchemaDotOrgTitle) ? $self->SchemaDotOrgTitle : $self->Title; $metadata .= $self->MarkupSchema('name', $title, true, $config->Charset); //// Description $description = ($self->SchemaDotOrgDescription) ? $self->SchemaDotOrgDescription : $self->GenerateDescription(); $metadata .= $self->MarkupSchema('description', $description, true, $config->Charset); //// Image if ($self->SchemaDotOrgImage()->exists()) { $metadata .= $self->MarkupSchema('image', $self->SchemaDotOrgImage()->getAbsoluteURL(), false); } // return return $metadata; } else { return false; } } /* Class Methods ------------------------------------------------------------------------------*/ // none } |