diff --git a/CustomItemGenerator.csproj b/CustomItemGenerator.csproj index be85e62..b50dfe0 100644 --- a/CustomItemGenerator.csproj +++ b/CustomItemGenerator.csproj @@ -53,20 +53,20 @@ False - lib\Sitecore.Client.dll + ..\CustomItemGeneratorMaster\bin\Sitecore.Client.dll False - lib\Sitecore.Kernel.dll + ..\CustomItemGeneratorMaster\bin\Sitecore.Kernel.dll False False - lib\Sitecore.Logging.dll + ..\CustomItemGeneratorMaster\bin\Sitecore.Logging.dll False - lib\Sitecore.NVelocity.dll + ..\CustomItemGeneratorMaster\bin\Sitecore.NVelocity.dll @@ -104,6 +104,7 @@ + diff --git a/Data/Packages/Custom Item Generator-1.0.zip b/Data/Packages/Custom Item Generator-1.0.zip index 8525349..268f406 100644 Binary files a/Data/Packages/Custom Item Generator-1.0.zip and b/Data/Packages/Custom Item Generator-1.0.zip differ diff --git a/Fields/SimpleTypes/CustomCheckboxField.cs b/Fields/SimpleTypes/CustomCheckboxField.cs index a0df002..fb81438 100644 --- a/Fields/SimpleTypes/CustomCheckboxField.cs +++ b/Fields/SimpleTypes/CustomCheckboxField.cs @@ -10,9 +10,9 @@ public CustomCheckboxField(Item item, CheckboxField field) { } - public static implicit operator bool(CustomCheckboxField dateField) + public static implicit operator bool(CustomCheckboxField checkboxField) { - return dateField.Checked; + return checkboxField.Checked; } public bool Checked @@ -24,5 +24,10 @@ public bool Checked return ((CheckboxField)item.Fields[field.InnerField.Name]).Checked; } } + + public override string ToString() + { + return Checked.ToString(); + } } } diff --git a/Fields/SimpleTypes/CustomDateField.cs b/Fields/SimpleTypes/CustomDateField.cs index 6ad2227..8598b39 100644 --- a/Fields/SimpleTypes/CustomDateField.cs +++ b/Fields/SimpleTypes/CustomDateField.cs @@ -25,5 +25,10 @@ public DateTime DateTime return ((DateField)item.Fields[field.InnerField.Name]).DateTime; } } + + public override string ToString() + { + return DateTime.ToString(); + } } } diff --git a/Fields/SimpleTypes/CustomIntegerField.cs b/Fields/SimpleTypes/CustomIntegerField.cs index 38a45bb..9b0162b 100644 --- a/Fields/SimpleTypes/CustomIntegerField.cs +++ b/Fields/SimpleTypes/CustomIntegerField.cs @@ -33,5 +33,10 @@ public int Integer return int.MinValue; } } + + public override string ToString() + { + return Integer.ToString(); + } } } diff --git a/Fields/SimpleTypes/CustomTextField.cs b/Fields/SimpleTypes/CustomTextField.cs index cb93fb4..dbef354 100644 --- a/Fields/SimpleTypes/CustomTextField.cs +++ b/Fields/SimpleTypes/CustomTextField.cs @@ -19,5 +19,10 @@ public string Text { get { return Rendered; } } + + public override string ToString() + { + return Text.ToString(); + } } } diff --git a/Pipelines/AutoUpdate.cs b/Pipelines/AutoUpdate.cs new file mode 100644 index 0000000..826fc0b --- /dev/null +++ b/Pipelines/AutoUpdate.cs @@ -0,0 +1,42 @@ +using System; +using System.Web; +using CustomItemGenerator.Settings; +using CustomItemGenerator.SitecoreApp; +using Sitecore.Web.UI.Sheer; +using Sitecore.Web.UI.HtmlControls; +using System.IO; +using CustomItemGenerator.Util; +using Sitecore.Data.Items; + +namespace CustomItemGenerator.Pipelines { + public class AutoUpdate : CustomItemCodeBeside { + protected void OnItemSaved(object sender, EventArgs args) { + + CustomItemSettings settings = new CustomItemSettings(HttpContext.Current); + + // Only continue if we have valid args, auto update is set to true, and the file exists already + if (args != null && settings.AutoUpdate) { + + // Get the template destination + Item _temp = masterDb.GetItem(GetCurrentContentGuid()); + if (_temp != null) { + string file_path = FileUtil.GetClassFilePath(CodeUtil.GetClassNameForTemplate(_temp), settings.BaseFileOutputPath); + + // Make sure the template already exists + if (File.Exists(file_path)) { + + // Set these up since we don't have the editor open + CustomItemNamespace = new Edit(); + CustomItemFilePath = new Edit(); + + // Call the current code beside + OnLoad(args); + OnOK(sender, args); + } + } + } + + return; + } + } +} diff --git a/Settings/CustomItemSettings.cs b/Settings/CustomItemSettings.cs index 1c8c124..08ebd7e 100644 --- a/Settings/CustomItemSettings.cs +++ b/Settings/CustomItemSettings.cs @@ -14,6 +14,7 @@ public class CustomItemSettings public string NamespaceProvider { get; private set; } public string FilepathProvider { get; private set; } public List FieldMappings { get; private set; } + public bool AutoUpdate { get; set; } public CustomItemSettings(HttpContext httpContext) : this(httpContext.Server.MapPath("/")) @@ -33,7 +34,7 @@ public CustomItemSettings(string basePath) NamespaceProvider = string.Empty; FilepathProvider = string.Empty; FieldMappings = new List(); - + bool update = false; NvelocityTemplatePath = basePath + @"\sitecore modules\Shell\CustomItemGenerator\Nvelocity Templates"; foreach (XmlNode childNode in elementsByTagName[0].ChildNodes) @@ -67,6 +68,11 @@ public CustomItemSettings(string basePath) } break; + + case "AutoUpdate": + bool.TryParse(childNode.Attributes["onSave"].Value, out update); + AutoUpdate = update; + break; } } } diff --git a/SitecoreApp/CustomItemCodeBeside.cs b/SitecoreApp/CustomItemCodeBeside.cs index 4a4f4c6..f9e9322 100644 --- a/SitecoreApp/CustomItemCodeBeside.cs +++ b/SitecoreApp/CustomItemCodeBeside.cs @@ -22,7 +22,7 @@ public class CustomItemCodeBeside : DialogForm protected Database masterDb = Factory.GetDatabase("master"); protected Edit CustomItemNamespace; protected Edit CustomItemFilePath; - private TemplateItem template; + protected TemplateItem template; private Checkbox GenerateBaseFile; private Checkbox GenerateInstanceFile; @@ -51,9 +51,11 @@ protected override void OnLoad(EventArgs args) } else { - if (!Context.ClientPage.IsEvent) + + CustomItemSettings settings = new CustomItemSettings(HttpContext.Current); + + if (settings.AutoUpdate || !Context.ClientPage.IsEvent) { - CustomItemSettings settings = new CustomItemSettings(HttpContext.Current); string defaultNamespace = settings.BaseNamespace; string defaultFilePath = settings.BaseFileOutputPath; @@ -91,14 +93,19 @@ protected override void OnOK(object sender, EventArgs args) ICustomItemNamespaceProvider namespaceProvider = AssemblyUtil.GetNamespaceProvider(settings.NamespaceProvider); ICustomItemFolderPathProvider filePathProvider = AssemblyUtil.GetFilePathProvider(settings.FilepathProvider); - CustomItemInformation customItemInformation = new CustomItemInformation(template, CustomItemNamespace.Value, - CustomItemFilePath.Value, filePathProvider, namespaceProvider); - CodeGenerator codeGenerator = new CodeGenerator(customItemInformation, - GenerateBaseFile.Checked, GenerateInstanceFile.Checked, GenerateInterfaceFile.Checked, GenerateStaticFile.Checked); - codeGenerator.GenerateCode(); + CustomItemInformation customItemInformation = new CustomItemInformation(template, CustomItemNamespace.Value, + CustomItemFilePath.Value, filePathProvider, namespaceProvider); - SheerResponse.Alert(codeGenerator.GenerationMessage, new string[0]); + if (settings.AutoUpdate) { + new CodeGenerator(customItemInformation, true, false, false, false).GenerateCode(); + } + else { + CodeGenerator codeGenerator = new CodeGenerator(customItemInformation, + GenerateBaseFile.Checked, GenerateInstanceFile.Checked, GenerateInterfaceFile.Checked, GenerateStaticFile.Checked); + codeGenerator.GenerateCode(); + SheerResponse.Alert(codeGenerator.GenerationMessage, new string[0]); + } base.OnOK(sender, args); } }