From 9799071d04478c662f4baee4b76ac7e7a5f22880 Mon Sep 17 00:00:00 2001 From: Emma Garland Date: Sun, 4 Jun 2017 16:19:21 +0100 Subject: [PATCH 01/33] Initial addition of GitHub contributors code --- OurUmbraco.Site/OurUmbraco.Site.csproj | 1 + .../Views/Partials/Community/Home.cshtml | 31 ++++++++++ .../Views/Partials/Community/Scripts.cshtml | 7 +++ .../Partials/Home/GitHubContributors.cshtml | 15 +++++ .../GitHubContributorController.cs | 47 +++++++++++++++ .../Models/GitHubContributorsModel.cs | 9 +++ .../Models/GithubContributorModel.cs | 57 +++++++++++++++++++ .../Models/IGitHubContributorModel.cs | 6 ++ .../Models/IGitHubContributorsModel.cs | 6 ++ OurUmbraco/Our/Api/GithubController.cs | 28 +++++++++ OurUmbraco/OurUmbraco.csproj | 6 ++ 11 files changed, 213 insertions(+) create mode 100644 OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml create mode 100644 OurUmbraco/Community/Controllers/GitHubContributorController.cs create mode 100644 OurUmbraco/Community/Models/GitHubContributorsModel.cs create mode 100644 OurUmbraco/Community/Models/GithubContributorModel.cs create mode 100644 OurUmbraco/Community/Models/IGitHubContributorModel.cs create mode 100644 OurUmbraco/Community/Models/IGitHubContributorsModel.cs create mode 100644 OurUmbraco/Our/Api/GithubController.cs diff --git a/OurUmbraco.Site/OurUmbraco.Site.csproj b/OurUmbraco.Site/OurUmbraco.Site.csproj index fd2bbd28..cd00fcb9 100644 --- a/OurUmbraco.Site/OurUmbraco.Site.csproj +++ b/OurUmbraco.Site/OurUmbraco.Site.csproj @@ -4330,6 +4330,7 @@ + web.config diff --git a/OurUmbraco.Site/Views/Partials/Community/Home.cshtml b/OurUmbraco.Site/Views/Partials/Community/Home.cshtml index a33f550c..029b1e8d 100644 --- a/OurUmbraco.Site/Views/Partials/Community/Home.cshtml +++ b/OurUmbraco.Site/Views/Partials/Community/Home.cshtml @@ -59,6 +59,7 @@ @if (Members.IsLoggedIn()) { @ForumActivity() + @GitHubContributors() @TwitterSearch() @Html.Partial("home/documentation") } @@ -66,6 +67,7 @@ else { @Html.Partial("home/documentation") @ForumActivity() + @GitHubContributors() @TwitterSearch() } @@ -122,6 +124,35 @@ else Join the conversation on Twitter → + + + +} + +@helper GitHubContributors() +{ +
+
+
+ +
+

GitHub Contributors Activity

+

+ Recent activity on GitHub, where people are talking about Umbraco. +

+
+
+ Recent tweets +
+ +
+

Loading GitHub search results...

+
+ + +
diff --git a/OurUmbraco.Site/Views/Partials/Community/Scripts.cshtml b/OurUmbraco.Site/Views/Partials/Community/Scripts.cshtml index 91286fd5..34dfc1d5 100644 --- a/OurUmbraco.Site/Views/Partials/Community/Scripts.cshtml +++ b/OurUmbraco.Site/Views/Partials/Community/Scripts.cshtml @@ -13,5 +13,12 @@ catch (errForum) { console.log("Couldn't load latest forum activity", errForum.message); } + + try { + $("#github-contributors").load("@Url.Action("GitHubGetContributorsResult", "GitHubContributor")"); + } + catch (errForum) { + console.log("Couldn't load latest GitHub contributor activity", errForum.message); + } }); \ No newline at end of file diff --git a/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml b/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml new file mode 100644 index 00000000..71794987 --- /dev/null +++ b/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml @@ -0,0 +1,15 @@ +@model OurUmbraco.Community.Models.GitHubContributorsModel + +@foreach (var contributor in Model.Contributors) +{ + +
+ @contributor.Id +
+
+} + +@if (Model.Contributors.Any() == false) +{ +

Could not load recent GitHub contributors.

+} \ No newline at end of file diff --git a/OurUmbraco/Community/Controllers/GitHubContributorController.cs b/OurUmbraco/Community/Controllers/GitHubContributorController.cs new file mode 100644 index 00000000..06f5b9af --- /dev/null +++ b/OurUmbraco/Community/Controllers/GitHubContributorController.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Net; +using System.Web.Http; +using System.Web.Mvc; +using OurUmbraco.Community.Models; +using OurUmbraco.Our.Api; +using RestSharp; +using Umbraco.Core.Cache; +using Umbraco.Core.Logging; +using Umbraco.Web.Mvc; + +namespace OurUmbraco.Community.Controllers +{ + public class GitHubContributorController : SurfaceController + { + public ActionResult GitHubGetContributorsResult() + { + var model = new GitHubContributorsModel(); + try + { + var contributors = ApplicationContext.ApplicationCache.RuntimeCache.GetCacheItem>("UmbracoGitHubContributors", + () => + { + //TODO: GitHub keys if required + var githubController = new GitHubController(); + var response = githubController.GetAllContributors(); + if (response.StatusCode == HttpStatusCode.OK && response.ResponseStatus == ResponseStatus.Completed) + { + return response.Data; + } + throw new HttpResponseException(HttpStatusCode.BadRequest); + }, TimeSpan.FromMinutes(2)); + + var filteredContributors = contributors; + //TODO: filter contributors + model.Contributors = filteredContributors; + } + catch (Exception ex) + { + LogHelper.Error("Could not get GitHub Contributors", ex); + } + + return PartialView("~/Views/Partials/Home/GitHubContributors.cshtml", model); + } + } +} diff --git a/OurUmbraco/Community/Models/GitHubContributorsModel.cs b/OurUmbraco/Community/Models/GitHubContributorsModel.cs new file mode 100644 index 00000000..bf70ac32 --- /dev/null +++ b/OurUmbraco/Community/Models/GitHubContributorsModel.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; + +namespace OurUmbraco.Community.Models +{ + public class GitHubContributorsModel : IGitHubContributorsModel + { + public IEnumerable Contributors { get; set; } + } +} \ No newline at end of file diff --git a/OurUmbraco/Community/Models/GithubContributorModel.cs b/OurUmbraco/Community/Models/GithubContributorModel.cs new file mode 100644 index 00000000..65f63c12 --- /dev/null +++ b/OurUmbraco/Community/Models/GithubContributorModel.cs @@ -0,0 +1,57 @@ +using System.Runtime.Serialization; + +namespace OurUmbraco.Community.Models +{ + [DataContract] + public class GitHubContributorModel : IGitHubContributorModel + { + public string Login { get; set; } + + public int Id { get; set; } + + [DataMember(Name = "avatar_url")] + public string AvatarUrl { get; set; } + + [DataMember(Name = "gravatar_id")] + public string GravatarId { get; set; } + + public string Url { get; set; } + + [DataMember(Name = "html_url")] + public string HtmlUrl { get; set; } + + [DataMember(Name = "followers_url")] + public string FollowersUrl { get; set; } + + [DataMember(Name = "following_url")] + public string FollowingsUrl { get; set; } + + [DataMember(Name = "gists_url")] + public string GistsUrl { get; set; } + + [DataMember(Name = "starred_url")] + public string StarredUrl { get; set; } + + [DataMember(Name = "subscriptions_url")] + public string SubscriptionsUrl { get; set; } + + [DataMember(Name = "organizations_url")] + public string OrganizationsUrl { get; set; } + + [DataMember(Name = "repos_url")] + public string ReposUrl { get; set; } + + [DataMember(Name = "events_url")] + public string EventsUrl { get; set; } + + [DataMember(Name = "received_events_url")] + public string ReceivedEventsUrl { get; set; } + + public string Type { get; set; } + + [DataMember(Name = "site_admin")] + public bool SiteAdmin { get; set; } + + public int Contributions { get; set; } + } +} \ No newline at end of file diff --git a/OurUmbraco/Community/Models/IGitHubContributorModel.cs b/OurUmbraco/Community/Models/IGitHubContributorModel.cs new file mode 100644 index 00000000..39bddcb4 --- /dev/null +++ b/OurUmbraco/Community/Models/IGitHubContributorModel.cs @@ -0,0 +1,6 @@ +namespace OurUmbraco.Community.Models +{ + public interface IGitHubContributorModel + { + } +} \ No newline at end of file diff --git a/OurUmbraco/Community/Models/IGitHubContributorsModel.cs b/OurUmbraco/Community/Models/IGitHubContributorsModel.cs new file mode 100644 index 00000000..02f98006 --- /dev/null +++ b/OurUmbraco/Community/Models/IGitHubContributorsModel.cs @@ -0,0 +1,6 @@ +namespace OurUmbraco.Community.Models +{ + public interface IGitHubContributorsModel + { + } +} \ No newline at end of file diff --git a/OurUmbraco/Our/Api/GithubController.cs b/OurUmbraco/Our/Api/GithubController.cs new file mode 100644 index 00000000..2c388623 --- /dev/null +++ b/OurUmbraco/Our/Api/GithubController.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using OurUmbraco.Community.Models; +using RestSharp; + +namespace OurUmbraco.Our.Api +{ + public class GitHubController + { + /// + /// Get all contributors from GitHub Umbraco repositories + /// + /// + public IRestResponse> GetAllContributors() + { + //https://api.github.com/repos/umbraco/OurUmbraco/contributors + var client = new RestClient("https://api.github.com"); + var request = new RestRequest("/repos/umbraco/OurUmbraco/contributors", Method.GET); + client.UserAgent = "OurUmbraco"; + + var response = client.Execute>(request); + return response; + } + } +} diff --git a/OurUmbraco/OurUmbraco.csproj b/OurUmbraco/OurUmbraco.csproj index 3250b40b..cffcbc89 100644 --- a/OurUmbraco/OurUmbraco.csproj +++ b/OurUmbraco/OurUmbraco.csproj @@ -391,7 +391,12 @@ + + + + + @@ -504,6 +509,7 @@ + From 829693c410a0c60def011c69eef81f35f8e65eba Mon Sep 17 00:00:00 2001 From: Emma Garland Date: Sun, 4 Jun 2017 16:49:57 +0100 Subject: [PATCH 02/33] Added new styles and classes - sass to be accessed --- OurUmbraco.Client/src/scss/elements/_avatar.scss | 14 ++++++++++++++ OurUmbraco.Client/src/scss/style.scss | 1 + .../Views/Partials/Community/Home.cshtml | 7 +++---- .../Views/Partials/Home/GitHubContributors.cshtml | 2 +- 4 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 OurUmbraco.Client/src/scss/elements/_avatar.scss diff --git a/OurUmbraco.Client/src/scss/elements/_avatar.scss b/OurUmbraco.Client/src/scss/elements/_avatar.scss new file mode 100644 index 00000000..f48700bf --- /dev/null +++ b/OurUmbraco.Client/src/scss/elements/_avatar.scss @@ -0,0 +1,14 @@ +.avatar { + flex: 0 0 23%; + margin-right: 20px; + + @media (min-width: $md) { + flex: 0 0 15%; + } + + img { + width: 100%; + max-width: 112px; + height: auto; + } +} \ No newline at end of file diff --git a/OurUmbraco.Client/src/scss/style.scss b/OurUmbraco.Client/src/scss/style.scss index c9b8564e..5042f772 100644 --- a/OurUmbraco.Client/src/scss/style.scss +++ b/OurUmbraco.Client/src/scss/style.scss @@ -51,6 +51,7 @@ @import 'elements/notification'; @import 'elements/alertbar'; @import 'elements/utilities'; +@import 'elements/avatar'; /** /* Sections diff --git a/OurUmbraco.Site/Views/Partials/Community/Home.cshtml b/OurUmbraco.Site/Views/Partials/Community/Home.cshtml index 029b1e8d..193f204a 100644 --- a/OurUmbraco.Site/Views/Partials/Community/Home.cshtml +++ b/OurUmbraco.Site/Views/Partials/Community/Home.cshtml @@ -131,10 +131,9 @@ else @helper GitHubContributors() { -
+
-

GitHub Contributors Activity

@@ -142,10 +141,10 @@ else

- Recent tweets + Recent GitHub contributions
-
+

Loading GitHub search results...

diff --git a/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml b/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml index 71794987..bf5917f5 100644 --- a/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml +++ b/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml @@ -4,7 +4,7 @@ {
- @contributor.Id + @contributor.Id
} From b9d5354cc7fc08a3b063900c2536d5bd3ea97d9a Mon Sep 17 00:00:00 2001 From: Emma Garland Date: Sun, 4 Jun 2017 16:58:25 +0100 Subject: [PATCH 03/33] GitHub contribution numbers --- OurUmbraco.Site/Views/Partials/Community/Home.cshtml | 6 +++--- .../Views/Partials/Home/GitHubContributors.cshtml | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/OurUmbraco.Site/Views/Partials/Community/Home.cshtml b/OurUmbraco.Site/Views/Partials/Community/Home.cshtml index 193f204a..6427b6fe 100644 --- a/OurUmbraco.Site/Views/Partials/Community/Home.cshtml +++ b/OurUmbraco.Site/Views/Partials/Community/Home.cshtml @@ -144,12 +144,12 @@ else Recent GitHub contributions
-
-

Loading GitHub search results...

+
+

Loading GitHub contributors...

diff --git a/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml b/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml index bf5917f5..c6ccdffe 100644 --- a/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml +++ b/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml @@ -4,7 +4,8 @@ {
- @contributor.Id + @contributor.Login + @contributor.Contributions
} From b235ed168ab50b537d7fb16b2fe3b96b325a6243 Mon Sep 17 00:00:00 2001 From: Emma Garland Date: Sun, 4 Jun 2017 17:12:39 +0100 Subject: [PATCH 04/33] Inline styles (temp) --- .../Partials/Home/GitHubContributors.cshtml | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml b/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml index c6ccdffe..cdaa87cb 100644 --- a/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml +++ b/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml @@ -2,14 +2,32 @@ @foreach (var contributor in Model.Contributors) { - -
- @contributor.Login - @contributor.Contributions + +
+ @contributor.Login + @contributor.Contributions
} + + @if (Model.Contributors.Any() == false) {

Could not load recent GitHub contributors.

From 91d3c6c717bfcd456008822fd1ba3832a2955998 Mon Sep 17 00:00:00 2001 From: Emma Garland Date: Sun, 4 Jun 2017 17:15:51 +0100 Subject: [PATCH 05/33] Border and url fix --- .../Views/Partials/Home/GitHubContributors.cshtml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml b/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml index cdaa87cb..ba045634 100644 --- a/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml +++ b/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml @@ -2,7 +2,7 @@ @foreach (var contributor in Model.Contributors) { - +
@contributor.Login @contributor.Contributions @@ -15,6 +15,10 @@ margin-bottom: 15px; } + .contributor img { + border: 3px solid #98d768; + } + .contrib-count { position: absolute; left: 25px; From 0c25c1529d32bf2420364fd039f909633168e422 Mon Sep 17 00:00:00 2001 From: Emma Garland Date: Sun, 4 Jun 2017 20:18:33 +0100 Subject: [PATCH 06/33] Updated to use main Umbraco commits --- OurUmbraco.Site/Views/Partials/Community/Home.cshtml | 6 +++--- .../Community/Controllers/GitHubContributorController.cs | 2 +- OurUmbraco/Our/Api/GithubController.cs | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/OurUmbraco.Site/Views/Partials/Community/Home.cshtml b/OurUmbraco.Site/Views/Partials/Community/Home.cshtml index 6427b6fe..67050a9e 100644 --- a/OurUmbraco.Site/Views/Partials/Community/Home.cshtml +++ b/OurUmbraco.Site/Views/Partials/Community/Home.cshtml @@ -135,13 +135,13 @@ else
-

GitHub Contributors Activity

+

GitHub Contributors

- Recent activity on GitHub, where people are talking about Umbraco. + Contributions to Umbraco GitHub repositories

- Recent GitHub contributions + Top GitHub contributors
diff --git a/OurUmbraco/Community/Controllers/GitHubContributorController.cs b/OurUmbraco/Community/Controllers/GitHubContributorController.cs index 06f5b9af..8568d43a 100644 --- a/OurUmbraco/Community/Controllers/GitHubContributorController.cs +++ b/OurUmbraco/Community/Controllers/GitHubContributorController.cs @@ -30,7 +30,7 @@ namespace OurUmbraco.Community.Controllers return response.Data; } throw new HttpResponseException(HttpStatusCode.BadRequest); - }, TimeSpan.FromMinutes(2)); + }, TimeSpan.FromDays(1)); var filteredContributors = contributors; //TODO: filter contributors diff --git a/OurUmbraco/Our/Api/GithubController.cs b/OurUmbraco/Our/Api/GithubController.cs index 2c388623..3d3e37ed 100644 --- a/OurUmbraco/Our/Api/GithubController.cs +++ b/OurUmbraco/Our/Api/GithubController.cs @@ -16,9 +16,9 @@ namespace OurUmbraco.Our.Api /// public IRestResponse> GetAllContributors() { - //https://api.github.com/repos/umbraco/OurUmbraco/contributors + //https://api.github.com/repos/umbraco/Umbraco-CMS/contributors var client = new RestClient("https://api.github.com"); - var request = new RestRequest("/repos/umbraco/OurUmbraco/contributors", Method.GET); + var request = new RestRequest("/repos/umbraco/Umbraco-CMS/contributors", Method.GET); client.UserAgent = "OurUmbraco"; var response = client.Execute>(request); From ae555f41306c156af17cef0d0927f99f478a4355 Mon Sep 17 00:00:00 2001 From: Emma Garland Date: Sun, 4 Jun 2017 21:16:18 +0100 Subject: [PATCH 07/33] Wording update --- OurUmbraco.Site/Views/Partials/Community/Home.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OurUmbraco.Site/Views/Partials/Community/Home.cshtml b/OurUmbraco.Site/Views/Partials/Community/Home.cshtml index 67050a9e..fcc138a0 100644 --- a/OurUmbraco.Site/Views/Partials/Community/Home.cshtml +++ b/OurUmbraco.Site/Views/Partials/Community/Home.cshtml @@ -149,7 +149,7 @@ else
From 9f127239ecb0600fad295a11b1c084166f380194 Mon Sep 17 00:00:00 2001 From: Emma Garland Date: Sun, 4 Jun 2017 22:10:31 +0100 Subject: [PATCH 08/33] Updated gulp-imagein version and now successfully compiles --- OurUmbraco.Client/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OurUmbraco.Client/package.json b/OurUmbraco.Client/package.json index 35607df5..59960851 100644 --- a/OurUmbraco.Client/package.json +++ b/OurUmbraco.Client/package.json @@ -11,7 +11,7 @@ "gulp-clean": "0.3.x", "gulp-combine-media-queries": "0.2.x", "gulp-concat": "2.2.x", - "gulp-imagemin": "0.6.x", + "gulp-imagemin": "3.3.x", "gulp-jshint": "^2.0.4", "gulp-minify-css": "1.1.x", "gulp-rename": "1.2.x", From 9a03d09c041014ee9e4e3870d9921d0b3dd76fef Mon Sep 17 00:00:00 2001 From: Emma Garland Date: Sun, 4 Jun 2017 23:05:48 +0100 Subject: [PATCH 09/33] Green header colour as per header --- OurUmbraco.Client/src/scss/style.scss | 3 +-- .../Partials/Home/GitHubContributors.cshtml | 24 +------------------ 2 files changed, 2 insertions(+), 25 deletions(-) diff --git a/OurUmbraco.Client/src/scss/style.scss b/OurUmbraco.Client/src/scss/style.scss index 5042f772..9c396f20 100644 --- a/OurUmbraco.Client/src/scss/style.scss +++ b/OurUmbraco.Client/src/scss/style.scss @@ -51,7 +51,6 @@ @import 'elements/notification'; @import 'elements/alertbar'; @import 'elements/utilities'; -@import 'elements/avatar'; /** /* Sections @@ -61,7 +60,7 @@ @import 'sections/forum'; @import 'sections/people'; @import 'sections/events'; - +@import 'sections/contributors'; /** /* Pages diff --git a/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml b/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml index ba045634..90a78ba5 100644 --- a/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml +++ b/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml @@ -3,35 +3,13 @@ @foreach (var contributor in Model.Contributors) { -
+
@contributor.Login @contributor.Contributions
} - - @if (Model.Contributors.Any() == false) {

Could not load recent GitHub contributors.

From 3a27201bed153525195a4b543f856c01eb938f3d Mon Sep 17 00:00:00 2001 From: Emma Garland Date: Sun, 4 Jun 2017 23:40:49 +0100 Subject: [PATCH 10/33] Updated sass styling for the avatars --- .../src/scss/elements/_avatar.scss | 14 -------- .../src/scss/sections/_contributors.scss | 32 +++++++++++++++++++ 2 files changed, 32 insertions(+), 14 deletions(-) delete mode 100644 OurUmbraco.Client/src/scss/elements/_avatar.scss create mode 100644 OurUmbraco.Client/src/scss/sections/_contributors.scss diff --git a/OurUmbraco.Client/src/scss/elements/_avatar.scss b/OurUmbraco.Client/src/scss/elements/_avatar.scss deleted file mode 100644 index f48700bf..00000000 --- a/OurUmbraco.Client/src/scss/elements/_avatar.scss +++ /dev/null @@ -1,14 +0,0 @@ -.avatar { - flex: 0 0 23%; - margin-right: 20px; - - @media (min-width: $md) { - flex: 0 0 15%; - } - - img { - width: 100%; - max-width: 112px; - height: auto; - } -} \ No newline at end of file diff --git a/OurUmbraco.Client/src/scss/sections/_contributors.scss b/OurUmbraco.Client/src/scss/sections/_contributors.scss new file mode 100644 index 00000000..81293943 --- /dev/null +++ b/OurUmbraco.Client/src/scss/sections/_contributors.scss @@ -0,0 +1,32 @@ +.contributor { + margin-bottom: 15px; + + .avatar { + position: relative; + flex: 0 0 23%; + margin-right: 20px; + + @media (min-width: $md) { + flex: 0 0 15%; + } + + img { + border: 3px solid #98d768; + width: 100%; + max-width: 112px; + height: auto; + } + } + + .contrib-count { + position: absolute; + left: 25px; + bottom: 0px; + text-align: center; + right: 25px; + color: #425a2e; + font-weight: bold; + background: darken($color-our, 4%); + border-radius: 15px; + } +} From b8571f56a66dd59db4c58b8c35cbc02ed580ac01 Mon Sep 17 00:00:00 2001 From: Emma Garland Date: Mon, 5 Jun 2017 09:01:07 +0100 Subject: [PATCH 11/33] Updated model to use new method call with accurate commit information --- .../Partials/Home/GitHubContributors.cshtml | 23 ++++++++++----- .../GitHubContributorController.cs | 1 - .../Models/GithubContributorModel.cs | 29 +++++++++++++++++-- OurUmbraco/Our/Api/GithubController.cs | 3 +- 4 files changed, 42 insertions(+), 14 deletions(-) diff --git a/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml b/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml index 90a78ba5..ec025a53 100644 --- a/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml +++ b/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml @@ -1,16 +1,23 @@ @model OurUmbraco.Community.Models.GitHubContributorsModel -@foreach (var contributor in Model.Contributors) +@if (Model.Contributors.Any()) { - -
- @contributor.Login - @contributor.Contributions -
-
+ foreach (var contributor in Model.Contributors) + { + var author = contributor.Author; + if (author != null) + { + +
+ @author.Login + @contributor.Total +
+
+ } + } } -@if (Model.Contributors.Any() == false) +else {

Could not load recent GitHub contributors.

} \ No newline at end of file diff --git a/OurUmbraco/Community/Controllers/GitHubContributorController.cs b/OurUmbraco/Community/Controllers/GitHubContributorController.cs index 8568d43a..dd05d77c 100644 --- a/OurUmbraco/Community/Controllers/GitHubContributorController.cs +++ b/OurUmbraco/Community/Controllers/GitHubContributorController.cs @@ -22,7 +22,6 @@ namespace OurUmbraco.Community.Controllers var contributors = ApplicationContext.ApplicationCache.RuntimeCache.GetCacheItem>("UmbracoGitHubContributors", () => { - //TODO: GitHub keys if required var githubController = new GitHubController(); var response = githubController.GetAllContributors(); if (response.StatusCode == HttpStatusCode.OK && response.ResponseStatus == ResponseStatus.Completed) diff --git a/OurUmbraco/Community/Models/GithubContributorModel.cs b/OurUmbraco/Community/Models/GithubContributorModel.cs index 65f63c12..8a4c7054 100644 --- a/OurUmbraco/Community/Models/GithubContributorModel.cs +++ b/OurUmbraco/Community/Models/GithubContributorModel.cs @@ -1,9 +1,34 @@ -using System.Runtime.Serialization; +using System.Collections.Generic; +using System.Runtime.Serialization; namespace OurUmbraco.Community.Models { [DataContract] public class GitHubContributorModel : IGitHubContributorModel + { + public int Total { get; set; } + public List Weeks { get; set; } + public Author Author { get; set; } + } + + [DataContract] + public class Week + { + [DataMember(Name = "w")] + public int Timestamp { get; set; } + + [DataMember(Name = "a")] + public int Additions { get; set; } + + [DataMember(Name = "d")] + public int Deletions { get; set; } + + [DataMember(Name = "c")] + public int Commits { get; set; } + } + + [DataContract] + public class Author { public string Login { get; set; } @@ -51,7 +76,5 @@ namespace OurUmbraco.Community.Models [DataMember(Name = "site_admin")] public bool SiteAdmin { get; set; } - - public int Contributions { get; set; } } } \ No newline at end of file diff --git a/OurUmbraco/Our/Api/GithubController.cs b/OurUmbraco/Our/Api/GithubController.cs index 3d3e37ed..54c7d4d7 100644 --- a/OurUmbraco/Our/Api/GithubController.cs +++ b/OurUmbraco/Our/Api/GithubController.cs @@ -16,9 +16,8 @@ namespace OurUmbraco.Our.Api /// public IRestResponse> GetAllContributors() { - //https://api.github.com/repos/umbraco/Umbraco-CMS/contributors var client = new RestClient("https://api.github.com"); - var request = new RestRequest("/repos/umbraco/Umbraco-CMS/contributors", Method.GET); + var request = new RestRequest("/repos/umbraco/Umbraco-CMS/stats/contributors", Method.GET); client.UserAgent = "OurUmbraco"; var response = client.Execute>(request); From 9b67f4cebf504d21373f1f0775f1aa4ab0c5a37a Mon Sep 17 00:00:00 2001 From: Emma Garland Date: Mon, 5 Jun 2017 09:05:58 +0100 Subject: [PATCH 12/33] Ordered correctly --- .../Community/Controllers/GitHubContributorController.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OurUmbraco/Community/Controllers/GitHubContributorController.cs b/OurUmbraco/Community/Controllers/GitHubContributorController.cs index dd05d77c..77a315b5 100644 --- a/OurUmbraco/Community/Controllers/GitHubContributorController.cs +++ b/OurUmbraco/Community/Controllers/GitHubContributorController.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Net; using System.Web.Http; using System.Web.Mvc; @@ -31,8 +32,7 @@ namespace OurUmbraco.Community.Controllers throw new HttpResponseException(HttpStatusCode.BadRequest); }, TimeSpan.FromDays(1)); - var filteredContributors = contributors; - //TODO: filter contributors + var filteredContributors = contributors.OrderByDescending(c => c.Total); model.Contributors = filteredContributors; } catch (Exception ex) From 09ed061c9bad92e42021dd91d7e6c5b1e9556427 Mon Sep 17 00:00:00 2001 From: Emma Garland Date: Mon, 5 Jun 2017 09:54:59 +0100 Subject: [PATCH 13/33] Now combines more repos --- .../Partials/Home/GitHubContributors.cshtml | 4 +-- .../GitHubContributorController.cs | 30 +++++++++++++++---- .../Models/GitHubContributorsModel.cs | 3 +- OurUmbraco/Our/Api/GithubController.cs | 8 ++--- 4 files changed, 32 insertions(+), 13 deletions(-) diff --git a/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml b/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml index ec025a53..b2bbd53a 100644 --- a/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml +++ b/OurUmbraco.Site/Views/Partials/Home/GitHubContributors.cshtml @@ -4,13 +4,13 @@ { foreach (var contributor in Model.Contributors) { - var author = contributor.Author; + var author = contributor.First().Author; if (author != null) {
@author.Login - @contributor.Total + @contributor.Sum(x => x.Total)
} diff --git a/OurUmbraco/Community/Controllers/GitHubContributorController.cs b/OurUmbraco/Community/Controllers/GitHubContributorController.cs index 77a315b5..7c4ea5e5 100644 --- a/OurUmbraco/Community/Controllers/GitHubContributorController.cs +++ b/OurUmbraco/Community/Controllers/GitHubContributorController.cs @@ -15,6 +15,12 @@ namespace OurUmbraco.Community.Controllers { public class GitHubContributorController : SurfaceController { + private readonly string[] Repositories = + { + "Umbraco-Cms", + "OurUmbraco" + }; + public ActionResult GitHubGetContributorsResult() { var model = new GitHubContributorsModel(); @@ -24,22 +30,34 @@ namespace OurUmbraco.Community.Controllers () => { var githubController = new GitHubController(); - var response = githubController.GetAllContributors(); - if (response.StatusCode == HttpStatusCode.OK && response.ResponseStatus == ResponseStatus.Completed) + var gitHubContributors = new List(); + foreach (var repo in Repositories) { - return response.Data; + var response = githubController.GetAllRepoContributors(repo); + if (response.StatusCode == HttpStatusCode.OK && + response.ResponseStatus == ResponseStatus.Completed) + { + gitHubContributors.AddRange(response.Data); + } + else + { + LogHelper.Warn(string.Format("Invalid HTTP response for repository {0}", repo)); + } } - throw new HttpResponseException(HttpStatusCode.BadRequest); + return gitHubContributors; + }, TimeSpan.FromDays(1)); - var filteredContributors = contributors.OrderByDescending(c => c.Total); + var filteredContributors = contributors + .OrderByDescending(c => c.Total) + .GroupBy(g => g.Author.Id); model.Contributors = filteredContributors; } catch (Exception ex) { LogHelper.Error("Could not get GitHub Contributors", ex); } - + return PartialView("~/Views/Partials/Home/GitHubContributors.cshtml", model); } } diff --git a/OurUmbraco/Community/Models/GitHubContributorsModel.cs b/OurUmbraco/Community/Models/GitHubContributorsModel.cs index bf70ac32..51f04a6b 100644 --- a/OurUmbraco/Community/Models/GitHubContributorsModel.cs +++ b/OurUmbraco/Community/Models/GitHubContributorsModel.cs @@ -1,9 +1,10 @@ using System.Collections.Generic; +using System.Linq; namespace OurUmbraco.Community.Models { public class GitHubContributorsModel : IGitHubContributorsModel { - public IEnumerable Contributors { get; set; } + public IEnumerable> Contributors { get; set; } } } \ No newline at end of file diff --git a/OurUmbraco/Our/Api/GithubController.cs b/OurUmbraco/Our/Api/GithubController.cs index 54c7d4d7..27130f23 100644 --- a/OurUmbraco/Our/Api/GithubController.cs +++ b/OurUmbraco/Our/Api/GithubController.cs @@ -9,17 +9,17 @@ using RestSharp; namespace OurUmbraco.Our.Api { public class GitHubController - { + { + private const string RepositoryOwner = "Umbraco"; /// /// Get all contributors from GitHub Umbraco repositories /// /// - public IRestResponse> GetAllContributors() + public IRestResponse> GetAllRepoContributors(string repo) { var client = new RestClient("https://api.github.com"); - var request = new RestRequest("/repos/umbraco/Umbraco-CMS/stats/contributors", Method.GET); + var request = new RestRequest(string.Format("/repos/{0}/{1}/stats/contributors", RepositoryOwner, repo), Method.GET); client.UserAgent = "OurUmbraco"; - var response = client.Execute>(request); return response; } From 593d0c31fa1659ef1e22fc1d143de78166be94a0 Mon Sep 17 00:00:00 2001 From: Emma Garland Date: Mon, 5 Jun 2017 10:10:37 +0100 Subject: [PATCH 14/33] HQ exclusion list --- OurUmbraco.Site/OurUmbraco.Site.csproj | 1 + OurUmbraco.Site/config/githubhq.txt | 2 ++ .../Controllers/GitHubContributorController.cs | 13 ++++++++++++- 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 OurUmbraco.Site/config/githubhq.txt diff --git a/OurUmbraco.Site/OurUmbraco.Site.csproj b/OurUmbraco.Site/OurUmbraco.Site.csproj index cd00fcb9..fdb4a4fa 100644 --- a/OurUmbraco.Site/OurUmbraco.Site.csproj +++ b/OurUmbraco.Site/OurUmbraco.Site.csproj @@ -464,6 +464,7 @@ Designer + diff --git a/OurUmbraco.Site/config/githubhq.txt b/OurUmbraco.Site/config/githubhq.txt new file mode 100644 index 00000000..97ecb98b --- /dev/null +++ b/OurUmbraco.Site/config/githubhq.txt @@ -0,0 +1,2 @@ +Shazwazza +nul800sebastiaan \ No newline at end of file diff --git a/OurUmbraco/Community/Controllers/GitHubContributorController.cs b/OurUmbraco/Community/Controllers/GitHubContributorController.cs index 7c4ea5e5..fdb78dab 100644 --- a/OurUmbraco/Community/Controllers/GitHubContributorController.cs +++ b/OurUmbraco/Community/Controllers/GitHubContributorController.cs @@ -26,6 +26,15 @@ namespace OurUmbraco.Community.Controllers var model = new GitHubContributorsModel(); try { + string configPath = Server.MapPath("~/config/githubhq.txt"); + if (!System.IO.File.Exists(configPath)) + { + LogHelper.Debug("Config file was not found: " + configPath); + return PartialView("~/Views/Partials/Home/GitHubContributors.cshtml", model); + } + + // Get the GitHub ID of each HQ contributor + string[] login = System.IO.File.ReadAllLines(configPath).Where(x => x.Trim() != "").Distinct().ToArray(); var contributors = ApplicationContext.ApplicationCache.RuntimeCache.GetCacheItem>("UmbracoGitHubContributors", () => { @@ -45,12 +54,14 @@ namespace OurUmbraco.Community.Controllers } } return gitHubContributors; - + }, TimeSpan.FromDays(1)); var filteredContributors = contributors .OrderByDescending(c => c.Total) + .Where(g => !login.Contains(g.Author.Login)) .GroupBy(g => g.Author.Id); + model.Contributors = filteredContributors; } catch (Exception ex) From 576b1bcf2e7485c59ec152ba96bf33de605b7654 Mon Sep 17 00:00:00 2001 From: Emma Garland Date: Mon, 5 Jun 2017 10:48:52 +0100 Subject: [PATCH 15/33] Load more button now functional --- .../src/scss/sections/_contributors.scss | 16 +++++++++++++++- .../Views/Partials/Community/Scripts.cshtml | 18 +++++++++++------- .../Partials/Home/GitHubContributors.cshtml | 1 + 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/OurUmbraco.Client/src/scss/sections/_contributors.scss b/OurUmbraco.Client/src/scss/sections/_contributors.scss index 81293943..fc617670 100644 --- a/OurUmbraco.Client/src/scss/sections/_contributors.scss +++ b/OurUmbraco.Client/src/scss/sections/_contributors.scss @@ -1,4 +1,18 @@ -.contributor { +#github-contributors { + &:not(.all) { + .contributor:nth-child(n+17) { + display: none; + } + } + &.all { + .button { display: none; } + } + .button { + margin: 20px auto; + } +} + +.contributor { margin-bottom: 15px; .avatar { diff --git a/OurUmbraco.Site/Views/Partials/Community/Scripts.cshtml b/OurUmbraco.Site/Views/Partials/Community/Scripts.cshtml index 34dfc1d5..ec839f2e 100644 --- a/OurUmbraco.Site/Views/Partials/Community/Scripts.cshtml +++ b/OurUmbraco.Site/Views/Partials/Community/Scripts.cshtml @@ -1,16 +1,20 @@