melisplatform/melis-core

Melis平台核心模块

安装次数: 7,318

依赖: 27

推荐者: 0

安全: 0

星标: 8

关注者: 9

分支: 4

开放问题: 0

语言:JavaScript

类型:melisplatform-module

This package is auto-updated.

Last update: 2024-09-20 15:12:43 UTC


README

MelisCore提供了一个完整的后台平台,可供使用,并接受许多模块在其之上运行。

入门指南

以下说明将帮助您在您的机器上运行项目副本。

先决条件

您需要安装 melisplatform/melis-asset-manager 以运行此模块。
当使用 composer 时,此操作将自动完成。

安装

运行 composer 命令

composer require melisplatform/melis-core

为了获取框架,运行以下命令并将 MelisCore、MelisCms 和其他模块引入

composer create-project melisplatform/melis-cms-skeleton .

在此处访问 Melis 平台的设置视频和文档

数据库

数据库模型可在 MySQL Workbench 文件中访问
/melis-core/install/sql/model
数据库将通过 composer 和其钩子进行安装。
如有问题,SQL 文件位于此处
/melis-core/install/sql

提供的工具与元素

  • 用户管理工具
  • 登录与找回密码
  • 主仪表板
  • 个人资料
  • TinyMCE 编辑器
  • 模块工具
  • 诊断工具
  • 日志工具
  • 平台工具
  • 后台电子邮件管理工具
  • 后台语言工具
  • 微服务系统
  • GDPR 工具

运行代码

MelisCore 界面设计

Melis 平台通过遵循定义界面所有渲染部分的递归数组进行设计。
此递归数组可在此处找到
/melis-core/config/app.interface.php
所有向后台添加内容的模块都必须实现此系统并将其配置合并到 ZF2 配置中。

'plugins' => array(
	'meliscore' => array(
		'interface' => array(
			// First child of the interface with key name meliscore_header
			// This child has an absolute path of /plugins/meliscore/interface/meliscore_header
			'meliscore_header' => array(
				'conf' => array(
					'id' => 'id_meliscore_header',
					// But this child also as a relative path, easier of meliscore_header, also called melisKey
					'melisKey' => 'meliscore_header',
					'name' => 'tr_meliscore_header',
				),
				// Forward: how to generate this part by calling module/controller/action
				// This will also give back JS to be called for initializations
				'forward' => array(
					'module' => 'MelisCore',
					'controller' => 'Index',
					'action' => 'header',
					'jscallback' => '',
					'jsdatas' => array()
				),
				'interface' => array(
					// Continue recursively
				),
			),
		),
	),
),

在此处查看模块和界面设计的完整文档

重排界面子项

由于模块之间的配置是按照模块顺序合并的,因此它们不一定对应您希望显示的实际顺序。
可以通过在根目录创建一个名为 'interface_ordering' 的键,并按特定顺序列出子键来定义一个特定的顺序。

'interface_ordering' => array(
    // reordering le left pannel of Melis Platform
	'meliscore_leftmenu' => array(
		'meliscore_leftmenu_identity',  // identity zone first
		'meliscore_leftmenu_dashboard', // acces to dashboard second
		'meliscms_sitetree',		// site tree 3rd
		'meliscore_toolstree',		// tools tree 4th
		'meliscore_footer',		// footer last
	),

MelisCore 服务

MelisCore 提供许多服务以在其他模块中使用。
在文件夹:/melis-core/src/Service 中找到它们

  • MelisCoreConfig
    此服务处理生成后台界面的界面配置文件。
    所有模块的所有 "/config/app.interface.php" 文件合并在一起创建一个大型配置。
    然后,此服务将处理它和 MelisPlatform 的所有特定性。
    仅通过此服务访问配置,因为它将运行许多脚本(翻译、melisKey 等)。
    文件:/melis-core/src/Service/MelisCoreConfigService.php
// Example 1
// Get the service
$melisAppConfig = $this->getServiceManager()->get('MelisCoreConfig');
// Get the subpart of the config file
$appsConfigCenter = $melisAppConfig->getItem('/meliscore/interface/meliscore_center/');
// Example 2
// Get the service
$melisMelisCoreConfig = $this->getServiceManager()->get('MelisCoreConfig');
// Get a form config, always use getFormMergedAndOrdered
$appConfigForm = $melisMelisCoreConfig->getFormMergedAndOrdered('meliscore/tools/meliscore_logs_tool/forms/meliscore_logs_tool_log_type_form','meliscore_logs_tool_log_type_form');
// Example 3
// Get the service
$melisAppConfig = $this->getServiceManager()->get('MelisCoreConfig');
// Get the "datas" part of the "meliscore" key in the config and, using getItemPerPlatform, select depending on the platform you're on
$datas = $melisAppConfig->getItemPerPlatform('/meliscore/datas');
  • MelisCoreAuthService
    获取用户的认证并验证认证,扩展 ZF AuthenticationService 文件:/melis-core/src/Service/MelisCoreAuthService.php
// Get the service
$melisCoreAuth = $this->getServiceManager()->get('MelisCoreAuth');  
// check identity
$logged = $melisCoreAuth->hasIdentity()  
  • MelisCoreRights
    获取用户定义的权限并适应对界面不同元素的访问
    文件:/melis-core/src/Service/MelisCoreRightsService.php
// Get the services  
$melisCoreAuth = $this->getServiceManager()->get('MelisCoreAuth');
$melisCoreRights = $this->getServiceManager()->get('MelisCoreRights');
if($melisCoreAuth->hasIdentity())
{
	// Get the user's rights
	$xmlRights = $melisCoreAuth->getAuthRights();
	
	// Check if the user has an exclusion of access to /meliscore_dashboard
	$isAccessible = $melisCoreRights->isAccessible($xmlRights,
							MelisCoreRightsService::MELISCORE_PREFIX_INTERFACE,
							'/meliscore_dashboard');
}        

在此处查看权限管理系统完整文档

  • MelisCoreFlashMessenger
    将日志添加到 flash messenger 并在后台中获取一些通知
$flashMessenger = $this->getServiceManager()->get('MelisCoreFlashMessenger');
$flashMessenger->addToFlashMessenger('title', 'message', $flashMessenger::WARNING);
  • MelisCoreBOEmailService
    文件:/melis-core/src/Service/MelisCoreBOEmailService.php
    添加或覆盖从后台发送的电子邮件,从您的模块发送并通过工具管理它们
// Get the service
$melisEmailBO = $this->getServiceManager()->get('MelisCoreBOEmailService');  
// Send the mail and fills the blanks in the mail (tags), get the language version
$melisEmailBO->sendBoEmailByCode('ACCOUNTCREATION',  $tags, $email_to, $name_to, $langId);  

在此处查看后台电子邮件的完整文档

MelisCore 表单

表单工厂

所有 Melis CMS 表单都是使用表单工厂构建的。
所有表单配置都在文件中可用:/melis-core/config/app.forms.php
任何模块都可以通过构建数组中的键并在Module.php配置创建部分中合并来覆盖或添加表单项。

return array(
	'plugins' => array(
	
		// MelisCms array
		'meliscore' => array(
		
			// Form key
			'forms' => array(
			
				// MelisCore login form
				'meliscore_login' => array(
					'attributes' => array(
						'name' => 'meliscore_login',
						'id' => 'idformmeliscorelogin',
						'method' => 'POST',
					),
					'hydrator'  => 'Laminas\Hydrator\ArraySerializableHydrator',
					'elements' => array(  
						array(
							'spec' => array(
								...
							),
						),
					),
					'input_filter' => array(      
						'usr_login' => array(
							...
						),   
					),
				),
			),
		),
	),
),

表单元素

MelisCore提供许多表单元素,可在表单中使用

  • MelisCoreLanguageSelect:用于选择平台语言的下拉菜单
  • MelisCoreSiteSelect:用于选择站点的下拉菜单
  • MelisToggleButton:专为Melis平台设计的开关按钮
  • MelisText:输入字段

覆盖/添加/更改字段顺序

可以通过在模块的配置中声明表单并更新表单的键来简单地更新现有表单,以添加新字段。
为了重用前面的示例,回到meliscore_login键,然后添加新字段,最后合并在一起

return array(
	'plugins' => array(
		// MelisCms array
		'meliscore' => array(
			// Form key
			'forms' => array(
				// MelisCore login form
				'meliscore_login' => array(
					'elements' => array(  
					),
					'input_filter' => array(     
					),

在某些时候,可能需要为特定项目重新排序字段。
声明一个键'forms_ordering'和一个名为表单的子键。
然后只需按所需顺序放置现有元素。不需要放置所有元素,从需要重新排序的开始,直到完成为止,其他现有表单元素将自动添加到末尾。

return array(
	// key at the root for listing forms' order modifications
	'forms_ordering' => array(
   
		// change the order of the MelisCore email management form tool.
		'meliscore_emails_mngt_tool_general_properties_form' => array(
			'elements' => array(
				// Name will now be first
				array(
					'spec' => array(
						'name' => 'boe_code_name',
					),
				),
				// "From" email will be second
				array(
					'spec' => array(
						'name' => 'boe_from_email',
					),
				),
               
				// Rest of the form's field will come in order after
			),
		),
	),
);

MelisCoreConfig服务提供了一个名为getFormMergedAndOrdered的方法,该方法将获取表单并返回已重新排序的表单。

// Get the service
$melisMelisCoreConfig = $this->getServiceManager()->get('MelisCoreConfig');
// Get a form config, always use getFormMergedAndOrdered
$appConfigForm = $melisMelisCoreConfig->getFormMergedAndOrdered('meliscore/tools/meliscore_logs_tool/forms/meliscore_logs_tool_log_type_form','meliscore_logs_tool_log_type_form');

通过自定义代码监听服务和更新行为

大多数服务触发事件,以便可以修改行为。

public function attach(EventManagerInterface $events)
{
	$sharedEvents = $events->getSharedManager();

	$callBackHandler = $sharedEvents->attach(
		'MelisCore',
		array(
			'meliscore_tooluser_save_end', 
		),
		function($e){

			$sm = $e->getTarget()->getEvent()->getApplication()->getServiceManager();
    		
    		// custom code
    	},
    100);
    
    $this->listeners[] = $callBackHandler;
}

GDPR 工具

MelisCore提供了一个系统来查找用户数据。通过允许其他模块连接/与其交互,并允许查看、提取和删除用户数据。

事件

melis_core_gdpr_user_info_event:在搜索用户后,此事件将触发。监听此事件的模块将发送有关用户的数据,如果没有数据,则保持沉默。

melis_core_gdpr_user_extract_event:当点击“提取所选”按钮时,此事件将触发。模块将格式化并发送所选项目的任何内容。

melis_core_gdpr_user_delete_event:当点击“删除所选”按钮时,此事件将触发。所选项目将由各自的模块删除或更新。

监听事件

melis_core_gdpr_user_info_event
此事件的参数是表单输入。

[
    'search' => [
      'user_name'  => 'Doe',
      'user_email' => '[email protected],
      'site'       => 2 //siteId,
      etc ..,
    ],
]

只要您遵循此结构返回值,您可以为此事件实现自己的逻辑。

[
    'results' => [
      'MelisCmsProspects' => [...],
      'MelisCmsNewsletters' => [...],
      'YourModule' => [...],
    ]
]
[
    'results' => [
        'YourModule' => [                   
            'icon' => '...', //icon that will be displayed
            'moduleName' => 'YourModule', //text that will be displayed
            'values' => [
            ...
            ],
        ],
    ],
]
'values' => [
    'columns' => [
        //IDs and checkbox will be provided already in the table
        'name' => [
           'id' => 'meliscmsprospects_col_name',
           'text' => 'Name'
        ],
        'email' => [
           'id' => 'meliscmsprospects_col_email',
           'text' => 'Email'
        ],
        'date' => [
           'id' => 'meliscmsprospects_col_date',
           'text' => 'Date'
        ],
    ],
    'datas' => [
        //The keys are the IDs of the items (13, 15)
        '13' => [
           'name' => 'Doe',
           'email' => '[email protected]'
           'date' => 11/13/2017 13:13:00
        ],
        '15' => [
           'name' => 'Doe',
           'email' => '[email protected]'
           'date' => 11/15/2017 15:15:00
        ],
    ],
]

列索引是将在表中显示的列。而数据索引是表中的行。

melis_core_gdpr_user_extract_event
此事件的参数是包含要提取的选定ID的模块。

[
    'selected' => [
      'MelisCmsProspects'  => [13,15],
      'MelisCmsNewsletter' => [2],
    ]
]

将捕获事件的模块将使用此结构提供自己的结果。

[
    'results' => [
      'MelisCmsProspects'  => '<xml><MelisCmsProspects>...</MelisCmsProspects></xml>',
      'MelisCmsNewsletter' => '<xml><MelisCmsNewsletter>...</MelisCmsNewsletter></xml>',
      'yourModule' => '<xml>...</xml>';
    ],
]

melis_core_gdpr_user_delete_event
此事件的参数是包含所有选定ID的模块列表。

[
    'selected' => [
        'MelisCmsProspects'  => [13,15],
        'MelisCmsNewsletter' => '[2],
    ],
]

将捕获事件的模块将返回确认消息,如果项目成功删除。

[
    'results' => [
        'MelisCmsProspects'  => true,
        'MelisCmsNewsletter' => true,
    ],  
]

MelisCore提供的JavaScript辅助函数

Melis 辅助函数

大多数辅助函数位于以下文件中
/melis-core/public/js/core/melisHelper.js

  • zoneReload:使用MelisKey和Ajax调用重新加载HTML区域
  • createModal:创建一个模态窗口并在其中放入模板
  • melisOkNotification:生成绿色通知
  • melisKoNotification:生成红色通知
  • tabSwitch:切换主选项卡
  • tabClose:关闭选项卡
  • tabOpen:打开选项卡
  • loadingZone:将div包装在加载设计中
  • removeLoadingZone:移除加载设计

在此处查看Melis JS辅助函数的完整文档

TinyMCE及其配置

MelisCore将TinyMCE作为其编辑器并提供一个配置。
TinyMCE辅助函数位于此处
/melis-core/public/js/tinyMCE/melis_tinymce.js

// Creating a tinyMCE zone with config "tool" on the selected item and overriding some parameters from conf
melisTinyMCE.createTinyMCE("tool", selector, {height: 200, relative_urls: false});

配置

  • tool:使用html编辑器的工具的默认配置
    创建其他配置是可能的。将配置添加到文件中,然后在模块的 module.config.php 文件中声明该文件
// Config Files  
'tinyMCE' => array(  
	'html' => 'MelisCore/public/js/tinyMCE/tool.php',  
),  

有关 TinyMCE 和 Melis 平台的完整文档请参阅此处

####缓存和包缓存

  • 缓存系统已在 Melis 平台 BO 中应用,尤其是在左侧菜单、仪表盘、仪表盘插件菜单和前端插件菜单中。
  • 清除缓存将通过更新用户或更新模块工具中的模块自动完成。
  • 您还可以在平台工具中禁用缓存系统。

  • Melis 平台通过加载一个文件而不是每个模块中的每个文件来改进了其打包系统。
  • 您可以在模块工具中重新打包所有资产。
  • 要按平台禁用/启用包,您可以在 MelisModuleConfig 接口中覆盖它
'development' => [
    'build_bundle' => false,
],
'preprod' => [
    'build_bundle' => true,
],
'prod' => [
    'build_bundle' => true,
]

作者

还可以查看参与此项目的贡献者列表

许可

本项目采用 OSL-3.0 许可证 - 请参阅 LICENSE.md 文件以获取详细信息