diff --git a/src/Orchard.Web/Modules/Orchard.CodeGeneration/CodeGenerationTemplates/Controller.tt b/src/Orchard.Web/Modules/Orchard.CodeGeneration/CodeGenerationTemplates/Controller.tt
new file mode 100644
index 000000000..16fdbda89
--- /dev/null
+++ b/src/Orchard.Web/Modules/Orchard.CodeGeneration/CodeGenerationTemplates/Controller.tt
@@ -0,0 +1,98 @@
+<#@ template language="C#" HostSpecific="True" #>
+<#
+MvcTextTemplateHost mvcHost = (MvcTextTemplateHost)(Host);
+#>
+using System.Web.Mvc;
+using Orchard.Localization;
+using Orchard;
+
+namespace <#= mvcHost.Namespace #>
+{
+ public class <#= mvcHost.ControllerName #> : Controller
+ {
+ public IOrchardServices Services { get; set; }
+
+ public <#= mvcHost.ControllerName #>(IOrchardServices services) {
+ Services = services;
+ T = NullLocalizer.Instance;
+ }
+
+ public Localizer T { get; set; }
+
+<#
+if(mvcHost.AddActionMethods) {
+#>
+ public ActionResult Index()
+ {
+ return View();
+ }
+
+ public ActionResult Details(int id)
+ {
+ return View();
+ }
+
+ public ActionResult Create()
+ {
+ return View();
+ }
+
+ [HttpPost]
+ public ActionResult Create(FormCollection collection)
+ {
+ try
+ {
+ // TODO: Add insert logic here
+
+ return RedirectToAction("Index");
+ }
+ catch
+ {
+ return View();
+ }
+ }
+
+ public ActionResult Edit(int id)
+ {
+ return View();
+ }
+
+ [HttpPost]
+ public ActionResult Edit(int id, FormCollection collection)
+ {
+ try
+ {
+ // TODO: Add update logic here
+
+ return RedirectToAction("Index");
+ }
+ catch
+ {
+ return View();
+ }
+ }
+
+ public ActionResult Delete(int id)
+ {
+ return View();
+ }
+
+ [HttpPost]
+ public ActionResult Delete(int id, FormCollection collection)
+ {
+ try
+ {
+ // TODO: Add delete logic here
+
+ return RedirectToAction("Index");
+ }
+ catch
+ {
+ return View();
+ }
+ }
+<#
+}
+#>
+ }
+}
diff --git a/src/Orchard.Web/Modules/Orchard.CodeGeneration/CodeGenerationTemplates/ModuleCsProj.txt b/src/Orchard.Web/Modules/Orchard.CodeGeneration/CodeGenerationTemplates/ModuleCsProj.txt
index f80a065c7..228fa14cd 100644
--- a/src/Orchard.Web/Modules/Orchard.CodeGeneration/CodeGenerationTemplates/ModuleCsProj.txt
+++ b/src/Orchard.Web/Modules/Orchard.CodeGeneration/CodeGenerationTemplates/ModuleCsProj.txt
@@ -6,7 +6,7 @@
9.0.30729
2.0
{$$ModuleProjectGuid$$}
- {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
+ {E53F8FEA-EAE0-44A6-8774-FFD645390401};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
Library
Properties
$$ModuleName$$
diff --git a/src/Orchard.Web/Modules/Orchard.CodeGeneration/Commands/CodeGenerationCommands.cs b/src/Orchard.Web/Modules/Orchard.CodeGeneration/Commands/CodeGenerationCommands.cs
index 466f370c9..3505f48e7 100644
--- a/src/Orchard.Web/Modules/Orchard.CodeGeneration/Commands/CodeGenerationCommands.cs
+++ b/src/Orchard.Web/Modules/Orchard.CodeGeneration/Commands/CodeGenerationCommands.cs
@@ -23,7 +23,7 @@ namespace Orchard.CodeGeneration.Commands {
"", "Content", "Styles", "Scripts", "Views", "Zones"
};
private static readonly string[] _moduleDirectories = new [] {
- "", "Properties", "Controllers", "Views", "Models", "Scripts", "Styles"
+ "", "Properties", "Controllers", "Views", "Models", "Scripts", "Styles", "CodeTemplates/AddController"
};
private const string ModuleName = "CodeGeneration";
@@ -210,6 +210,7 @@ namespace Orchard.CodeGeneration.Commands {
string propertiesPath = modulePath + "Properties";
var content = new HashSet();
var folders = new HashSet();
+ var contentNoDeploy = new HashSet();
foreach(var folder in _moduleDirectories) {
Directory.CreateDirectory(modulePath + folder);
@@ -226,6 +227,8 @@ namespace Orchard.CodeGeneration.Commands {
content.Add(modulePath + "Scripts\\Web.config");
File.WriteAllText(modulePath + "Styles\\Web.config", File.ReadAllText(_codeGenTemplatePath + "StaticFilesWebConfig.txt"));
content.Add(modulePath + "Styles\\Web.config");
+ File.WriteAllText(modulePath + "CodeTemplates\\AddController\\Controller.tt", File.ReadAllText(_codeGenTemplatePath + "Controller.tt."));
+ contentNoDeploy.Add(modulePath + "CodeTemplates\\AddController\\Controller.tt");
string templateText = File.ReadAllText(_codeGenTemplatePath + "ModuleAssemblyInfo.txt");
templateText = templateText.Replace("$$ModuleName$$", moduleName);
@@ -238,7 +241,7 @@ namespace Orchard.CodeGeneration.Commands {
File.WriteAllText(modulePath + "Module.txt", templateText);
content.Add(modulePath + "Module.txt");
- var itemGroup = CreateProjectItemGroup(modulePath, content, folders);
+ var itemGroup = CreateProjectItemGroup(modulePath, content, folders, contentNoDeploy);
File.WriteAllText(modulePath + moduleName + ".csproj", CreateCsProject(moduleName, projectGuid, itemGroup));
}
@@ -321,7 +324,7 @@ namespace Orchard.CodeGeneration.Commands {
// create new csproj for the theme
if (projectGuid != null) {
- var itemGroup = CreateProjectItemGroup(themePath, createdFiles, createdFolders);
+ var itemGroup = CreateProjectItemGroup(themePath, createdFiles, createdFolders, null);
string projectText = CreateCsProject(themeName, projectGuid, itemGroup);
File.WriteAllText(themePath + "\\" + themeName + ".csproj", projectText);
}
@@ -329,7 +332,7 @@ namespace Orchard.CodeGeneration.Commands {
if (includeInSolution) {
if (projectGuid == null) {
// include in solution but dont create a project: just add the references to Orchard.Themes project
- var itemGroup = CreateProjectItemGroup(HostingEnvironment.MapPath("~/Themes/"), createdFiles, createdFolders);
+ var itemGroup = CreateProjectItemGroup(HostingEnvironment.MapPath("~/Themes/"), createdFiles, createdFolders, null);
AddFilesToOrchardThemesProject(output, itemGroup);
TouchSolution(output);
}
@@ -356,7 +359,8 @@ namespace Orchard.CodeGeneration.Commands {
}
}
- private static string CreateProjectItemGroup(string relativeFromPath, HashSet content, HashSet folders) {
+ private static string CreateProjectItemGroup(string relativeFromPath, HashSet content, HashSet folders, HashSet contentNoDeploy)
+ {
var contentInclude = "";
if (relativeFromPath != null && !relativeFromPath.EndsWith("\\", StringComparison.OrdinalIgnoreCase)) {
relativeFromPath += "\\";
@@ -374,6 +378,10 @@ namespace Orchard.CodeGeneration.Commands {
contentInclude += "\r\n" + string.Join("\r\n", from folder in folders
select " ");
}
+ if (contentNoDeploy != null && contentNoDeploy.Count > 0) {
+ contentInclude += "\r\n" + string.Join("\r\n", from file in contentNoDeploy
+ select " ");
+ }
return string.Format(CultureInfo.InvariantCulture, "\r\n{0}\r\n \r\n ", contentInclude);
}
diff --git a/src/Orchard.Web/Modules/Orchard.CodeGeneration/Orchard.CodeGeneration.csproj b/src/Orchard.Web/Modules/Orchard.CodeGeneration/Orchard.CodeGeneration.csproj
index b490060bf..507b5419d 100644
--- a/src/Orchard.Web/Modules/Orchard.CodeGeneration/Orchard.CodeGeneration.csproj
+++ b/src/Orchard.Web/Modules/Orchard.CodeGeneration/Orchard.CodeGeneration.csproj
@@ -82,6 +82,9 @@
+
+
+