'Boolean', 'PageJavaScript' => 'Text', 'PageCSS' => 'Text', 'IncludeShadowBox' => 'Boolean', 'BootstrapConverted' => 'Boolean' ); private static $has_one = array( ); public function InPast($fieldname) { return $this->$fieldname < date('Y-m-d H:i:s'); } public function InFuture($fieldname) { return $this->$fieldname > date('Y-m-d H:i:s'); } public function TimeRightNow() { return date('Y-m-d H:i:s'); } function getCMSFields() { $fields = parent::getCMSFields(); $fields->addFieldToTab('Root.Settings', new TextField ('PageCSS','Custom CSS File For This Page (must be in CSS directory)')); $fields->addFieldToTab('Root.Settings', new CheckboxField ('IncludeJquery','Include JQuery In This Page')); $fields->addFieldToTab('Root.Settings', new CheckboxField ('IncludeShadowBox','Include ShadowBox Javascript and CSS')); $fields->addFieldToTab('Root.Settings', new TextareaField ('PageJavaScript','Custom JavaScript For This Page')); $fields->addFieldToTab('Root.Settings', new CheckboxField ('BootstrapConverted','Converted To Bootstrap')); return $fields; } public static function SchedShortCodeHandler($arguments,$caption = null,$parser = null) { $customise = array(); /*** SET DEFAULTS ***/ $customise['schedule'] = 'http://openstackconferencespring2012.sched.org/'; //overide the defaults with the arguments supplied $customise = array_merge($customise,$arguments); //get our Sched template $template = new SSViewer('Sched'); //return the customized template return $template->process(new ArrayData($customise)); } public static function ExternalLinkShortCodeHandler($arguments,$caption = null,$parser = null) { // first things first, if we dont have a url, then we don't need to // go any further if (empty($arguments['url'])) { return; } $customise = array(); /*** SET DEFAULTS ***/ $customise['category'] = 'Outbound Links'; //if no name is provided as an option, we'll use the URL instead $customise['name'] = $arguments['url']; $customise['newwindow'] = FALSE; $customise['cssclass'] = FALSE; //set the caption $customise['caption'] = $caption ? Convert::raw2xml($caption) : false; //override the defaults with the arguments supplied $customise = array_merge($customise,$arguments); //get our ExternalLink template $template = new SSViewer('ExternalLinkShortCode'); //return the customised template return $template->process(new ArrayData($customise)); } function requireDefaultRecords() { parent::requireDefaultRecords(); // create a 400 ErrorPage if ($this->class == 'ErrorPage') { // Ensure that an assets path exists before we do any error page creation if(!file_exists(ASSETS_PATH)) { mkdir(ASSETS_PATH); } $ErrorPage400 = DataObject::get_one('ErrorPage', "\"ErrorCode\" = '400'"); $ErrorPage400Exists = ($ErrorPage400 && $ErrorPage400->exists()) ? true : false; $ErrorPage400Path = ErrorPage::get_filepath_for_errorcode(400); if(!($ErrorPage400Exists && file_exists($ErrorPage400Path))) { if(!$ErrorPage400Exists) { $ErrorPage400 = new ErrorPage(); $ErrorPage400->ErrorCode = 400; $ErrorPage400->Title = _t('ErrorPage.ERRORPAGE400TITLE', '400 Error'); $ErrorPage400->Content = _t( 'ErrorPage.ERRORPAGE400CONTENT', '

An error occurred while processing your request.

' ); $ErrorPage400->Status = 'New page'; $ErrorPage400->write(); $ErrorPage400->publish('Stage', 'Live'); } // Ensure a static error page is created from latest error page content $response = Director::test(Director::makeRelative($ErrorPage400->Link())); if($fh = fopen($ErrorPage400Path, 'w')) { $written = fwrite($fh, $response->getBody()); fclose($fh); } if($written) { DB::alteration_message('400 error page created', 'created'); } else { DB::alteration_message(sprintf( '400 error page could not be created at %s. Please check permissions', $ErrorPage400Path), 'error'); } } $ErrorPage412 = DataObject::get_one('ErrorPage', "\"ErrorCode\" = '412'"); $ErrorPage412Exists = ($ErrorPage412 && $ErrorPage412->exists()) ? true : false; $ErrorPage412Path = ErrorPage::get_filepath_for_errorcode(412); if(!($ErrorPage412Exists && file_exists($ErrorPage412Path))) { if(!$ErrorPage412Exists) { $ErrorPage412 = new ErrorPage(); $ErrorPage412->ErrorCode = 412; $ErrorPage412->Title = _t('ErrorPage.ERRORPAGE412TITLE', '412 Error'); $ErrorPage412->Content = _t( 'ErrorPage.ERRORPAGE412CONTENT', '

Your Session has expired!.

' ); $ErrorPage412->Status = 'New page'; $ErrorPage412->write(); $ErrorPage412->publish('Stage', 'Live'); } // Ensure a static error page is created from latest error page content $response = Director::test(Director::makeRelative($ErrorPage412->Link())); if($fh = fopen($ErrorPage412Path, 'w')) { $written = fwrite($fh, $response->getBody()); fclose($fh); } if($written) { DB::alteration_message('412 error page created', 'created'); } else { DB::alteration_message(sprintf( '412 error page could not be created at %s. Please check permissions', $ErrorPage412Path), 'error'); } } } } } class Page_Controller extends ContentController { /** * An array of actions that can be accessed via a request. Each array element should be an action name, and the * permissions or conditions required to allow the user to access it. * * * array ( * 'action', // anyone can access this action * 'action' => true, // same as above * 'action' => 'ADMIN', // you must have ADMIN permissions to access this action * 'action' => '->checkAction' // you can only access this action if $this->checkAction() returns true * ); * * * @var array */ private static $allowed_actions = array ( 'logout', 'FeedbackForm', ); protected function CustomScripts(){ Requirements::javascript("themes/openstack/javascript/jquery.ticker.js"); Requirements::javascript("themes/openstack/javascript/jquery.tools.min.js"); Requirements::javascript("themes/openstack/javascript/jquery.colorbox-min.js"); Requirements::javascript("themes/openstack/javascript/jcarousellite.min.js"); Requirements::javascript("themes/openstack/javascript/jcarousellite.min.js"); Requirements::javascript("themes/openstack/javascript/bootstrap.min.js"); Requirements::javascript("themes/openstack/javascript/navigation.js"); $filename = 'themes/openstack/javascript/'.$this->URLSegment.'.js'; if (file_exists(Director::baseFolder().'/'.$filename)) { Requirements::javascript($filename); } $filename = 'themes/openstack/css/'.$this->URLSegment.'.css'; if (file_exists(Director::baseFolder().'/'.$filename)) { Requirements::css($filename); } $page_id = $this->ID; if(!is_null($page_id)){ $page = Page::get()->byID($page_id); if($page && !empty($page->PageCSS)){ $custom_css_file = THEMES_DIR ."/openstack/css/{$page->PageCSS}"; if(@file_exists($custom_css_file)) Requirements::css($custom_css_file); } } } public function init() { parent::init(); // Summit Landing Page Redirects // Looks to see if ?source is set and redirects to either English or Chinese landing page // based on the source if(isset($this->request)) $getVars = $this->request->getVars(); $chineseLangCampaigns = array("o2", "o4", "o6", "o8", "o17", "o18", "o22"); /* if(isset($getVars['source'])) { if(in_array($getVars['source'], $chineseLangCampaigns)) { // Chinese language landing page $this->redirect('/summit/hkc'); } else { // English language landing page $this->redirect('/summit/hk'); } } */ Requirements::block(SAPPHIRE_DIR . "/javascript/jquery_improvements.js"); Requirements::block(FRAMEWORK_DIR . '/thirdparty/jquery/jquery.js'); Requirements::block(FRAMEWORK_DIR . '/thirdparty/jquery/jquery.min.js'); if(Director::isLive()) { Requirements::javascript('themes/openstack/javascript/jquery.min.js'); } else{ Requirements::javascript('themes/openstack/javascript/jquery.js'); } Requirements::javascript('themes/openstack/javascript/jquery-migrate-1.2.1.min.js'); Requirements::javascript("themes/openstack/javascript/jquery.cookie.js"); Requirements::css("themes/openstack/javascript/shadowbox/shadowbox.css"); Requirements::javascript("themes/openstack/javascript/shadowbox/shadowbox.js"); if(Director::get_current_page()->IncludeShadowBox){ Requirements::customScript("Shadowbox.init();"); } Requirements::javascript('themes/openstack/javascript/filetracking.jquery.js'); Requirements::customScript("jQuery(document).ready(function($) { var d = new Date(); var user_date = d.getFullYear()+'-'+(d.getMonth()+1)+'-'+d.getDate(); $.cookie('user_date',user_date , { expires: 360, path: '/' }); $('body').filetracking(); $('.outbound-link').live('click',function(event){ var href = $(this).attr('href'); recordOutboundLink(this,'Outbound Links',href); event.preventDefault(); event.stopPropagation() return false; }); });"); $this->CustomScripts(); } public function DateSortedChildren(){ $children = $this->Children(); if(!$children) return null; $children->sort('EventStartDate', 'DESC'); return $children; } // Feedback form in site footer function FeedbackForm() { $FeedbackForm = new feedbackForm($this, 'FeedbackForm'); // Since we are not handling sensitive data with logged in users, // it's fine to disable the CSFR security token. $FeedbackForm->enableSecurityToken(); return $FeedbackForm; } // Simple methods used to get & set messages that display on the page. public function setMessage($type, $message) { Session::set('Message', array( 'MessageType' => $type, 'Message' => $message )); } public function getMessage() { if($message = Session::get('Message')){ Session::clear('Message'); $array = new ArrayData($message); return $array->renderWith('Message'); } } public function logout() { Security::logout(true); } public function CurrentProtocol() { return Director::protocol(); } public function EncodedLink() { return urlencode($this->link()); } }