首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yii HumHub将事件注入主应用程序

Yii HumHub将事件注入主应用程序
EN

Stack Overflow用户
提问于 2015-04-25 05:11:20
回答 1查看 285关注 0票数 0

我试图将一个事件附加到一个名为HumHub的Yii应用程序的全局范围,但是,当我试图通过"TopMenu“运行一个函数时,它似乎什么也不做。可能是因为我没有使用$event变量范围?

我正在尝试制作一个开发模式模块,以防止除管理员之外的任何人在系统被激活时查看系统。我所知道的在所有页面上获得代码的唯一全局方法(我对HumHub和Yii的了解有限)是出现在所有页面上的TopMenu (除了在来宾模式激活时禁用的登录页面)。

autostart.php

代码语言:javascript
复制
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

代码语言:javascript
复制
<?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.'));
            }
        } 

    }

}
EN

回答 1

Stack Overflow用户

发布于 2016-03-28 16:25:52

将排序顺序更改为1,并使用css访问它。

代码语言:javascript
复制
li:nth-child(1) {
    //do something;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29861276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档