diff --git a/umbraco/cms/businesslogic/skinning/Skin.cs b/umbraco/cms/businesslogic/skinning/Skin.cs index 5529096156..3ba427dffb 100644 --- a/umbraco/cms/businesslogic/skinning/Skin.cs +++ b/umbraco/cms/businesslogic/skinning/Skin.cs @@ -94,6 +94,16 @@ namespace umbraco.cms.businesslogic.skinning return CreateFromFile(manifest); } + public static Skin CreateFromName(string name) + { + foreach (Skin s in Skinning.GetAllSkins()) + { + if (s.Name == name) + return s; + } + + return null; + } public bool OverridesTemplates() { return (System.IO.Directory.GetFiles(IO.IOHelper.MapPath(SkinFolder), "*.master").Count() > 0); diff --git a/umbraco/presentation/umbraco/LiveEditing/Modules/SkinModule/SkinCustomizer.ascx b/umbraco/presentation/umbraco/LiveEditing/Modules/SkinModule/SkinCustomizer.ascx index 6e4008fab2..c8a1aed73b 100644 --- a/umbraco/presentation/umbraco/LiveEditing/Modules/SkinModule/SkinCustomizer.ascx +++ b/umbraco/presentation/umbraco/LiveEditing/Modules/SkinModule/SkinCustomizer.ascx @@ -44,8 +44,9 @@ <%# ((Skin)Container.DataItem).Text %>
+ - + @@ -56,7 +57,12 @@ -

... or customize current skin

+ +

+ + + + ... or customize current skin

diff --git a/umbraco/presentation/umbraco/LiveEditing/Modules/SkinModule/SkinCustomizer.ascx.cs b/umbraco/presentation/umbraco/LiveEditing/Modules/SkinModule/SkinCustomizer.ascx.cs index 4256bc8700..a34dc86302 100644 --- a/umbraco/presentation/umbraco/LiveEditing/Modules/SkinModule/SkinCustomizer.ascx.cs +++ b/umbraco/presentation/umbraco/LiveEditing/Modules/SkinModule/SkinCustomizer.ascx.cs @@ -9,6 +9,7 @@ using System.Xml; using System.Text; using umbraco.interfaces.skinning; using umbraco.IO; +using umbraco.cms.businesslogic.template; namespace umbraco.presentation.umbraco.LiveEditing.Modules.SkinModule { @@ -94,10 +95,19 @@ namespace umbraco.presentation.umbraco.LiveEditing.Modules.SkinModule if (Skinning.IsSkinInstalled(s.RepoGuid)) { Button inst = (Button)e.Item.FindControl("Button1"); - inst.Text = "Already downloaded"; - inst.Enabled = false; + inst.Text = "Apply (already downloaded)"; + inst.CommandName = "apply"; + inst.CommandArgument = s.Text; } + + if (ActiveSkin.Name == s.Text) + { + Button inst = (Button)e.Item.FindControl("Button1"); + inst.Text = "Rollback (active skin)"; + inst.CommandName = "remove"; + inst.CommandArgument = s.Text; + } } } @@ -210,36 +220,54 @@ namespace umbraco.presentation.umbraco.LiveEditing.Modules.SkinModule protected void SelectStarterKitDesign(object sender, EventArgs e) { - Guid kitGuid = new Guid(((Button)sender).CommandArgument); - - cms.businesslogic.packager.Installer installer = new cms.businesslogic.packager.Installer(); - - if (repo.HasConnection()) + if (((Button)sender).CommandName == "apply") { - cms.businesslogic.packager.Installer p = new cms.businesslogic.packager.Installer(); + Skin s = Skin.CreateFromName(((Button)sender).CommandArgument); + Skinning.ActivateAsCurrentSkin(s); - string tempFile = p.Import(repo.fetch(kitGuid.ToString())); - p.LoadConfig(tempFile); - int pID = p.CreateManifest(tempFile, kitGuid.ToString(), repoGuid); - - p.InstallFiles(pID, tempFile); - p.InstallBusinessLogic(pID, tempFile); - p.InstallCleanUp(pID, tempFile); - - library.RefreshContent(); - - if (cms.businesslogic.skinning.Skinning.GetAllSkins().Count > 0) - { - cms.businesslogic.skinning.Skinning.ActivateAsCurrentSkin(cms.businesslogic.skinning.Skinning.GetAllSkins()[0]); - } + Page.Response.Redirect(library.NiceUrl(int.Parse(UmbracoContext.Current.PageId.ToString()))); + } + else if (((Button)sender).CommandName == "remove") + { + nodeFactory.Node n = nodeFactory.Node.GetCurrent(); + Template t = new Template(n.template); + Skinning.RollbackSkin(t.Id); Page.Response.Redirect(library.NiceUrl(int.Parse(UmbracoContext.Current.PageId.ToString()))); } else { - //ShowConnectionError(); + Guid kitGuid = new Guid(((Button)sender).CommandArgument); + + cms.businesslogic.packager.Installer installer = new cms.businesslogic.packager.Installer(); + + if (repo.HasConnection()) + { + cms.businesslogic.packager.Installer p = new cms.businesslogic.packager.Installer(); + + string tempFile = p.Import(repo.fetch(kitGuid.ToString())); + p.LoadConfig(tempFile); + int pID = p.CreateManifest(tempFile, kitGuid.ToString(), repoGuid); + + p.InstallFiles(pID, tempFile); + p.InstallBusinessLogic(pID, tempFile); + p.InstallCleanUp(pID, tempFile); + + library.RefreshContent(); + + Skin s = Skin.CreateFromName(((Button)sender).CommandName); + Skinning.ActivateAsCurrentSkin(s); + + Page.Response.Redirect(library.NiceUrl(int.Parse(UmbracoContext.Current.PageId.ToString()))); + } + else + { + //ShowConnectionError(); + } } } + + } } \ No newline at end of file