我试图将一个事件附加到一个名为HumHub的Yii应用程序的全局范围,但是,当我试图通过"TopMenu“运行一个函数时,它似乎什么也不做。可能是因为我没有使用$event变量范围?
我正在尝试制作一个开发模式模块,以防止除管理员之外的任何人在系统被激活时查看系统。我所知道的在所有页面上获得代码的唯一全局方法(我对HumHub和Yii的了解有限)是出现在所有页面上的TopMenu (除了在来宾模式激活时禁用的登录页面)。
autostart.php
Yii::app()->moduleManager->register(array(
'id' => 'devmode',
'class' => 'application.modules.devmode.DevModeModule',
'import' => array(
'application.modules.devmode.*',
),
// Events to Catch
'events' => array(
array('class' => 'AdminMenuWidget', 'event' => 'onInit', 'callback' => array('DevModeEvents', 'onAdminMenuInit')),
array('class' => 'TopMenuWidget', 'event' => 'onInit', 'callback' => array('DevModeEvents', 'devBlock')),
array('class' => 'DashboardSidebarWidget', 'event' => 'onInit', 'callback' => array('DevModeModule', 'onSidebarInit')),
),
));DevModeEvents.php
<?php
/**
* Defines the module events
*
* @package humhub.modules.devmode.events
* @author Jordan Thompson
*/
class DevModeEvents {
public static function onAdminMenuInit($event)
{
$event->sender->addItem(array(
'label' => Yii::t('devmode.base', 'Development Mode'),
'url' => Yii::app()->createUrl('//devmode/config/config'),
'group' => 'settings',
'icon' => '<i class="fa fa-lock"></i>',
'isActive' => (Yii::app()->controller->module && Yii::app()->controller->module->id == 'devmode' && Yii::app()->controller->id == 'admin'),
'sortOrder' => 300,
));
}
public static function devBlock($event) {
$devMode = HSetting::Get('devMode', 'devmode');
if ($devMode == 1 ) {
if (!Yii::app()->user->isGuest) {
if (!Yii::app()->user->isAdmin()) {
throw new CHttpException('418', Yii::t('devmode.base', Yii::app()->name . ' is currently under maintenance, check back later.'));
}
} else {
throw new CHttpException('418', Yii::t('devmode.base', Yii::app()->name . ' is currently under maintenance, check back later.'));
}
}
}
}发布于 2016-03-28 16:25:52
将排序顺序更改为1,并使用css访问它。
li:nth-child(1) {
//do something;
}https://stackoverflow.com/questions/29861276
复制相似问题