1

简介:Zurmo的很多功能都是通过配置的形式来完成,有

  1. 全局的配置(metadata)
  2. 每个模块独立的配置(metadata)

全局配置的一些功能体现在,顶部的导航行,最左边的导航行等等,这些都是公共的部分。此外还有一些其他的功能,这里就不一一列举了。模块独立的配置是针对模块内部的配置,每个模块的样式,功能都可以根据配置的参数来改变。接下来介绍全局的配置

二:Zurmo读取数据顺序

1:系统安装时候的顺序:

读取代码配置  -->  存入数据库    -->  缓存 

2:以后系统运行的时候顺序:

缓存  -->  数据库    -->  代码配置 

详解第一点:

Zurmo安装的时候,会从一些代码配置文件读取配置,比如 zurmo/app/protected/modules/zurmo/ZurmoModule.php文件,代码如下。

   public static function getDefaultMetadata()
        {
            $metadata = array();
            $metadata['global'] = array(
                'configureMenuItems' => array(
                    array(
                        'category'         => ZurmoModule::ADMINISTRATION_CATEGORY_GENERAL,
                        'titleLabel'       => "eval:Zurmo::t('ZurmoModule', 'Global Configuration')",
                        'descriptionLabel' => "eval:Zurmo::t('ZurmoModule', 'Manage Global Configuration')",
                        'route'            => '/zurmo/default/configurationEdit',
                        'right'            => self::RIGHT_ACCESS_GLOBAL_CONFIGURATION,
                    ),
                    array(
                        'category'         => ZurmoModule::ADMINISTRATION_CATEGORY_GENERAL,
                        'titleLabel'       => "eval:Zurmo::t('ZurmoModule', 'Currency Configuration')",
                        'descriptionLabel' => "eval:Zurmo::t('ZurmoModule', 'Manage Currency Configuration')",
                        'route'            => '/zurmo/currency/configurationList',
                        'right'            => self::RIGHT_ACCESS_CURRENCY_CONFIGURATION,
                    ),
                    array(
                        'category'         => ZurmoModule::ADMINISTRATION_CATEGORY_GENERAL,
                        'titleLabel'       => "eval:Zurmo::t('Core', 'Languages')",
                        'descriptionLabel' => "eval:Zurmo::t('ZurmoModule', 'Manage Active Languages')",
                        'route'            => '/zurmo/language/configurationList',
                        'right'            => self::RIGHT_ACCESS_GLOBAL_CONFIGURATION,
                    ),
                    array(
                        'category'         => ZurmoModule::ADMINISTRATION_CATEGORY_GENERAL,
                        'titleLabel'       => "eval:Zurmo::t('ZurmoModule', 'Developer Tools')",
                        'descriptionLabel' => "eval:Zurmo::t('ZurmoModule', 'Access Developer Tools')",
                        'route'            => '/zurmo/development/',
                        'right'            => self::RIGHT_ACCESS_GLOBAL_CONFIGURATION,
                    ),
                    array(
                        'category'         => ZurmoModule::ADMINISTRATION_CATEGORY_GENERAL,
                        'titleLabel'       => "eval:Zurmo::t('ZurmoModule', 'Authentication Configuration')",
                        'descriptionLabel' => "eval:Zurmo::t('ZurmoModule', 'Manage Authentication Configuration')",
                        'route'            => '/zurmo/authentication/configurationEdit',
                        'right'            => self::RIGHT_ACCESS_GLOBAL_CONFIGURATION,
                    ),
                    array(
                        'category'         => ZurmoModule::ADMINISTRATION_CATEGORY_GENERAL,
                        'titleLabel'       => "eval:Zurmo::t('ZurmoModule', 'Plugins')",
                        'descriptionLabel' => "eval:Zurmo::t('ZurmoModule', 'Manage Plugins and Integrations')",
                        'route'            => '/zurmo/plugins/configurationEdit',
                        'right'            => self::RIGHT_ACCESS_GLOBAL_CONFIGURATION,
                    ),
                    array(
                        'category'         => ZurmoModule::ADMINISTRATION_CATEGORY_GENERAL,
                        'titleLabel'       => "eval:Zurmo::t('ZurmoModule', 'User Interface Configuration')",
                        'descriptionLabel' => "eval:Zurmo::t('ZurmoModule', 'Manage User Interface Configuration')",
                        'route'            => '/zurmo/default/userInterfaceConfigurationEdit',
                        'right'            => self::RIGHT_ACCESS_GLOBAL_CONFIGURATION,
                    ),
                    array(
                        'category'         => ZurmoModule::ADMINISTRATION_CATEGORY_GENERAL,
                        'titleLabel'       => "eval:Zurmo::t('ZurmoModule', 'System Configuration')",
                        'descriptionLabel' => "eval:Zurmo::t('ZurmoModule', 'Manage System Configuration')",
                        'route'            => '/zurmo/default/systemConfigurationEdit',
                        'right'            => self::RIGHT_ACCESS_GLOBAL_CONFIGURATION,
                    ),
                ),
                'headerMenuItems' => array(
                    array(
                        'label'  => "eval:Zurmo::t('ZurmoModule', 'Administration')",
                        'url'    => array('/configuration'),
                        'right'  => self::RIGHT_ACCESS_ADMINISTRATION,
                        'order'  => 1,
                        'mobile' => false,
                    ),
                    array(
                        'label'  => "eval:Zurmo::t('ZurmoModule', 'Get More')",
                        'url'    => 'eval:ZurmoModule::resolveGetMoreUrl()',
                        'order'  => 9,
                        'mobile' => true,
                    ),
                    array(
                        'label'  => "eval:Zurmo::t('ZurmoModule', 'About Zurmo')",
                        'url'    => array('/zurmo/default/about'),
                        'order'  => 10,
                        'mobile' => true,
                    ),
                ),
                'configureSubMenuItems' => array(
                    array(
                        'category'         => self::ADMINISTRATION_CATEGORY_AUTHENTICATION,
                        'titleLabel'       => "eval:Zurmo::t('ZurmoModule', 'LDAP Configuration')",
                        'descriptionLabel' => "eval:Zurmo::t('ZurmoModule', 'Manage LDAP Authentication')",
                        'route'            => '/zurmo/ldap/configurationEditLdap',
                        'right'            => self::RIGHT_ACCESS_GLOBAL_CONFIGURATION,
                    ),
                ),
                'adminTabMenuItemsModuleOrdering' => array(
                    'home',
                    'configuration',
                    'designer',
                    'import',
                    'groups',
                    'users',
                    'roles',
                    'workflows',
                    'contactWebForms'
                ),
                'tabMenuItemsModuleOrdering' => array(
                    'home',
                    'mashableInbox',
                    'accounts',
                    'leads',
                    'contacts',
                    'opportunities',
                    'marketing',
                    'projects',
                    'products',
                    'reports',
                )
            );
            return $metadata;
        }

之后会把这些配置信息存入到数据库的一个名叫 globalmetadata 的表。配置以序列化的形式存入 serializedmetadata 字段中,我们可以选取 一条 classname 的值为 ZurmoModule 的序列化值解序列出来看看。就可以发现ZurmoModule的配置是其中的一部分,还有一部分是从其他地方读取。之后会存入缓存中。

PS:有时候可能会出现你改了这里的配置,但是页面却没有改变。

  • 原因就是以后系统是先读缓存。有时候清除了缓存,但是页面还是没有发生变化,
  • 那是因为之后是读取数据库的数据的,如果你把数据库的对应数据删除了,再刷新页面。有可能会报错
  • 因为这个时候你没有把配置存入数据库中。要先执行 Update Custom Data 操作,这个操作的本质就是把配置存入globalmetadata 表中。之后再刷新页面,页面就发生改变了。

上面的注解就是第二点的以后系统运行的时候读取数据的顺序了。

三:清除缓存 和 Update Custom Data的操作

具体步骤看我在CSDN的文章,这两点的重要性我也在博客写了。很多时候的操作与这两步密切相关。

四:getDefaultMetadata()方法 metadata['global'] 数组中的部分配置参数:

  • configureMenuItems
  • headerMenuItems
  • configureSubMenuItems
  • adminTabMenuItemsModuleOrdering
  • tabMenuItemsModuleOrdering

headerMenuItems参数对应的页面上:

图片描述

adminTabMenuItemsModuleOrdering 参数对应的页面上:

图片描述

tabMenuItemsModuleOrdering 参数对应的页面上:

图片描述

还有部分的参数的位置迟点再补上。

如有不对,请指正!


神话
1.6k 声望37 粉丝

编程使我快乐!Node.js excel处理库 @zurmokeeper/exceljs 支持读取加密excel和导出加密excel,支持多表头excel快捷导出