出厂默认小组件提供程序允许小组件的逻辑和物理分离。
为什么使用工厂默认提供程序?
- 源代码管理。 每个工厂提供程序都有一个单独的文件夹,用于存储其小组件(在 defaultwidgets/{出厂默认提供程序标识符} 下的文件夹中)。此外,每个小组件都保存为单个 xml 文件,以及一个包含该小组件的任何补充文件的文件夹。这种分离和组织有助于使用源代码管理来维护小组件更新。管理小组件源文章提供了有关工厂默认提供程序、开发人员模式以及在使用小组件时使用源代码管理的其他详细信息。
- 确保小组件可用。 在提供自定义功能(内容、小组件扩展和页面)时,最好知道为该功能定义 UI 的小组件可用。出厂默认小组件提供程序定义的小组件可以在小组件编辑器中编辑,但不能将其移除。这可确保小组件在页面的出厂默认定义中可以安全引用。
- 启用/禁用小组件。 在开发依赖于启用的其他插件小组件(例如:第三方应用程序)时,将小组件组合在出厂默认提供程序中时,可以启用/禁用提供程序及其小组件以及所需的功能。
小组件文件存储
每个出厂默认提供程序都使用其标识符作为文件夹名称并将其默认小组件存储在平台的 filestorage/defaultwidgets 文件夹下。小组件作为单个 xml 文件存储在该文件夹下。小组件的补充文件将存储在以该小组件的标识符命名的单个文件夹中。
例如,假设我们有一个文件存储提供程序,其标识符为“94e649b8113b44369881b0fe8fa186ba”。该提供程序有两个小组件 Widget1 和 Widget2。如果 Widget1 没有补充文件,而 Widget2 有 3 个补充文件,标识符为 'fdefb3502fcd4ba8a872912477e5358b'。此提供程序的文件存储将是:
- filestorage
- defaultwidgets
- 94e649b8113b44369881b0fe8fa186ba
- Widget1.xml
- Widget2.xml
- fdefb3502fcd4ba8a872912477e5358b
- widget.js
- image.jpg
- save.vm
- 94e649b8113b44369881b0fe8fa186ba
- defaultwidgets
创建小组件工厂默认提供程序
IScriptedContentWidgetFactoryDefaultProvider 接口有一个属性:
interface IScriptedContentWidgetFactoryDefaultProvider : IPlugin { Guid ScriptedContentWidgetFactoryDefaultIdentifier { get; } }
此属性应返回提供程序的唯一标识符。
示例
using System; using Limyee.Extensibility.UI.Version1; namespace Samples { public class SampleWidgetProvider : IScriptedContentWidgetFactoryDefaultProvider { #region IScriptedContentWidgetFactoryDefaultProvider Members private readonly Guid _identifier = new Guid("f9430fc0-b712-46e3-9876-74f13220e447"); public Guid ScriptedContentWidgetFactoryDefaultIdentifier { get { return _identifier; } } #endregion #region IPlugin Members public string Name { get { return "小组件提供程序示例"; } } public string Description { get { return "小组件的工厂提供程序示例。"; } } public void Initialize() { } #endregion } }
该示例创建一个名为“小组件提供程序示例”的提供程序。启用此插件后,filestorage/defaultwidgets/f9430fc0b71246e3987674f13220e447 文件夹中的任何小组件源文件(使用上面的格式)都将在小组件编辑器中可用。