| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Windows.Media.Imaging;
- using InABox.Clients;
- using InABox.Core;
- using InABox.DynamicGrid;
- using InABox.WPF;
- using static InABox.Core.DataModelTemplate;
- using ScriptEditorWindow = InABox.DynamicGrid.ScriptEditorWindow;
- namespace PRSDesktop
- {
- public class DataModelTemplateGrid : DynamicDataGrid<DataModelTemplate>
- {
- private readonly BitmapImage _edit = PRSDesktop.Resources.pencil.AsBitmapImage();
- private DataModelTemplate[] Items;
- public DataModelTemplateGrid()
- {
- HiddenColumns.Add(x => x.Template);
- OnCustomiseEditor += DataModelTemplateGrid_OnCustomiseEditor;
- }
- private void DataModelTemplateGrid_OnCustomiseEditor(IDynamicEditorForm sender, DataModelTemplate[]? items, DynamicGridColumn column, BaseEditor editor)
- {
- if (editor == null)
- return;
- if (column.ColumnName.Equals("To") ||
- column.ColumnName.Equals("CC") ||
- column.ColumnName.Equals("BCC") ||
- column.ColumnName.Equals("Subject") ||
- column.ColumnName.Equals("AttachmentName")
- )
- (editor as ExpressionEditor).OnGetVariables += EmailTemplateManagerWindow_OnGetVariables;
- else if (column.ColumnName.Equals("Template") && items.Count() == 1)
- {
- var edt = editor as ScriptEditor;
- edt.Type = ScriptEditorType.TemplateEditor;
- Items = items;
- edt.OnEditorClicked += Edt_OnEditorClicked;
- }
- }
- private void Edt_OnEditorClicked()
- {
- var template = Items[0];
- var editor = new ScriptEditorWindow(template.Template, SyntaxLanguage.HTML);
- var snippets = new Dictionary<string, string[]>();
- var tables = Model.AsDictionary;
- foreach (var key in tables.Keys)
- {
- var name = key.Name;
- var variable = name.Substring(0, 1).ToLower();
- var cursnippets = new List<string>();
- cursnippets.Add("{{ for " + variable + " in " + name + " }}\n\n{{ end }}");
- var props = DatabaseSchema.Properties(key)
- .Where(x => x.Editor != null && x.Editor.GetType() != typeof(NullEditor) && x.Editor.Visible != Visible.Hidden);
- foreach (var prop in props)
- cursnippets.Add("{{ " + variable + "." + prop.Name + " }}");
- snippets[name] = cursnippets.ToArray();
- }
- editor.Snippets = snippets;
- if (editor.ShowDialog() == true)
- {
- template.Template = editor.Script;
- }
- }
- private DataModel EmailTemplateManagerWindow_OnGetVariables()
- {
- return Model;
- }
- public DataModel Model { get; set; }
- protected override void Reload(Filters<DataModelTemplate> criteria, Columns<DataModelTemplate> columns, ref SortOrder<DataModelTemplate> sort,
- Action<CoreTable, Exception> action)
- {
- criteria.Add(new Filter<DataModelTemplate>(x => x.Model).IsEqualTo(Model.Name));
- base.Reload(criteria, columns, ref sort, action);
- }
- protected override DataModelTemplate CreateItem()
- {
- var result = base.CreateItem();
- result.Visible = true;
- result.Model = Model.Name;
- return result;
- }
- }
- }
|