From 2247141efdb5683e6ec6077c32ba747775f467ff Mon Sep 17 00:00:00 2001 From: Bjarne Fyrstenborg Date: Sun, 22 Jan 2017 13:55:24 +0100 Subject: [PATCH 1/2] Add url to NuGet package --- .../src/scss/elements/_package-detail.scss | 47 +++++++++++++++++++ .../Projects/ProjectDetails.cshtml | 46 ++++++++++++++---- .../Views/Partials/Project/Edit.cshtml | 6 +++ .../MarketPlace/Interfaces/IListingItem.cs | 5 +- .../PublishedContentListingItem.cs | 2 + .../NodeListing/NodeListingProvider.cs | 1 + .../Our/Controllers/ProjectController.cs | 2 + OurUmbraco/Our/Models/ProjectDetails.cs | 3 ++ 8 files changed, 102 insertions(+), 10 deletions(-) diff --git a/OurUmbraco.Client/src/scss/elements/_package-detail.scss b/OurUmbraco.Client/src/scss/elements/_package-detail.scss index 8deb7db0..426d20a0 100644 --- a/OurUmbraco.Client/src/scss/elements/_package-detail.scss +++ b/OurUmbraco.Client/src/scss/elements/_package-detail.scss @@ -79,6 +79,53 @@ } + .pre { + overflow: auto; + display: block; + font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif; + background-color: #333; + color: #fff; + font-size: 0.8rem; + line-height: 1.4em; + background-clip: padding-box; + padding: 8px 15px 8px 15px; + border-radius: 5px; + width: 100%; + min-width: 300px; + text-align: left; + border: none; + margin: 0 auto; + + &:hover { + background: lighten(#333, 5%); + cursor: pointer; + } + } + + .pm-nuget { + position: relative; + display: block; + margin: 10px auto 25px auto; + height: 100%; + width: auto; + color: #fff; + + &:before { + content:"PM>"; + display: block; + position: absolute; + top: 50%; + left: 0; + font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif; + font-size: 0.8rem; + transform: translate(15px, -46%); + opacity: .9; + } + .pre { + padding-left: 45px; + } + } + h2, h3, strong, span { color: $color-headline; diff --git a/OurUmbraco.Site/Views/MacroPartials/Projects/ProjectDetails.cshtml b/OurUmbraco.Site/Views/MacroPartials/Projects/ProjectDetails.cshtml index 5ee6e0e2..d7dbd615 100644 --- a/OurUmbraco.Site/Views/MacroPartials/Projects/ProjectDetails.cshtml +++ b/OurUmbraco.Site/Views/MacroPartials/Projects/ProjectDetails.cshtml @@ -4,6 +4,7 @@ @using OurUmbraco.Project @using OurUmbraco.Project.Services @using OurUmbraco.Wiki.BusinessLogic +@using System.Text.RegularExpressions; @{ var project = Model.Content; @@ -38,6 +39,7 @@ var cs = new ContributionService(ApplicationContext.Current.DatabaseContext); var contributors = cs.GetContributors(project.Id).ToList(); + var nuGetPackageUrl = project.GetPropertyValue("nuGetPackageUrl"); var sourceUrl = project.GetPropertyValue("sourceUrl"); var websiteUrl = project.GetPropertyValue("websiteUrl"); var demoUrl = project.GetPropertyValue("demoUrl"); @@ -255,14 +257,42 @@
- @if (currentRelease != null) - { -  Download package
version @project.GetPropertyValue("version")
- } - else - { -
No current release
- } +
+ @if (currentRelease != null) + { +  Download package
version @project.GetPropertyValue("version")
+ } + else + { +
No current release
+ } + + @if (!string.IsNullOrEmpty(nuGetPackageUrl)) + { + Regex regex = new Regex(@"^(http|https)://", RegexOptions.IgnoreCase); + + if (!regex.Match(nuGetPackageUrl).Success) + { + nuGetPackageUrl = "http://" + nuGetPackageUrl; + } + + var nuGetPackageUri = new Uri(nuGetPackageUrl); + string nuGetPackageCmd = string.Empty; + + if (nuGetPackageUri.Segments.Length >= 2) + { + nuGetPackageCmd = nuGetPackageUri.Segments[2].Trim("/"); + } + + if (!string.IsNullOrEmpty(nuGetPackageCmd)) + { +

or, install via nuget

+ + + + } + } +

Project owner

diff --git a/OurUmbraco.Site/Views/Partials/Project/Edit.cshtml b/OurUmbraco.Site/Views/Partials/Project/Edit.cshtml index 8d9de44a..70e1ef4f 100644 --- a/OurUmbraco.Site/Views/Partials/Project/Edit.cshtml +++ b/OurUmbraco.Site/Views/Partials/Project/Edit.cshtml @@ -119,6 +119,12 @@ @Html.ValidationMessageFor(m => m.SourceCodeUrl) url to where the source code is stored, (ie: codeplex.com, github.com etc)

+

+ @Html.LabelFor(m => m.NuGetPackageUrl) + @Html.TextBoxFor(m => m.NuGetPackageUrl) + @Html.ValidationMessageFor(m => m.NuGetPackageUrl) + url to the NuGet package if any available +

@Html.LabelFor(m => m.BugTrackingUrl) @Html.TextBoxFor(m => m.BugTrackingUrl) diff --git a/OurUmbraco/MarketPlace/Interfaces/IListingItem.cs b/OurUmbraco/MarketPlace/Interfaces/IListingItem.cs index e31b9704..cfc8c1ed 100644 --- a/OurUmbraco/MarketPlace/Interfaces/IListingItem.cs +++ b/OurUmbraco/MarketPlace/Interfaces/IListingItem.cs @@ -46,12 +46,13 @@ namespace OurUmbraco.MarketPlace.Interfaces bool OpenForCollab { get; set; } bool Live { get; set; } bool Disabled { get; set; } - String SourceCodeUrl { get; set; } + string SourceCodeUrl { get; set; } + string NuGetPackageUrl { get; set; } int Downloads { get; } int Karma { get; } string ProjectUrl { get; set; } Guid Version { get; } - String LicenseKey { get; set; } + string LicenseKey { get; set; } int ProjectViews { get; } } } diff --git a/OurUmbraco/MarketPlace/ListingItem/PublishedContentListingItem.cs b/OurUmbraco/MarketPlace/ListingItem/PublishedContentListingItem.cs index 2a98106d..cc02a97c 100644 --- a/OurUmbraco/MarketPlace/ListingItem/PublishedContentListingItem.cs +++ b/OurUmbraco/MarketPlace/ListingItem/PublishedContentListingItem.cs @@ -40,6 +40,7 @@ namespace OurUmbraco.MarketPlace.ListingItem ProjectUrl = content.GetPropertyValue("websiteUrl", ""); SupportUrl = content.GetPropertyValue("supportUrl", ""); SourceCodeUrl = content.GetPropertyValue("sourceUrl", ""); + NuGetPackageUrl = content.GetPropertyValue("nuGetPackageUrl", ""); DemonstrationUrl = content.GetPropertyValue("demoUrl", ""); OpenForCollab = content.GetPropertyValue("openForCollab", false); NotAPackage = content.GetPropertyValue("notAPackage", false); @@ -110,6 +111,7 @@ namespace OurUmbraco.MarketPlace.ListingItem public bool NotAPackage { get; set; } public bool OpenForCollab { get; set; } public string SourceCodeUrl { get; set; } + public string NuGetPackageUrl { get; set; } public bool Live { get; set; } public bool Stable { get; set; } public bool Approved { get; set; } diff --git a/OurUmbraco/MarketPlace/NodeListing/NodeListingProvider.cs b/OurUmbraco/MarketPlace/NodeListing/NodeListingProvider.cs index 1a203608..544dcf95 100644 --- a/OurUmbraco/MarketPlace/NodeListing/NodeListingProvider.cs +++ b/OurUmbraco/MarketPlace/NodeListing/NodeListingProvider.cs @@ -162,6 +162,7 @@ namespace OurUmbraco.MarketPlace.NodeListing content.SetValue("licenseUrl", listingItem.LicenseUrl); content.SetValue("supportUrl", listingItem.SupportUrl); content.SetValue("sourceUrl", listingItem.SourceCodeUrl); + content.SetValue("nuGetPackageUrl", listingItem.NuGetPackageUrl); content.SetValue("demoUrl", listingItem.DemonstrationUrl); content.SetValue("openForCollab", listingItem.OpenForCollab); content.SetValue("notAPackage", listingItem.NotAPackage); diff --git a/OurUmbraco/Our/Controllers/ProjectController.cs b/OurUmbraco/Our/Controllers/ProjectController.cs index 478ed769..c29c7af6 100644 --- a/OurUmbraco/Our/Controllers/ProjectController.cs +++ b/OurUmbraco/Our/Controllers/ProjectController.cs @@ -47,6 +47,7 @@ namespace OurUmbraco.Our.Controllers model.Description = project.Description; model.Version = project.CurrentVersion; model.SourceCodeUrl = project.SourceCodeUrl; + model.NuGetPackageUrl = project.NuGetPackageUrl; model.DemonstrationUrl = project.DemonstrationUrl; model.OpenForCollaboration = project.OpenForCollab; model.GoogleAnalyticsCode = project.GACode; @@ -71,6 +72,7 @@ namespace OurUmbraco.Our.Controllers project.LicenseUrl = model.LicenseUrl; project.ProjectUrl = model.ProjectUrl; project.SourceCodeUrl = model.SourceCodeUrl; + project.NuGetPackageUrl = model.NuGetPackageUrl; project.DemonstrationUrl = model.DemonstrationUrl; project.CategoryId = int.Parse(model.Category); project.OpenForCollab = model.OpenForCollaboration; diff --git a/OurUmbraco/Our/Models/ProjectDetails.cs b/OurUmbraco/Our/Models/ProjectDetails.cs index 52d8de35..8b11241a 100644 --- a/OurUmbraco/Our/Models/ProjectDetails.cs +++ b/OurUmbraco/Our/Models/ProjectDetails.cs @@ -43,6 +43,9 @@ namespace OurUmbraco.Our.Models [Display(Name = "Source code URL")] public string SourceCodeUrl { get; set; } + [Display(Name = "NuGet package URL")] + public string NuGetPackageUrl { get; set; } + [Display(Name = "Bug tracking URL")] public string BugTrackingUrl { get; set; } From afc93fb59394d1fe650b70c877f9f01a9da9ce7d Mon Sep 17 00:00:00 2001 From: Bjarne Fyrstenborg Date: Sun, 22 Jan 2017 14:15:16 +0100 Subject: [PATCH 2/2] Make nuget link to NuGet package --- .../Views/MacroPartials/Projects/ProjectDetails.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OurUmbraco.Site/Views/MacroPartials/Projects/ProjectDetails.cshtml b/OurUmbraco.Site/Views/MacroPartials/Projects/ProjectDetails.cshtml index d7dbd615..ce73a58c 100644 --- a/OurUmbraco.Site/Views/MacroPartials/Projects/ProjectDetails.cshtml +++ b/OurUmbraco.Site/Views/MacroPartials/Projects/ProjectDetails.cshtml @@ -286,7 +286,7 @@ if (!string.IsNullOrEmpty(nuGetPackageCmd)) { -

or, install via nuget

+

or, install via nuget