From e0c68a8e1cd92b8f865409bf17e9e2e7d1525de0 Mon Sep 17 00:00:00 2001 From: leekelleher Date: Mon, 10 Jun 2013 13:55:58 -0100 Subject: [PATCH] Resolves #U4-184 Upgrade package when installing a newer version. Multiple package versions can be installed, only the latest version is listed under "Installed Packages". When the installed package is viewed, a list of previously installed versions (of that package) are listed. --- src/Umbraco.Web.UI/umbraco/config/lang/en.xml | 1 + .../developer/Packages/installedPackage.aspx | 12 +++++- .../umbraco/Trees/loadPackages.cs | 37 +++++++------------ .../developer/Packages/installedPackage.aspx | 12 +++++- .../Packages/installedPackage.aspx.cs | 16 ++++++++ .../installedPackage.aspx.designer.cs | 30 ++++++++++++++- 6 files changed, 81 insertions(+), 27 deletions(-) diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/en.xml b/src/Umbraco.Web.UI/umbraco/config/lang/en.xml index 004794145b..5ca5a737a8 100644 --- a/src/Umbraco.Web.UI/umbraco/config/lang/en.xml +++ b/src/Umbraco.Web.UI/umbraco/config/lang/en.xml @@ -627,6 +627,7 @@ To manage your website, simply open the umbraco back office and start adding con Upgrade instructions There's an upgrade available for this package. You can download it directly from the umbraco package repository. Package version + Package version history View package website diff --git a/src/Umbraco.Web.UI/umbraco/developer/Packages/installedPackage.aspx b/src/Umbraco.Web.UI/umbraco/developer/Packages/installedPackage.aspx index b1c2d9c8ec..d624d4c7f9 100644 --- a/src/Umbraco.Web.UI/umbraco/developer/Packages/installedPackage.aspx +++ b/src/Umbraco.Web.UI/umbraco/developer/Packages/installedPackage.aspx @@ -56,7 +56,17 @@ - + + + + + + + + +
diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadPackages.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadPackages.cs index 8b7d85eea9..887901a124 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadPackages.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadPackages.cs @@ -1,28 +1,13 @@ using System; -using System.Collections; using System.Collections.Generic; -using System.Data; -using System.IO; +using System.Linq; using System.Text; using System.Web; using System.Xml; -using System.Configuration; -using umbraco.BasePages; -using umbraco.BusinessLogic; using umbraco.businesslogic; -using umbraco.cms.businesslogic; -using umbraco.cms.businesslogic.cache; -using umbraco.cms.businesslogic.contentitem; -using umbraco.cms.businesslogic.datatype; -using umbraco.cms.businesslogic.language; -using umbraco.cms.businesslogic.media; -using umbraco.cms.businesslogic.member; -using umbraco.cms.businesslogic.property; -using umbraco.cms.businesslogic.web; -using umbraco.interfaces; -using umbraco.DataLayer; -using umbraco.BusinessLogic.Utils; +using umbraco.cms.businesslogic.packager; using umbraco.cms.presentation.Trees; +using umbraco.interfaces; namespace umbraco { @@ -63,18 +48,24 @@ namespace umbraco switch (m_packageType) { case "installed": - foreach (cms.businesslogic.packager.InstalledPackage p in cms.businesslogic.packager.InstalledPackage.GetAllInstalledPackages()) + Version v; + // Display the unique packages, ordered by the latest version number. [LK 2013-06-10] + var uniquePackages = InstalledPackage.GetAllInstalledPackages() + .OrderByDescending(x => Version.TryParse(x.Data.Version, out v) ? v : new Version()) + .GroupBy(x => x.Data.Name) + .Select(x => x.First()) + .OrderBy(x => x.Data.Id); + foreach (var p in uniquePackages) { - XmlTreeNode xNode = XmlTreeNode.Create(this); - xNode.NodeID = PACKAGE_TREE_PREFIX + p.Data.Id.ToString(); + var xNode = XmlTreeNode.Create(this); + xNode.NodeID = string.Concat(PACKAGE_TREE_PREFIX, p.Data.Id); xNode.Text = p.Data.Name; - xNode.Action = "javascript:openInstalledPackage('" + p.Data.Id.ToString() + "');"; + xNode.Action = string.Format("javascript:openInstalledPackage('{0}');", p.Data.Id); xNode.Icon = "package.gif"; xNode.OpenIcon = "package.gif"; xNode.NodeType = "createdPackageInstance"; xNode.Menu = null; tree.Add(xNode); - } break; diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installedPackage.aspx b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installedPackage.aspx index b1c2d9c8ec..990e4394ae 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installedPackage.aspx +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installedPackage.aspx @@ -56,7 +56,17 @@ - + + + + + + + + +
diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installedPackage.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installedPackage.aspx.cs index 67b58f1395..41e3bbad1b 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installedPackage.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installedPackage.aspx.cs @@ -335,6 +335,20 @@ namespace umbraco.presentation.developer.packages bt_uninstall.Visible = false; pane_uninstall.Visible = false; } + + // List the package version history [LK 2013-067-10] + Version v; + var packageVersionHistory = cms.businesslogic.packager.InstalledPackage.GetAllInstalledPackages() + .Where(x => x.Data.Id != _pack.Data.Id && string.Equals(x.Data.Name, _pack.Data.Name, StringComparison.OrdinalIgnoreCase)) + .OrderBy(x => Version.TryParse(x.Data.Version, out v) ? v : new Version()); + + if (packageVersionHistory != null && packageVersionHistory.Count() > 0) + { + rptr_versions.DataSource = packageVersionHistory; + rptr_versions.DataBind(); + + pane_versions.Visible = true; + } } } } @@ -613,6 +627,8 @@ namespace umbraco.presentation.developer.packages pp_upgradeInstruction.Text = ui.Text("packager", "packageUpgradeInstructions"); bt_gotoUpgrade.Text = ui.Text("packager", "packageUpgradeDownload"); + pane_versions.Text = ui.Text("packager", "packageVersionHistory"); + pane_noItems.Text = ui.Text("packager", "packageNoItemsHeader"); pane_uninstall.Text = ui.Text("packager", "packageUninstallHeader"); diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installedPackage.aspx.designer.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installedPackage.aspx.designer.cs index 398a23466d..e6dfc46646 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installedPackage.aspx.designer.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Packages/installedPackage.aspx.designer.cs @@ -1,10 +1,9 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.4200 // // Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// the code is regenerated. // //------------------------------------------------------------------------------ @@ -175,6 +174,33 @@ namespace umbraco.presentation.developer.packages { /// protected global::System.Web.UI.WebControls.Literal lt_readme; + /// + /// pane_versions control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::umbraco.uicontrols.Pane pane_versions; + + /// + /// pp_versions control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::umbraco.uicontrols.PropertyPanel pp_versions; + + /// + /// rptr_versions control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Repeater rptr_versions; + /// /// pane_options control. ///