diff --git a/src/Orchard.Web/Core/Contents/Controllers/AdminController.cs b/src/Orchard.Web/Core/Contents/Controllers/AdminController.cs index 77e3b28b4..960fa7c85 100644 --- a/src/Orchard.Web/Core/Contents/Controllers/AdminController.cs +++ b/src/Orchard.Web/Core/Contents/Controllers/AdminController.cs @@ -198,7 +198,7 @@ namespace Orchard.Core.Contents.Controllers { ActionResult CreatableTypeList() { var list = Shape.List(); - list.AddRange(GetCreatableTypes()); + list.AddRange("CreatableTypeList", GetCreatableTypes()); var viewModel = Shape.ViewModel() .ContentTypes(list); diff --git a/src/Orchard.Web/Modules/Orchard.CodeGeneration/CodeGenerationTemplates/ThemeManifest.txt b/src/Orchard.Web/Modules/Orchard.CodeGeneration/CodeGenerationTemplates/ThemeManifest.txt index 7575228fe..0c35a04eb 100644 --- a/src/Orchard.Web/Modules/Orchard.CodeGeneration/CodeGenerationTemplates/ThemeManifest.txt +++ b/src/Orchard.Web/Modules/Orchard.CodeGeneration/CodeGenerationTemplates/ThemeManifest.txt @@ -3,5 +3,6 @@ Author: The Orchard Team Website: http://www.orchardproject.net Description: Description for the theme Version: 1.0 +BaseTheme: $$BaseTheme$$ # todo: provide tags # Tags: Classic, Serif diff --git a/src/Orchard.Web/Modules/Orchard.CodeGeneration/Commands/CodeGenerationCommands.cs b/src/Orchard.Web/Modules/Orchard.CodeGeneration/Commands/CodeGenerationCommands.cs index fd688e1a8..1b764760a 100644 --- a/src/Orchard.Web/Modules/Orchard.CodeGeneration/Commands/CodeGenerationCommands.cs +++ b/src/Orchard.Web/Modules/Orchard.CodeGeneration/Commands/CodeGenerationCommands.cs @@ -19,12 +19,6 @@ namespace Orchard.CodeGeneration.Commands { private readonly IExtensionManager _extensionManager; private readonly ISchemaCommandGenerator _schemaCommandGenerator; - private static readonly string[] _ignoredExtensions = new [] { - "obj", "pdb", "exclude" - }; - private static readonly string[] _ignoredPaths = new [] { - "/obj/" - }; private static readonly string[] _themeDirectories = new [] { "", "Content", "Styles", "Scripts", "Views", "Zones" }; @@ -35,6 +29,7 @@ namespace Orchard.CodeGeneration.Commands { private const string ModuleName = "CodeGeneration"; private static readonly string _codeGenTemplatePath = HostingEnvironment.MapPath("~/Modules/Orchard." + ModuleName + "/CodeGenerationTemplates/"); private static readonly string _orchardWebProj = HostingEnvironment.MapPath("~/Orchard.Web.csproj"); + private static readonly string _orchardThemesProj = HostingEnvironment.MapPath("~/Themes/Orchard.Themes.csproj"); public CodeGenerationCommands( IExtensionManager extensionManager, @@ -131,23 +126,23 @@ namespace Orchard.CodeGeneration.Commands { } [CommandName("generate create theme")] - [CommandHelp("generate create theme [/IncludeInSolution:true|false][/BasedOn:][]\r\n\tCreate a new Orchard theme")] + [CommandHelp("generate create theme [/CreateProject:true|false][/IncludeInSolution:true|false][/BasedOn:]\r\n\tCreate a new Orchard theme")] [OrchardSwitches("IncludeInSolution,BasedOn,CreateProject")] public void CreateTheme(string themeName) { Context.Output.WriteLine(T("Creating Theme {0}", themeName)); - if (_extensionManager.AvailableExtensions().Any(extension => String.Equals(themeName, extension.DisplayName, StringComparison.OrdinalIgnoreCase))) { + if (_extensionManager.AvailableExtensions().Any(extension => String.Equals(themeName, extension.Name, StringComparison.OrdinalIgnoreCase))) { Context.Output.WriteLine(T("Creating Theme {0} failed: an extention of the same name already exists", themeName)); } else { - string baseThemePath = null; if (!string.IsNullOrEmpty(BasedOn)) { - baseThemePath = HostingEnvironment.MapPath("~/Themes/" + BasedOn + "/"); - if (string.IsNullOrEmpty(baseThemePath) || !Directory.Exists(baseThemePath)) { - Context.Output.WriteLine(T("Creating Theme {0} failed: could not find base theme '{1}'", themeName, baseThemePath)); + if (!_extensionManager.AvailableExtensions().Any(extension => + string.Equals(extension.ExtensionType, "Theme", StringComparison.OrdinalIgnoreCase) && + string.Equals(BasedOn, extension.Name, StringComparison.OrdinalIgnoreCase))) { + Context.Output.WriteLine(T("Creating Theme {0} failed: base theme named {1} was not found.", themeName, BasedOn)); return; } } - IntegrateTheme(themeName, baseThemePath); + IntegrateTheme(themeName, BasedOn); Context.Output.WriteLine(T("Theme {0} created successfully", themeName)); } } @@ -209,10 +204,10 @@ namespace Orchard.CodeGeneration.Commands { } } - private void IntegrateTheme(string themeName, string baseThemePath) { + private void IntegrateTheme(string themeName, string baseTheme) { CreateThemeFromTemplates(Context.Output, T, themeName, - baseThemePath, + baseTheme, CreateProject ? Guid.NewGuid().ToString().ToUpper() : null, IncludeInSolution); } @@ -258,13 +253,7 @@ namespace Orchard.CodeGeneration.Commands { return text; } - private static bool IgnoreFile(string filePath) { - return String.IsNullOrEmpty(filePath) || - _ignoredPaths.Any(filePath.Contains) || - _ignoredExtensions.Contains(Path.GetExtension(filePath) ?? ""); - } - - private static void CreateThemeFromTemplates(TextWriter output, Localizer T, string themeName, string baseThemePath, string projectGuid, bool includeInSolution) { + private static void CreateThemeFromTemplates(TextWriter output, Localizer T, string themeName, string baseTheme, string projectGuid, bool includeInSolution) { var themePath = HostingEnvironment.MapPath("~/Themes/" + themeName + "/"); var createdFiles = new HashSet(); var createdFolders = new HashSet(); @@ -277,44 +266,34 @@ namespace Orchard.CodeGeneration.Commands { createdFolders.Add(folder); } } - if (baseThemePath != null) { - // copy BasedOn theme file by file - foreach (var file in Directory.GetFiles(baseThemePath, "*", SearchOption.AllDirectories)) { - // ignore dlls, etc - if (IgnoreFile(file)) { - continue; - } - var destPath = file.Replace(baseThemePath, themePath); - Directory.CreateDirectory(Path.GetDirectoryName(destPath)); - File.Copy(file, destPath); - createdFiles.Add(destPath); - } + + var webConfig = themePath + "Views\\Web.config"; + File.WriteAllText(webConfig, File.ReadAllText(_codeGenTemplatePath + "\\ViewsWebConfig.txt")); + createdFiles.Add(webConfig); + + var templateText = File.ReadAllText(_codeGenTemplatePath + "\\ThemeManifest.txt").Replace("$$ThemeName$$", themeName); + if (string.IsNullOrEmpty(baseTheme)) { + templateText = templateText.Replace("BaseTheme: $$BaseTheme$$\r\n", ""); } else { - // non-BasedOn theme default files - var webConfig = themePath + "Views\\Web.config"; - File.WriteAllText(webConfig, File.ReadAllText(_codeGenTemplatePath + "\\ViewsWebConfig.txt")); - createdFiles.Add(webConfig); + templateText = templateText.Replace("$$BaseTheme$$", baseTheme); } - var templateText = File.ReadAllText(_codeGenTemplatePath + "\\ThemeManifest.txt").Replace("$$ThemeName$$", themeName); + File.WriteAllText(themePath + "Theme.txt", templateText); createdFiles.Add(themePath + "Theme.txt"); - string itemGroup = null; - if (projectGuid != null || includeInSolution) { - itemGroup = CreateProjectItemGroup(themePath, createdFiles, createdFolders); - } - // create new csproj for the theme if (projectGuid != null) { + var itemGroup = CreateProjectItemGroup(themePath, createdFiles, createdFolders); string projectText = CreateCsProject(themeName, projectGuid, itemGroup); File.WriteAllText(themePath + "\\" + themeName + ".csproj", projectText); } if (includeInSolution) { if (projectGuid == null) { - // include in solution but dont create a project: just add the references to Orchard.Web - AddFilesToOrchardWeb(output, T, itemGroup); + // include in solution but dont create a project: just add the references to Orchard.Themes project + var itemGroup = CreateProjectItemGroup(HostingEnvironment.MapPath("~/Themes/"), createdFiles, createdFolders); + AddFilesToOrchardThemesProject(output, T, itemGroup); } else { // create a project (already done) and add it to the solution @@ -363,12 +342,12 @@ namespace Orchard.CodeGeneration.Commands { return string.Format(CultureInfo.InvariantCulture, "\r\n{0}\r\n \r\n ", contentInclude); } - private static void AddFilesToOrchardWeb(TextWriter output, Localizer T, string itemGroup) { - if (!File.Exists(_orchardWebProj)) { - output.WriteLine(T("Warning: Orchard.Web project file could not be found at {0}", _orchardWebProj)); + private static void AddFilesToOrchardThemesProject(TextWriter output, Localizer T, string itemGroup) { + if (!File.Exists(_orchardThemesProj)) { + output.WriteLine(T("Warning: Orchard.Themes project file could not be found at {0}", _orchardThemesProj)); } else { - var projectText = File.ReadAllText(_orchardWebProj); + var projectText = File.ReadAllText(_orchardThemesProj); // find where the first ItemGroup is after any References var refIndex = projectText.LastIndexOf("", refIndex); if (firstItemGroupIndex != -1) { projectText = projectText.Insert(firstItemGroupIndex, itemGroup); - File.WriteAllText(_orchardWebProj, projectText); + File.WriteAllText(_orchardThemesProj, projectText); return; } } - output.WriteLine(T("Warning: Unable to modify Orchard.Web project file at {0}", _orchardWebProj)); + output.WriteLine(T("Warning: Unable to modify Orchard.Themes project file at {0}", _orchardThemesProj)); } } diff --git a/src/Orchard.Web/Modules/Orchard.ContentTypes/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.ContentTypes/Controllers/AdminController.cs index 916f4160c..0e8f9ab48 100644 --- a/src/Orchard.Web/Modules/Orchard.ContentTypes/Controllers/AdminController.cs +++ b/src/Orchard.Web/Modules/Orchard.ContentTypes/Controllers/AdminController.cs @@ -27,7 +27,7 @@ namespace Orchard.ContentTypes.Controllers { #region Types public ActionResult List() { - return View(new ListContentTypesViewModel { + return View("List", new ListContentTypesViewModel { Types = _contentDefinitionService.GetTypes() }); } diff --git a/src/Orchard.Web/Modules/Orchard.Experimental/Controllers/CommandsController.cs b/src/Orchard.Web/Modules/Orchard.Experimental/Controllers/CommandsController.cs index 720179bec..ed8aeed65 100644 --- a/src/Orchard.Web/Modules/Orchard.Experimental/Controllers/CommandsController.cs +++ b/src/Orchard.Web/Modules/Orchard.Experimental/Controllers/CommandsController.cs @@ -22,7 +22,7 @@ namespace Orchard.Experimental.Controllers { } public ActionResult Execute() { - return View(new CommandsExecuteViewModel()); + return View("Execute", new CommandsExecuteViewModel()); } [HttpPost] diff --git a/src/Orchard.Web/Modules/Orchard.Indexing/Orchard.Indexing.csproj b/src/Orchard.Web/Modules/Orchard.Indexing/Orchard.Indexing.csproj index 63d1f7a76..4a1b81845 100644 --- a/src/Orchard.Web/Modules/Orchard.Indexing/Orchard.Indexing.csproj +++ b/src/Orchard.Web/Modules/Orchard.Indexing/Orchard.Indexing.csproj @@ -59,7 +59,6 @@ - @@ -100,6 +99,7 @@ + diff --git a/src/Orchard.Web/Modules/Orchard.Indexing/ResourceManifest.cs b/src/Orchard.Web/Modules/Orchard.Indexing/ResourceManifest.cs deleted file mode 100644 index f6bcc7f69..000000000 --- a/src/Orchard.Web/Modules/Orchard.Indexing/ResourceManifest.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Orchard.UI.Resources; - -namespace Orchard.Indexing { - public class ResourceManifest : IResourceManifestProvider { - public void BuildManifests(ResourceManifestBuilder builder) { - builder.Add().DefineStyle("IndexingAdmin").SetUrl("admin.css"); // todo: this does not exist - } - } -} diff --git a/src/Orchard.Web/Modules/Orchard.Indexing/Views/Admin/Index.cshtml b/src/Orchard.Web/Modules/Orchard.Indexing/Views/Admin/Index.cshtml index 21272c6f5..89c56cb3f 100644 --- a/src/Orchard.Web/Modules/Orchard.Indexing/Views/Admin/Index.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Indexing/Views/Admin/Index.cshtml @@ -1,5 +1,4 @@ @model Orchard.Indexing.ViewModels.IndexViewModel -@{ Style.Require("IndexingAdmin"); }

@Html.TitleForPage(T("Search Index Management").ToString())

@using (Html.BeginForm("update", "admin", FormMethod.Post, new {area = "Orchard.Indexing"})) { diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/GalleryController.cs b/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/GalleryController.cs index e94dd01aa..ecec1329b 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/GalleryController.cs +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/GalleryController.cs @@ -107,7 +107,7 @@ namespace Orchard.Packaging.Controllers { public ActionResult Modules(Guid? sourceId) { var selectedSource = _packagingSourceManager.GetSources().Where(s => s.Id == sourceId).FirstOrDefault(); - return View(new PackagingModulesViewModel { + return View("Modules", new PackagingModulesViewModel { Modules = _packagingSourceManager.GetModuleList(selectedSource).Where(p => p.SyndicationItem.Categories.All(c => c.Name == "Orchard Module" || c.Name != "Orchard Theme")), Sources = _packagingSourceManager.GetSources().OrderBy(s => s.FeedTitle), SelectedSource = selectedSource @@ -117,7 +117,7 @@ namespace Orchard.Packaging.Controllers { public ActionResult Themes(Guid? sourceId) { var selectedSource = _packagingSourceManager.GetSources().Where(s => s.Id == sourceId).FirstOrDefault(); - return View(new PackagingModulesViewModel { + return View("Themes", new PackagingModulesViewModel { Modules = _packagingSourceManager.GetModuleList(selectedSource).Where(p => p.SyndicationItem.Categories.Any(c => c.Name == "Orchard Theme")), Sources = _packagingSourceManager.GetSources().OrderBy(s => s.FeedTitle), SelectedSource = selectedSource diff --git a/src/Orchard.Web/Modules/Orchard.Roles/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.Roles/Controllers/AdminController.cs index e48956f79..e611021c6 100644 --- a/src/Orchard.Web/Modules/Orchard.Roles/Controllers/AdminController.cs +++ b/src/Orchard.Web/Modules/Orchard.Roles/Controllers/AdminController.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; +using Orchard.Core.Contents.Controllers; using Orchard.Localization; using Orchard.Roles.Models; using Orchard.Roles.Services; @@ -98,9 +99,9 @@ namespace Orchard.Roles.Controllers { var role = _roleService.GetRole(id); if (role == null) { - //TODO: Error message - throw new HttpException(404, "page with id " + id + " was not found"); + return HttpNotFound(); } + var model = new RoleEditViewModel { Name = role.Name, Id = role.Id, RoleCategoryPermissions = _roleService.GetInstalledPermissions(), CurrentPermissions = _roleService.GetPermissionsForRole(id)}; @@ -117,7 +118,8 @@ namespace Orchard.Roles.Controllers { } [HttpPost, ActionName("Edit")] - public ActionResult EditPOST() { + [FormValueRequired("submit.Save")] + public ActionResult EditSavePOST(int id) { if (!Services.Authorizer.Authorize(Permissions.ManageRoles, T("Not authorized to manage roles"))) return new HttpUnauthorizedResult(); @@ -125,24 +127,38 @@ namespace Orchard.Roles.Controllers { try { UpdateModel(viewModel); // Save - if (!String.IsNullOrEmpty(HttpContext.Request.Form["submit.Save"])) { - List rolePermissions = new List(); - foreach (string key in Request.Form.Keys) { - if (key.StartsWith("Checkbox.") && Request.Form[key] == "true") { - string permissionName = key.Substring("Checkbox.".Length); - rolePermissions.Add(permissionName); - } + List rolePermissions = new List(); + foreach (string key in Request.Form.Keys) { + if (key.StartsWith("Checkbox.") && Request.Form[key] == "true") { + string permissionName = key.Substring("Checkbox.".Length); + rolePermissions.Add(permissionName); } - _roleService.UpdateRole(viewModel.Id, viewModel.Name, rolePermissions); } - else if (!String.IsNullOrEmpty(HttpContext.Request.Form["submit.Delete"])) { - _roleService.DeleteRole(viewModel.Id); - } - return RedirectToAction("Edit", new { viewModel.Id }); + _roleService.UpdateRole(viewModel.Id, viewModel.Name, rolePermissions); + + Services.Notifier.Information(T("Your Role has been saved.")); + return RedirectToAction("Edit", new { id }); } catch (Exception exception) { Services.Notifier.Error(T("Editing Role failed: {0}", exception.Message)); - return RedirectToAction("Edit", viewModel.Id); + return RedirectToAction("Edit", id); + } + } + + [HttpPost, ActionName("Edit")] + [FormValueRequired("submit.Delete")] + public ActionResult EditDeletePOST(int id) { + if (!Services.Authorizer.Authorize(Permissions.ManageRoles, T("Not authorized to manage roles"))) + return new HttpUnauthorizedResult(); + + try { + _roleService.DeleteRole(id); + + Services.Notifier.Information(T("Role was successfully deleted.")); + return RedirectToAction("Index"); + } catch (Exception exception) { + Services.Notifier.Error(T("Editing Role failed: {0}", exception.Message)); + return RedirectToAction("Edit", id); } } } diff --git a/src/Orchard.Web/Modules/Orchard.Roles/Orchard.Roles.csproj b/src/Orchard.Web/Modules/Orchard.Roles/Orchard.Roles.csproj index cd9fb5214..5276d0806 100644 --- a/src/Orchard.Web/Modules/Orchard.Roles/Orchard.Roles.csproj +++ b/src/Orchard.Web/Modules/Orchard.Roles/Orchard.Roles.csproj @@ -103,6 +103,10 @@ {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} Orchard.Framework + + {9916839C-39FC-4CEB-A5AF-89CA7E87119F} + Orchard.Core +
diff --git a/src/Orchard.Web/Modules/Orchard.Roles/Views/Admin/Index.cshtml b/src/Orchard.Web/Modules/Orchard.Roles/Views/Admin/Index.cshtml index 16fc00388..44aa8971f 100644 --- a/src/Orchard.Web/Modules/Orchard.Roles/Views/Admin/Index.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Roles/Views/Admin/Index.cshtml @@ -9,24 +9,24 @@ - - + +
@Html.ActionLink(T("Add a role").ToString(), "Create", new { }, new { @class = "button primaryAction" })
- - - - - - - - - - - @foreach (var row in Model.Rows) { + + + + + + + + + + + @foreach (var row in Model.Rows) { @@ -34,7 +34,5 @@ }
 ↓@T("Name")
 ↓@T("Name")
@row.Name
-
- } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.Widgets/Controllers/AdminController.cs index 5560ea0fc..2a7dd5851 100644 --- a/src/Orchard.Web/Modules/Orchard.Widgets/Controllers/AdminController.cs +++ b/src/Orchard.Web/Modules/Orchard.Widgets/Controllers/AdminController.cs @@ -44,9 +44,10 @@ namespace Orchard.Widgets.Controllers { layers.First() : layers.FirstOrDefault(layer => layer.Id == id); - if (currentLayer == null) { + if (currentLayer == null && + id != null) { // Incorrect layer id passed - Services.Notifier.Error(T("Layer not found: {1}", id)); + Services.Notifier.Error(T("Layer not found: {0}", id)); return RedirectToAction("Index"); } @@ -254,7 +255,7 @@ namespace Orchard.Widgets.Controllers { try { widgetPart = _widgetsService.GetWidget(id); if (widgetPart == null) { - Services.Notifier.Error(T("Widget not found: {1}", id)); + Services.Notifier.Error(T("Widget not found: {0}", id)); return RedirectToAction("Index"); } diff --git a/src/Orchard.Web/Themes/Orchard.Themes.csproj b/src/Orchard.Web/Themes/Orchard.Themes.csproj index 71497e018..f5c40b8b0 100644 --- a/src/Orchard.Web/Themes/Orchard.Themes.csproj +++ b/src/Orchard.Web/Themes/Orchard.Themes.csproj @@ -247,9 +247,8 @@ False - False - - + True + http://orchard.codeplex.com False diff --git a/src/Orchard.Web/Themes/TheThemeMachine/Styles/Site.css b/src/Orchard.Web/Themes/TheThemeMachine/Styles/Site.css index abebf4316..90001aa12 100644 --- a/src/Orchard.Web/Themes/TheThemeMachine/Styles/Site.css +++ b/src/Orchard.Web/Themes/TheThemeMachine/Styles/Site.css @@ -479,22 +479,14 @@ ul.comments li div.text { /*border:1px solid #ff0000;*/ } -/* If zones 1 and 2 are empty in the quad */ +/* If zone 1 is empty and 2, 3, 4 are not */ +.split-234 #footer-quad-second div.zone { width:480px; } -.split-left #footer-quad-third div.zone { - width:600px; -} +/* If zone 2 is empty and 1, 3, 4 are not */ +.split-134 #footer-quad-first div.zone { width:480px; } -.split-left #footer-quad-fourth div.zone { - width:360px; -} +/* If zone 3 is empty and 1, 2, 4 are not */ +.split-124 #footer-quad-fourth div.zone { width:480px; } -/* If zones 3 and 4 are empty in the quad */ - -.split-right #footer-quad-first div.zone { - width:600px; -} - -.split-right #footer-quad-second div.zone { - width:360px; -} \ No newline at end of file +/* If zone 4 is empty and 1, 2, 3 are not */ +.split-123 #footer-quad-third div.zone { width:480px; } \ No newline at end of file diff --git a/src/Orchard.Web/Themes/TheThemeMachine/Views/Layout.cshtml b/src/Orchard.Web/Themes/TheThemeMachine/Views/Layout.cshtml index 938bd09ff..be3a6916f 100644 --- a/src/Orchard.Web/Themes/TheThemeMachine/Views/Layout.cshtml +++ b/src/Orchard.Web/Themes/TheThemeMachine/Views/Layout.cshtml @@ -21,13 +21,25 @@ else { } + + // Debug Quad + // {WorkContext.Layout.FooterQuadSecond.Add("2 This is some test text to see if zones are working. This is some test text to see if zones are working.");} + // {WorkContext.Layout.FooterQuadFirst.Add("1 This is some test text to see if zones are working. This is some test text to see if zones are working.");} + // {WorkContext.Layout.FooterQuadThird.Add("3 This is some test text to see if zones are working. This is some test text to see if zones are working.");} //Add classes to the wrapper div to toggle quad widget zones on and off - if (Model.FooterQuadFirst == null && Model.FooterQuadSecond == null) { - Model.Classes.Add("split-left"); + + if (Model.FooterQuadFirst == null && Model.FooterQuadSecond != null && Model.FooterQuadThird != null && Model.FooterQuadFourth != null) { + Model.Classes.Add("split-234"); } - else if (Model.FooterQuadThird == null && Model.FooterQuadFourth == null) { - Model.Classes.Add("split-right"); + else if (Model.FooterQuadFirst != null && Model.FooterQuadSecond == null && Model.FooterQuadThird != null && Model.FooterQuadFourth != null) { + Model.Classes.Add("split-134"); + } + else if (Model.FooterQuadFirst != null && Model.FooterQuadSecond != null && Model.FooterQuadThird == null && Model.FooterQuadFourth != null) { + Model.Classes.Add("split-124"); + } + else if (Model.FooterQuadFirst != null && Model.FooterQuadSecond != null && Model.FooterQuadThird != null && Model.FooterQuadFourth == null) { + Model.Classes.Add("split-123"); } else {