mirror of
https://github.com/silverstripe/silverstripe-cms
synced 2024-10-22 08:05:56 +02:00
Merge pull request #816 from kinglozzer/798-custom-page-icons
Move CMSMain->generatePageIconsCss() into a LeftAndMain extension (fixes #798)
This commit is contained in:
commit
9a4a5d909d
3
_config/config.yml
Normal file
3
_config/config.yml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
LeftAndMain:
|
||||||
|
extensions:
|
||||||
|
- LeftAndMainPageIconsExtension
|
@ -444,47 +444,6 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
|
|||||||
return $json;
|
return $json;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Include CSS for page icons. We're not using the JSTree 'types' option
|
|
||||||
* because it causes too much performance overhead just to add some icons.
|
|
||||||
*
|
|
||||||
* @return String CSS
|
|
||||||
*/
|
|
||||||
public function generatePageIconsCss() {
|
|
||||||
$css = '';
|
|
||||||
|
|
||||||
$classes = ClassInfo::subclassesFor('SiteTree');
|
|
||||||
foreach($classes as $class) {
|
|
||||||
$obj = singleton($class);
|
|
||||||
$iconSpec = $obj->stat('icon');
|
|
||||||
|
|
||||||
if(!$iconSpec) continue;
|
|
||||||
|
|
||||||
// Legacy support: We no longer need separate icon definitions for folders etc.
|
|
||||||
$iconFile = (is_array($iconSpec)) ? $iconSpec[0] : $iconSpec;
|
|
||||||
|
|
||||||
// Legacy support: Add file extension if none exists
|
|
||||||
if(!pathinfo($iconFile, PATHINFO_EXTENSION)) $iconFile .= '-file.gif';
|
|
||||||
|
|
||||||
$iconPathInfo = pathinfo($iconFile);
|
|
||||||
|
|
||||||
// Base filename
|
|
||||||
$baseFilename = $iconPathInfo['dirname'] . '/' . $iconPathInfo['filename'];
|
|
||||||
$fileExtension = $iconPathInfo['extension'];
|
|
||||||
|
|
||||||
$selector = ".page-icon.class-$class, li.class-$class > a .jstree-pageicon";
|
|
||||||
|
|
||||||
if(Director::fileExists($iconFile)) {
|
|
||||||
$css .= "$selector { background: transparent url('$iconFile') 0 0 no-repeat; }\n";
|
|
||||||
} else {
|
|
||||||
// Support for more sophisticated rules, e.g. sprited icons
|
|
||||||
$css .= "$selector { $iconFile }\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $css;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Populates an array of classes in the CMS
|
* Populates an array of classes in the CMS
|
||||||
* which allows the user to change the page type.
|
* which allows the user to change the page type.
|
||||||
|
55
code/controllers/LeftAndMainPageIconsExtension.php
Normal file
55
code/controllers/LeftAndMainPageIconsExtension.php
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Extension to include custom page icons
|
||||||
|
*
|
||||||
|
* @package cms
|
||||||
|
* @subpackage controller
|
||||||
|
*/
|
||||||
|
class LeftAndMainPageIconsExtension extends Extension {
|
||||||
|
|
||||||
|
public function init() {
|
||||||
|
Requirements::customCSS($this->generatePageIconsCss());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Include CSS for page icons. We're not using the JSTree 'types' option
|
||||||
|
* because it causes too much performance overhead just to add some icons.
|
||||||
|
*
|
||||||
|
* @return String CSS
|
||||||
|
*/
|
||||||
|
public function generatePageIconsCss() {
|
||||||
|
$css = '';
|
||||||
|
|
||||||
|
$classes = ClassInfo::subclassesFor('SiteTree');
|
||||||
|
foreach($classes as $class) {
|
||||||
|
$obj = singleton($class);
|
||||||
|
$iconSpec = $obj->stat('icon');
|
||||||
|
|
||||||
|
if(!$iconSpec) continue;
|
||||||
|
|
||||||
|
// Legacy support: We no longer need separate icon definitions for folders etc.
|
||||||
|
$iconFile = (is_array($iconSpec)) ? $iconSpec[0] : $iconSpec;
|
||||||
|
|
||||||
|
// Legacy support: Add file extension if none exists
|
||||||
|
if(!pathinfo($iconFile, PATHINFO_EXTENSION)) $iconFile .= '-file.gif';
|
||||||
|
|
||||||
|
$iconPathInfo = pathinfo($iconFile);
|
||||||
|
|
||||||
|
// Base filename
|
||||||
|
$baseFilename = $iconPathInfo['dirname'] . '/' . $iconPathInfo['filename'];
|
||||||
|
$fileExtension = $iconPathInfo['extension'];
|
||||||
|
|
||||||
|
$selector = ".page-icon.class-$class, li.class-$class > a .jstree-pageicon";
|
||||||
|
|
||||||
|
if(Director::fileExists($iconFile)) {
|
||||||
|
$css .= "$selector { background: transparent url('$iconFile') 0 0 no-repeat; }\n";
|
||||||
|
} else {
|
||||||
|
// Support for more sophisticated rules, e.g. sprited icons
|
||||||
|
$css .= "$selector { $iconFile }\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $css;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user