private void tsbAddCheckedScripts_Click(object sender, EventArgs e) { lvLogs.Items.Clear(); var scripts = crmScriptsTreeView1.GetSelectedScripts(); var forms = crmForms1.GetSelectedForms(); if (scripts.Count == 0) { MessageBox.Show(ParentForm, "Please select at least one script", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (forms.Count == 0) { MessageBox.Show(ParentForm, "Please select at least one form", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } var sod = new ScriptsOrderDialog(scripts) { StartPosition = FormStartPosition.CenterParent }; if (sod.ShowDialog(ParentForm) == DialogResult.Cancel) { return; } WorkAsync("Updating forms...", (bw, evt) => { var scriptsArg = (List<Entity>)((object[])evt.Argument)[0]; var addFirstArg = (bool)((object[])evt.Argument)[1]; var formsArg = (List<Entity>)((object[])evt.Argument)[2]; if (addFirstArg) { scripts.Reverse(); } var fManager = new FormManager(Service); bool atLeastOneSuccess = false; foreach (var form in formsArg) { bw.ReportProgress(0, string.Format("Updating form '{0}' ({1})...", form.GetAttributeValue<string>("name"), form.GetAttributeValue<string>("objecttypecode"))); foreach (var script in scriptsArg) { try { fManager.AddLibrary(form, script.GetAttributeValue<string>("name"), addFirstArg); atLeastOneSuccess = true; ListViewDelegates.AddItem(lvLogs, new ListViewItem { Text = form.GetAttributeValue<string>("objecttypecode"), SubItems = { new ListViewItem.ListViewSubItem {Text = form.GetAttributeValue<string>("name")}, new ListViewItem.ListViewSubItem {Text = script.GetAttributeValue<string>("name")}, new ListViewItem.ListViewSubItem {Text = "Added!"} }, ForeColor = Color.Green }); } catch (Exception error) { ListViewDelegates.AddItem(lvLogs, new ListViewItem { Text = form.GetAttributeValue<string>("objecttypecode"), SubItems = { new ListViewItem.ListViewSubItem {Text = form.GetAttributeValue<string>("name")}, new ListViewItem.ListViewSubItem {Text = script.GetAttributeValue<string>("name")}, new ListViewItem.ListViewSubItem {Text = error.Message} }, ForeColor = Color.Red }); } } fManager.UpdateForm(form); } if (!atLeastOneSuccess) { return; } foreach (var entitiesToPublish in formsArg.Select(f => f.GetAttributeValue<string>("objecttypecode")).Distinct()) { bw.ReportProgress(0, string.Format("Publishing entity '{0}'...", entitiesToPublish)); fManager.PublishForm(entitiesToPublish); } }, evt => { if (evt.Error != null) { MessageBox.Show(ParentForm, "An error occured:" + evt.Error.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }, evt => SetWorkingMessage(evt.UserState.ToString()), new object[] { sod.Scripts, sod.AddFirst, forms }); }
private void viewLibrariesToolStripMenuItem_Click(object sender, EventArgs e) { try { var form = (Entity)lvForms.FocusedItem.Tag; var formLibrariesNode = FormManager.GetFormLibraries(form); if (formLibrariesNode == null || !formLibrariesNode.HasChildNodes) { MessageBox.Show("No Libraries are currently registered for the form"); return; } var scripts = (from XmlNode l in formLibrariesNode select ScriptsByName[l.Attributes["name"].Value]).ToList(); var sod = new ScriptsOrderDialog(scripts, true) { StartPosition = FormStartPosition.CenterParent }; if (sod.ShowDialog(ParentForm) == DialogResult.Cancel) { return; } var libraryNodes = new List<XmlNode>(); foreach (XmlNode node in formLibrariesNode.ChildNodes) { libraryNodes.Add(node); } formLibrariesNode.RemoveAll(); foreach (var script in sod.Scripts) { foreach (var libraryNode in libraryNodes) { if (libraryNode.Attributes["name"].Value == script.GetAttributeValue<string>("name")) { formLibrariesNode.AppendChild(libraryNode); break; } } } Plugin.UpdateFormLibraryOrder(form, formLibrariesNode); } catch (Exception ex) { MessageBox.Show(ex.Message); return; } }