From 01b60e3200fc73c6cc3d42b45fb7a1be11fa0740 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 16 Aug 2015 15:51:15 -0600 Subject: [PATCH] Added published date to website downloads --- src/Website/App_Data/web.db | Bin 0 -> 36864 bytes src/Website/Content/libs/jquery.timeago.js | 221 +++++++++++++++++++++ src/Website/Scripts/jquery.timeago.js | 221 +++++++++++++++++++++ src/Website/Views/Download/Index.cshtml | 1 + src/Website/Views/Shared/_Layout.cshtml | 8 + src/Website/Web.config | 2 +- src/Website/Website.csproj | 4 + src/Website/packages.config | 1 + 8 files changed, 457 insertions(+), 1 deletion(-) create mode 100644 src/Website/App_Data/web.db create mode 100644 src/Website/Content/libs/jquery.timeago.js create mode 100644 src/Website/Scripts/jquery.timeago.js diff --git a/src/Website/App_Data/web.db b/src/Website/App_Data/web.db new file mode 100644 index 0000000000000000000000000000000000000000..ef741b127f41f7ea9a44b4124a4f09ae19b1be2c GIT binary patch literal 36864 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 svE-!~V!Z literal 0 HcmV?d00001 diff --git a/src/Website/Content/libs/jquery.timeago.js b/src/Website/Content/libs/jquery.timeago.js new file mode 100644 index 000000000..15805a619 --- /dev/null +++ b/src/Website/Content/libs/jquery.timeago.js @@ -0,0 +1,221 @@ +/** + * Timeago is a jQuery plugin that makes it easy to support automatically + * updating fuzzy timestamps (e.g. "4 minutes ago" or "about 1 day ago"). + * + * @name timeago + * @version 1.4.1 + * @requires jQuery v1.2.3+ + * @author Ryan McGeary + * @license MIT License - http://www.opensource.org/licenses/mit-license.php + * + * For usage and examples, visit: + * http://timeago.yarp.com/ + * + * Copyright (c) 2008-2015, Ryan McGeary (ryan -[at]- mcgeary [*dot*] org) + */ + +(function (factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else { + // Browser globals + factory(jQuery); + } +}(function ($) { + $.timeago = function(timestamp) { + if (timestamp instanceof Date) { + return inWords(timestamp); + } else if (typeof timestamp === "string") { + return inWords($.timeago.parse(timestamp)); + } else if (typeof timestamp === "number") { + return inWords(new Date(timestamp)); + } else { + return inWords($.timeago.datetime(timestamp)); + } + }; + var $t = $.timeago; + + $.extend($.timeago, { + settings: { + refreshMillis: 60000, + allowPast: true, + allowFuture: false, + localeTitle: false, + cutoff: 0, + strings: { + prefixAgo: null, + prefixFromNow: null, + suffixAgo: "ago", + suffixFromNow: "from now", + inPast: 'any moment now', + seconds: "less than a minute", + minute: "about a minute", + minutes: "%d minutes", + hour: "about an hour", + hours: "about %d hours", + day: "a day", + days: "%d days", + month: "about a month", + months: "%d months", + year: "about a year", + years: "%d years", + wordSeparator: " ", + numbers: [] + } + }, + + inWords: function(distanceMillis) { + if(!this.settings.allowPast && ! this.settings.allowFuture) { + throw 'timeago allowPast and allowFuture settings can not both be set to false.'; + } + + var $l = this.settings.strings; + var prefix = $l.prefixAgo; + var suffix = $l.suffixAgo; + if (this.settings.allowFuture) { + if (distanceMillis < 0) { + prefix = $l.prefixFromNow; + suffix = $l.suffixFromNow; + } + } + + if(!this.settings.allowPast && distanceMillis >= 0) { + return this.settings.strings.inPast; + } + + var seconds = Math.abs(distanceMillis) / 1000; + var minutes = seconds / 60; + var hours = minutes / 60; + var days = hours / 24; + var years = days / 365; + + function substitute(stringOrFunction, number) { + var string = $.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis) : stringOrFunction; + var value = ($l.numbers && $l.numbers[number]) || number; + return string.replace(/%d/i, value); + } + + var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) || + seconds < 90 && substitute($l.minute, 1) || + minutes < 45 && substitute($l.minutes, Math.round(minutes)) || + minutes < 90 && substitute($l.hour, 1) || + hours < 24 && substitute($l.hours, Math.round(hours)) || + hours < 42 && substitute($l.day, 1) || + days < 30 && substitute($l.days, Math.round(days)) || + days < 45 && substitute($l.month, 1) || + days < 365 && substitute($l.months, Math.round(days / 30)) || + years < 1.5 && substitute($l.year, 1) || + substitute($l.years, Math.round(years)); + + var separator = $l.wordSeparator || ""; + if ($l.wordSeparator === undefined) { separator = " "; } + return $.trim([prefix, words, suffix].join(separator)); + }, + + parse: function(iso8601) { + var s = $.trim(iso8601); + s = s.replace(/\.\d+/,""); // remove milliseconds + s = s.replace(/-/,"/").replace(/-/,"/"); + s = s.replace(/T/," ").replace(/Z/," UTC"); + s = s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400 + s = s.replace(/([\+\-]\d\d)$/," $100"); // +09 -> +0900 + return new Date(s); + }, + datetime: function(elem) { + var iso8601 = $t.isTime(elem) ? $(elem).attr("datetime") : $(elem).attr("title"); + return $t.parse(iso8601); + }, + isTime: function(elem) { + // jQuery's `is()` doesn't play well with HTML5 in IE + return $(elem).get(0).tagName.toLowerCase() === "time"; // $(elem).is("time"); + } + }); + + // functions that can be called via $(el).timeago('action') + // init is default when no action is given + // functions are called with context of a single element + var functions = { + init: function(){ + var refresh_el = $.proxy(refresh, this); + refresh_el(); + var $s = $t.settings; + if ($s.refreshMillis > 0) { + this._timeagoInterval = setInterval(refresh_el, $s.refreshMillis); + } + }, + update: function(time){ + var parsedTime = $t.parse(time); + $(this).data('timeago', { datetime: parsedTime }); + if($t.settings.localeTitle) $(this).attr("title", parsedTime.toLocaleString()); + refresh.apply(this); + }, + updateFromDOM: function(){ + $(this).data('timeago', { datetime: $t.parse( $t.isTime(this) ? $(this).attr("datetime") : $(this).attr("title") ) }); + refresh.apply(this); + }, + dispose: function () { + if (this._timeagoInterval) { + window.clearInterval(this._timeagoInterval); + this._timeagoInterval = null; + } + } + }; + + $.fn.timeago = function(action, options) { + var fn = action ? functions[action] : functions.init; + if(!fn){ + throw new Error("Unknown function name '"+ action +"' for timeago"); + } + // each over objects here and call the requested function + this.each(function(){ + fn.call(this, options); + }); + return this; + }; + + function refresh() { + //check if it's still visible + if(!$.contains(document.documentElement,this)){ + //stop if it has been removed + $(this).timeago("dispose"); + return this; + } + + var data = prepareData(this); + var $s = $t.settings; + + if (!isNaN(data.datetime)) { + if ( $s.cutoff == 0 || Math.abs(distance(data.datetime)) < $s.cutoff) { + $(this).text(inWords(data.datetime)); + } + } + return this; + } + + function prepareData(element) { + element = $(element); + if (!element.data("timeago")) { + element.data("timeago", { datetime: $t.datetime(element) }); + var text = $.trim(element.text()); + if ($t.settings.localeTitle) { + element.attr("title", element.data('timeago').datetime.toLocaleString()); + } else if (text.length > 0 && !($t.isTime(element) && element.attr("title"))) { + element.attr("title", text); + } + } + return element.data("timeago"); + } + + function inWords(date) { + return $t.inWords(distance(date)); + } + + function distance(date) { + return (new Date().getTime() - date.getTime()); + } + + // fix for IE6 suckage + document.createElement("abbr"); + document.createElement("time"); +})); diff --git a/src/Website/Scripts/jquery.timeago.js b/src/Website/Scripts/jquery.timeago.js new file mode 100644 index 000000000..15805a619 --- /dev/null +++ b/src/Website/Scripts/jquery.timeago.js @@ -0,0 +1,221 @@ +/** + * Timeago is a jQuery plugin that makes it easy to support automatically + * updating fuzzy timestamps (e.g. "4 minutes ago" or "about 1 day ago"). + * + * @name timeago + * @version 1.4.1 + * @requires jQuery v1.2.3+ + * @author Ryan McGeary + * @license MIT License - http://www.opensource.org/licenses/mit-license.php + * + * For usage and examples, visit: + * http://timeago.yarp.com/ + * + * Copyright (c) 2008-2015, Ryan McGeary (ryan -[at]- mcgeary [*dot*] org) + */ + +(function (factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else { + // Browser globals + factory(jQuery); + } +}(function ($) { + $.timeago = function(timestamp) { + if (timestamp instanceof Date) { + return inWords(timestamp); + } else if (typeof timestamp === "string") { + return inWords($.timeago.parse(timestamp)); + } else if (typeof timestamp === "number") { + return inWords(new Date(timestamp)); + } else { + return inWords($.timeago.datetime(timestamp)); + } + }; + var $t = $.timeago; + + $.extend($.timeago, { + settings: { + refreshMillis: 60000, + allowPast: true, + allowFuture: false, + localeTitle: false, + cutoff: 0, + strings: { + prefixAgo: null, + prefixFromNow: null, + suffixAgo: "ago", + suffixFromNow: "from now", + inPast: 'any moment now', + seconds: "less than a minute", + minute: "about a minute", + minutes: "%d minutes", + hour: "about an hour", + hours: "about %d hours", + day: "a day", + days: "%d days", + month: "about a month", + months: "%d months", + year: "about a year", + years: "%d years", + wordSeparator: " ", + numbers: [] + } + }, + + inWords: function(distanceMillis) { + if(!this.settings.allowPast && ! this.settings.allowFuture) { + throw 'timeago allowPast and allowFuture settings can not both be set to false.'; + } + + var $l = this.settings.strings; + var prefix = $l.prefixAgo; + var suffix = $l.suffixAgo; + if (this.settings.allowFuture) { + if (distanceMillis < 0) { + prefix = $l.prefixFromNow; + suffix = $l.suffixFromNow; + } + } + + if(!this.settings.allowPast && distanceMillis >= 0) { + return this.settings.strings.inPast; + } + + var seconds = Math.abs(distanceMillis) / 1000; + var minutes = seconds / 60; + var hours = minutes / 60; + var days = hours / 24; + var years = days / 365; + + function substitute(stringOrFunction, number) { + var string = $.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis) : stringOrFunction; + var value = ($l.numbers && $l.numbers[number]) || number; + return string.replace(/%d/i, value); + } + + var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) || + seconds < 90 && substitute($l.minute, 1) || + minutes < 45 && substitute($l.minutes, Math.round(minutes)) || + minutes < 90 && substitute($l.hour, 1) || + hours < 24 && substitute($l.hours, Math.round(hours)) || + hours < 42 && substitute($l.day, 1) || + days < 30 && substitute($l.days, Math.round(days)) || + days < 45 && substitute($l.month, 1) || + days < 365 && substitute($l.months, Math.round(days / 30)) || + years < 1.5 && substitute($l.year, 1) || + substitute($l.years, Math.round(years)); + + var separator = $l.wordSeparator || ""; + if ($l.wordSeparator === undefined) { separator = " "; } + return $.trim([prefix, words, suffix].join(separator)); + }, + + parse: function(iso8601) { + var s = $.trim(iso8601); + s = s.replace(/\.\d+/,""); // remove milliseconds + s = s.replace(/-/,"/").replace(/-/,"/"); + s = s.replace(/T/," ").replace(/Z/," UTC"); + s = s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400 + s = s.replace(/([\+\-]\d\d)$/," $100"); // +09 -> +0900 + return new Date(s); + }, + datetime: function(elem) { + var iso8601 = $t.isTime(elem) ? $(elem).attr("datetime") : $(elem).attr("title"); + return $t.parse(iso8601); + }, + isTime: function(elem) { + // jQuery's `is()` doesn't play well with HTML5 in IE + return $(elem).get(0).tagName.toLowerCase() === "time"; // $(elem).is("time"); + } + }); + + // functions that can be called via $(el).timeago('action') + // init is default when no action is given + // functions are called with context of a single element + var functions = { + init: function(){ + var refresh_el = $.proxy(refresh, this); + refresh_el(); + var $s = $t.settings; + if ($s.refreshMillis > 0) { + this._timeagoInterval = setInterval(refresh_el, $s.refreshMillis); + } + }, + update: function(time){ + var parsedTime = $t.parse(time); + $(this).data('timeago', { datetime: parsedTime }); + if($t.settings.localeTitle) $(this).attr("title", parsedTime.toLocaleString()); + refresh.apply(this); + }, + updateFromDOM: function(){ + $(this).data('timeago', { datetime: $t.parse( $t.isTime(this) ? $(this).attr("datetime") : $(this).attr("title") ) }); + refresh.apply(this); + }, + dispose: function () { + if (this._timeagoInterval) { + window.clearInterval(this._timeagoInterval); + this._timeagoInterval = null; + } + } + }; + + $.fn.timeago = function(action, options) { + var fn = action ? functions[action] : functions.init; + if(!fn){ + throw new Error("Unknown function name '"+ action +"' for timeago"); + } + // each over objects here and call the requested function + this.each(function(){ + fn.call(this, options); + }); + return this; + }; + + function refresh() { + //check if it's still visible + if(!$.contains(document.documentElement,this)){ + //stop if it has been removed + $(this).timeago("dispose"); + return this; + } + + var data = prepareData(this); + var $s = $t.settings; + + if (!isNaN(data.datetime)) { + if ( $s.cutoff == 0 || Math.abs(distance(data.datetime)) < $s.cutoff) { + $(this).text(inWords(data.datetime)); + } + } + return this; + } + + function prepareData(element) { + element = $(element); + if (!element.data("timeago")) { + element.data("timeago", { datetime: $t.datetime(element) }); + var text = $.trim(element.text()); + if ($t.settings.localeTitle) { + element.attr("title", element.data('timeago').datetime.toLocaleString()); + } else if (text.length > 0 && !($t.isTime(element) && element.attr("title"))) { + element.attr("title", text); + } + } + return element.data("timeago"); + } + + function inWords(date) { + return $t.inWords(distance(date)); + } + + function distance(date) { + return (new Date().getTime() - date.getTime()); + } + + // fix for IE6 suckage + document.createElement("abbr"); + document.createElement("time"); +})); diff --git a/src/Website/Views/Download/Index.cshtml b/src/Website/Views/Download/Index.cshtml index a3cb09d12..51018c5de 100644 --- a/src/Website/Views/Download/Index.cshtml +++ b/src/Website/Views/Download/Index.cshtml @@ -9,6 +9,7 @@ {

@release.Title - @release.Version

+
Published
var files = Website.Services.FileService.FindFilesForRelease(release.Version); diff --git a/src/Website/Views/Shared/_Layout.cshtml b/src/Website/Views/Shared/_Layout.cshtml index 58497ea4d..d7373becc 100644 --- a/src/Website/Views/Shared/_Layout.cshtml +++ b/src/Website/Views/Shared/_Layout.cshtml @@ -8,6 +8,7 @@ + @@ -36,5 +37,12 @@ + + + \ No newline at end of file diff --git a/src/Website/Web.config b/src/Website/Web.config index 449a64236..f150b78f1 100644 --- a/src/Website/Web.config +++ b/src/Website/Web.config @@ -31,7 +31,7 @@ - + diff --git a/src/Website/Website.csproj b/src/Website/Website.csproj index d0872dadc..0a14a684e 100644 --- a/src/Website/Website.csproj +++ b/src/Website/Website.csproj @@ -293,6 +293,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -345,6 +348,7 @@ + diff --git a/src/Website/packages.config b/src/Website/packages.config index 4215a3659..92b6ef170 100644 --- a/src/Website/packages.config +++ b/src/Website/packages.config @@ -4,6 +4,7 @@ +