123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- using Comal.Classes;
- using InABox.Core;
- using InABox.DynamicGrid;
- using InABox.WPF;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Threading.Tasks;
- using ScriptEditor = InABox.DynamicGrid.ScriptEditorWindow;
- namespace PRSServer.Forms.WebTemplates
- {
- public class WebTemplateGrid : DynamicDataGrid<WebTemplate>
- {
- private readonly string defaultTemplate = @"
- @{Model.LoadModel(new string[] { ""CompanyInformation"", ""CompanyLogo"", ""User"" });}
- <!DOCTYPE html>
- <html>
- <head>
- <title>Untitled page</title>
- <meta charset=""utf8"">
- <meta name=""viewport"" content=""width=device-width,initial-scale=1"">
- </head>
- <body>
- <h1>New Page</h1>
- <p>
- This is an empty page.
- </p>
- </body>
- </html>";
- public WebTemplateGrid()
- {
- ActionColumns.Add(new DynamicImageColumn(Properties.Resources.html.AsBitmapImage(), EditTemplateAction));
- OnCreateItem += (sender, item) => { (item as WebTemplate).Template = defaultTemplate; };
- OnAfterSave += (sender, items) =>
- {
- foreach (var item in items.Cast<WebTemplate>()) SaveToLocalFolder(item);
- };
- OnDoubleClick += (sender, args) =>
- {
- if (SelectedRows.Length == 1) EditWebTemplateScript(SelectedRows[0]);
- args.Handled = true;
- };
- }
- protected override void DoReconfigure(DynamicGridOptions options)
- {
- base.DoReconfigure(options);
- options.AddRows = true;
- options.EditRows = true;
- options.DeleteRows = true;
- }
- private bool EditTemplateAction(CoreRow arg)
- {
- if (arg != null) EditWebTemplateScript(arg);
- return false;
- }
- private static void SaveToLocalFolder(WebTemplate template)
- {
- if (CoreUtils.GetVersion() == "???")
- File.WriteAllText(
- string.Format("{0}/WebBackup/Templates/{1}_{2}_{3}.html",
- Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
- template.DataModel,
- template.Slug,
- template.ID
- ),
- template.Template
- );
- }
- private void EditWebTemplateScript(CoreRow arg)
- {
- var template = LoadItem(arg);
- var editor = new ScriptEditor(template.Template, SyntaxLanguage.HTML, $"Template: {template}");
- editor.OnSave += (e, args) =>
- {
- template.Template = editor.Script;
- SaveToLocalFolder(template);
- SaveItem(template);
- };
- editor.OnCompile += (e, args) =>
- {
- editor.Save();
- editor.ClearErrors().AddError("Template Saved").AddError("Compiling Template...");
- Task.Run(() =>
- {
- var errors = new List<string>();
- try
- {
- WebHandler.CompileTemplate(template);
- errors.Add("Template Compiled Successfully!");
- }
- catch (Exception e0)
- {
- errors.Add("ERROR: ");
- errors.AddRange(e0.Message.Split(new[] { "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries));
- }
- Dispatcher.Invoke(() =>
- {
- editor.ClearErrors();
- foreach (var error in errors) editor.AddError(error);
- });
- });
- };
- editor.Show();
- }
- }
- }
|