Merge pull request #2421 from creative-commoners/pulls/4.4/adding-removing-overlapping-icons

FIX Only add page font icon classes if there's no icon image defined
This commit is contained in:
Robbie Averill 2019-05-31 13:56:14 +12:00 committed by GitHub
commit cd70aecf8d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 3 deletions

View File

@ -43,15 +43,26 @@ class CMSPageAddController extends CMSPageEditController
public function AddForm() public function AddForm()
{ {
$pageTypes = array(); $pageTypes = array();
$defaultIcon = Config::inst()->get(SiteTree::class, 'icon_class');
foreach ($this->PageTypes() as $type) { foreach ($this->PageTypes() as $type) {
$class = $type->getField('ClassName');
$icon = Config::inst()->get($class, 'icon_class') ?: $defaultIcon;
// If the icon is the SiteTree default and there's some specific icon being provided by `getPageIconURL`
// then we don't need to add the icon class. Otherwise the class take precedence.
if ($icon === $defaultIcon && !empty(singleton($class)->getPageIconURL())) {
$icon = '';
}
$html = sprintf( $html = sprintf(
'<span class="page-icon %s class-%s"></span><span class="title">%s</span><span class="form__field-description">%s</span>', '<span class="page-icon %s class-%s"></span><span class="title">%s</span><span class="form__field-description">%s</span>',
Config::inst()->get($type->getField('ClassName'), 'icon_class'), $icon,
Convert::raw2htmlid($type->getField('ClassName')), Convert::raw2htmlid($class),
$type->getField('AddAction'), $type->getField('AddAction'),
$type->getField('Description') $type->getField('Description')
); );
$pageTypes[$type->getField('ClassName')] = DBField::create_field('HTMLFragment', $html); $pageTypes[$class] = DBField::create_field('HTMLFragment', $html);
} }
// Ensure generic page type shows on top // Ensure generic page type shows on top
if (isset($pageTypes['Page'])) { if (isset($pageTypes['Page'])) {

View File

@ -31,6 +31,9 @@ class LeftAndMainPageIconsExtension extends Extension
$css = ''; $css = '';
$classes = ClassInfo::subclassesFor(SiteTree::class); $classes = ClassInfo::subclassesFor(SiteTree::class);
foreach ($classes as $class) { foreach ($classes as $class) {
if (!empty(Config::inst()->get($class, 'icon_class', Config::UNINHERITED))) {
continue;
}
$iconURL = SiteTree::singleton($class)->getPageIconURL(); $iconURL = SiteTree::singleton($class)->getPageIconURL();
if ($iconURL) { if ($iconURL) {
$cssClass = Convert::raw2htmlid($class); $cssClass = Convert::raw2htmlid($class);