public Map(string extension, WebresourceType type, int crmValue, string label) { Extension = extension; Type = type; CrmValue = crmValue; Label = label; }
public Webresource(string name, string filePath, WebresourceType type, MyPluginControl parent) : this() { Map extMap = null; if (type == WebresourceType.Auto) { var extension = Path.GetExtension(filePath); extMap = WebresourceMapper.Instance.Items.FirstOrDefault(i => i.Extension == extension?.Remove(0, 1).ToLower()); if (extMap != null) { type = extMap.Type; } } record = new Entity("webresource") { ["name"] = name, ["webresourcetype"] = new OptionSetValue((int)type), }; if (filePath == null) { StringContent = string.Empty; } else { record["content"] = Convert.ToBase64String(File.ReadAllBytes(filePath)); StringContent = GetPlainText(); } var map = extMap ?? WebresourceMapper.Instance.Items.FirstOrDefault(i => i.CrmValue == (int)type); if (map != null) { record.FormattedValues["webresourcetype"] = map.Label; } this.filePath = filePath; loadedOn = DateTime.Now; Plugin = parent; if (Plugin.WebresourcesCache.All(w => w.Name != Name)) { Plugin.WebresourcesCache.Add(this); } State = filePath != null && Settings.Instance.LocalFilesOutOfDateOnLoad ? WebresourceState.Saved : WebresourceState.None; LoadAssociatedResources(); }
internal void AddNewWebresource(FolderNode parentNode, WebresourceType type) { var map = WebresourceMapper.Instance.Items.First(i => i.Type == type); var nwrDialog = new NewWebResourceDialog(map.Extension, OrganizationMajorVersion); if (nwrDialog.ShowDialog(mainControl) == DialogResult.OK) { var name = $"{parentNode.ResourceFullPath}/{nwrDialog.WebresourceName}"; var resource = new Webresource(name, null, type, mainControl); mainControl.WebresourcesCache.Add(resource); AddSingleNode(resource, name.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries), parentNode); parentNode.Expand(); } }
public WebresourceNode AddSingleNode(Webresource resource, string[] nameParts, FolderNode folder = null) { var fileName = nameParts.Last(); WebresourceType type = WebresourceType.Auto; if (resource.Type != 0) { type = (WebresourceType)resource.Type; } if (type == WebresourceType.Auto) { if (fileName.IndexOf(".", StringComparison.Ordinal) < 0) { if (resource.Type == 0) { return(null); } type = (WebresourceType)resource.Type; } else { type = Webresource.GetTypeFromExtension(fileName .Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries).Last()); } } WebresourceNode node = null; switch (type) { case WebresourceType.WebPage: node = new WebpageNode(resource, Settings); break; case WebresourceType.Css: node = new CssNode(resource, Settings); break; case WebresourceType.Data: node = new DataNode(resource, Settings); break; case WebresourceType.Gif: node = new GifNode(resource, Settings); break; case WebresourceType.Ico: node = new IcoNode(resource, Settings); break; case WebresourceType.Jpg: node = new JpgNode(resource, Settings); break; case WebresourceType.Png: node = new PngNode(resource, Settings); break; case WebresourceType.Resx: node = new ResxNode(resource, Settings); break; case WebresourceType.Script: node = new JavaScriptNode(resource, Settings); break; case WebresourceType.Silverlight: node = new SilverlightNode(resource, Settings); break; case WebresourceType.Vector: node = new VectorNode(resource, Settings); break; case WebresourceType.Xsl: node = new XslNode(resource, Settings); break; } resource.Node = node; if (folder != null && node != null) { node.ForeColor = resource.State == WebresourceState.Saved ? Color.Blue : resource.State == WebresourceState.Draft ? Color.Red : Color.Black; folder.Nodes.Add(node); (node.Parent as FolderNode)?.SetFolderColor(); } return(node); }