This repository has been archived by the owner on Feb 8, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
/
IncludeExtensions.cs
130 lines (113 loc) · 4.51 KB
/
IncludeExtensions.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
//
// Authors:
// Jonathan Pobst (monkey@jpobst.com)
//
// Copyright (C) 2009 Jonathan Pobst
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
using System;
using System.Security.Principal;
using System.Web.Mvc;
using MvcWrench.Models;
public static class IncludeExtensions
{
public static string IncludeCSS (this HtmlHelper html, string cssFile)
{
string cssPath = cssFile.Contains ("~") ? cssFile : ("~/Media/" + cssFile);
string url = html.ResolveUrl (cssPath);
return string.Format ("<link type=\"text/css\" rel=\"stylesheet\" href=\"{0}\" />\n", url);
}
public static string IncludeJS (this HtmlHelper html, string jsFile)
{
string jsPath = jsFile.Contains ("~") ? jsFile : ("~/Media/" + jsFile);
string url = html.ResolveUrl (jsPath);
return string.Format ("<script type=\"text/javascript\" src=\"{0}\"></script>\n", url);
}
public static string IncludeFavicon (this HtmlHelper html, string icon)
{
string iconPath = icon.Contains ("~") ? icon : ("~/" + icon);
string url = html.ResolveUrl (iconPath);
return string.Format ("<link rel=\"shortcut icon\" href=\"{0}\" />\n", url);
}
public static string IncludeScript (this HtmlHelper html, string script)
{
return string.Format ("<script type=\"text/javascript\">{0}</script>\n", script);
}
public static string ResolveUrl (this HtmlHelper html, string relativeUrl)
{
if (relativeUrl == null) { return null; }
if (!relativeUrl.StartsWith ("~")) { return relativeUrl; }
return (html.ViewContext.HttpContext.Request.ApplicationPath + relativeUrl.Substring (1)).Replace ("//", "/");
}
public static string GetImage (this HtmlHelper html, string image)
{
return (html.ResolveUrl (string.Format ("~/Media/{0}", image)));
}
public static string GetImage (this HtmlHelper html, bool conditional, string trueImage, string falseImage)
{
if (conditional)
return html.GetImage (trueImage);
else
return html.GetImage (falseImage);
}
public static string ToFriendlyAge (this DateTime dt)
{
TimeSpan diff = DateTime.Now - dt;
if (diff.TotalDays >= 365)
return Plural ("{0} {1}", "year", diff.Days / 365);
if (diff.TotalDays >= 60)
return Plural ("{0} {1}", "month", diff.Days / 30);
if (diff.TotalDays >= 14)
return Plural ("{0} {1}", "week", diff.Days / 7);
if (diff.TotalDays >= 1)
return Plural ("{0} {1}", "day", diff.Days);
if (diff.TotalHours >= 1)
return Plural ("{0} {1}", "hour", (int)diff.TotalHours);
if (diff.TotalMinutes >= 1)
return Plural ("{0} {1}", "minute", (int)diff.TotalMinutes);
return Plural ("{0} {1}", "second", diff.Seconds);
}
private static string Plural (string format, string singular, int value)
{
if (value == 1)
return string.Format (format, value, singular);
return string.Format (format + "s", value, singular);
}
public static string ToFriendlySpan (this TimeSpan diff)
{
if (diff.TotalDays >= 365)
return Plural ("{0} {1}", "year", diff.Days / 365);
if (diff.TotalDays >= 60)
return Plural ("{0} {1}", "month", diff.Days / 30);
if (diff.TotalDays >= 14)
return Plural ("{0} {1}", "week", diff.Days / 7);
if (diff.TotalDays >= 1)
return Plural ("{0} {1}", "day", diff.Days);
if (diff.TotalHours >= 1)
return Plural ("{0} {1}", "hour", (int)diff.TotalHours);
if (diff.TotalMinutes >= 1)
return Plural ("{0} {1}", "minute", (int)diff.TotalMinutes);
return Plural ("{0} {1}", "second", diff.Seconds);
}
public static string ToHoursMinSec (this TimeSpan diff)
{
return string.Format ("{0:00}:{1:00}:{2:00}", diff.Hours, diff.Minutes, diff.Seconds);
}
}