1.描述
以创建PhoneCommand插件为例,介绍如何创建命令类型插件。
查看完整代码请参见:https://gitee.com/huozige-china/phone-command。
2.创建命令类型插件
操作步骤
下载PluginsProjectCreator.zip,解压后运行ForguncyPluginCreator.exe,在弹出的对话框中,输入您的插件名称,选择插件类型为命令,并设置插件输出的路径。
设置完成后,单击“OK”。
打开您创建的插件所在的文件夹,使用Visual Studio打开.csproj文件。
在解决方案资源管理器中将Forguncy.Commands和Forguncy.PluginCommon移除掉。
在解决方案资源管理器中,“引用”上右击,选择添加引用。
在右下角单击“浏览”,选择活字格安装文件所在的bin文件夹,如果是默认安装,则路径为"C:\Program Files (x86)\Forguncy 6\Website\designerBin",找到以下文件,将其添加到解决方案资源管理器中,
- 如果需要自定义命令编辑器或实现ICommandChecker接口,请添加Forguncy.Commands.dll,Forguncy.Commands.Design.dll,GrapeCity.Forguncy.Plugin.dll,GrapeCity.Forguncy.Plugin.Design.dl 这四个文件;
- 在其他情况下,请添加Forguncy.Commands.dll,GrapeCity.Forguncy.Plugin.dll 这两个文件;
并且将这些文件的属性中的“复制本地”设置为“False”。
在PhoneCommand.cs文件中添加代码。
添加“提取号码单元格”、“提取策略”和“提取号码类型”三个属性,且该命令可在普通单元格、页面加载和表格中使用。
[Icon("pack://application:,,,/PhoneCommand;component/Resources/Icon.png")] public class PhoneCommand : Command { [DisplayName("提取号码单元格")] [FormulaProperty(true)] public object ExtractPhoneNumberCell { get; set; } [DisplayName("提取策略")] public ExtractPolicy ExtractPolicy { get; set; } [DisplayName("提取号码类型")] public ExtractPhoneType ExtractPhoneType { get; set; } public override string ToString() { return "拨打电话命令"; } public override CommandScope GetCommandScope() { return CommandScope.Cell | CommandScope.ListView | CommandScope.PageLoad; } } public enum ExtractPolicy { [Description("匹配第一项")] ExtractFirstOne, [Description("匹配最后一项")] ExtractLastOne } public enum ExtractPhoneType { [Description("手机号码")] Mobile, [Description("固定电话号码")] Phone }
在Resources/PhoneCommand.js中添加代码:
var PhoneCommand = (function (_super) { __extends(PhoneCommand, _super); function PhoneCommand() { return _super !== null && _super.apply(this, arguments) || this; } PhoneCommand.prototype.execute = function () { // Get setings var commandSettings = this.CommandParam; var extractPolicy = commandSettings.ExtractPolicy; var extractPhoneNumberCell = commandSettings.ExtractPhoneNumberCell; var extractPhoneType = commandSettings.ExtractPhoneType; var text = this.evaluateFormula(extractPhoneNumberCell); var mobileNumbersArray = []; var phoneNumbersArray = []; if (extractPhoneType === ExtractPhoneType.Mobile) { var mobileNumberMatches = text.match(/\d{3}\s*\d{4}\s*\d{4}/g); if (mobileNumberMatches && mobileNumberMatches.length > 0) { mobileNumberMatches.map(function (temp) { mobileNumbersArray.push(temp); }); } } else if (extractPhoneType === ExtractPhoneType.Phone) { var phoneNumberMatches = text.match(/((\+?\s*\d{2,3}\s*\-?\s*)?(\d{2,3})\s*-?\s*)(\d{7,8})(\s*-?\s*(\d{3,}))?/g); if (phoneNumberMatches && phoneNumberMatches.length > 0) { phoneNumberMatches.map(function (temp) { temp = temp.replace(/\-/g, ""); phoneNumbersArray.push(temp); }); } } var array = mobileNumbersArray; if (extractPhoneType === ExtractPhoneType.Phone) { array = phoneNumbersArray; } if (array.length > 0) { if (extractPolicy === ExtractPolicy.ExtractFirstOne) { window.location.href = "TEL:" + array[0]; } else if (extractPolicy === ExtractPolicy.ExtractLastOne) { window.location.href = "TEL:" + array[array.length - 1]; } } } return PhoneCommand; }(Forguncy.CommandBase)); var ExtractPolicy = { ExtractFirstOne: 0, ExtractLastOne: 1 }; var ExtractPhoneType = { Mobile: 0, Phone: 1 } // Key format is "Namespace.ClassName, AssemblyName" Forguncy.CommandFactory.registerCommand("PhoneCommand.PhoneCommand, PhoneCommand", PhoneCommand);
您可以自定义插件图标、logo、介绍等信息。编辑完成后,在插件名称上右击,选择“生成”或者“重新生成”。完成后重启活字格设计器,新建的插件就会安装到活字格设计器中。
您可以在页面中设置一个按钮,编辑其命令为“拨打电话命令”,并进行其他设置。运行页面后,在手机上就可以单击此按钮来提取号码并选择呼叫、复制或添加到手机通讯录等。