/** * Retrieve the correct error page for the current multisite instance. * @param integer * @param SS_HTTPRequest * @throws SS_HTTPResponse_Exception */ public function onBeforeHTTPError($code, $request) { $errorPage = ErrorPage::get()->filter(array('ErrorCode' => $code, 'SiteID' => Multisites::inst()->getCurrentSiteId()))->first(); if ($errorPage) { Requirements::clear(); Requirements::clear_combined_files(); $response = ModelAsController::controller_for($errorPage)->handleRequest($request, DataModel::inst()); throw new SS_HTTPResponse_Exception($response, $code); } }
/** * Get a {@link SS_HTTPResponse} to response to a HTTP error code if an * {@link ErrorPage} for that code is present. * * @param int $statusCode * * @return SS_HTTPResponse */ public static function response_for($statusCode) { // first attempt to dynamically generate the error page if ($errorPage = DataObject::get_one('ErrorPage', "\"ErrorPage\".\"ErrorCode\" = {$statusCode}")) { Requirements::clear(); Requirements::clear_combined_files(); return ModelAsController::controller_for($errorPage)->handleRequest(new SS_HTTPRequest('GET', ''), DataModel::inst()); } // then fall back on a cached version $cachedPath = self::get_filepath_for_errorcode($statusCode, class_exists('Translatable') ? Translatable::get_current_locale() : null); if (file_exists($cachedPath)) { $response = new SS_HTTPResponse(); $response->setStatusCode($statusCode); $response->setBody(file_get_contents($cachedPath)); return $response; } }
/** * Get a {@link SS_HTTPResponse} to response to a HTTP error code if an * {@link ErrorPage} for that code is present. First tries to serve it * through the standard SilverStripe request method. Falls back to a static * file generated when the user hit's save and publish in the CMS * * @param int $statusCode * @return SS_HTTPResponse */ public static function response_for($statusCode) { // first attempt to dynamically generate the error page $errorPage = ErrorPage::get()->filter(array("ErrorCode" => $statusCode))->first(); if ($errorPage) { Requirements::clear(); Requirements::clear_combined_files(); return ModelAsController::controller_for($errorPage)->handleRequest(new SS_HTTPRequest('GET', ''), DataModel::inst()); } // then fall back on a cached version $content = self::get_content_for_errorcode($statusCode); if ($content) { $response = new SS_HTTPResponse(); $response->setStatusCode($statusCode); $response->setBody($content); return $response; } }
/** * Display an error page on invalid request. * * @parameter <{ERROR_CODE}> integer * @parameter <{ERROR_MESSAGE}> string */ public function httpError($code, $message = null) { // Determine the error page for the given status code. $errorPages = ClassInfo::exists('SiteTree') ? ErrorPage::get()->filter('ErrorCode', $code) : null; // Allow extension customisation. $this->extend('updateErrorPages', $errorPages); // Retrieve the error page response. if ($errorPages && ($errorPage = $errorPages->first())) { Requirements::clear(); Requirements::clear_combined_files(); $response = ModelAsController::controller_for($errorPage)->handleRequest(new SS_HTTPRequest('GET', ''), DataModel::inst()); throw new SS_HTTPResponse_Exception($response, $code); } else { if ($errorPages && file_exists($cachedPage = ErrorPage::get_filepath_for_errorcode($code, class_exists('Translatable') ? Translatable::get_current_locale() : null))) { $response = new SS_HTTPResponse(); $response->setStatusCode($code); $response->setBody(file_get_contents($cachedPage)); throw new SS_HTTPResponse_Exception($response, $code); } else { return parent::httpError($code, $message); } } }
/** * Bootstraps the module, adds JavaScript */ public function init() { parent::init(); Requirements::clear(); Requirements::css(KICKASSETS_DIR . '/javascript/build/main.css'); Requirements::add_i18n_javascript(KICKASSETS_DIR . '/lang'); $js = $this->config()->js_file; Requirements::javascript(KICKASSETS_DIR . "/javascript/build/{$js}"); Requirements::clear_combined_files(); }
function __construct($controller, $name, $fields, $validator, $readonly, $dataObject) { $this->dataObject = $dataObject; Requirements::clear(); Requirements::clear_combined_files(); Requirements::javascript(THIRDPARTY_DIR.'/jquery/jquery.js'); Requirements::javascript(THIRDPARTY_DIR.'/jquery-livequery/jquery.livequery.js'); Requirements::block(THIRDPARTY_DIR.'/behaviour.js'); Requirements::block(SAPPHIRE_DIR.'/javascript/Validator.js'); Requirements::block(THIRDPARTY_DIR.'/prototype.js'); Requirements::clear(THIRDPARTY_DIR.'/behavior.js'); Requirements::block(THIRDPARTY_DIR.'/behavior.js'); Requirements::block(SAPPHIRE_DIR.'/javascript/ComplexTableField.js'); Requirements::block(SAPPHIRE_DIR.'/javascript/TableListField.js'); Requirements::block(THIRDPARTY_DIR.'/greybox/greybox.js'); Requirements::block(THIRDPARTY_DIR.'/greybox/AmiJS.js'); Requirements::block(THIRDPARTY_DIR.'/greybox/greybox.css'); Requirements::block(SAPPHIRE_DIR.'/css/TableListField.css'); Requirements::block(SAPPHIRE_DIR.'/css/ComplexTableField.css'); Requirements::block(ASSETS_DIR.'/leftandmain.js'); Requirements::block(ASSETS_DIR.'/base.js'); Requirements::block(SAPPHIRE_DIR.'/javascript/lang/en_US.js'); Requirements::css(SAPPHIRE_DIR . '/css/Form.css'); Requirements::css(CMS_DIR . '/css/typography.css'); Requirements::css(CMS_DIR . '/css/cms_right.css'); Requirements::css('dataobject_manager/css/dataobject_manager.css'); if($this->dataObject->hasMethod('getRequirementsForPopup')) { $this->dataObject->getRequirementsForPopup(); } Requirements::javascript('dataobject_manager/javascript/dataobjectmanager_popup.js'); $actions = new FieldSet(); if(!$readonly) { $actions->push( $saveAction = new FormAction("saveComplexTableField", _t('DataObjectManager.SAVE','Save')) ); $saveAction->addExtraClass('save'); } parent::__construct($controller, $name, $fields, $actions, $validator); if ($this->validator instanceof Validator) { $this->validator->setJavascriptValidationHandler('none'); } else { $this->unsetValidator(); } if($this->getNestedDOMs()) { Requirements::javascript(THIRDPARTY_DIR.'/jquery-livequery/jquery.livequery.js'); Requirements::javascript('dataobject_manager/javascript/dom_jquery_ui.js'); Requirements::javascript('dataobject_manager/javascript/tooltip.js'); Requirements::javascript('dataobject_manager/javascript/dataobject_manager.js'); } $this->NestedController = $this->controller->isNested; }
/** * This is a bit of a hack, as it alters the Requirements * statics globally for all tests. * * @todo Refactor Requirements to work on test instance level */ protected function setupCombinedRequirements() { Requirements::clear(); // clearing all previously generated requirements (just in case) Requirements::clear_combined_files(); Requirements::delete_combined_files('RequirementsTest_bc.js'); // require files normally (e.g. called from a FormField instance) Requirements::javascript(SAPPHIRE_DIR . '/tests/forms/RequirementsTest_a.js'); Requirements::javascript(SAPPHIRE_DIR . '/tests/forms/RequirementsTest_b.js'); Requirements::javascript(SAPPHIRE_DIR . '/tests/forms/RequirementsTest_c.js'); // require two of those files as combined includes Requirements::combine_files( 'RequirementsTest_bc.js', array( SAPPHIRE_DIR . '/tests/forms/RequirementsTest_b.js', SAPPHIRE_DIR . '/tests/forms/RequirementsTest_c.js' ) ); }