"Принудительно вывести на главную" - решено

Задача — добавить модераторам кнопку «принудительно вывести на главную»,
которая доступна только глобальному администратору. Поюзав поиск нашел решение.
В skin\new-jquery\actions\ActionTopic\add.tpl находим
{if $oUserCurrent->isAdministrator()}
		<p><label for="topic_publish_index"><input type="checkbox" id="topic_publish_index" name="topic_publish_index" class="checkbox" value="1" {if $_aRequest.topic_publish_index==1}checked{/if} />
		{$aLang.topic_create_publish_index}</label><br />
		<span class="note">{$aLang.topic_create_publish_index_notice}</span></p>
	{/if}

меняем на
{if $oUserCurrent->isAdministrator() or ($oUserCurrent and $oUserCurrent->getLogin()=='ermmod')}
		<p><label for="topic_publish_index"><input type="checkbox" id="topic_publish_index" name="topic_publish_index" class="checkbox" value="1" {if $_aRequest.topic_publish_index==1}checked{/if} />
		{$aLang.topic_create_publish_index}</label><br />
		<span class="note">{$aLang.topic_create_publish_index_notice}</span></p>
	{/if}

Все работает. Но прописывать каждый раз имена модераторов в коде, разумеется, не дело. Долго и муторно фантазировал на тему
{if $oUserCurrent->isAdministrator() or ($oUserCurrent and $oBlog->getUserIsModerator())}

Но ничего не получается. Помогите плз

Да, это еще не все. До сих пор мы только отобразили чекбокс. Чтобы он заработал нам нужно открыть \classes\modules\ACL.class.php и найти
public function IsAllowPublishIndex(ModuleUser_EntityUser $oUser) {
        
		if ($oUser->isAdministrator()) {
			return true;
		}
        
        return false;
	}

Соответственно в иф добавляем
if ($oUser->isAdministrator() or ($oUser and $oUser->getLogin()=='ermmod'))
и все работает.

пысы. 'ermmod' — логин модератора.
подскажите как не прописывать его в коде, пожалуйста!

10 комментариев

avatar
решено вот так
$oUser=$this->oUserCurrent;
		$oBlogUser=$this->Blog_GetBlogUserByBlogIdAndUserId($oTopic->getBlogId(),$oUser->getId());
		if ($oUser->isAdministrator() or  $oBlogUser->getIsModerator() )
  • eni
  • 0
avatar
В шаблоне так же прописывать?
avatar
Простите, но я ничерта не понял, как решено-то, чтобы без указания логинов. И куда прописывать сей код?
avatar
Доброго дня! Можно чуть больше деталей, что делали и как. Заранее спасибо!
avatar
В файлах:
\yourskin\Actions\ActionLink\add.tpl
\yourskin\Actions\ActionPhotoset\add.tpl
\yourskin\Actions\ActionQuestion\add.tpl
\yourskin\Actions\ActionTopic\add.tpl
находим примерно такие строки:
{if $oUserCurrent->isAdministrator()}
		<p><label for="topic_publish_index">
...

и меняем их на:
{if ($oUser->isAdministrator() or  $oBlogUser->getIsModerator() )}
		<p><label for="topic_publish_index">
...

Затем в файле \classes\modules\ACL.class.php находим такие строки (413-418):
public function IsAllowPublishIndex(ModuleUser_EntityUser $oUser) {
		if ($oUser->isAdministrator()) {
			return true;
		}
		return false;
	}

и меняем на:
public function IsAllowPublishIndex(ModuleUser_EntityUser $oUser) {
		$oUser=$this->oUserCurrent;
		$oBlogUser=$this->Blog_GetBlogUserByBlogIdAndUserId($oTopic->getBlogId(),$oUser->getId());
		if ($oUser->isAdministrator() or  $oBlogUser->getIsModerator() ) {
			return true;
		}
		return false;
	}
avatar
не пойму почему код в одну строчку выстаивается…
avatar
Call to a member function isAdministrator() on a non-object in ***.ru/templates/compiled/simple/f109d9200b6c71c446d3d2c830533cb7e3bdef63.file.add.tpl.php on line 124

Что не так..?
avatar
Попробуйте почистить кэш, удалить папки из compiled…
Если не помогает, посмотрите, что в этой строчке
avatar
<?php if (($_smarty_tpl->tpl_vars['oUser']->value->isAdministrator()||$_smarty_tpl->tpl_vars['oBlogUser']->value->getIsModerator())){?>
		<p><label><input type="checkbox" id="topic_publish_index" name="topic_publish_index" class="input-checkbox" value="1" <?php if ($_smarty_tpl->tpl_vars['_aRequest']->value['topic_publish_index']==1){?>checked<?php }?> />
		<?php echo $_smarty_tpl->tpl_vars['aLang']->value['topic_create_publish_index'];?>
</label>
		<small class="note"><?php echo $_smarty_tpl->tpl_vars['aLang']->value['topic_create_publish_index_notice'];?>
</small></p>
	<?php }?>


папки вычистил, кеш сбросил, ошибка осталась, вот кусок кода начиная с 124-ой строки
avatar
Подскажите, что делать?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.