mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
FIX extra_requirements to accept non associative arrays.
Added unit tests for extra_requirements_js and extra_requirements_css. Fixed YAML documentation to indicate list syntax.
This commit is contained in:
parent
1cebfc5d51
commit
db85f3ca16
@ -378,29 +378,58 @@ class LeftAndMain extends Controller implements PermissionProvider {
|
||||
$ie = isset($_SERVER['HTTP_USER_AGENT']) ? strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') : false;
|
||||
if($ie) {
|
||||
$version = substr($_SERVER['HTTP_USER_AGENT'], $ie + 5, 3);
|
||||
if($version == 7) Requirements::css(FRAMEWORK_ADMIN_DIR . '/css/ie7.css');
|
||||
else if($version == 8) Requirements::css(FRAMEWORK_ADMIN_DIR . '/css/ie8.css');
|
||||
|
||||
if($version == 7) {
|
||||
Requirements::css(FRAMEWORK_ADMIN_DIR . '/css/ie7.css');
|
||||
} else if($version == 8) {
|
||||
Requirements::css(FRAMEWORK_ADMIN_DIR . '/css/ie8.css');
|
||||
}
|
||||
}
|
||||
|
||||
// Custom requirements
|
||||
$extraJs = $this->stat('extra_requirements_javascript');
|
||||
|
||||
if($extraJs) foreach($extraJs as $file => $config) {
|
||||
Requirements::javascript($file);
|
||||
if($extraJs) {
|
||||
foreach($extraJs as $file => $config) {
|
||||
if(is_numeric($file)) {
|
||||
$file = $config;
|
||||
}
|
||||
|
||||
Requirements::javascript($file);
|
||||
}
|
||||
}
|
||||
|
||||
$extraCss = $this->stat('extra_requirements_css');
|
||||
if($extraCss) foreach($extraCss as $file => $config) {
|
||||
Requirements::css($file, isset($config['media']) ? $config['media'] : null);
|
||||
|
||||
if($extraCss) {
|
||||
foreach($extraCss as $file => $config) {
|
||||
if(is_numeric($file)) {
|
||||
$file = $config;
|
||||
$config = array();
|
||||
}
|
||||
|
||||
Requirements::css($file, isset($config['media']) ? $config['media'] : null);
|
||||
}
|
||||
}
|
||||
|
||||
$extraThemedCss = $this->stat('extra_requirements_themedCss');
|
||||
if($extraThemedCss) foreach ($extraThemedCss as $file => $config) {
|
||||
Requirements::themedCSS($file, isset($config['media']) ? $config['media'] : null);
|
||||
|
||||
if($extraThemedCss) {
|
||||
foreach ($extraThemedCss as $file => $config) {
|
||||
if(is_numeric($file)) {
|
||||
$file = $config;
|
||||
$config = array();
|
||||
}
|
||||
|
||||
Requirements::themedCSS($file, isset($config['media']) ? $config['media'] : null);
|
||||
}
|
||||
}
|
||||
|
||||
$dummy = null;
|
||||
$this->extend('init', $dummy);
|
||||
|
||||
// The user's theme shouldn't affect the CMS, if, for example, they have replaced TableListField.ss or Form.ss.
|
||||
// The user's theme shouldn't affect the CMS, if, for example, they have
|
||||
// replaced TableListField.ss or Form.ss.
|
||||
Config::inst()->update('SSViewer', 'theme_enabled', false);
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package cms
|
||||
* @package framework
|
||||
* @subpackage tests
|
||||
*/
|
||||
class LeftAndMainTest extends FunctionalTest {
|
||||
@ -9,14 +10,49 @@ class LeftAndMainTest extends FunctionalTest {
|
||||
|
||||
protected $extraDataObjects = array('LeftAndMainTest_Object');
|
||||
|
||||
protected $backupCss, $backupJs, $backupCombined;
|
||||
|
||||
public function setUp() {
|
||||
parent::setUp();
|
||||
|
||||
// @todo fix controller stack problems and re-activate
|
||||
//$this->autoFollowRedirection = false;
|
||||
CMSMenu::populate_menu();
|
||||
|
||||
$this->backupCss = Config::inst()->get('LeftAndMain', 'extra_requirements_css');
|
||||
$this->backupJs = Config::inst()->get('LeftAndMain', 'extra_requirements_javascript');
|
||||
$this->backupCombined = Requirements::get_combined_files_enabled();
|
||||
|
||||
Config::inst()->update('LeftAndMain', 'extra_requirements_css', array(
|
||||
FRAMEWORK_DIR . '/tests/assets/LeftAndMainTest.css'
|
||||
));
|
||||
|
||||
Config::inst()->update('LeftAndMain', 'extra_requirements_javascript', array(
|
||||
FRAMEWORK_DIR . '/tests/assets/LeftAndMainTest.js'
|
||||
));
|
||||
|
||||
Requirements::set_combined_files_enabled(false);
|
||||
}
|
||||
|
||||
public function tearDown() {
|
||||
parent::tearDown();
|
||||
|
||||
Config::inst()->update('LeftAndMain', 'extra_requirements_css', $this->backupCss);
|
||||
Config::inst()->update('LeftAndMain', 'extra_requirements_javascript', $this->backupJs);
|
||||
|
||||
Requirements::set_combined_files_enabled($this->backupCombined);
|
||||
}
|
||||
|
||||
|
||||
public function testExtraCssAndJavascript() {
|
||||
$admin = $this->objFromFixture('Member', 'admin');
|
||||
$this->session()->inst_set('loggedInAs', $admin->ID);
|
||||
$response = $this->get('LeftAndMainTest_Controller');
|
||||
|
||||
$this->assertRegExp('/tests\/assets\/LeftAndMainTest.css/i', $response->getBody(), "body should contain custom css");
|
||||
$this->assertRegExp('/tests\/assets\/LeftAndMainTest.js/i', $response->getBody(), "body should contain custom js");
|
||||
}
|
||||
|
||||
/**
|
||||
* Note: This test would typically rely on SiteTree and CMSMain, but is mocked by
|
||||
* LeftAndMain_Controller and LeftAndMain_Object here to remove this dependency.
|
||||
@ -158,15 +194,22 @@ class LeftAndMainTest extends FunctionalTest {
|
||||
|
||||
$this->session()->inst_set('loggedInAs', null);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @package framework
|
||||
* @subpackage tests
|
||||
*/
|
||||
class LeftAndMainTest_Controller extends LeftAndMain implements TestOnly {
|
||||
protected $template = 'BlankPage';
|
||||
|
||||
private static $tree_class = 'LeftAndMainTest_Object';
|
||||
}
|
||||
|
||||
/**
|
||||
* @package framework
|
||||
* @subpackage tests
|
||||
*/
|
||||
class LeftAndMainTest_Object extends DataObject implements TestOnly {
|
||||
|
||||
private static $db = array(
|
||||
|
@ -67,7 +67,7 @@ Load the new CSS file into the CMS, by setting the `LeftAndMain.extra_requiremen
|
||||
:::yml
|
||||
LeftAndMain:
|
||||
extra_requirements_css:
|
||||
mysite/css/BookmarkedPages.css:
|
||||
- mysite/css/BookmarkedPages.css:
|
||||
|
||||
## Create a "bookmark" flag on pages ##
|
||||
|
||||
|
@ -69,7 +69,7 @@ to the `LeftAndMain.extra_requirements_javascript` [configuration value](/topics
|
||||
:::yml
|
||||
LeftAndMain
|
||||
extra_requirements_javascript:
|
||||
mysite/javascript/MyLeftAndMain.Preview.js:
|
||||
- mysite/javascript/MyLeftAndMain.Preview.js:
|
||||
|
||||
In order to find out which configuration values are available, the source code
|
||||
is your best reference at the moment - have a look in `framework/admin/javascript/LeftAndMain.Preview.js`.
|
||||
|
0
tests/assets/LeftAndMainTest.css
Normal file
0
tests/assets/LeftAndMainTest.css
Normal file
0
tests/assets/LeftAndMainTest.js
Normal file
0
tests/assets/LeftAndMainTest.js
Normal file
Loading…
Reference in New Issue
Block a user