Webylon 3.2 API Docs
  • Package
  • Class
  • Tree
  • Deprecated
  • Download
Version: current
  • 3.2
  • 3.1

Packages

  • 1c
    • exchange
      • catalog
  • auth
  • Booking
  • building
    • company
  • cart
    • shipping
    • steppedcheckout
  • Catalog
    • monument
  • cms
    • assets
    • batchaction
    • batchactions
    • bulkloading
    • comments
    • content
    • core
    • export
    • newsletter
    • publishers
    • reports
    • security
    • tasks
  • Dashboard
  • DataObjectManager
  • event
  • faq
  • forms
    • actions
    • core
    • fields-basic
    • fields-dataless
    • fields-datetime
    • fields-files
    • fields-formatted
    • fields-formattedinput
    • fields-relational
    • fields-structural
    • transformations
    • validators
  • googlesitemaps
  • guestbook
  • installer
  • newsletter
  • None
  • photo
    • gallery
  • PHP
  • polls
  • recaptcha
  • sapphire
    • api
    • bulkloading
    • control
    • core
    • cron
    • dev
    • email
    • fields-formattedinput
    • filesystem
    • formatters
    • forms
    • i18n
    • integration
    • misc
    • model
    • parsers
    • search
    • security
    • tasks
    • testing
    • tools
    • validation
    • view
    • widgets
  • seo
    • open
      • graph
  • sfDateTimePlugin
  • spamprotection
  • stealth
    • captha
  • subsites
  • userform
    • pagetypes
  • userforms
  • webylon
  • widgets

Classes

  • BaseObjectCategory
  • BookingAdminPage
  • BookingPage
  • ErrorPage
  • ErrorPage_Controller
  • MediawebPage
  • Notifications
  • Page
  • Room
  • RoomCatalog
  • SiteConfig
  • SiteTree
  • SubsitesSelectorPage
  • SubsitesVirtualPage
  • SubsitesVirtualPage_Controller
  • VideoBankPage
  • VirtualPage
  • VirtualPage_Controller
  • VirtualProduct_Controller

Interfaces

  • HiddenClass
  1 <?php
  2 class SubsitesVirtualPage extends VirtualPage {
  3     static $db = array(
  4         'CustomMetaTitle' => 'Varchar(255)',
  5         'CustomMetaKeywords' => 'Varchar(255)',
  6         'CustomMetaDescription' => 'Text',
  7         'CustomExtraMeta' => 'HTMLText'
  8     );
  9     
 10     function getCMSFields() {
 11         $fields = parent::getCMSFields();
 12         
 13         $subsites = DataObject::get('Subsite');
 14         if(!$subsites) $subsites = new DataObjectSet();
 15         $subsites->insertFirst(new ArrayData(array('Title' => 'Main site', 'ID' => 0)));
 16 
 17         $subsiteSelectionField = new DropdownField(
 18             "CopyContentFromID_SubsiteID", 
 19             "Subsite", 
 20             $subsites->toDropdownMap('ID', 'Title'),
 21             ($this->CopyContentFromID) ? $this->CopyContentFrom()->SubsiteID : Session::get('SubsiteID')
 22         );
 23         $fields->addFieldToTab(
 24             'Root.Content.Main',
 25             $subsiteSelectionField,
 26             'CopyContentFromID'
 27         );
 28         
 29         // Setup the linking to the original page.
 30         $pageSelectionField = new SubsitesTreeDropdownField(
 31             "CopyContentFromID", 
 32             _t('VirtualPage.CHOOSE', "Choose a page to link to"), 
 33             "SiteTree",
 34             "ID",
 35             "MenuTitle"
 36         );
 37                 
 38         $pageSelectionField->setFilterFunction(create_function('$item', 'return !($item instanceof VirtualPage);'));
 39         
 40         if(Controller::has_curr() && Controller::curr()->getRequest()) {
 41             $subsiteID = Controller::curr()->getRequest()->getVar('CopyContentFromID_SubsiteID');
 42             $pageSelectionField->setSubsiteID($subsiteID);
 43         }
 44         $fields->replaceField('CopyContentFromID', $pageSelectionField);
 45         
 46         // Create links back to the original object in the CMS
 47         if($this->CopyContentFromID) {
 48             $editLink = "admin/show/$this->CopyContentFromID/?SubsiteID=" . $this->CopyContentFrom()->SubsiteID;
 49             $linkToContent = "
 50                 <a class=\"cmsEditlink\" href=\"$editLink\">" . 
 51                 _t('VirtualPage.EDITCONTENT', 'Click here to edit the content') . 
 52                 "</a>";
 53             $fields->removeByName("VirtualPageContentLinkLabel");
 54             $fields->addFieldToTab(
 55                 "Root.Content.Main", 
 56                 $linkToContentLabelField = new LabelField('VirtualPageContentLinkLabel', $linkToContent),
 57                 'Title'
 58             );
 59             $linkToContentLabelField->setAllowHTML(true);
 60         }
 61         
 62         $fields->addFieldToTab('Root.Content.Metadata', new TextField('CustomMetaTitle', 'Title (overrides inherited value from the source)'), 'MetaTitle');
 63         $fields->addFieldToTab('Root.Content.Metadata', new TextareaField('CustomMetaKeywords', 'Keywords (overrides inherited value from the source)'), 'MetaKeywords');
 64         $fields->addFieldToTab('Root.Content.Metadata', new TextareaField('CustomMetaDescription', 'Description (overrides inherited value from the source)'), 'MetaDescription');
 65         $fields->addFieldToTab('Root.Content.Metadata', new TextField('CustomExtraMeta', 'Custom Meta Tags (overrides inherited value from the source)'), 'ExtraMeta');
 66         
 67         return $fields;
 68     }
 69     
 70     function getVirtualFields() {
 71         $fields = parent::getVirtualFields();
 72         foreach($fields as $k => $v) {
 73             if($v == 'SubsiteID') unset($fields[$k]);
 74         }
 75         
 76         foreach(self::$db as $field => $type) if (in_array($field, $fields)) unset($fields[array_search($field, $fields)]);
 77 
 78         return $fields;
 79     }
 80     
 81     function syncLinkTracking() {
 82         $oldState = Subsite::$disable_subsite_filter;
 83         Subsite::$disable_subsite_filter = true;
 84         if ($this->CopyContentFromID) $this->HasBrokenLink = DataObject::get_by_id('SiteTree', $this->CopyContentFromID) ? false : true;
 85         Subsite::$disable_subsite_filter = $oldState;
 86     }
 87 
 88     function onBeforeWrite() {
 89         parent::onBeforeWrite();
 90     
 91         if($this->CustomMetaTitle) $this->MetaTitle = $this->CustomMetaTitle;
 92         else {
 93             $this->MetaTitle = $this->ContentSource()->MetaTitle ? $this->ContentSource()->MetaTitle : $this->MetaTitle; 
 94         }
 95         if($this->CustomMetaKeywords) $this->MetaKeywords = $this->CustomMetaKeywords;
 96         else {
 97             $this->MetaKeywords = $this->ContentSource()->MetaKeywords ? $this->ContentSource()->MetaKeywords : $this->MetaKeywords; 
 98         }
 99         if($this->CustomMetaDescription) $this->MetaDescription = $this->CustomMetaDescription;
100         else {
101             $this->MetaDescription = $this->ContentSource()->MetaDescription ? $this->ContentSource()->MetaDescription : $this->MetaDescription; 
102         }
103         if($this->CustomExtraMeta) $this->ExtraMeta = $this->CustomExtraMeta;
104         else {
105             $this->ExtraMeta = $this->ContentSource()->ExtraMeta ? $this->ContentSource()->ExtraMeta : $this->ExtraMeta; 
106         }
107     }
108 }
109 
110 class SubsitesVirtualPage_Controller extends VirtualPage_Controller {
111     
112     function reloadContent() {
113         $this->failover->nextWriteDoesntCustomise();
114         $this->failover->copyFrom($this->failover->CopyContentFrom());
115         $this->failover->nextWriteDoesntCustomise();
116         $this->failover->write();
117         return;
118     }
119     
120     function init(){
121         Subsite::$disable_subsite_filter = true;
122         
123         parent::init();
124         
125         Subsite::$disable_subsite_filter = false;
126     }
127 }
128 ?>
129 
[Raise a SilverStripe Framework issue/bug](https://github.com/silverstripe/silverstripe-framework/issues/new)
- [Raise a SilverStripe CMS issue/bug](https://github.com/silverstripe/silverstripe-cms/issues/new)
- Please use the Silverstripe Forums to ask development related questions. -
Webylon 3.2 API Docs API documentation generated by ApiGen 2.8.0