Javascript 带有TinyMCE编辑器的IBM/HCL Connections 5 CR6中的插件

Javascript 带有TinyMCE编辑器的IBM/HCL Connections 5 CR6中的插件,javascript,tinymce,websphere,ibm-connections,Javascript,Tinymce,Websphere,Ibm Connections,我在vanilla Connections 5 CR6安装上安装了,现在想添加插件。HCL告诉我们,我们已将TinyMCE的pro版本与连接一起获得许可。pro插件的一个例子是,我想安装它 因此,我在config.js文件的externalPlugins数组中添加了清单中的插件文件以及列表(作为依赖项需要): externalPlugins: [ { name: "checklist", url: pluginBaseDir + "checklist/plugin.min.j

我在vanilla Connections 5 CR6安装上安装了,现在想添加插件。HCL告诉我们,我们已将TinyMCE的pro版本与连接一起获得许可。pro插件的一个例子是,我想安装它

因此,我在
config.js
文件的
externalPlugins
数组中添加了清单中的插件文件以及列表(作为依赖项需要):

externalPlugins: [
  {
    name: "checklist",
    url: pluginBaseDir + "checklist/plugin.min.js",
    off: []
  },{
    name: "lists",
    url: pluginBaseDir + "lists/plugin.min.js",
    off: []
  }
]
并在工具栏中添加了
检查表

toolbar: [
    "undo",
    {
      label: "group.insert",
      items: [
        {
          id: "insert",
          label: "menu.insert",
          items: [
            [
              "checklist",
              "link",
              "conn-insert",
              "bookmark",
              "media",
              "pageembed",
              "table",
              "codesample"
            ],
            [
              "specialchar",
              "hr"
            ]
          ]
        }
      ]
    },
    "style",
    "emphasis",
    "align",
    "listindent",
    "format",
    [
      "conn-other",
      "conn-emoticons",
      "conn-macros"
    ],
    "language",
    "tools"
]
{
  label: "Test",
  items: ["table", "tmce-toc"]
}
其中
pluginBaseDir
设置为
/connections/resources/web/tiny.editors.connections/tinymce/plugins/
。请求的JS文件是可访问的,我使用
curl
验证了这一点

但是按钮没有显示。我试过了

在第一级添加
检查表
添加
tmce
前缀 请阅读示例
config.js
文件中的相关内容:

toolbar: [
    "tmce-checklist",
    "undo"
    // ...
测试程序 每次对
config.js
进行更改后,我都会使用jython wsadmin脚本停止并启动公共应用程序,从而重新启动该应用程序。这是可行的,可以使用config对象中包含的
postCreateTextboxio
方法轻松验证:

postCreateTextboxio: function(editor) {
    console.log("custom.js revision #2");
}

因此,我在重新启动公共应用程序后获得了控制台输出

插件已加载,可以在浏览器控制台中验证:

> tinyMCE.editors[0].settings.plugins.indexOf('toc')
  319
Ephox导致了这个问题:当添加插件直接与原始TinyMCE一起工作时,我们在HCL连接中使用Ephox。它充当一个中间件,在连接支持的多个编辑器(TinyMCE、Textbox.io和CKEditor)之间共享配置文件

使用Ephox,当在工具栏中引用时,我们需要在插件名称前面加上
tmce-

toolbar: [
    "undo",
    {
      label: "group.insert",
      items: [
        {
          id: "insert",
          label: "menu.insert",
          items: [
            [
              "checklist",
              "link",
              "conn-insert",
              "bookmark",
              "media",
              "pageembed",
              "table",
              "codesample"
            ],
            [
              "specialchar",
              "hr"
            ]
          ]
        }
      ]
    },
    "style",
    "emphasis",
    "align",
    "listindent",
    "format",
    [
      "conn-other",
      "conn-emoticons",
      "conn-macros"
    ],
    "language",
    "tools"
]
{
  label: "Test",
  items: ["table", "tmce-toc"]
}

清单插件已经包含在用于连接集成的微型编辑器中,因此您可以省去
externalPlugins
条目,但它不包含在默认工具栏中,因为它需要额外的CSS

目前,检查表插件未注册菜单项,因此无法将其添加到“插入”菜单中,但您可以使用以下配置将其添加到工具栏中:

toolbar: [
    "undo",
    {
      label: "group.insert",
      items: [
        {
          id: "insert",
          label: "menu.insert",
          items: [
            [
              "link",
              "conn-insert",
              "bookmark",
              "media",
              "pageembed",
              "table",
              "codesample"
            ],
            [
              "specialchar",
              "hr"
            ]
          ]
        }
      ]
    },
    "style",
    "emphasis",
    "align",
    [
      "checklist"
    ],
    "listindent",
    "format",
    [
      "conn-other",
      "conn-emoticons",
      "conn-macros"
    ],
    "language",
    "tools"
]
无法在第一级添加检查表的原因是,所有第一级项目都是工具栏项目组。您可以使用方括号创建匿名组。请注意,之所以选择此语法,是因为它与Textbox.io向后兼容,并且将其更改为特定于TinyMCE将破坏我们现有客户的配置

一旦您有了清单插件按钮,显示您需要将它使用的CSS添加到连接中,以便它能够呈现

.tox-checklist > li:not(.tox-checklist--hidden) {
  list-style: none;
  margin: .25em 0;
  position: relative;
}
.tox-checklist > li:not(.tox-checklist--hidden)::before {
  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
  background-size: 100%;
  content: '';
  cursor: pointer;
  height: 1em;
  left: -1.5em;
  position: absolute;
  top: .125em;
  width: 1em;
}
.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before {
  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
}

我们目前正在为清单插件开发一个垫片,以允许它在连接中工作,而不需要全局CSS更改,并在样式和类被剥离的活动流中工作得更好。我预计这将出现在4.2.0版本中