新闻详情

新闻详情

首页 / 资讯中心 / 详情

Dolibarr 集成的 CKEditor 4 “Moono-lisa“ 皮肤:默认皮肤特性、目录结构与 Chameleon 变色机制解析

发布时间:2026/9/29 3:04:37来源:尧图网络
Dolibarr 集成的 CKEditor 4 “Moono-lisa“ 皮肤:默认皮肤特性、目录结构与 Chameleon 变色机制解析
企业应用后端【免费下载链接】dolibarrDolibarr ERP CRM is a modern software package to manage your company or foundations activity (contacts, suppliers, invoices, orders, stocks, agenda, accounting, ...). its an open source Web application (written in PHP) designed for businesses of any sizes, foundations and freelancers.项目地址https://gitcode.com/gh_mirrors/do/dolibarr点击查看免费下载本篇技术指南以 Moono-lisa 皮肤 readme 为核心系统梳理这一自 CKEditor 4.6.0 起成为默认皮肤的单色扁平主题的设计理念、CSS 拆分结构与按需加载机制并结合 Dolibarr 仓库源码说明它如何被 ERP/CRM 的富文本编辑器DolEditor引用、切换与定制。读完本文你将掌握 Moono-lisa 皮肤的文件职责、Chameleon 亮度变色原理、高对比度兼容方案以及如何在本仓库中定位与替换皮肤。一、背景为什么它是默认皮肤Moono-lisa 由 CKEditor 核心开发团队维护从 CKEditor 4.6.0 开始被设为默认皮肤readme 第 4 行明确说明。它是一套单色monochromatic主题通过统一的灰度基调与少量强调色营造出现代、扁平、极简的视觉风格能够自然融入各类现代 Web 应用界面——这也是 Dolibarr 选择它作为富文本编辑器默认皮肤的原因。从本仓库的源码可进一步印证这一事实在 doleditor.class.php 中皮肤取值写为$skin getDolGlobalString(FCKEDITOR_SKIN, moono-lisa); // default with ckeditor 4.6 : moono-lisa即未配置常量FCKEDITOR_SKIN时回退值就是moono-lisa。在 doleditor.lib.php 的show_skin()函数中同样以moono-lisa作为默认选中项来渲染后台皮肤选择界面。迁移脚本 5.0.0-6.0.0.sql 中有一条针对性的数据升级语句把旧值moono自动改写为新默认值UPDATE llx_const SET value __ENCRYPT(moono-lisa)__ WHERE value __ENCRYPT(moono)__ AND name __ENCRYPT(FCKEDITOR_SKIN)__;这说明 Dolibarr 在升级到支持 CKEditor 4.6 的版本时主动完成了皮肤默认值的迁移。二、三大核心特性readme 中列出了 Moono-lisa 皮肤的三项关键特性逐一说明如下。1. Chameleon变色龙特性支持亮度调节Chameleon 机制允许皮肤根据编辑器实例所在页面的背景色/主色调动态生成配色让同一套皮肤在不同主题站点上呈现协调一致的外观。它的核心是一个颜色换算函数读取页面的主色值按给定系数正数变亮、负数变暗对 RGB 三个通道分别做线性变换再生成对应的边框色、背景色、工具条底色、对话框底色等一系列 CSS 变量。在本仓库中该逻辑随皮肤注册信息一并编译进主文件 ckeditor.js其中CKEDITOR.skin.namemoono-lisa; CKEDITOR.skin.ua_editorie,iequirks,ie8,gecko; CKEDITOR.skin.ua_dialogie,iequirks,ie8; CKEDITOR.skin.chameleonfunction(){ ... };可以看到皮肤同时注册了三类信息name皮肤标识符即moono-lisaua_editor/ua_dialog需要浏览器特定样式补丁CSS hacks的浏览器列表分别作用于编辑区与对话框区chameleon变色龙算法实现输入页面主色输出编辑器各 UI 部件的派生色。需要说明的是readme 中提到的独立skin.js文件在本仓库的 皮肤目录 中并未单独保留皮肤注册与 Chameleon 代码已被合并进ckeditor.js这是标准发布包与源码包的组织差异。2. 高对比度High-contrast兼容皮肤为操作系统级高对比度模式提供了专门样式。以 editor.css 为例大量规则带有.cke_hc前缀例如.cke_hc .cke_resizer高对比度下改用文字箭头替代三角边框.cke_hc .cke_button_icon{display:none}隐藏位图图标改用文字标签.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}呈现按钮语义.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover{...border:3px solid #000;...}用加粗黑色边框强化焦点与激活状态不依赖颜色区分。这些规则确保在系统高对比度模式下工具栏按钮、路径栏、菜单项等仍可通过边框、文字而非颜色被清晰辨识满足无障碍要求。3. SVG 图形源皮肤的图标素材以 SVG 矢量格式提供源文件便于按需缩放与二次加工发布时则编译为位图雪碧图以兼容旧浏览器。在仓库的皮肤目录中实际可见的成品是两幅雪碧图icons.png16px 常规分辨率图标集icons_hidpi.png32px 高清HiDPI/Retina图标集。editor.css中通过.cke_button__bold_icon{background:url(icons.png?t...) no-repeat 0 -24px !important}这类规则把每个按钮图标精确定位到雪碧图的纵向偏移位置.cke_hidpi .cke_button__...规则则切换为高清雪碧图并设置background-size:16px实现高清屏下的清晰渲染。三、目录结构与各文件职责readme 将皮肤文件划分为 CSS 部分与其他资源两部分。先看 readme 给出的完整职责清单文件职责editor.css主 CSS 文件通过import聚合其余样式便于维护mainui.css整个编辑器轮廓结构chrome的样式toolbar.css编辑器顶部工具栏区域的样式richcombo.css工具栏上富组合框下拉选择控件的样式panel.css富组合框下拉面板的样式首次打开面板时才加载elementspath.css编辑器底部元素路径栏的样式menu.css所有菜单含右键菜单与按钮下拉菜单的样式首次打开菜单时才加载dialog.css对话框 UI 的样式首次打开对话框时才加载reset.css编辑器所有 UI 区域的样式重置基础preset.css体现皮肤偏好的部分 UI 元素默认样式editor_XYZ.css/dialog_XYZ.css浏览器特定 CSS 补丁skin.js皮肤唯一的 JS 部分注册皮肤、浏览器补丁文件与图标并定义 Chameleon 特性images/皮肤通用图片dev/皮肤图标的 SVG 与 PNG 源文件对照当前仓库的实际文件列表皮肤目录可以发现该目录是发布版布局上述多个 CSS 已按职责合并为editor.css与dialog.css两个主文件并附有浏览器补丁文件skin.js与dev/源文件未保留在发布包中详见上一节。当前实际文件清单如下编辑区样式editor.css、editor_gecko.css、editor_ie.css、editor_ie8.css、editor_iequirks.css对话框样式dialog.css、dialog_ie.css、dialog_ie8.css、dialog_iequirks.css图标资源icons.png、icons_hidpi.png通用图片images/arrow.png菜单箭头、close.png通知关闭按钮、lock.png/lock-open.png对话框链接锁定状态、refresh.png、spinner.gif加载动画以及hidpi/子目录下的高清版说明文档readme.md各 UI 区域样式在合并版中的落点尽管发布版做了合并readme 描述的样式划分在 editor.css 中依然有清晰对应便于按区域排查样式问题整体轮廓对应mainui.css.cke_chrome外框1px 边框#d1d1d1、.cke_inner、.cke_top顶部条背景#f8f8f8、.cke_bottom底部条、.cke_resizer右下角拖拽手柄。工具栏与按钮对应toolbar.css.cke_toolbar、.cke_toolgroup、a.cke_button默认无边框悬停/聚焦时出现#bcbcbc边框与#e5e5e5背景、.cke_button_on激活态白底描边、.cke_toolbar_separator分组分隔线、.cke_toolbox_collapser工具栏折叠控件。富组合框对应richcombo.cssa.cke_combo_button、.cke_combo_text、.cke_combo_arrow等控制字体、字号等下拉控件的呈现。面板与菜单对应panel.css/menu.css.cke_panel、.cke_menu_panel、.cke_menuitem、.cke_menubutton、.cke_menuseparator、.cke_panel_grouptitle等覆盖下拉面板、右键菜单、颜色选择块.cke_colorblock的样式。元素路径栏对应elementspath.css.cke_path、a.cke_path_item、span.cke_path_empty位于编辑器底部。对话框对应dialog.css见 dialog.css。样式重置对应reset.css/preset.css.cke_reset与.cke_reset_all系列规则对编辑器所有 UI 空间做盒模型、字体、边距的统一重置preset.css所体现的皮肤偏好则散见各处默认色值如文字色#484848、强调蓝#139ff7。按需加载lazy loading机制readme 特别强调了三个“不加载直到首次使用”的 CSSpanel.css首次打开组合框下拉面板时才加载menu.css首次打开任意菜单时才加载dialog.css首次打开对话框时才加载。这套机制的意义在于减少首屏加载的 CSS 体积让只使用基础编辑能力的页面无需下载菜单/对话框样式。它由皮肤注册信息驱动——对应ua_editor/ua_dialog中列出的浏览器补丁列表CKEditor 核心会在对应 UI 组件首次激活时动态追加样式表。浏览器特定补丁CSS hacksreadme 中editor_XYZ.css与dialog_XYZ.css即浏览器补丁文件。仓库中可见的补丁覆盖editor_gecko.cssFirefoxGecko 内核专用修正editor_ie.css、editor_ie8.css、editor_iequirks.cssInternet Explorer 及其 Quirks怪异模式修正dialog_ie.css、dialog_ie8.css、dialog_iequirks.css对话框区域的 IE 系列修正。这与ckeditor.js中注册的ua_editorie,iequirks,ie8,gecko、ua_dialogie,iequirks,ie8完全对应——皮肤声明哪些浏览器需要补丁核心就按需加载相应文件。随着 IE 退出历史舞台这部分主要是历史兼容资产。四、在 Dolibarr 中的集成与配置Moono-lisa 作为 Dolibarr 富文本编辑器 DolEditor 的默认皮肤其加载链路可以从源码完整追踪。1. 皮肤如何被选中并注入在 doleditor.class.php 的Create()输出逻辑中$skin getDolGlobalString(FCKEDITOR_SKIN, moono-lisa); ... skin: \.dol_escape_js($skin).\,即后台可配置常量FCKEDITOR_SKIN的值会直接作为 CKEditor 配置项skin传给CKEDITOR.replace(...)未配置时默认moono-lisa同一段代码还展示了皮肤与编辑器其他配置的协同关系removePlugins禁用 elementspath、save、flash、div、anchor 等插件、language跟随 Dolibarr 默认语言、allowedContent内容过滤开关等。2. 后台皮肤选择界面doleditor.lib.php 中的show_skin()函数会扫描皮肤目录/public/includes/ckeditor/ckeditor/skins当前仓库该目录下仅有moono-lisa一个皮肤过滤以_dev结尾等不稳定主题以FCKEDITOR_SKIN配置值为准高亮当前选中皮肤未配置时默认选中moono-lisa。后台管理页 fckeditor.php 中该皮肤选择区块目前处于注释状态//show_skin(null, 1);但它提供了完整的编辑器测试表单可切换dolibarr_readonly、dolibarr_details、dolibarr_notes、dolibarr_mailings、Full、Full_inline等工具栏模式实例化new DolEditor(...)并渲染用于验证皮肤在不同模式下的表现。3. 自定义皮肤的前提若要在自己的 Dolibarr 模块中提供替代皮肤从show_skin()的目录扫描逻辑可以看出皮肤需要被放置到可被扫描到的皮肤目录下并保证目录名与FCKEDITOR_SKIN配置值一致同时皮肤目录内需包含 CKEditor 皮肤约定要求的注册信息与 CSS 文件。仓库当前仅内置moono-lisa自定义皮肤属于扩展场景。五、图标资产速查皮肤目录中的位图资源均可直接在 CSS 中被引用用途归纳如下文件用途icons.png常规分辨率工具栏图标雪碧图16px 基准icons_hidpi.png高清分辨率工具栏图标雪碧图arrow.png菜单项右侧箭头close.png通知条关闭按钮lock.png / lock-open.png对话框链接预览的锁定/解锁状态refresh.png刷新类按钮spinner.gif加载动画images/hidpi/上述图片的高清版本六、许可证与版权Moono-lisa 皮肤版权归 CKSource Holding sp. z o.o.2003–2023所有遵循 CKEditor OSS 许可证条款详见皮肤目录内的 LICENSE.md。在 Dolibarr 中使用该皮肤属于其开源许可允许的集成场景二次分发时需保留版权与许可声明。七、小结Moono-lisa 之所以能成为 CKEditor 4 的默认皮肤并被 Dolibarr 作为 DolEditor 的默认外观源于三点扁平单色的通用适配力、Chameleon 动态配色的主题融合能力以及对高对比度无障碍模式的完整支持。理解其“主 CSS 浏览器补丁 按需加载 图标雪碧图”的目录组织既有助于排查编辑器样式问题也为在 Dolibarr 中自定义编辑器外观提供了清晰的切入点。相关源码入口可继续阅读 doleditor.class.php 与 doleditor.lib.php。赞分享企业应用后端【免费下载链接】dolibarrDolibarr ERP CRM is a modern software package to manage your company or foundations activity (contacts, suppliers, invoices, orders, stocks, agenda, accounting, ...). its an open source Web application (written in PHP) designed for businesses of any sizes, foundations and freelancers.项目地址https://gitcode.com/gh_mirrors/do/dolibarr点击查看免费下载相关推荐Gophish 前端之 CKEditor Moono-Lisa 皮肤完全解析从默认皮肤到 Chameleon 变色原理Gophish 前端之 CKEditor Moono Lisa 皮肤完全解析从默认皮肤到 Chameleon 变色原理 导读 本文以 Gophish 开源网络网络安全应用安全后端Etherpad 皮肤Skins定制完全指南从皮肤目录结构、settings.json 配置到内置皮肤与皮肤变体实战Etherpad 皮肤Skins定制完全指南从皮肤目录结构、settings.json 配置到内置皮肤与皮肤变体实战 Etherpad 通过“皮肤Ski后端协同办公WebSocket前端富文本WeSpeaker-ResNet34-LM-MLX未来路线图语音AI技术的演进方向WeSpeaker ResNet34 LM MLX未来路线图语音AI技术的演进方向 WeSpeaker ResNet34 LM MLX是一款基于MLX框架的语上一篇如何用浏览器快速制作专业电子书EPubBuilder完整指南下一篇OpenReel v2 生态系统设计全解析从离线优先剪辑器到创作者平台的架构蓝图创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

开源一个「照妖镜」Skill:从会话日志到“真身与灵魂”对比,TaoToken 统一 Key 接入 Claude Code 与 Codex 2026/9/29 3:52:52

开源一个「照妖镜」Skill:从会话日志到“真身与灵魂”对比,TaoToken 统一 Key 接入 Claude Code 与 Codex

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
前端照片点击选中效果实战:用 TaoToken 统一 Key 打通 Cline 配置与验证 2026/9/29 3:52:52

前端照片点击选中效果实战:用 TaoToken 统一 Key 打通 Cline 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
入门】用 Node.js 写一个 STDIO 版 MCP 服务器:TaoToken 配置与调试骨架 2026/9/29 3:52:52

入门】用 Node.js 写一个 STDIO 版 MCP 服务器:TaoToken 配置与调试骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
汽车电子知识大百科:从ECU架构到UDS与Simulink实战 2026/9/29 3:52:52

汽车电子知识大百科:从ECU架构到UDS与Simulink实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
软件测试消失?2030年测试能力将重塑质量保障边界 2026/9/29 3:52:46

软件测试消失?2030年测试能力将重塑质量保障边界

软件测试正在消失,但它从来没有像现在这么重要。过去一年我陆陆续续面试了三十多个测试方向的候选人,一个强烈的感受是:很少有人再自称"纯手工测试",但也很少有人能说清楚"测试工程师"和"质量工程师&quo…

阅读更多 →
模型优化器全链路实战:从Profiling到量化部署的优化决策指南 2026/9/29 3:52:45

模型优化器全链路实战:从Profiling到量化部署的优化决策指南

1. 从“模型优化器”这个热词说起:它到底在解决什么问题第一次看到“Model-Optimizer”这个词,很多人会下意识地把它和“模型压缩”“量化”“剪枝”画上等号。但如果你真正在工程一线待过,就会发现事情远没有这么简单。模型优化器本质上是一…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉