From 56963c7643f275c8380598d69e4c3f60c74ac2f9 Mon Sep 17 00:00:00 2001 From: Matthias Schmidt Date: Sun, 1 Mar 2015 18:52:02 +0100 Subject: [PATCH] Hide disabled smiley categories in inline editor --- .../templates/messageFormSmilies.tpl | 8 ++--- .../templates/messageFormTabsInline.tpl | 4 +-- .../lib/data/smiley/SmileyCache.class.php | 29 +++++++++++++++++++ .../files/lib/form/MessageForm.class.php | 10 +------ 4 files changed, 35 insertions(+), 16 deletions(-) diff --git a/com.woltlab.wcf/templates/messageFormSmilies.tpl b/com.woltlab.wcf/templates/messageFormSmilies.tpl index 38fe26a612..114b9fc960 100644 --- a/com.woltlab.wcf/templates/messageFormSmilies.tpl +++ b/com.woltlab.wcf/templates/messageFormSmilies.tpl @@ -20,11 +20,9 @@ {foreach from=$smileyCategories item=smileyCategory} - {if !$smileyCategory->isDisabled} -
- {if !$smileyCategory->categoryID}{@$__defaultSmilies}{/if} -
- {/if} +
+ {if !$smileyCategory->categoryID}{@$__defaultSmilies}{/if} +
{/foreach} \ No newline at end of file + diff --git a/wcfsetup/install/files/lib/data/smiley/SmileyCache.class.php b/wcfsetup/install/files/lib/data/smiley/SmileyCache.class.php index ebac87653d..513b1d961e 100644 --- a/wcfsetup/install/files/lib/data/smiley/SmileyCache.class.php +++ b/wcfsetup/install/files/lib/data/smiley/SmileyCache.class.php @@ -29,6 +29,12 @@ class SmileyCache extends SingletonFactory { */ protected $cachedCategories = array(); + /** + * enabled smiley categories with at least one smiley + * @var array<\wcf\data\smiley\category\SmileyCategory> + */ + protected $visibleCategories = null; + /** * @see \wcf\system\SingletonFactory::init() */ @@ -69,6 +75,29 @@ class SmileyCache extends SingletonFactory { return $this->cachedCategories; } + /** + * Returns all enabled smiley categories with at least one smiley. + * + * @return array<\wcf\data\smiley\category\SmileyCategory> + */ + public function getVisibleCategories() { + if ($this->visibleCategories === null) { + $this->visibleCategories = array(); + + foreach ($this->cachedCategories as $key => $category) { + if (!$category->isDisabled) { + $category->loadSmilies(); + + if (count($category)) { + $this->visibleCategories[$key] = $category; + } + } + } + } + + return $this->visibleCategories; + } + /** * Returns all the smilies of a category. * diff --git a/wcfsetup/install/files/lib/form/MessageForm.class.php b/wcfsetup/install/files/lib/form/MessageForm.class.php index a7ad830e88..9da2da41d1 100644 --- a/wcfsetup/install/files/lib/form/MessageForm.class.php +++ b/wcfsetup/install/files/lib/form/MessageForm.class.php @@ -341,15 +341,7 @@ abstract class MessageForm extends AbstractCaptchaForm { // get default smilies if (MODULE_SMILEY) { - $this->smileyCategories = SmileyCache::getInstance()->getCategories(); - foreach ($this->smileyCategories as $index => $category) { - $category->loadSmilies(); - - // remove empty categories - if (!count($category) || $category->isDisabled) { - unset($this->smileyCategories[$index]); - } - } + $this->smileyCategories = SmileyCache::getInstance()->getVisibleCategories(); $firstCategory = reset($this->smileyCategories); if ($firstCategory) { -- 2.20.1