Bug fixes; Code style

This commit is contained in:
Thomas Hounsell 2016-11-05 01:36:36 +00:00
parent 24e12c8741
commit 7583968109
54 changed files with 540 additions and 1094 deletions

View File

@ -1,11 +1,11 @@
 // ReSharper disable InconsistentNaming
// ReSharper disable InconsistentNaming
namespace BuildFeed.Local
{
public class InvariantTerms
{
public const string SiteName = "BuildFeed";
public const string DeveloperName = "Thomas Hounsell";
public const string ProductName = "Windows NT";
public const string SiteName = "BuildFeed";
}
}

View File

@ -11,10 +11,12 @@
namespace BuildFeed.Model
{
[DataObject, BsonIgnoreExtraElements]
[DataObject]
[BsonIgnoreExtraElements]
public class Build
{
[Key, BsonId]
[Key]
[BsonId]
public Guid Id { get; set; }
public long? LegacyId { get; set; }
@ -66,7 +68,7 @@ public class Build
public string LabUrl { get; set; }
public bool IsLeaked => SourceType == TypeOfSource.PublicRelease || SourceType == TypeOfSource.InternalLeak || SourceType == TypeOfSource.UpdateGDR || SourceType == TypeOfSource.UpdateLDR;
public bool IsLeaked => (SourceType == TypeOfSource.PublicRelease) || (SourceType == TypeOfSource.InternalLeak) || (SourceType == TypeOfSource.UpdateGDR) || (SourceType == TypeOfSource.UpdateLDR);
public string FullBuildString
{
@ -154,8 +156,8 @@ public ProjectFamily Family
{
return ProjectFamily.Windows7;
}
if (MajorVersion == 6
&& Number >= 5000)
if ((MajorVersion == 6)
&& (Number >= 5000))
{
return ProjectFamily.WindowsVista;
}
@ -163,18 +165,18 @@ public ProjectFamily Family
{
return ProjectFamily.Longhorn;
}
if (MajorVersion == 5
&& Number >= 3000)
if ((MajorVersion == 5)
&& (Number >= 3000))
{
return ProjectFamily.Server2003;
}
if (MajorVersion == 5
&& Number >= 2205)
if ((MajorVersion == 5)
&& (Number >= 2205))
{
return ProjectFamily.WindowsXP;
}
if (MajorVersion == 5
&& MinorVersion == 50)
if ((MajorVersion == 5)
&& (MinorVersion == 50))
{
return ProjectFamily.Neptune;
}

View File

@ -16,10 +16,10 @@ public async Task<BuildVersion[]> SelectAllVersions(int limit = -1, int skip = 0
new BsonElement(nameof(BuildVersion.Major), $"${nameof(Build.MajorVersion)}"),
new BsonElement(nameof(BuildVersion.Minor), $"${nameof(Build.MinorVersion)}")
})).Sort(new BsonDocument
{
new BsonElement($"_id.{nameof(BuildVersion.Major)}", -1),
new BsonElement($"_id.{nameof(BuildVersion.Minor)}", -1)
}).Skip(skip);
{
new BsonElement($"_id.{nameof(BuildVersion.Major)}", -1),
new BsonElement($"_id.{nameof(BuildVersion.Minor)}", -1)
}).Skip(skip);
if (limit > 0)
{

View File

@ -53,8 +53,8 @@ public async Task<List<Build>> SelectYear(int year, int limit = -1, int skip = 0
public async Task<long> SelectYearCount(int year)
=>
await
_buildCollection.CountAsync(Builders<Build>.Filter.And(Builders<Build>.Filter.Gte(b => b.BuildTime, new DateTime(year, 1, 1, 0, 0, 0, DateTimeKind.Utc)),
Builders<Build>.Filter.Lte(b => b.BuildTime, new DateTime(year, 12, 31, 23, 59, 59, DateTimeKind.Utc))));
await
_buildCollection.CountAsync(Builders<Build>.Filter.And(Builders<Build>.Filter.Gte(b => b.BuildTime, new DateTime(year, 1, 1, 0, 0, 0, DateTimeKind.Utc)),
Builders<Build>.Filter.Lte(b => b.BuildTime, new DateTime(year, 12, 31, 23, 59, 59, DateTimeKind.Utc))));
}
}

View File

@ -232,7 +232,7 @@ public async Task Insert(Build item)
[DataObjectMethod(DataObjectMethodType.Insert, false)]
public async Task InsertAll(IEnumerable<Build> items)
{
List<Build> generatedItems = new List<Build>();
var generatedItems = new List<Build>();
foreach (Build item in items)
{
item.Id = Guid.NewGuid();

View File

@ -31,9 +31,9 @@ public class MetaItemModel
public class MetaItem
{
private const string META_COLLECTION_NAME = "metaitem";
private readonly BuildRepository _bModel;
private readonly IMongoCollection<MetaItemModel> _metaCollection;
private readonly BuildRepository _bModel;
public MetaItem()
{
@ -57,13 +57,22 @@ public MetaItem()
}
[DataObjectMethod(DataObjectMethodType.Select, false)]
public async Task<IEnumerable<MetaItemModel>> Select() { return await _metaCollection.Find(new BsonDocument()).ToListAsync(); }
public async Task<IEnumerable<MetaItemModel>> Select()
{
return await _metaCollection.Find(new BsonDocument()).ToListAsync();
}
[DataObjectMethod(DataObjectMethodType.Select, true)]
public async Task<IEnumerable<MetaItemModel>> SelectByType(MetaType type) { return await _metaCollection.Find(f => f.Id.Type == type).ToListAsync(); }
public async Task<IEnumerable<MetaItemModel>> SelectByType(MetaType type)
{
return await _metaCollection.Find(f => f.Id.Type == type).ToListAsync();
}
[DataObjectMethod(DataObjectMethodType.Select, false)]
public async Task<MetaItemModel> SelectById(MetaItemKey id) { return await _metaCollection.Find(f => f.Id.Type == id.Type && f.Id.Value == id.Value).SingleOrDefaultAsync(); }
public async Task<MetaItemModel> SelectById(MetaItemKey id)
{
return await _metaCollection.Find(f => (f.Id.Type == id.Type) && (f.Id.Value == id.Value)).SingleOrDefaultAsync();
}
[DataObjectMethod(DataObjectMethodType.Select, false)]
public async Task<IEnumerable<string>> SelectUnusedLabs()
@ -102,16 +111,28 @@ where usedYears.All(ul => ul.Id.Value != y.ToString())
}
[DataObjectMethod(DataObjectMethodType.Insert, true)]
public async Task Insert(MetaItemModel item) { await _metaCollection.InsertOneAsync(item); }
public async Task Insert(MetaItemModel item)
{
await _metaCollection.InsertOneAsync(item);
}
[DataObjectMethod(DataObjectMethodType.Update, true)]
public async Task Update(MetaItemModel item) { await _metaCollection.ReplaceOneAsync(f => f.Id.Type == item.Id.Type && f.Id.Value == item.Id.Value, item); }
public async Task Update(MetaItemModel item)
{
await _metaCollection.ReplaceOneAsync(f => (f.Id.Type == item.Id.Type) && (f.Id.Value == item.Id.Value), item);
}
[DataObjectMethod(DataObjectMethodType.Insert, false)]
public async Task InsertAll(IEnumerable<MetaItemModel> items) { await _metaCollection.InsertManyAsync(items); }
public async Task InsertAll(IEnumerable<MetaItemModel> items)
{
await _metaCollection.InsertManyAsync(items);
}
[DataObjectMethod(DataObjectMethodType.Delete, true)]
public async Task DeleteById(MetaItemKey id) { await _metaCollection.DeleteOneAsync(f => f.Id.Type == id.Type && f.Id.Value == id.Value); }
public async Task DeleteById(MetaItemKey id)
{
await _metaCollection.DeleteOneAsync(f => (f.Id.Type == id.Type) && (f.Id.Value == id.Value));
}
}
public class MetaItemKey
@ -119,7 +140,9 @@ public class MetaItemKey
public MetaType Type { get; set; }
public string Value { get; set; }
public MetaItemKey() { }
public MetaItemKey()
{
}
public MetaItemKey(string id)
{
@ -128,7 +151,10 @@ public MetaItemKey(string id)
Value = items[1];
}
public override string ToString() { return $"{Type}:{Value}"; }
public override string ToString()
{
return $"{Type}:{Value}";
}
}
public enum MetaType

View File

@ -3,10 +3,10 @@
@using BuildFeed.Code
@helper PaginationBlock(int currentPage, int totalPages, string view, RouteValueDictionary rd)
{
string multiView = view + "Page";
string multiView = view + "Page";
if (totalPages > 1)
{
if (totalPages > 1)
{
<div class="text-center">
<ul class="pagination">
@if (currentPage == 2)
@ -69,7 +69,10 @@ if (totalPages > 1)
["page"] = i
};
<li @(i == currentPage ? "class=active" : "")>@MvcIntrinsics.Html.ActionLink(i.ToString(), multiView, rvd)</li>
<li @(i == currentPage
? "class=active"
: "")>
@MvcIntrinsics.Html.ActionLink(i.ToString(), multiView, rvd)</li>
}
@ -99,5 +102,5 @@ if (totalPages > 1)
}
</ul>
</div>
}
}
}

View File

@ -4,6 +4,9 @@ namespace BuildFeed
{
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); }
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
}
}

View File

@ -9,7 +9,10 @@ public class baseController : BaseController
{
[Authorize(Roles = "Administrators")]
// GET: admin/base
public ActionResult index() { return View(); }
public ActionResult index()
{
return View();
}
[Authorize(Users = "hounsell")]
public ActionResult setup()
@ -27,6 +30,9 @@ public ActionResult setup()
}
[Authorize(Users = "hounsell")]
public ActionResult exception() { throw new Exception("This is a test exception"); }
public ActionResult exception()
{
throw new Exception("This is a test exception");
}
}
}

View File

@ -12,7 +12,10 @@ public class metaController : BaseController
{
private readonly MetaItem _mModel;
public metaController() { _mModel = new MetaItem(); }
public metaController()
{
_mModel = new MetaItem();
}
// GET: admin/meta
public async Task<ActionResult> index()

View File

@ -84,7 +84,8 @@
}
}
$(function() {
$(function()
{
var btnsGrps = $.trumbowyg.btnsGrps;
$("#@Html.IdFor(model => model.PageContent)")
@ -101,7 +102,8 @@
});
$("#@Html.IdFor(model => model.MetaDescription)")
.keyup(function() {
.keyup(function()
{
updateMetaCount();
});

View File

@ -61,46 +61,42 @@
: mu.LastLockoutDate.Humanize())
</td>
<td class="text-right">
@(
mu.IsApproved
? Html.ActionLink("Unapprove", "unapprove", new
{
id = mu.ProviderUserKey
}, new
{
@class = "button delete-button",
style = "width:70px;"
})
: Html.ActionLink("Approve", "approve", new
{
id = mu.ProviderUserKey
}, new
{
@class = "button add-button",
style = "width:70px;"
})
)
@(mu.IsApproved
? Html.ActionLink("Unapprove", "unapprove", new
{
id = mu.ProviderUserKey
}, new
{
@class = "button delete-button",
style = "width:70px;"
})
: Html.ActionLink("Approve", "approve", new
{
id = mu.ProviderUserKey
}, new
{
@class = "button add-button",
style = "width:70px;"
}))
</td>
<td class="text-right">
@(
!mu.IsLockedOut
? Html.ActionLink("Lock", "lock", new
{
id = mu.ProviderUserKey
}, new
{
@class = "button delete-button",
style = "width:70px;"
})
: Html.ActionLink("Unlock", "unlock", new
{
id = mu.ProviderUserKey
}, new
{
@class = "button add-button",
style = "width:70px;"
})
)
@(!mu.IsLockedOut
? Html.ActionLink("Lock", "lock", new
{
id = mu.ProviderUserKey
}, new
{
@class = "button delete-button",
style = "width:70px;"
})
: Html.ActionLink("Unlock", "unlock", new
{
id = mu.ProviderUserKey
}, new
{
@class = "button add-button",
style = "width:70px;"
}))
</td>
</tr>
}

View File

@ -27,7 +27,7 @@
<system.webServer>
<handlers>
<remove name="BlockViewHandler"/>
<remove name="BlockViewHandler" />
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>

View File

@ -1,4 +1,5 @@
<?xml version="1.0"?>
<users>
<user>77FAD24B9B2579631630796D246267C3</user>
<user>77FAD24B9B2579631630796D246267C3</user>
</users>

View File

@ -46,6 +46,19 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<TypeScriptTarget>ES6</TypeScriptTarget>
<TypeScriptJSXEmit>None</TypeScriptJSXEmit>
<TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
<TypeScriptNoImplicitAny>False</TypeScriptNoImplicitAny>
<TypeScriptModuleKind>ES6</TypeScriptModuleKind>
<TypeScriptRemoveComments>False</TypeScriptRemoveComments>
<TypeScriptOutFile />
<TypeScriptOutDir />
<TypeScriptGeneratesDeclarations>False</TypeScriptGeneratesDeclarations>
<TypeScriptNoEmitOnError>True</TypeScriptNoEmitOnError>
<TypeScriptSourceMap>True</TypeScriptSourceMap>
<TypeScriptMapRoot />
<TypeScriptSourceRoot />
</PropertyGroup>
<ItemGroup>
<Reference Include="HtmlAgilityPack, Version=1.4.9.5, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a, processorArchitecture=MSIL">
@ -206,6 +219,7 @@
<ItemGroup>
<Content Include="BingSiteAuth.xml" />
<Content Include="browserconfig.xml" />
<Content Include="gulpfile.js" />
<Content Include="res\card\Longhorn.png" />
<Content Include="res\card\Redstone2.png" />
<Content Include="res\card\Redstone.png" />
@ -213,32 +227,8 @@
<Content Include="res\card\Threshold.png" />
<Content Include="res\card\Windows7.png" />
<Content Include="res\card\WindowsVista.png" />
<Content Include="res\css\dark.css">
<DependentUpon>dark.scss</DependentUpon>
</Content>
<Content Include="res\css\dark.min.css">
<DependentUpon>dark.css</DependentUpon>
</Content>
<Content Include="res\css\default.css">
<DependentUpon>default.scss</DependentUpon>
</Content>
<Content Include="res\css\default.min.css">
<DependentUpon>default.css</DependentUpon>
</Content>
<Content Include="content\icons-2x.png" />
<Content Include="content\icons.png" />
<Content Include="res\css\light.css">
<DependentUpon>light.scss</DependentUpon>
</Content>
<Content Include="res\css\light.min.css">
<DependentUpon>light.css</DependentUpon>
</Content>
<Content Include="res\css\rtl.css">
<DependentUpon>rtl.scss</DependentUpon>
</Content>
<Content Include="res\css\rtl.min.css">
<DependentUpon>rtl.css</DependentUpon>
</Content>
<Content Include="content\tile\wide.png" />
<Content Include="content\tile\large.png" />
<Content Include="content\tile\square.png" />
@ -257,16 +247,37 @@
<Content Include="Areas\admin\Views\users\admins.cshtml" />
<Content Include="Areas\admin\Views\meta\index.cshtml" />
<Content Include="Areas\admin\Views\meta\create.cshtml" />
<Content Include="res\css\dark.css">
<DependentUpon>dark.scss</DependentUpon>
</Content>
<Content Include="res\css\dark.css.map">
<DependentUpon>dark.css</DependentUpon>
</Content>
<Content Include="res\css\default.css">
<DependentUpon>default.scss</DependentUpon>
</Content>
<Content Include="res\css\default.css.map">
<DependentUpon>default.css</DependentUpon>
</Content>
<Content Include="res\css\light.css">
<DependentUpon>light.scss</DependentUpon>
</Content>
<Content Include="res\css\light.css.map">
<DependentUpon>light.css</DependentUpon>
</Content>
<Content Include="res\css\rtl.css">
<DependentUpon>rtl.scss</DependentUpon>
</Content>
<Content Include="res\css\rtl.css.map">
<DependentUpon>rtl.css</DependentUpon>
</Content>
<Content Include="robots.txt" />
<Content Include="App_Code\PaginationHelpers.cshtml" />
<Content Include="res\css\default.scss" />
<None Include="bundleconfig.json" />
<None Include="compilerconfig.json" />
<None Include="compilerconfig.json.defaults">
<DependentUpon>compilerconfig.json</DependentUpon>
</None>
<Content Include="res\css\rtl.scss" />
<Content Include="res\css\dark.scss" />
<Content Include="package.json" />
<None Include="Properties\PublishProfiles\Milestone 1 [DEV].pubxml" />
<Content Include="res\ts\bfs.js">
<DependentUpon>bfs.ts</DependentUpon>
@ -445,12 +456,11 @@
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
<TypeScriptTarget>ES5</TypeScriptTarget>
<TypeScriptTarget>ES6</TypeScriptTarget>
<TypeScriptJSXEmit>None</TypeScriptJSXEmit>
<TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
<TypeScriptNoImplicitAny>False</TypeScriptNoImplicitAny>
<TypeScriptModuleKind>
</TypeScriptModuleKind>
<TypeScriptModuleKind>ES6</TypeScriptModuleKind>
<TypeScriptRemoveComments>True</TypeScriptRemoveComments>
<TypeScriptOutFile />
<TypeScriptOutDir />

View File

@ -7,6 +7,9 @@ public class CustomContentTypeAttribute : ActionFilterAttribute
{
public string ContentType { get; set; }
public override void OnResultExecuted(ResultExecutedContext filterContext) { filterContext.HttpContext.Response.ContentType = ContentType; }
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
filterContext.HttpContext.Response.ContentType = ContentType;
}
}
}

View File

@ -6,7 +6,10 @@ namespace BuildFeed.Code.Options
{
public class Locale
{
public static readonly Locale[] AvailableLocales = {
private const string LANG_COOKIE_NAME = "bf_lang";
public static readonly Locale[] AvailableLocales =
{
new Locale("ar"),
//new Locale("bn"),
new Locale("cs"),
@ -41,8 +44,6 @@ public class Locale
new Locale("zh-hant")
};
private const string LANG_COOKIE_NAME = "bf_lang";
public string DisplayName => Info.NativeName;
public CultureInfo Info { get; set; }
@ -65,7 +66,7 @@ public static CultureInfo DetectCulture(HttpContextBase context)
CultureInfo ci = (CultureInfo)CultureInfo.GetCultureInfo(langCookie).Clone();
// Get Gregorian Calendar in locale if available
Calendar gc = ci.OptionalCalendars.FirstOrDefault(c => c is GregorianCalendar && ((GregorianCalendar)c).CalendarType == GregorianCalendarTypes.Localized);
Calendar gc = ci.OptionalCalendars.FirstOrDefault(c => c is GregorianCalendar && (((GregorianCalendar)c).CalendarType == GregorianCalendarTypes.Localized));
if (gc != null)
{
ci.DateTimeFormat.Calendar = gc;
@ -74,7 +75,9 @@ public static CultureInfo DetectCulture(HttpContextBase context)
return ci;
}
catch (CultureNotFoundException) { }
catch (CultureNotFoundException)
{
}
}
return CultureInfo.CurrentCulture;

View File

@ -16,10 +16,13 @@ public class Theme
private readonly SiteTheme _siteTheme;
public string CookieValue => _siteTheme.ToString();
public string CssPath => $"~/res/css/{_siteTheme.ToString().ToLower()}.min.css";
public string CssPath => $"~/res/css/{_siteTheme.ToString().ToLower()}.css";
public string DisplayName => MvcExtensions.GetDisplayTextForEnum(_siteTheme);
public Theme(SiteTheme st) { _siteTheme = st; }
public Theme(SiteTheme st)
{
_siteTheme = st;
}
public static SiteTheme DetectTheme(HttpContextBase context)
{

View File

@ -15,11 +15,11 @@ public override void OnResultExecuted(ResultExecutedContext filterContext)
bool isRtl = CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft;
Theme theme = new Theme(Theme.DetectTheme(filterContext.HttpContext));
filterContext.HttpContext.Response.PushPromise("/res/css/default.min.css");
filterContext.HttpContext.Response.PushPromise("/res/css/default.css");
filterContext.HttpContext.Response.PushPromise(VirtualPathUtility.ToAbsolute(theme.CssPath));
if (isRtl)
{
filterContext.HttpContext.Response.PushPromise("/res/css/rtl.min.css");
filterContext.HttpContext.Response.PushPromise("/res/css/rtl.css");
}
filterContext.HttpContext.Response.PushPromise("/res/ts/bfs.min.js");
}

View File

@ -1,6 +1,4 @@
using System;
using System.Globalization;
using System.Linq;
using System.Globalization;
using System.Web.Mvc;
using System.Web.Routing;
using BuildFeed.Code.Options;

View File

@ -6,8 +6,8 @@
using System.Web.Security;
using BuildFeed.Code;
using BuildFeed.Local;
using BuildFeed.Model.Api;
using BuildFeed.Model;
using BuildFeed.Model.Api;
using BuildFeed.Model.View;
namespace BuildFeed.Controllers
@ -16,7 +16,10 @@ public class ApiController : System.Web.Http.ApiController
{
private readonly BuildRepository _bModel;
public ApiController() { _bModel = new BuildRepository(); }
public ApiController()
{
_bModel = new BuildRepository();
}
public async Task<Build[]> GetBuilds(int limit = 20, int skip = 0)
{
@ -51,7 +54,7 @@ public async Task<Build[]> GetBuildsByLab(string lab, int limit = 20, int skip =
public async Task<IEnumerable<string>> GetWin10Labs()
{
List<string> labs = new List<string>();
var labs = new List<string>();
labs.AddRange(await _bModel.SelectLabsForVersion(6, 4));
labs.AddRange(await _bModel.SelectLabsForVersion(10, 0));
@ -94,7 +97,7 @@ public async Task<IEnumerable<SearchResult>> GetSearchResult(string id)
}
const int maxResults = 16;
List<SearchResult> results = new List<SearchResult>();
var results = new List<SearchResult>();
results.AddRange(from s in (from c in Enum.GetValues(typeof(TypeOfSource)).Cast<TypeOfSource>()
select new
@ -118,7 +121,10 @@ orderby s.Text.ToLower().IndexOf(id.ToLower(), StringComparison.Ordinal) ascendi
Group = VariantTerms.Search_Source
});
if (results.Count >= maxResults) return results.Take(maxResults);
if (results.Count >= maxResults)
{
return results.Take(maxResults);
}
results.AddRange(from v in await _bModel.SelectAllVersions()
where $"{v.Major}.{v.Minor}".StartsWith(id)
@ -138,7 +144,10 @@ orderby s.Text.ToLower().IndexOf(id.ToLower(), StringComparison.Ordinal) ascendi
Group = VariantTerms.Search_Version
});
if (results.Count >= maxResults) return results.Take(maxResults);
if (results.Count >= maxResults)
{
return results.Take(maxResults);
}
results.AddRange(from y in await _bModel.SelectAllYears()
where y.ToString().Contains(id)
@ -157,7 +166,10 @@ orderby y descending
Group = VariantTerms.Search_Year
});
if (results.Count >= maxResults) return results.Take(maxResults);
if (results.Count >= maxResults)
{
return results.Take(maxResults);
}
results.AddRange(from l in await _bModel.SearchLabs(id)
select new SearchResult
@ -174,7 +186,10 @@ orderby y descending
Group = VariantTerms.Search_Lab
});
if (results.Count >= maxResults) return results.Take(maxResults);
if (results.Count >= maxResults)
{
return results.Take(maxResults);
}
results.AddRange(from b in await _bModel.Select()
where b.FullBuildString.ToLower().Contains(id.ToLower())

View File

@ -29,7 +29,8 @@ public FrontController()
[Route("", Order = 1)]
#if !DEBUG
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName;lang;theme"), OutputCachePush(Order = 2)]
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName;lang;theme")]
[OutputCachePush(Order = 2)]
#endif
public async Task<ActionResult> Index()
{
@ -39,7 +40,8 @@ public async Task<ActionResult> Index()
[Route("page-{page:int:min(1)}/", Order = 0)]
#if !DEBUG
[OutputCache(Duration = 600, VaryByParam = "page", VaryByCustom = "userName;lang;theme"), OutputCachePush(Order = 2)]
[OutputCache(Duration = 600, VaryByParam = "page", VaryByCustom = "userName;lang;theme")]
[OutputCachePush(Order = 2)]
#endif
public async Task<ActionResult> IndexPage(int page)
{
@ -48,15 +50,20 @@ public async Task<ActionResult> IndexPage(int page)
ViewBag.PageNumber = page;
ViewBag.PageCount = Math.Ceiling(Convert.ToDouble(await _bModel.SelectAllGroupsCount()) / Convert.ToDouble(PAGE_SIZE));
if (ViewBag.PageNumber > ViewBag.PageCount) return new HttpNotFoundResult();
if (ViewBag.PageNumber > ViewBag.PageCount)
{
return new HttpNotFoundResult();
}
return View("Pages", buildGroups);
}
[Route("group/{major}.{minor}.{number}.{revision}/", Order = 1), Route("group/{major}.{minor}.{number}/", Order = 5)]
[Route("group/{major}.{minor}.{number}.{revision}/", Order = 1)]
[Route("group/{major}.{minor}.{number}/", Order = 5)]
// for when there is no revision
#if !DEBUG
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName;lang;theme"), OutputCachePush(Order = 2)]
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName;lang;theme")]
[OutputCachePush(Order = 2)]
#endif
public async Task<ActionResult> ViewGroup(uint major, uint minor, uint number, uint? revision = null)
{
@ -81,12 +88,17 @@ public async Task<ActionResult> ViewGroup(uint major, uint minor, uint number, u
[Route("build/{id:guid}/", Name = "Build")]
#if !DEBUG
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName;lang;theme"), OutputCachePush(Order = 2)]
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName;lang;theme")]
[OutputCachePush(Order = 2)]
#endif
public async Task<ActionResult> ViewBuild(Guid id)
{
Build b = await _bModel.SelectById(id);
if (b == null) return new HttpNotFoundResult();
if (b == null)
{
return new HttpNotFoundResult();
}
return View(b);
}
@ -94,7 +106,11 @@ public async Task<ActionResult> ViewBuild(Guid id)
public async Task<ActionResult> ViewBuild(long id)
{
Build b = await _bModel.SelectByLegacyId(id);
if (b == null) return new HttpNotFoundResult();
if (b == null)
{
return new HttpNotFoundResult();
}
return RedirectToAction(nameof(ViewBuild),
new
{
@ -104,13 +120,16 @@ public async Task<ActionResult> ViewBuild(long id)
[Route("twitter/{id:guid}/", Name = "Twitter")]
#if !DEBUG
[OutputCache(Duration = 600, VaryByParam = "none")]
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName;lang;theme")]
[CustomContentType(ContentType = "image/png", Order = 2)]
#endif
public async Task<ActionResult> TwitterCard(Guid id)
{
Build b = await _bModel.SelectById(id);
if (b == null) return new HttpNotFoundResult();
if (b == null)
{
return new HttpNotFoundResult();
}
string path = Path.Combine(Server.MapPath("~/res/card/"), $"{b.Family}.png");
bool backExists = System.IO.File.Exists(path);
@ -128,7 +147,10 @@ public async Task<ActionResult> TwitterCard(Guid id)
gr.SmoothingMode = SmoothingMode.HighQuality;
gr.PixelOffsetMode = PixelOffsetMode.HighQuality;
if (!backExists) gr.FillRectangle(new SolidBrush(Color.FromArgb(0x24, 0x24, 0x23)), 0, 0, 1120, 600);
if (!backExists)
{
gr.FillRectangle(new SolidBrush(Color.FromArgb(0x24, 0x24, 0x23)), 0, 0, 1120, 600);
}
int left = 40;
using (GraphicsPath gp = new GraphicsPath())
@ -153,7 +175,10 @@ public async Task<ActionResult> TwitterCard(Guid id)
left = Convert.ToInt32(bounds.Width);
left += 44;
if (b.Revision.HasValue) gp.AddString($".{b.Revision}", new FontFamily("Segoe UI Light"), 0, 160, new Point(left, 220), StringFormat.GenericTypographic);
if (b.Revision.HasValue)
{
gp.AddString($".{b.Revision}", new FontFamily("Segoe UI Light"), 0, 160, new Point(left, 220), StringFormat.GenericTypographic);
}
gr.DrawPath(new Pen(new SolidBrush(Color.FromArgb(0x24, 0x24, 0x23)), 4), gp);
gr.FillPath(Brushes.White, gp);
@ -187,7 +212,11 @@ public async Task<ActionResult> TwitterCard(Guid id)
public async Task<ActionResult> TwitterCard(long id)
{
Build b = await _bModel.SelectByLegacyId(id);
if (b == null) return new HttpNotFoundResult();
if (b == null)
{
return new HttpNotFoundResult();
}
return RedirectToAction(nameof(TwitterCard),
new
{
@ -197,7 +226,8 @@ public async Task<ActionResult> TwitterCard(long id)
[Route("lab/{lab}/", Order = 1, Name = "Lab Root")]
#if !DEBUG
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName;lang;theme"), OutputCachePush(Order = 2)]
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName;lang;theme")]
[OutputCachePush(Order = 2)]
#endif
public async Task<ActionResult> ViewLab(string lab)
{
@ -206,7 +236,8 @@ public async Task<ActionResult> ViewLab(string lab)
[Route("lab/{lab}/page-{page:int:min(2)}/", Order = 0)]
#if !DEBUG
[OutputCache(Duration = 600, VaryByParam = "page", VaryByCustom = "userName;lang;theme"), OutputCachePush(Order = 2)]
[OutputCache(Duration = 600, VaryByParam = "page", VaryByCustom = "userName;lang;theme")]
[OutputCachePush(Order = 2)]
#endif
public async Task<ActionResult> ViewLabPage(string lab, int page)
{
@ -222,14 +253,18 @@ public async Task<ActionResult> ViewLabPage(string lab, int page)
ViewBag.PageNumber = page;
ViewBag.PageCount = Math.Ceiling(Convert.ToDouble(await _bModel.SelectLabCount(lab)) / Convert.ToDouble(PAGE_SIZE));
if (ViewBag.PageNumber > ViewBag.PageCount) return new HttpNotFoundResult();
if (ViewBag.PageNumber > ViewBag.PageCount)
{
return new HttpNotFoundResult();
}
return View("viewLab", builds);
}
[Route("source/{source}/", Order = 1, Name = "Source Root")]
#if !DEBUG
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName;lang;theme"), OutputCachePush(Order = 2)]
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName;lang;theme")]
[OutputCachePush(Order = 2)]
#endif
public async Task<ActionResult> ViewSource(TypeOfSource source)
{
@ -238,7 +273,8 @@ public async Task<ActionResult> ViewSource(TypeOfSource source)
[Route("source/{source}/page-{page:int:min(2)}/", Order = 0)]
#if !DEBUG
[OutputCache(Duration = 600, VaryByParam = "page", VaryByCustom = "userName;lang;theme"), OutputCachePush(Order = 2)]
[OutputCache(Duration = 600, VaryByParam = "page", VaryByCustom = "userName;lang;theme")]
[OutputCachePush(Order = 2)]
#endif
public async Task<ActionResult> ViewSourcePage(TypeOfSource source, int page)
{
@ -254,14 +290,18 @@ public async Task<ActionResult> ViewSourcePage(TypeOfSource source, int page)
ViewBag.PageNumber = page;
ViewBag.PageCount = Math.Ceiling(Convert.ToDouble(await _bModel.SelectSourceCount(source)) / Convert.ToDouble(PAGE_SIZE));
if (ViewBag.PageNumber > ViewBag.PageCount) return new HttpNotFoundResult();
if (ViewBag.PageNumber > ViewBag.PageCount)
{
return new HttpNotFoundResult();
}
return View("viewSource", builds);
}
[Route("year/{year}/", Order = 1, Name = "Year Root")]
#if !DEBUG
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName;lang;theme"), OutputCachePush(Order = 2)]
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName;lang;theme")]
[OutputCachePush(Order = 2)]
#endif
public async Task<ActionResult> ViewYear(int year)
{
@ -270,7 +310,8 @@ public async Task<ActionResult> ViewYear(int year)
[Route("year/{year}/page-{page:int:min(2)}/", Order = 0)]
#if !DEBUG
[OutputCache(Duration = 600, VaryByParam = "page", VaryByCustom = "userName;lang;theme"), OutputCachePush(Order = 2)]
[OutputCache(Duration = 600, VaryByParam = "page", VaryByCustom = "userName;lang;theme")]
[OutputCachePush(Order = 2)]
#endif
public async Task<ActionResult> ViewYearPage(int year, int page)
{
@ -286,14 +327,18 @@ public async Task<ActionResult> ViewYearPage(int year, int page)
ViewBag.PageNumber = page;
ViewBag.PageCount = Math.Ceiling(await _bModel.SelectYearCount(year) / Convert.ToDouble(PAGE_SIZE));
if (ViewBag.PageNumber > ViewBag.PageCount) return new HttpNotFoundResult();
if (ViewBag.PageNumber > ViewBag.PageCount)
{
return new HttpNotFoundResult();
}
return View("viewYear", builds);
}
[Route("version/{major}.{minor}/", Order = 1, Name = "Version Root")]
#if !DEBUG
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName;lang;theme"), OutputCachePush(Order = 2)]
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName;lang;theme")]
[OutputCachePush(Order = 2)]
#endif
public async Task<ActionResult> ViewVersion(uint major, uint minor)
{
@ -302,7 +347,8 @@ public async Task<ActionResult> ViewVersion(uint major, uint minor)
[Route("version/{major}.{minor}/page-{page:int:min(2)}/", Order = 0)]
#if !DEBUG
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName;lang;theme"), OutputCachePush(Order = 2)]
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName;lang;theme")]
[OutputCachePush(Order = 2)]
#endif
public async Task<ActionResult> ViewVersionPage(uint major, uint minor, int page)
{
@ -319,12 +365,16 @@ public async Task<ActionResult> ViewVersionPage(uint major, uint minor, int page
ViewBag.PageNumber = page;
ViewBag.PageCount = Math.Ceiling(Convert.ToDouble(await _bModel.SelectVersionCount(major, minor)) / Convert.ToDouble(PAGE_SIZE));
if (ViewBag.PageNumber > ViewBag.PageCount) return new HttpNotFoundResult();
if (ViewBag.PageNumber > ViewBag.PageCount)
{
return new HttpNotFoundResult();
}
return View("viewVersion", builds);
}
[Route("add/"), Authorize]
[Route("add/")]
[Authorize]
public ActionResult AddBuild()
{
Build b = new Build
@ -334,7 +384,9 @@ public ActionResult AddBuild()
return View("EditBuild", b);
}
[Route("add/"), Authorize, HttpPost]
[Route("add/")]
[Authorize]
[HttpPost]
public async Task<ActionResult> AddBuild(Build build)
{
if (ModelState.IsValid)
@ -343,8 +395,16 @@ public async Task<ActionResult> AddBuild(Build build)
{
build.Added = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Utc);
build.Modified = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Utc);
if (build.BuildTime.HasValue) build.BuildTime = DateTime.SpecifyKind(build.BuildTime.Value, DateTimeKind.Utc);
if (build.LeakDate.HasValue) build.LeakDate = DateTime.SpecifyKind(build.LeakDate.Value, DateTimeKind.Utc);
if (build.BuildTime.HasValue)
{
build.BuildTime = DateTime.SpecifyKind(build.BuildTime.Value, DateTimeKind.Utc);
}
if (build.LeakDate.HasValue)
{
build.LeakDate = DateTime.SpecifyKind(build.LeakDate.Value, DateTimeKind.Utc);
}
await _bModel.Insert(build);
}
catch
@ -360,22 +420,33 @@ public async Task<ActionResult> AddBuild(Build build)
return View("EditBuild", build);
}
[Route("edit/{id}/"), Authorize]
[Route("edit/{id}/")]
[Authorize]
public async Task<ActionResult> EditBuild(Guid id)
{
Build b = await _bModel.SelectById(id);
return View(b);
}
[Route("edit/{id}/"), Authorize, HttpPost]
[Route("edit/{id}/")]
[Authorize]
[HttpPost]
public async Task<ActionResult> EditBuild(Guid id, Build build)
{
if (ModelState.IsValid)
{
try
{
if (build.BuildTime.HasValue) build.BuildTime = DateTime.SpecifyKind(build.BuildTime.Value, DateTimeKind.Utc);
if (build.LeakDate.HasValue) build.LeakDate = DateTime.SpecifyKind(build.LeakDate.Value, DateTimeKind.Utc);
if (build.BuildTime.HasValue)
{
build.BuildTime = DateTime.SpecifyKind(build.BuildTime.Value, DateTimeKind.Utc);
}
if (build.LeakDate.HasValue)
{
build.LeakDate = DateTime.SpecifyKind(build.LeakDate.Value, DateTimeKind.Utc);
}
await _bModel.Update(build);
}
catch
@ -392,7 +463,8 @@ public async Task<ActionResult> EditBuild(Guid id, Build build)
return View(build);
}
[Route("delete/{id}/"), Authorize(Roles = "Administrators")]
[Route("delete/{id}/")]
[Authorize(Roles = "Administrators")]
public async Task<ActionResult> DeleteBuild(Guid id)
{
await _bModel.DeleteById(id);

View File

@ -14,7 +14,10 @@ public class RssController : BaseController
private const int RSS_SIZE = 25;
private readonly BuildRepository _bModel;
public RssController() { _bModel = new BuildRepository(); }
public RssController()
{
_bModel = new BuildRepository();
}
[Route("rss/compiled")]
public async Task<ActionResult> Index()
@ -31,7 +34,8 @@ public async Task<ActionResult> Index()
Title = build.AlternateBuildString,
Link = new Uri($"{Request.Url.Scheme}://{Request.Url.Authority}{Url.Action(nameof(FrontController.ViewBuild), new { controller = "Front", id = build.Id })}"),
Permalink = $"{Request.Url.Scheme}://{Request.Url.Authority}{Url.Action(nameof(FrontController.ViewBuild), new { controller = "Front", id = build.Id })}",
Categories = {
Categories =
{
build.Family.ToString()
},
PublishDate = DateTime.SpecifyKind(build.BuildTime.GetValueOrDefault(), DateTimeKind.Utc)
@ -61,7 +65,8 @@ public async Task<ActionResult> Added()
Title = build.AlternateBuildString,
Link = new Uri($"{Request.Url.Scheme}://{Request.Url.Authority}{Url.Action(nameof(FrontController.ViewBuild), new { controller = "Front", id = build.Id })}"),
Permalink = $"{Request.Url.Scheme}://{Request.Url.Authority}{Url.Action(nameof(FrontController.ViewBuild), new { controller = "Front", id = build.Id })}",
Categories = {
Categories =
{
build.Family.ToString()
},
PublishDate = DateTime.SpecifyKind(build.Added, DateTimeKind.Utc)
@ -91,7 +96,8 @@ public async Task<ActionResult> Leaked()
Title = build.AlternateBuildString,
Link = new Uri($"{Request.Url.Scheme}://{Request.Url.Authority}{Url.Action(nameof(FrontController.ViewBuild), new { controller = "Front", id = build.Id })}"),
Permalink = $"{Request.Url.Scheme}://{Request.Url.Authority}{Url.Action(nameof(FrontController.ViewBuild), new { controller = "Front", id = build.Id })}",
Categories = {
Categories =
{
build.Family.ToString()
},
PublishDate = DateTime.SpecifyKind(build.LeakDate.GetValueOrDefault(), DateTimeKind.Utc)
@ -121,7 +127,8 @@ public async Task<ActionResult> Version()
Title = build.AlternateBuildString,
Link = new Uri($"{Request.Url.Scheme}://{Request.Url.Authority}{Url.Action(nameof(FrontController.ViewBuild), new { controller = "Front", id = build.Id })}"),
Permalink = $"{Request.Url.Scheme}://{Request.Url.Authority}{Url.Action(nameof(FrontController.ViewBuild), new { controller = "Front", id = build.Id })}",
Categories = {
Categories =
{
build.Family.ToString()
}
}).ToList()
@ -150,7 +157,8 @@ public async Task<ActionResult> Lab(string lab)
Title = build.AlternateBuildString,
Link = new Uri($"{Request.Url.Scheme}://{Request.Url.Authority}{Url.Action(nameof(FrontController.ViewBuild), new { controller = "Front", id = build.Id })}"),
Permalink = $"{Request.Url.Scheme}://{Request.Url.Authority}{Url.Action(nameof(FrontController.ViewBuild), new { controller = "Front", id = build.Id })}",
Categories = {
Categories =
{
build.Family.ToString()
}
}).ToList()

View File

@ -18,12 +18,16 @@ public class SupportController : BaseController
{
private readonly BuildRepository _bModel;
public SupportController() { _bModel = new BuildRepository(); }
public SupportController()
{
_bModel = new BuildRepository();
}
[Route("login/")]
public ActionResult Login() => View();
[HttpPost, Route("login/")]
[HttpPost]
[Route("login/")]
public ActionResult Login(LoginUser ru)
{
if (ModelState.IsValid)
@ -57,10 +61,13 @@ public ActionResult Login(LoginUser ru)
return View(ru);
}
[Authorize, Route("password/")]
[Authorize]
[Route("password/")]
public ActionResult Password() => View();
[HttpPost, Authorize, Route("password/")]
[HttpPost]
[Authorize]
[Route("password/")]
public ActionResult Password(ChangePassword cp)
{
if (ModelState.IsValid)
@ -92,7 +99,8 @@ public ActionResult Logout()
[Route("register/")]
public ActionResult Register() => View();
[HttpPost, Route("register/")]
[HttpPost]
[Route("register/")]
public ActionResult Register(RegistrationUser ru)
{
if (ModelState.IsValid)
@ -134,12 +142,12 @@ public async Task<ActionResult> Rss()
[Route("sitemap/")]
#if !DEBUG
// [OutputCache(Duration = 3600, VaryByParam = "none", VaryByCustom = "userName")]
[OutputCache(Duration = 3600, VaryByParam = "none", VaryByCustom = "userName;lang;theme")]
#endif
public async Task<ActionResult> Sitemap()
{
List<Build> builds = await _bModel.SelectBuildsByOrder();
Dictionary<string, SitemapPagedAction[]> actions = new Dictionary<string, SitemapPagedAction[]>
var actions = new Dictionary<string, SitemapPagedAction[]>
{
{
"Pages", new[]
@ -278,12 +286,12 @@ into lab
[Route("xml-sitemap/")]
#if !DEBUG
// [OutputCache(Duration = 3600, VaryByParam = "none", VaryByCustom = "userName")]
[OutputCache(Duration = 3600, VaryByParam = "none", VaryByCustom = "userName;lang;theme")]
#endif
public async Task<ActionResult> XmlSitemap()
{
XNamespace xn = XNamespace.Get("http://www.sitemaps.org/schemas/sitemap/0.9");
List<XElement> xlist = new List<XElement>();
var xlist = new List<XElement>();
// home page
XElement home = new XElement(xn + "url");

View File

@ -25,7 +25,7 @@
</appSettings>
<system.webServer>
<handlers>
<remove name="BlockViewHandler"/>
<remove name="BlockViewHandler" />
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>

View File

@ -4,11 +4,11 @@
@{
bool isRtl = CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft;
Response.PushPromise("/res/css/default.min.css");
Response.PushPromise("/res/css/default.css");
Response.PushPromise(VirtualPathUtility.ToAbsolute(((Theme)ViewBag.Theme).CssPath));
if (isRtl)
{
Response.PushPromise("/res/css/rtl.min.css");
Response.PushPromise("/res/css/rtl.css");
}
Response.PushPromise("/res/ts/bfs.min.js");
@ -29,11 +29,11 @@
<link rel="canonical" href="@Url.Action()" />
<meta name="application-name" content="@InvariantTerms.SiteName" />
<link href="/res/css/default.min.css" rel="stylesheet" type="text/css" />
<link href="/res/css/default.css" rel="stylesheet" type="text/css" />
<link href="@(VirtualPathUtility.ToAbsolute(((Theme) ViewBag.Theme).CssPath))" rel="stylesheet" type="text/css" />
@if (isRtl)
{
<link href="/res/css/rtl.min.css" rel="stylesheet" type="text/css" />
<link href="/res/css/rtl.css" rel="stylesheet" type="text/css" />
}
<title>@ViewBag.Title</title>
@RenderSection("head", false)

View File

@ -20,11 +20,11 @@
<link rel="icon" href="~/favicon.ico" />
<meta name="application-name" content="@InvariantTerms.SiteName" />
<link href="/res/css/default.min.css" rel="stylesheet" type="text/css" />
<link href="/res/css/default.css" rel="stylesheet" type="text/css" />
<link href="@(VirtualPathUtility.ToAbsolute(((Theme) ViewBag.Theme).CssPath))" rel="stylesheet" type="text/css" />
@if (isRtl)
{
<link href="/res/css/rtl.min.css" rel="stylesheet" type="text/css" />
<link href="/res/css/rtl.css" rel="stylesheet" type="text/css" />
}
<title>@VariantTerms.Common_Error | @InvariantTerms.SiteName</title>
<script type="text/javascript">

View File

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings file="settings.config">
<add key="webpages:Version" value="3.0.0.0" />

View File

@ -1,21 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square70x70logo src="content/tile/tiny.png"/>
<square150x150logo src="content/tile/square.png"/>
<wide310x150logo src="content/tile/wide.png"/>
<square310x310logo src="content/tile/large.png"/>
<TileColor>#272b30</TileColor>
</tile>
<notification>
<polling-uri src="http://notifications.buildmypinnedsite.com/?feed=https://buildfeed.net/rss/Added/&amp;id=1"/>
<polling-uri2 src="http://notifications.buildmypinnedsite.com/?feed=https://buildfeed.net/rss/Added/&amp;id=2"/>
<polling-uri3 src="http://notifications.buildmypinnedsite.com/?feed=https://buildfeed.net/rss/Added/&amp;id=3"/>
<polling-uri4 src="http://notifications.buildmypinnedsite.com/?feed=https://buildfeed.net/rss/Added/&amp;id=4"/>
<polling-uri5 src="http://notifications.buildmypinnedsite.com/?feed=https://buildfeed.net/rss/Added/&amp;id=5"/>
<frequency>30</frequency>
<cycle>1</cycle>
</notification>
</msapplication>
<msapplication>
<tile>
<square70x70logo src="content/tile/tiny.png" />
<square150x150logo src="content/tile/square.png" />
<wide310x150logo src="content/tile/wide.png" />
<square310x310logo src="content/tile/large.png" />
<TileColor>#272b30</TileColor>
</tile>
<notification>
<polling-uri src="http://notifications.buildmypinnedsite.com/?feed=https://buildfeed.net/rss/Added/&amp;id=1" />
<polling-uri2 src="http://notifications.buildmypinnedsite.com/?feed=https://buildfeed.net/rss/Added/&amp;id=2" />
<polling-uri3 src="http://notifications.buildmypinnedsite.com/?feed=https://buildfeed.net/rss/Added/&amp;id=3" />
<polling-uri4 src="http://notifications.buildmypinnedsite.com/?feed=https://buildfeed.net/rss/Added/&amp;id=4" />
<polling-uri5 src="http://notifications.buildmypinnedsite.com/?feed=https://buildfeed.net/rss/Added/&amp;id=5" />
<frequency>30</frequency>
<cycle>1</cycle>
</notification>
</msapplication>
</browserconfig>

View File

@ -1,32 +1,8 @@
[
{
"outputFileName": "res/css/dark.min.css",
"inputFiles": [
"res/css/dark.css"
]
},
{
"outputFileName": "res/css/default.min.css",
"inputFiles": [
"res/css/default.css"
]
},
{
"outputFileName": "res/css/rtl.min.css",
"inputFiles": [
"res/css/rtl.css"
]
},
{
"outputFileName": "res/ts/bfs.min.js",
"inputFiles": [
"res/ts/bfs.js"
]
},
{
"outputFileName": "res/css/light.min.css",
"inputFiles": [
"res/css/light.css"
]
}
]

View File

@ -1,18 +0,0 @@
[
{
"outputFile": "res/css/default.css",
"inputFile": "res/css/default.scss"
},
{
"outputFile": "res/css/dark.css",
"inputFile": "res/css/dark.scss"
},
{
"outputFile": "res/css/rtl.css",
"inputFile": "res/css/rtl.scss"
},
{
"outputFile": "res/css/light.css",
"inputFile": "res/css/light.scss"
}
]

View File

@ -1,49 +0,0 @@
{
"compilers": {
"less": {
"autoPrefix": "",
"cssComb": "none",
"ieCompat": true,
"strictMath": false,
"strictUnits": false,
"relativeUrls": true,
"rootPath": "",
"sourceMapRoot": "",
"sourceMapBasePath": "",
"sourceMap": false
},
"sass": {
"includePath": "",
"indentType": "space",
"indentWidth": 2,
"outputStyle": "nested",
"Precision": 5,
"relativeUrls": true,
"sourceMapRoot": "",
"sourceMap": true
},
"stylus": {
"sourceMap": false
},
"babel": {
"sourceMap": false
},
"coffeescript": {
"bare": false,
"runtimeMode": "node",
"sourceMap": false
}
},
"minifiers": {
"css": {
"enabled": true,
"termSemicolons": true,
"gzip": false
},
"javascript": {
"enabled": true,
"termSemicolons": true,
"gzip": false
}
}
}

22
BuildFeed/gulpfile.js Normal file
View File

@ -0,0 +1,22 @@
/// <binding BeforeBuild='sass-compile' ProjectOpened='watch-sass' />
var gulp = require("gulp");
var sass = require("gulp-sass");
var cleanCss = require("gulp-clean-css");
var sourceMaps = require("gulp-sourcemaps");
gulp.task("sass-compile",
function ()
{
gulp.src("./res/css/*.scss")
.pipe(sourceMaps.init())
.pipe(sass())
.pipe(cleanCss())
.pipe(sourceMaps.write("./"))
.pipe(gulp.dest("./res/css/"));
});
gulp.task("watch-sass",
function ()
{
gulp.watch("./res/scss/*.scss", ["sass-compile"]);
});

12
BuildFeed/package.json Normal file
View File

@ -0,0 +1,12 @@
{
"version": "1.0.0",
"name": "buildfeed",
"private": true,
"devDependencies": {
"gulp": "3.9.1",
"gulp-sass": "2.3.2",
"gulp-clean-css": "2.0.13",
"gulp-sourcemaps": "2.1.1"
}
}

View File

@ -1,79 +1,80 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="google.analytics.TypeScript.DefinitelyTyped" version="0.3.8" targetFramework="net462" />
<package id="HtmlAgilityPack" version="1.4.9.5" targetFramework="net462" />
<package id="Humanizer" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.af" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.ar" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.bg" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.bn-BD" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.cs" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.da" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.de" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.el" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.es" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.fa" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.fi-FI" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.fr" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.fr-BE" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.he" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.hr" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.hu" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.id" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.it" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.ja" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.nb" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.nb-NO" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.nl" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.pl" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.pt" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.ro" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.ru" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.sk" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.sl" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.sr" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.sr-Latn" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.sv" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.tr" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.uk" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.uz-Cyrl-UZ" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.uz-Latn-UZ" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.vi" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.zh-CN" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.zh-Hans" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.zh-Hant" version="2.1.0" targetFramework="net462" />
<package id="jQuery" version="2.2.4" targetFramework="net462" />
<package id="jquery.TypeScript.DefinitelyTyped" version="3.1.0" targetFramework="net462" />
<package id="jQuery.Validation" version="1.15.1" targetFramework="net462" />
<package id="jsrender.TypeScript.DefinitelyTyped" version="0.1.8" targetFramework="net461" />
<package id="Microsoft.ApplicationInsights" version="2.1.0" targetFramework="net461" />
<package id="Microsoft.ApplicationInsights.Agent.Intercept" version="2.0.1" targetFramework="net461" />
<package id="Microsoft.ApplicationInsights.DependencyCollector" version="2.1.0" targetFramework="net461" />
<package id="Microsoft.ApplicationInsights.PerfCounterCollector" version="2.1.0" targetFramework="net461" />
<package id="Microsoft.ApplicationInsights.Web" version="2.1.0" targetFramework="net461" />
<package id="Microsoft.ApplicationInsights.WindowsServer" version="2.1.0" targetFramework="net461" />
<package id="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel" version="2.1.0" targetFramework="net461" />
<package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net462" />
<package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net462" />
<package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net462" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net462" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net462" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net462" />
<package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net462" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.1" targetFramework="net462" />
<package id="Microsoft.CSharp" version="4.0.1" targetFramework="net462" />
<package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.3" targetFramework="net462" />
<package id="Microsoft.Net.Compilers" version="1.3.2" targetFramework="net462" developmentDependency="true" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net462" />
<package id="MongoDB.Bson" version="2.2.4" targetFramework="net462" />
<package id="MongoDB.Driver" version="2.2.4" targetFramework="net462" />
<package id="MongoDB.Driver.Core" version="2.2.4" targetFramework="net462" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net462" />
<package id="System.Collections" version="4.0.11" targetFramework="net462" />
<package id="System.Linq" version="4.1.0" targetFramework="net462" />
<package id="System.Runtime" version="4.1.0" targetFramework="net462" />
<package id="System.Threading" version="4.0.11" targetFramework="net462" />
<package id="System.Xml.XDocument" version="4.0.11" targetFramework="net462" />
<package id="WilderMinds.RssSyndication" version="1.0.4" targetFramework="net462" />
<package id="google.analytics.TypeScript.DefinitelyTyped" version="0.3.8" targetFramework="net462" />
<package id="HtmlAgilityPack" version="1.4.9.5" targetFramework="net462" />
<package id="Humanizer" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.af" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.ar" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.bg" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.bn-BD" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.cs" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.da" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.de" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.el" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.es" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.fa" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.fi-FI" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.fr" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.fr-BE" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.he" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.hr" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.hu" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.id" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.it" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.ja" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.nb" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.nb-NO" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.nl" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.pl" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.pt" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.ro" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.ru" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.sk" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.sl" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.sr" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.sr-Latn" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.sv" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.tr" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.uk" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.uz-Cyrl-UZ" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.uz-Latn-UZ" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.vi" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.zh-CN" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.zh-Hans" version="2.1.0" targetFramework="net462" />
<package id="Humanizer.Core.zh-Hant" version="2.1.0" targetFramework="net462" />
<package id="jQuery" version="2.2.4" targetFramework="net462" />
<package id="jquery.TypeScript.DefinitelyTyped" version="3.1.0" targetFramework="net462" />
<package id="jQuery.Validation" version="1.15.1" targetFramework="net462" />
<package id="jsrender.TypeScript.DefinitelyTyped" version="0.1.8" targetFramework="net461" />
<package id="Microsoft.ApplicationInsights" version="2.1.0" targetFramework="net461" />
<package id="Microsoft.ApplicationInsights.Agent.Intercept" version="2.0.1" targetFramework="net461" />
<package id="Microsoft.ApplicationInsights.DependencyCollector" version="2.1.0" targetFramework="net461" />
<package id="Microsoft.ApplicationInsights.PerfCounterCollector" version="2.1.0" targetFramework="net461" />
<package id="Microsoft.ApplicationInsights.Web" version="2.1.0" targetFramework="net461" />
<package id="Microsoft.ApplicationInsights.WindowsServer" version="2.1.0" targetFramework="net461" />
<package id="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel" version="2.1.0" targetFramework="net461" />
<package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net462" />
<package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net462" />
<package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net462" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net462" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net462" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net462" />
<package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net462" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.1" targetFramework="net462" />
<package id="Microsoft.CSharp" version="4.0.1" targetFramework="net462" />
<package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.3" targetFramework="net462" />
<package id="Microsoft.Net.Compilers" version="1.3.2" targetFramework="net462" developmentDependency="true" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net462" />
<package id="MongoDB.Bson" version="2.2.4" targetFramework="net462" />
<package id="MongoDB.Driver" version="2.2.4" targetFramework="net462" />
<package id="MongoDB.Driver.Core" version="2.2.4" targetFramework="net462" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net462" />
<package id="System.Collections" version="4.0.11" targetFramework="net462" />
<package id="System.Linq" version="4.1.0" targetFramework="net462" />
<package id="System.Runtime" version="4.1.0" targetFramework="net462" />
<package id="System.Threading" version="4.0.11" targetFramework="net462" />
<package id="System.Xml.XDocument" version="4.0.11" targetFramework="net462" />
<package id="WilderMinds.RssSyndication" version="1.0.4" targetFramework="net462" />
</packages>

View File

@ -1,73 +1,2 @@
body {
background-color: #f6f5f3;
color: #373736; }
a {
color: #fff; }
h1 > a,
#page-footer a {
color: #373736; }
table thead th {
border-bottom-color: #f6f5f3; }
#page-content {
background-color: #373736;
color: #f6f5f3; }
#page-content h3 {
border-bottom-color: #ccc; }
#page-navigation {
background-color: #242423;
color: #f6f5f3; }
#page-navigation button {
color: #f6f5f3; }
#page-navigation #page-navigation-links > li a {
color: #f6f5f3; }
#page-navigation #page-navigation-links > li.open > a,
#page-navigation #page-navigation-links > li > a:hover {
background-color: #373736; }
.dropdown-menu {
background-color: #242423;
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.15);
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.15);
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.15); }
.dropdown-menu a:hover,
.dropdown-menu a:focus,
.dropdown-menu a:active {
background-color: #373736; }
article {
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.15) inset;
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.15) inset;
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.15) inset; }
article h1, article h3 {
color: #d6d5d3; }
article .build-group > h3 > a,
article a.more-link,
article .build-details-comments a {
color: #d6d5d3; }
ul.pagination > li.active > a {
background: #f6f5f3;
color: #242423 !important; }
ul.pagination > li:hover:not(.disabled) > a,
ul.pagination > li:focus:not(.disabled) > a,
ul.pagination > li:active:not(.disabled) > a {
background: #d6d5d3;
color: #373736 !important; }
#modal-search-overlay #modal-search {
background-color: #242423; }
#modal-search-overlay #modal-search h3 {
color: #f6f5f3; }
#modal-search-overlay #modal-search > #modal-search-box > #modal-search-input,
#modal-search-overlay #modal-search > #modal-search-box > #modal-search-button {
background-color: #373736;
color: #f6f5f3;
border-color: #d6d5d3; }
/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAiLi4vcmVzL2Nzcy9kYXJrLmNzcyIsCgkic291cmNlcyI6IFsKCQkiLi4vcmVzL2Nzcy9kYXJrLnNjc3MiCgldLAoJIm1hcHBpbmdzIjogIkFBQUEsQUFBQSxJQUFJLENBQ0o7RUFDRyxnQkFBZ0IsRUFBRSxPQUFRO0VBQzFCLEtBQUssRUFBRSxPQUFRLEdBQ2pCOztBQUVELEFBQUEsQ0FBQyxDQUNEO0VBQ0csS0FBSyxFQUFFLElBQUssR0FDZDs7QUFFRCxBQUFLLEVBQUgsR0FBRyxDQUFDO0FBQ04sQUFBYSxZQUFELENBQUMsQ0FBQyxDQUNkO0VBQ0csS0FBSyxFQUFFLE9BQVEsR0FDakI7O0FBRUQsQUFBWSxLQUFQLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDZDtFQUNHLG1CQUFtQixFQUFFLE9BQVEsR0FDL0I7O0FBRUQsQUFBQSxhQUFhLENBQ2I7RUFDRyxnQkFBZ0IsRUFBRSxPQUFRO0VBQzFCLEtBQUssRUFBRSxPQUFRLEdBTWpCO0VBVEQsQUFLRyxhQUxVLENBS1YsRUFBRSxDQUNGO0lBQ0csbUJBQW1CLEVBQUUsSUFBSyxHQUM1Qjs7QUFHSixBQUFBLGdCQUFnQixDQUNoQjtFQUNHLGdCQUFnQixFQUFFLE9BQVE7RUFDMUIsS0FBSyxFQUFFLE9BQVEsR0F1QmpCO0VBMUJELEFBS0csZ0JBTGEsQ0FLYixNQUFNLENBQ047SUFDRyxLQUFLLEVBQUUsT0FBUSxHQUNqQjtFQVJKLEFBY1MsZ0JBZE8sQ0FVYixzQkFBc0IsR0FFakIsRUFBRSxDQUVELENBQUMsQ0FDRDtJQUNHLEtBQUssRUFBRSxPQUFRLEdBQ2pCO0VBakJWLEFBbUJrQixnQkFuQkYsQ0FVYixzQkFBc0IsR0FFakIsRUFBRSxBQU9BLEtBQUssR0FBRyxDQUFDO0VBbkJuQixBQW9CWSxnQkFwQkksQ0FVYixzQkFBc0IsR0FFakIsRUFBRSxHQVFDLENBQUMsQUFBQSxNQUFNLENBQ1Q7SUFDRyxnQkFBZ0IsRUFBRSxPQUFRLEdBQzVCOztBQUtWLEFBQUEsY0FBYyxDQUNkO0VBQ0csZ0JBQWdCLEVBQUUsT0FBUTtFQUMxQixlQUFlLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQUk7RUFDaEMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQUk7RUFDbkMsVUFBVSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFJLEdBUTdCO0VBYkQsQUFPSSxjQVBVLENBT1gsQ0FBQyxBQUFBLE1BQU07RUFQVixBQVFJLGNBUlUsQ0FRWCxDQUFDLEFBQUEsTUFBTTtFQVJWLEFBU0ksY0FUVSxDQVNYLENBQUMsQUFBQSxPQUFPLENBQ1I7SUFDRyxnQkFBZ0IsRUFBRSxPQUFRLEdBQzVCOztBQUdKLEFBQUEsT0FBTyxDQUNQO0VBQ0csZUFBZSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFJLENBQWEsS0FBSztFQUNsRCxrQkFBa0IsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBSSxDQUFhLEtBQUs7RUFDckQsVUFBVSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFJLENBQWEsS0FBSyxHQWEvQztFQWpCRCxBQU1HLE9BTkksQ0FNSixFQUFFLEVBTkwsQUFNTyxPQU5BLENBTUEsRUFBRSxDQUNOO0lBQ0csS0FBSyxFQUFFLE9BQVEsR0FDakI7RUFUSixBQVd1QixPQVhoQixDQVdKLFlBQVksR0FBRyxFQUFFLEdBQUcsQ0FBQztFQVh4QixBQVlJLE9BWkcsQ0FZSixDQUFDLEFBQUEsVUFBVTtFQVpkLEFBYTJCLE9BYnBCLENBYUosdUJBQXVCLENBQUMsQ0FBQyxDQUN6QjtJQUNHLEtBQUssRUFBRSxPQUFRLEdBQ2pCOztBQUdKLEFBRWlCLEVBRmYsQUFBQSxXQUFXLEdBRVIsRUFBRSxBQUFBLE9BQU8sR0FBRyxDQUFDLENBQ2Y7RUFDRyxVQUFVLEVBQUUsT0FBUTtFQUNwQixLQUFLLEVBQUUsa0JBQW1CLEdBQzVCOztBQU5KLEFBUStCLEVBUjdCLEFBQUEsV0FBVyxHQVFSLEVBQUUsQUFBQSxNQUFNLEFBQUEsSUFBSyxDQUFBLEFBQUEsU0FBUyxJQUFJLENBQUM7QUFSaEMsQUFTK0IsRUFUN0IsQUFBQSxXQUFXLEdBU1IsRUFBRSxBQUFBLE1BQU0sQUFBQSxJQUFLLENBQUEsQUFBQSxTQUFTLElBQUksQ0FBQztBQVRoQyxBQVVnQyxFQVY5QixBQUFBLFdBQVcsR0FVUixFQUFFLEFBQUEsT0FBTyxBQUFBLElBQUssQ0FBQSxBQUFBLFNBQVMsSUFBSSxDQUFDLENBQzlCO0VBQ0csVUFBVSxFQUFFLE9BQVE7RUFDcEIsS0FBSyxFQUFFLGtCQUFtQixHQUM1Qjs7QUFHSixBQUFzQixxQkFBRCxDQUFDLGFBQWEsQ0FDbkM7RUFDRyxnQkFBZ0IsRUFBRSxPQUFRLEdBYzVCO0VBaEJELEFBSUcscUJBSmtCLENBQUMsYUFBYSxDQUloQyxFQUFFLENBQ0Y7SUFDRyxLQUFLLEVBQUUsT0FBUSxHQUNqQjtFQVBKLEFBU3lCLHFCQVRKLENBQUMsYUFBYSxHQVM5QixpQkFBaUIsR0FBRyxtQkFBbUI7RUFUNUMsQUFVeUIscUJBVkosQ0FBQyxhQUFhLEdBVTlCLGlCQUFpQixHQUFHLG9CQUFvQixDQUMxQztJQUNHLGdCQUFnQixFQUFFLE9BQVE7SUFDMUIsS0FBSyxFQUFFLE9BQVE7SUFDZixZQUFZLEVBQUUsT0FBUSxHQUN4QiIsCgkibmFtZXMiOiBbXQp9 */
body{background-color:#f6f5f3;color:#373736}a{color:#fff}#page-footer a,h1>a{color:#373736}#page-content,#page-navigation #page-navigation-links>li a,#page-navigation button{color:#f6f5f3}table thead th{border-bottom-color:#f6f5f3}#page-content{background-color:#373736}#page-content h3{border-bottom-color:#ccc}#page-navigation{background-color:#242423;color:#f6f5f3}#page-navigation #page-navigation-links>li.open>a,#page-navigation #page-navigation-links>li>a:hover{background-color:#373736}.dropdown-menu{background-color:#242423;-moz-box-shadow:0 5px 10px rgba(0,0,0,.15);-webkit-box-shadow:0 5px 10px rgba(0,0,0,.15);box-shadow:0 5px 10px rgba(0,0,0,.15)}.dropdown-menu a:active,.dropdown-menu a:focus,.dropdown-menu a:hover{background-color:#373736}article{-moz-box-shadow:0 5px 10px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.15) inset;box-shadow:0 5px 10px rgba(0,0,0,.15) inset}article .build-details-comments a,article .build-group>h3>a,article a.more-link,article h1,article h3{color:#d6d5d3}ul.pagination>li.active>a{background:#f6f5f3;color:#242423!important}ul.pagination>li:active:not(.disabled)>a,ul.pagination>li:focus:not(.disabled)>a,ul.pagination>li:hover:not(.disabled)>a{background:#d6d5d3;color:#373736!important}#modal-search-overlay #modal-search{background-color:#242423}#modal-search-overlay #modal-search h3{color:#f6f5f3}#modal-search-overlay #modal-search>#modal-search-box>#modal-search-button,#modal-search-overlay #modal-search>#modal-search-box>#modal-search-input{background-color:#373736;color:#f6f5f3;border-color:#d6d5d3}
/*# sourceMappingURL=dark.css.map */

View File

@ -0,0 +1 @@
{"version":3,"sources":["dark.scss"],"names":[],"mappings":"AAAA,KAEG,iBAAkB,QAClB,MAAO,QAGV,EAEG,MAAO,KAIV,eADA,KAGG,MAAO,QAQV,cAWA,6CAAA,wBAOM,MAAO,QAvBb,eAEG,oBAAqB,QAGxB,cAEG,iBAAkB,QAFrB,iBAOM,oBAAqB,KAI3B,iBAEG,iBAAkB,QAClB,MAAO,QAHV,kDAAA,mDAsBY,iBAAkB,QAM9B,eAEG,iBAAkB,QAClB,gBAAiB,EAAE,IAAI,KAAK,gBAC5B,mBAAoB,EAAE,IAAI,KAAK,gBAC/B,WAAY,EAAE,IAAI,KAAK,gBAL1B,wBAAA,uBAAA,uBAWM,iBAAkB,QAIxB,QAEG,gBAAiB,EAAE,IAAI,KAAK,gBAAiB,MAC7C,mBAAoB,EAAE,IAAI,KAAK,gBAAiB,MAChD,WAAY,EAAE,IAAI,KAAK,gBAAiB,MAJ3C,kCAAA,0BAAA,oBAAA,WAAA,WAQM,MAAO,QAWb,0BAIM,WAAY,QACZ,MAAO,kBALb,yCAAA,wCAAA,wCAYM,WAAY,QACZ,MAAO,kBAIb,oCAEG,iBAAkB,QAFrB,uCAMM,MAAO,QANb,2EAAA,0EAYM,iBAAkB,QAClB,MAAO,QACP,aAAc","file":"dark.css","sourcesContent":["body\r\n{\r\n background-color: #f6f5f3;\r\n color: #373736;\r\n}\r\n\r\na\r\n{\r\n color: #fff;\r\n}\r\n\r\nh1 > a,\r\n#page-footer a\r\n{\r\n color: #373736;\r\n}\r\n\r\ntable thead th\r\n{\r\n border-bottom-color: #f6f5f3;\r\n}\r\n\r\n#page-content\r\n{\r\n background-color: #373736;\r\n color: #f6f5f3;\r\n\r\n h3\r\n {\r\n border-bottom-color: #ccc;\r\n }\r\n}\r\n\r\n#page-navigation\r\n{\r\n background-color: #242423;\r\n color: #f6f5f3;\r\n\r\n button\r\n {\r\n color: #f6f5f3;\r\n }\r\n\r\n #page-navigation-links\r\n {\r\n > li\r\n {\r\n a\r\n {\r\n color: #f6f5f3;\r\n }\r\n\r\n &.open > a,\r\n > a:hover\r\n {\r\n background-color: #373736;\r\n }\r\n }\r\n }\r\n}\r\n\r\n.dropdown-menu\r\n{\r\n background-color: #242423;\r\n -moz-box-shadow: 0 5px 10px rgba(0,0,0,0.15);\r\n -webkit-box-shadow: 0 5px 10px rgba(0,0,0,0.15);\r\n box-shadow: 0 5px 10px rgba(0,0,0,0.15);\r\n\r\n a:hover,\r\n a:focus,\r\n a:active\r\n {\r\n background-color: #373736;\r\n }\r\n}\r\n\r\narticle\r\n{\r\n -moz-box-shadow: 0 5px 10px rgba(0,0,0,0.15) inset;\r\n -webkit-box-shadow: 0 5px 10px rgba(0,0,0,0.15) inset;\r\n box-shadow: 0 5px 10px rgba(0,0,0,0.15) inset;\r\n\r\n h1, h3\r\n {\r\n color: #d6d5d3;\r\n }\r\n\r\n .build-group > h3 > a,\r\n a.more-link,\r\n .build-details-comments a\r\n {\r\n color: #d6d5d3;\r\n }\r\n}\r\n\r\nul.pagination\r\n{\r\n > li.active > a\r\n {\r\n background: #f6f5f3;\r\n color: #242423 !important;\r\n }\r\n\r\n > li:hover:not(.disabled) > a,\r\n > li:focus:not(.disabled) > a,\r\n > li:active:not(.disabled) > a\r\n {\r\n background: #d6d5d3;\r\n color: #373736 !important;\r\n }\r\n}\r\n\r\n#modal-search-overlay #modal-search\r\n{\r\n background-color: #242423;\r\n\r\n h3\r\n {\r\n color: #f6f5f3;\r\n }\r\n\r\n > #modal-search-box > #modal-search-input,\r\n > #modal-search-box > #modal-search-button\r\n {\r\n background-color: #373736;\r\n color: #f6f5f3;\r\n border-color: #d6d5d3;\r\n }\r\n}\r\n"]}

View File

@ -1 +0,0 @@
body{background-color:#f6f5f3;color:#373736}a{color:#fff}h1>a,#page-footer a{color:#373736}table thead th{border-bottom-color:#f6f5f3}#page-content{background-color:#373736;color:#f6f5f3}#page-content h3{border-bottom-color:#ccc}#page-navigation{background-color:#242423;color:#f6f5f3}#page-navigation button{color:#f6f5f3}#page-navigation #page-navigation-links>li a{color:#f6f5f3}#page-navigation #page-navigation-links>li.open>a,#page-navigation #page-navigation-links>li>a:hover{background-color:#373736}.dropdown-menu{background-color:#242423;-moz-box-shadow:0 5px 10px rgba(0,0,0,.15);-webkit-box-shadow:0 5px 10px rgba(0,0,0,.15);box-shadow:0 5px 10px rgba(0,0,0,.15)}.dropdown-menu a:hover,.dropdown-menu a:focus,.dropdown-menu a:active{background-color:#373736}article{-moz-box-shadow:0 5px 10px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.15) inset;box-shadow:0 5px 10px rgba(0,0,0,.15) inset}article h1,article h3{color:#d6d5d3}article .build-group>h3>a,article a.more-link,article .build-details-comments a{color:#d6d5d3}ul.pagination>li.active>a{background:#f6f5f3;color:#242423 !important}ul.pagination>li:hover:not(.disabled)>a,ul.pagination>li:focus:not(.disabled)>a,ul.pagination>li:active:not(.disabled)>a{background:#d6d5d3;color:#373736 !important}#modal-search-overlay #modal-search{background-color:#242423}#modal-search-overlay #modal-search h3{color:#f6f5f3}#modal-search-overlay #modal-search>#modal-search-box>#modal-search-input,#modal-search-overlay #modal-search>#modal-search-box>#modal-search-button{background-color:#373736;color:#f6f5f3;border-color:#d6d5d3}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,73 +1,2 @@
body {
background-color: #373736;
color: #f6f5f3; }
a {
color: #000; }
h1 > a,
#page-footer a {
color: #f6f5f3; }
table thead th {
border-bottom-color: #373736; }
#page-content {
background-color: #f6f5f3;
color: #373736; }
#page-content h3 {
border-bottom-color: #ccc; }
#page-navigation {
background-color: #e6e5e3;
color: #373736; }
#page-navigation button {
color: #373736; }
#page-navigation #page-navigation-links > li a {
color: #373736; }
#page-navigation #page-navigation-links > li.open > a,
#page-navigation #page-navigation-links > li > a:hover {
background-color: #f6f5f3; }
.dropdown-menu {
background-color: #e6e5e3;
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.15);
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.15);
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.15); }
.dropdown-menu a:hover,
.dropdown-menu a:focus,
.dropdown-menu a:active {
background-color: #f6f5f3; }
article {
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none; }
article h1, article h3 {
color: #242423; }
article .build-group > h3 > a,
article a.more-link,
article .build-details-comments a {
color: #242423; }
ul.pagination > li.active > a {
background: #373736;
color: #e6e5e3 !important; }
ul.pagination > li:hover:not(.disabled) > a,
ul.pagination > li:focus:not(.disabled) > a,
ul.pagination > li:active:not(.disabled) > a {
background: #242423;
color: #f6f5f3 !important; }
#modal-search-overlay #modal-search {
background-color: #f6f5f3; }
#modal-search-overlay #modal-search h3 {
color: #373736; }
#modal-search-overlay #modal-search > #modal-search-box > #modal-search-input,
#modal-search-overlay #modal-search > #modal-search-box > #modal-search-button {
background-color: #fff;
color: #373736;
border-color: #242423; }
/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAiLi4vcmVzL2Nzcy9saWdodC5jc3MiLAoJInNvdXJjZXMiOiBbCgkJIi4uL3Jlcy9jc3MvbGlnaHQuc2NzcyIKCV0sCgkibWFwcGluZ3MiOiAiQUFBQSxBQUFBLElBQUksQ0FDSjtFQUNHLGdCQUFnQixFQUFFLE9BQVE7RUFDMUIsS0FBSyxFQUFFLE9BQVEsR0FDakI7O0FBRUQsQUFBQSxDQUFDLENBQ0Q7RUFDRyxLQUFLLEVBQUUsSUFBSyxHQUNkOztBQUVELEFBQUssRUFBSCxHQUFHLENBQUM7QUFDTixBQUFhLFlBQUQsQ0FBQyxDQUFDLENBQ2Q7RUFDRyxLQUFLLEVBQUUsT0FBUSxHQUNqQjs7QUFFRCxBQUFZLEtBQVAsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUNkO0VBQ0csbUJBQW1CLEVBQUUsT0FBUSxHQUMvQjs7QUFFRCxBQUFBLGFBQWEsQ0FDYjtFQUNHLGdCQUFnQixFQUFFLE9BQVE7RUFDMUIsS0FBSyxFQUFFLE9BQVEsR0FNakI7RUFURCxBQUtHLGFBTFUsQ0FLVixFQUFFLENBQ0Y7SUFDRyxtQkFBbUIsRUFBRSxJQUFLLEdBQzVCOztBQUdKLEFBQUEsZ0JBQWdCLENBQ2hCO0VBQ0csZ0JBQWdCLEVBQUUsT0FBUTtFQUMxQixLQUFLLEVBQUUsT0FBUSxHQXVCakI7RUExQkQsQUFLRyxnQkFMYSxDQUtiLE1BQU0sQ0FDTjtJQUNHLEtBQUssRUFBRSxPQUFRLEdBQ2pCO0VBUkosQUFjUyxnQkFkTyxDQVViLHNCQUFzQixHQUVqQixFQUFFLENBRUQsQ0FBQyxDQUNEO0lBQ0csS0FBSyxFQUFFLE9BQVEsR0FDakI7RUFqQlYsQUFtQmtCLGdCQW5CRixDQVViLHNCQUFzQixHQUVqQixFQUFFLEFBT0EsS0FBSyxHQUFHLENBQUM7RUFuQm5CLEFBb0JZLGdCQXBCSSxDQVViLHNCQUFzQixHQUVqQixFQUFFLEdBUUMsQ0FBQyxBQUFBLE1BQU0sQ0FDVDtJQUNHLGdCQUFnQixFQUFFLE9BQVEsR0FDNUI7O0FBS1YsQUFBQSxjQUFjLENBQ2Q7RUFDRyxnQkFBZ0IsRUFBRSxPQUFRO0VBQzFCLGVBQWUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBSTtFQUNoQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBSTtFQUNuQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQUksR0FRN0I7RUFiRCxBQU9JLGNBUFUsQ0FPWCxDQUFDLEFBQUEsTUFBTTtFQVBWLEFBUUksY0FSVSxDQVFYLENBQUMsQUFBQSxNQUFNO0VBUlYsQUFTSSxjQVRVLENBU1gsQ0FBQyxBQUFBLE9BQU8sQ0FDUjtJQUNHLGdCQUFnQixFQUFFLE9BQVEsR0FDNUI7O0FBR0osQUFBQSxPQUFPLENBQ1A7RUFDRyxlQUFlLEVBQUUsSUFBSztFQUN0QixrQkFBa0IsRUFBRSxJQUFLO0VBQ3pCLFVBQVUsRUFBRSxJQUFLLEdBYW5CO0VBakJELEFBTUcsT0FOSSxDQU1KLEVBQUUsRUFOTCxBQU1PLE9BTkEsQ0FNQSxFQUFFLENBQ047SUFDRyxLQUFLLEVBQUUsT0FBUSxHQUNqQjtFQVRKLEFBV3VCLE9BWGhCLENBV0osWUFBWSxHQUFHLEVBQUUsR0FBRyxDQUFDO0VBWHhCLEFBWUksT0FaRyxDQVlKLENBQUMsQUFBQSxVQUFVO0VBWmQsQUFhMkIsT0FicEIsQ0FhSix1QkFBdUIsQ0FBQyxDQUFDLENBQ3pCO0lBQ0csS0FBSyxFQUFFLE9BQVEsR0FDakI7O0FBR0osQUFFaUIsRUFGZixBQUFBLFdBQVcsR0FFUixFQUFFLEFBQUEsT0FBTyxHQUFHLENBQUMsQ0FDZjtFQUNHLFVBQVUsRUFBRSxPQUFRO0VBQ3BCLEtBQUssRUFBRSxrQkFBbUIsR0FDNUI7O0FBTkosQUFRK0IsRUFSN0IsQUFBQSxXQUFXLEdBUVIsRUFBRSxBQUFBLE1BQU0sQUFBQSxJQUFLLENBQUEsQUFBQSxTQUFTLElBQUksQ0FBQztBQVJoQyxBQVMrQixFQVQ3QixBQUFBLFdBQVcsR0FTUixFQUFFLEFBQUEsTUFBTSxBQUFBLElBQUssQ0FBQSxBQUFBLFNBQVMsSUFBSSxDQUFDO0FBVGhDLEFBVWdDLEVBVjlCLEFBQUEsV0FBVyxHQVVSLEVBQUUsQUFBQSxPQUFPLEFBQUEsSUFBSyxDQUFBLEFBQUEsU0FBUyxJQUFJLENBQUMsQ0FDOUI7RUFDRyxVQUFVLEVBQUUsT0FBUTtFQUNwQixLQUFLLEVBQUUsa0JBQW1CLEdBQzVCOztBQUdKLEFBQXNCLHFCQUFELENBQUMsYUFBYSxDQUNuQztFQUNHLGdCQUFnQixFQUFFLE9BQVEsR0FjNUI7RUFoQkQsQUFJRyxxQkFKa0IsQ0FBQyxhQUFhLENBSWhDLEVBQUUsQ0FDRjtJQUNHLEtBQUssRUFBRSxPQUFRLEdBQ2pCO0VBUEosQUFTeUIscUJBVEosQ0FBQyxhQUFhLEdBUzlCLGlCQUFpQixHQUFHLG1CQUFtQjtFQVQ1QyxBQVV5QixxQkFWSixDQUFDLGFBQWEsR0FVOUIsaUJBQWlCLEdBQUcsb0JBQW9CLENBQzFDO0lBQ0csZ0JBQWdCLEVBQUUsSUFBSztJQUN2QixLQUFLLEVBQUUsT0FBUTtJQUNmLFlBQVksRUFBRSxPQUFRLEdBQ3hCIiwKCSJuYW1lcyI6IFtdCn0= */
body{background-color:#373736;color:#f6f5f3}a{color:#000}#page-footer a,h1>a{color:#f6f5f3}#page-content,#page-navigation #page-navigation-links>li a,#page-navigation button{color:#373736}table thead th{border-bottom-color:#373736}#page-content{background-color:#f6f5f3}#page-content h3{border-bottom-color:#ccc}#page-navigation{background-color:#e6e5e3;color:#373736}#page-navigation #page-navigation-links>li.open>a,#page-navigation #page-navigation-links>li>a:hover{background-color:#f6f5f3}.dropdown-menu{background-color:#e6e5e3;-moz-box-shadow:0 5px 10px rgba(0,0,0,.15);-webkit-box-shadow:0 5px 10px rgba(0,0,0,.15);box-shadow:0 5px 10px rgba(0,0,0,.15)}.dropdown-menu a:active,.dropdown-menu a:focus,.dropdown-menu a:hover{background-color:#f6f5f3}article{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}article .build-details-comments a,article .build-group>h3>a,article a.more-link,article h1,article h3{color:#242423}ul.pagination>li.active>a{background:#373736;color:#e6e5e3!important}ul.pagination>li:active:not(.disabled)>a,ul.pagination>li:focus:not(.disabled)>a,ul.pagination>li:hover:not(.disabled)>a{background:#242423;color:#f6f5f3!important}#modal-search-overlay #modal-search{background-color:#f6f5f3}#modal-search-overlay #modal-search h3{color:#373736}#modal-search-overlay #modal-search>#modal-search-box>#modal-search-button,#modal-search-overlay #modal-search>#modal-search-box>#modal-search-input{background-color:#fff;color:#373736;border-color:#242423}
/*# sourceMappingURL=light.css.map */

View File

@ -0,0 +1 @@
{"version":3,"sources":["light.scss"],"names":[],"mappings":"AAAA,KAEG,iBAAkB,QAClB,MAAO,QAGV,EAEG,MAAO,KAIV,eADA,KAGG,MAAO,QAQV,cAWA,6CAAA,wBAOM,MAAO,QAvBb,eAEG,oBAAqB,QAGxB,cAEG,iBAAkB,QAFrB,iBAOM,oBAAqB,KAI3B,iBAEG,iBAAkB,QAClB,MAAO,QAHV,kDAAA,mDAsBY,iBAAkB,QAM9B,eAEG,iBAAkB,QAClB,gBAAiB,EAAE,IAAI,KAAK,gBAC5B,mBAAoB,EAAE,IAAI,KAAK,gBAC/B,WAAY,EAAE,IAAI,KAAK,gBAL1B,wBAAA,uBAAA,uBAWM,iBAAkB,QAIxB,QAEG,gBAAiB,KACjB,mBAAoB,KACpB,WAAY,KAJf,kCAAA,0BAAA,oBAAA,WAAA,WAQM,MAAO,QAWb,0BAIM,WAAY,QACZ,MAAO,kBALb,yCAAA,wCAAA,wCAYM,WAAY,QACZ,MAAO,kBAIb,oCAEG,iBAAkB,QAFrB,uCAMM,MAAO,QANb,2EAAA,0EAYM,iBAAkB,KAClB,MAAO,QACP,aAAc","file":"light.css","sourcesContent":["body\r\n{\r\n background-color: #373736;\r\n color: #f6f5f3;\r\n}\r\n\r\na\r\n{\r\n color: #000;\r\n}\r\n\r\nh1 > a,\r\n#page-footer a\r\n{\r\n color: #f6f5f3;\r\n}\r\n\r\ntable thead th\r\n{\r\n border-bottom-color: #373736;\r\n}\r\n\r\n#page-content\r\n{\r\n background-color: #f6f5f3;\r\n color: #373736;\r\n\r\n h3\r\n {\r\n border-bottom-color: #ccc;\r\n }\r\n}\r\n\r\n#page-navigation\r\n{\r\n background-color: #e6e5e3;\r\n color: #373736;\r\n\r\n button\r\n {\r\n color: #373736;\r\n }\r\n\r\n #page-navigation-links\r\n {\r\n > li\r\n {\r\n a\r\n {\r\n color: #373736;\r\n }\r\n\r\n &.open > a,\r\n > a:hover\r\n {\r\n background-color: #f6f5f3;\r\n }\r\n }\r\n }\r\n}\r\n\r\n.dropdown-menu\r\n{\r\n background-color: #e6e5e3;\r\n -moz-box-shadow: 0 5px 10px rgba(0,0,0,0.15);\r\n -webkit-box-shadow: 0 5px 10px rgba(0,0,0,0.15);\r\n box-shadow: 0 5px 10px rgba(0,0,0,0.15);\r\n\r\n a:hover,\r\n a:focus,\r\n a:active\r\n {\r\n background-color: #f6f5f3;\r\n }\r\n}\r\n\r\narticle\r\n{\r\n -moz-box-shadow: none;\r\n -webkit-box-shadow: none;\r\n box-shadow: none;\r\n\r\n h1, h3\r\n {\r\n color: #242423;\r\n }\r\n\r\n .build-group > h3 > a,\r\n a.more-link,\r\n .build-details-comments a\r\n {\r\n color: #242423;\r\n }\r\n}\r\n\r\nul.pagination\r\n{\r\n > li.active > a\r\n {\r\n background: #373736;\r\n color: #e6e5e3 !important;\r\n }\r\n\r\n > li:hover:not(.disabled) > a,\r\n > li:focus:not(.disabled) > a,\r\n > li:active:not(.disabled) > a\r\n {\r\n background: #242423;\r\n color: #f6f5f3 !important;\r\n }\r\n}\r\n\r\n#modal-search-overlay #modal-search\r\n{\r\n background-color: #f6f5f3;\r\n\r\n h3\r\n {\r\n color: #373736;\r\n }\r\n\r\n > #modal-search-box > #modal-search-input,\r\n > #modal-search-box > #modal-search-button\r\n {\r\n background-color: #fff;\r\n color: #373736;\r\n border-color: #242423;\r\n }\r\n}\r\n"]}

View File

@ -1 +0,0 @@
body{background-color:#373736;color:#f6f5f3}a{color:#000}h1>a,#page-footer a{color:#f6f5f3}table thead th{border-bottom-color:#373736}#page-content{background-color:#f6f5f3;color:#373736}#page-content h3{border-bottom-color:#ccc}#page-navigation{background-color:#e6e5e3;color:#373736}#page-navigation button{color:#373736}#page-navigation #page-navigation-links>li a{color:#373736}#page-navigation #page-navigation-links>li.open>a,#page-navigation #page-navigation-links>li>a:hover{background-color:#f6f5f3}.dropdown-menu{background-color:#e6e5e3;-moz-box-shadow:0 5px 10px rgba(0,0,0,.15);-webkit-box-shadow:0 5px 10px rgba(0,0,0,.15);box-shadow:0 5px 10px rgba(0,0,0,.15)}.dropdown-menu a:hover,.dropdown-menu a:focus,.dropdown-menu a:active{background-color:#f6f5f3}article{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}article h1,article h3{color:#242423}article .build-group>h3>a,article a.more-link,article .build-details-comments a{color:#242423}ul.pagination>li.active>a{background:#373736;color:#e6e5e3 !important}ul.pagination>li:hover:not(.disabled)>a,ul.pagination>li:focus:not(.disabled)>a,ul.pagination>li:active:not(.disabled)>a{background:#242423;color:#f6f5f3 !important}#modal-search-overlay #modal-search{background-color:#f6f5f3}#modal-search-overlay #modal-search h3{color:#373736}#modal-search-overlay #modal-search>#modal-search-box>#modal-search-input,#modal-search-overlay #modal-search>#modal-search-box>#modal-search-button{background-color:#fff;color:#373736;border-color:#242423}

View File

@ -1,31 +1,2 @@
nav#page-navigation #page-navigation-links {
text-align: left; }
nav#page-navigation #page-navigation-links > li > a {
text-align: right; }
.dropdown-parent .dropdown-menu {
text-align: right; }
.dropdown-parent .dropdown-menu .dropdown-menu-block {
float: right; }
.dropdown-parent .dropdown-menu .dropdown-menu-block li {
float: right; }
.form-group label {
text-align: left; }
article .build-group-listing .build-group h3 {
text-align: right; }
footer#page-footer .footer-flex .footer-flex-item:last-child {
text-align: left; }
footer#page-footer .footer-flex .footer-flex-item:first-child {
text-align: right; }
@media (max-width: 640px) {
footer#page-footer .footer-flex .footer-flex-item:first-child {
text-align: center; }
footer#page-footer .footer-flex .footer-flex-item:last-child {
text-align: center; } }
/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAiLi4vcmVzL2Nzcy9ydGwuY3NzIiwKCSJzb3VyY2VzIjogWwoJCSIuLi9yZXMvY3NzL3J0bC5zY3NzIgoJXSwKCSJtYXBwaW5ncyI6ICJBQUFBLEFBQW9CLEdBQWpCLEFBQUEsZ0JBQWdCLENBQUMsc0JBQXNCLENBQzFDO0VBQ0csVUFBVSxFQUFFLElBQUssR0FNbkI7RUFSRCxBQUlVLEdBSlAsQUFBQSxnQkFBZ0IsQ0FBQyxzQkFBc0IsR0FJckMsRUFBRSxHQUFHLENBQUMsQ0FDUjtJQUNHLFVBQVUsRUFBRSxLQUFNLEdBQ3BCOztBQUdKLEFBQWlCLGdCQUFELENBQUMsY0FBYyxDQUMvQjtFQUNHLFVBQVUsRUFBRSxLQUFNLEdBV3BCO0VBYkQsQUFJRyxnQkFKYSxDQUFDLGNBQWMsQ0FJNUIsb0JBQW9CLENBQ3BCO0lBQ0csS0FBSyxFQUFFLEtBQU0sR0FNZjtJQVpKLEFBUU0sZ0JBUlUsQ0FBQyxjQUFjLENBSTVCLG9CQUFvQixDQUlqQixFQUFFLENBQ0Y7TUFDRyxLQUFLLEVBQUUsS0FBTSxHQUNmOztBQUlQLEFBQVksV0FBRCxDQUFDLEtBQUssQ0FDakI7RUFDRyxVQUFVLEVBQUUsSUFBSyxHQUNuQjs7QUFFRCxBQUEwQyxPQUFuQyxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxFQUFFLENBQzVDO0VBQ0csVUFBVSxFQUFFLEtBQU0sR0FDcEI7O0FBRUQsQUFBZ0MsTUFBMUIsQUFBQSxZQUFZLENBQUMsWUFBWSxDQUFDLGlCQUFpQixBQUc3QyxXQUFXLENBQ1o7RUFDRyxVQUFVLEVBQUUsSUFBSyxHQUNuQjs7QUFOSixBQUFnQyxNQUExQixBQUFBLFlBQVksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEFBUTdDLFlBQVksQ0FDYjtFQUNHLFVBQVUsRUFBRSxLQUFNLEdBQ3BCOztBQUdKLE1BQU0sRUFBTCxTQUFTLEVBQUUsS0FBSztFQUVkLEFBQWdDLE1BQTFCLEFBQUEsWUFBWSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQUFFN0MsWUFBWSxDQUNiO0lBQ0csVUFBVSxFQUFFLE1BQU8sR0FDckI7RUFMSixBQUFnQyxNQUExQixBQUFBLFlBQVksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEFBTzdDLFdBQVcsQ0FDWjtJQUNHLFVBQVUsRUFBRSxNQUFPLEdBQ3JCIiwKCSJuYW1lcyI6IFtdCn0= */
nav#page-navigation #page-navigation-links{text-align:left}.dropdown-parent .dropdown-menu,nav#page-navigation #page-navigation-links>li>a{text-align:right}.dropdown-parent .dropdown-menu .dropdown-menu-block,.dropdown-parent .dropdown-menu .dropdown-menu-block li{float:right}.form-group label{text-align:left}article .build-group-listing .build-group h3{text-align:right}footer#page-footer .footer-flex .footer-flex-item:last-child{text-align:left}footer#page-footer .footer-flex .footer-flex-item:first-child{text-align:right}@media (max-width:640px){footer#page-footer .footer-flex .footer-flex-item:first-child,footer#page-footer .footer-flex .footer-flex-item:last-child{text-align:center}}
/*# sourceMappingURL=rtl.css.map */

View File

@ -0,0 +1 @@
{"version":3,"sources":["rtl.scss"],"names":[],"mappings":"AAAA,2CAEG,WAAY,KAQf,gCAVA,gDAMM,WAAY,MAIlB,qDAAA,wDAMM,MAAO,MASb,kBAEG,WAAY,KAGf,6CAEG,WAAY,MAGf,6DAKM,WAAY,KALlB,8DAUM,WAAY,MAIlB,yBAEG,8DAAA,6DAIM,WAAY","file":"rtl.css","sourcesContent":["nav#page-navigation #page-navigation-links\r\n{\r\n text-align: left;\r\n\r\n > li > a\r\n {\r\n text-align: right;\r\n }\r\n}\r\n\r\n.dropdown-parent .dropdown-menu\r\n{\r\n text-align: right;\r\n\r\n .dropdown-menu-block\r\n {\r\n float: right;\r\n\r\n li\r\n {\r\n float: right;\r\n }\r\n }\r\n}\r\n\r\n.form-group label\r\n{\r\n text-align: left;\r\n}\r\n\r\narticle .build-group-listing .build-group h3\r\n{\r\n text-align: right;\r\n}\r\n\r\nfooter#page-footer .footer-flex .footer-flex-item\r\n{\r\n\r\n &:last-child\r\n {\r\n text-align: left;\r\n }\r\n\r\n &:first-child\r\n {\r\n text-align: right;\r\n }\r\n}\r\n\r\n@media (max-width: 640px)\r\n{\r\n footer#page-footer .footer-flex .footer-flex-item\r\n {\r\n &:first-child\r\n {\r\n text-align: center;\r\n }\r\n\r\n &:last-child\r\n {\r\n text-align: center;\r\n }\r\n }\r\n}\r\n"]}

View File

@ -1 +0,0 @@
nav#page-navigation #page-navigation-links{text-align:left;}nav#page-navigation #page-navigation-links>li>a{text-align:right;}.dropdown-parent .dropdown-menu{text-align:right;}.dropdown-parent .dropdown-menu .dropdown-menu-block{float:right;}.dropdown-parent .dropdown-menu .dropdown-menu-block li{float:right;}.form-group label{text-align:left;}article .build-group-listing .build-group h3{text-align:right;}footer#page-footer .footer-flex .footer-flex-item:last-child{text-align:left;}footer#page-footer .footer-flex .footer-flex-item:first-child{text-align:right;}@media(max-width:640px){footer#page-footer .footer-flex .footer-flex-item:first-child{text-align:center;}footer#page-footer .footer-flex .footer-flex-item:last-child{text-align:center;}}

View File

@ -1,44 +1,42 @@
/// <reference path="../../scripts/typings/google.analytics/ga.d.ts" />
/// <reference path="../../scripts/typings/jsrender/jsrender.d.ts" />
var BuildFeed;
(function (BuildFeed) {
var ajax;
var timeout;
let ajax;
let timeout;
function MobileMenuToggle(ev) {
ev.preventDefault();
var button = this;
const button = this;
button.nextElementSibling.classList.toggle("open");
}
BuildFeed.MobileMenuToggle = MobileMenuToggle;
function DropdownClick(ev) {
ev.preventDefault();
var link = this;
const link = this;
link.parentElement.classList.toggle("open");
}
BuildFeed.DropdownClick = DropdownClick;
function SwitchTheme(ev) {
ev.preventDefault();
var link = this;
document.cookie = "bf_theme=" + link.dataset["theme"] + "; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/";
const link = this;
document.cookie = `bf_theme=${link.dataset["theme"]}; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/`;
location.reload(true);
}
BuildFeed.SwitchTheme = SwitchTheme;
function SwitchLanguage(ev) {
ev.preventDefault();
var link = this;
document.cookie = "bf_lang=" + link.dataset["lang"] + "; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/";
const link = this;
document.cookie = `bf_lang=${link.dataset["lang"]}; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/`;
location.reload(true);
}
BuildFeed.SwitchLanguage = SwitchLanguage;
function OpenSearch(ev) {
ev.preventDefault();
var modal = document.getElementById("modal-search-overlay");
const modal = document.getElementById("modal-search-overlay");
modal.classList.add("open");
}
BuildFeed.OpenSearch = OpenSearch;
function CloseSearch(ev) {
ev.preventDefault();
var modal = document.getElementById("modal-search-overlay");
const modal = document.getElementById("modal-search-overlay");
modal.classList.remove("open");
}
BuildFeed.CloseSearch = CloseSearch;
@ -48,7 +46,7 @@ var BuildFeed;
}
BuildFeed.StopClick = StopClick;
function InitiateSearch(ev) {
var resultPane = document.getElementById("modal-search-result");
const resultPane = document.getElementById("modal-search-result");
resultPane.innerHTML = "";
if (typeof (timeout) !== "undefined") {
clearTimeout(timeout);
@ -63,10 +61,10 @@ var BuildFeed;
if (typeof (timeout) !== "undefined") {
clearTimeout(timeout);
}
var modalInput = document.getElementById("modal-search-input");
const modalInput = document.getElementById("modal-search-input");
ajax = new XMLHttpRequest();
ajax.onreadystatechange = CompleteSearch;
ajax.open("GET", "/api/GetSearchResult/" + modalInput.value + "/", true);
ajax.open("GET", `/api/GetSearchResult/${modalInput.value}/`, true);
ajax.setRequestHeader("accept", "application/json");
ajax.send(null);
}
@ -75,49 +73,49 @@ var BuildFeed;
if (ajax.readyState !== XMLHttpRequest.DONE || ajax.status !== 200) {
return;
}
var resultPane = document.getElementById("modal-search-result");
var templateContent = document.getElementById("result-template");
var template = jsrender.templates(templateContent.innerHTML);
var content = template.render(JSON.parse(ajax.responseText));
const resultPane = document.getElementById("modal-search-result");
const templateContent = document.getElementById("result-template");
const template = jsrender.templates(templateContent.innerHTML);
const content = template.render(JSON.parse(ajax.responseText));
resultPane.innerHTML = content;
var resultLinks = resultPane.getElementsByTagName("a");
for (var i = 0; i < resultLinks.length; i++) {
resultLinks[i].addEventListener("click", function (mev) {
const resultLinks = resultPane.getElementsByTagName("a");
for (let i = 0; i < resultLinks.length; i++) {
resultLinks[i].addEventListener("click", (mev) => {
mev.preventDefault();
var modalInput = document.getElementById("modal-search-input");
ga("send", "pageview", "/api/GetSearchResult/" + modalInput.value + "/");
const modalInput = document.getElementById("modal-search-input");
ga("send", "pageview", `/api/GetSearchResult/${modalInput.value}/`);
location.assign(mev.currentTarget.href);
});
}
}
BuildFeed.CompleteSearch = CompleteSearch;
function BuildFeedSetup(ev) {
var ddParents = document.getElementsByClassName("dropdown-parent");
for (var i = 0; i < ddParents.length; i++) {
for (var j = 0; j < ddParents[i].childNodes.length; j++) {
var el = ddParents[i].childNodes[j];
const ddParents = document.getElementsByClassName("dropdown-parent");
for (let i = 0; i < ddParents.length; i++) {
for (let j = 0; j < ddParents[i].childNodes.length; j++) {
const el = ddParents[i].childNodes[j];
if (el.nodeName === "A") {
el.addEventListener("click", DropdownClick);
}
}
}
var ddThemes = document.getElementById("settings-theme-menu").getElementsByTagName("a");
for (var i = 0; i < ddThemes.length; i++) {
const ddThemes = document.getElementById("settings-theme-menu").getElementsByTagName("a");
for (let i = 0; i < ddThemes.length; i++) {
ddThemes[i].addEventListener("click", SwitchTheme);
}
var ddLangs = document.getElementById("settings-lang-menu").getElementsByTagName("a");
for (var i = 0; i < ddLangs.length; i++) {
const ddLangs = document.getElementById("settings-lang-menu").getElementsByTagName("a");
for (let i = 0; i < ddLangs.length; i++) {
ddLangs[i].addEventListener("click", SwitchLanguage);
}
var btnNav = document.getElementById("page-navigation-toggle");
const btnNav = document.getElementById("page-navigation-toggle");
btnNav.addEventListener("click", MobileMenuToggle);
var btnSearch = document.getElementById("page-navigation-search");
const btnSearch = document.getElementById("page-navigation-search");
btnSearch.addEventListener("click", OpenSearch);
var modalOverlay = document.getElementById("modal-search-overlay");
const modalOverlay = document.getElementById("modal-search-overlay");
modalOverlay.addEventListener("click", CloseSearch);
var modalDialog = document.getElementById("modal-search");
const modalDialog = document.getElementById("modal-search");
modalDialog.addEventListener("click", StopClick);
var modalInput = document.getElementById("modal-search-input");
const modalInput = document.getElementById("modal-search-input");
modalInput.addEventListener("keyup", InitiateSearch);
}
BuildFeed.BuildFeedSetup = BuildFeedSetup;

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
var BuildFeed;(function(n){function r(n){n.preventDefault();var t=this;t.nextElementSibling.classList.toggle("open")}function u(n){n.preventDefault();var t=this;t.parentElement.classList.toggle("open")}function f(n){n.preventDefault();var t=this;document.cookie="bf_theme="+t.dataset.theme+"; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/";location.reload(!0)}function e(n){n.preventDefault();var t=this;document.cookie="bf_lang="+t.dataset.lang+"; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/";location.reload(!0)}function o(n){n.preventDefault();var t=document.getElementById("modal-search-overlay");t.classList.add("open")}function s(n){n.preventDefault();var t=document.getElementById("modal-search-overlay");t.classList.remove("open")}function h(n){n.preventDefault();n.stopPropagation()}function c(){var n=document.getElementById("modal-search-result");n.innerHTML="";typeof i!="undefined"&&clearTimeout(i);typeof t!="undefined"&&t.readyState!==XMLHttpRequest.DONE&&t.abort();i=setInterval(l,200)}function l(){typeof i!="undefined"&&clearTimeout(i);var n=document.getElementById("modal-search-input");t=new XMLHttpRequest;t.onreadystatechange=a;t.open("GET","/api/GetSearchResult/"+n.value+"/",!0);t.setRequestHeader("accept","application/json");t.send(null)}function a(){var i,n;if(t.readyState===XMLHttpRequest.DONE&&t.status===200){var r=document.getElementById("modal-search-result"),u=document.getElementById("result-template"),f=jsrender.templates(u.innerHTML),e=f.render(JSON.parse(t.responseText));for(r.innerHTML=e,i=r.getElementsByTagName("a"),n=0;n<i.length;n++)i[n].addEventListener("click",function(n){n.preventDefault();var t=document.getElementById("modal-search-input");ga("send","pageview","/api/GetSearchResult/"+t.value+"/");location.assign(n.currentTarget.href)})}}function v(){for(var t,l,a,v,y,p,w,b,k,i=document.getElementsByClassName("dropdown-parent"),n=0;n<i.length;n++)for(t=0;t<i[n].childNodes.length;t++)l=i[n].childNodes[t],l.nodeName==="A"&&l.addEventListener("click",u);for(a=document.getElementById("settings-theme-menu").getElementsByTagName("a"),n=0;n<a.length;n++)a[n].addEventListener("click",f);for(v=document.getElementById("settings-lang-menu").getElementsByTagName("a"),n=0;n<v.length;n++)v[n].addEventListener("click",e);y=document.getElementById("page-navigation-toggle");y.addEventListener("click",r);p=document.getElementById("page-navigation-search");p.addEventListener("click",o);w=document.getElementById("modal-search-overlay");w.addEventListener("click",s);b=document.getElementById("modal-search");b.addEventListener("click",h);k=document.getElementById("modal-search-input");k.addEventListener("keyup",c)}var t,i;n.MobileMenuToggle=r;n.DropdownClick=u;n.SwitchTheme=f;n.SwitchLanguage=e;n.OpenSearch=o;n.CloseSearch=s;n.StopClick=h;n.InitiateSearch=c;n.SendSearch=l;n.CompleteSearch=a;n.BuildFeedSetup=v})(BuildFeed||(BuildFeed={}));window.addEventListener("load",BuildFeed.BuildFeedSetup);
var BuildFeed;(function(n){function r(n){n.preventDefault();const t=this;t.nextElementSibling.classList.toggle("open")}function u(n){n.preventDefault();const t=this;t.parentElement.classList.toggle("open")}function f(n){n.preventDefault();const t=this;document.cookie=`bf_theme=${t.dataset.theme}; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/`;location.reload(!0)}function e(n){n.preventDefault();const t=this;document.cookie=`bf_lang=${t.dataset.lang}; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/`;location.reload(!0)}function o(n){n.preventDefault();const t=document.getElementById("modal-search-overlay");t.classList.add("open")}function s(n){n.preventDefault();const t=document.getElementById("modal-search-overlay");t.classList.remove("open")}function h(n){n.preventDefault();n.stopPropagation()}function c(){const n=document.getElementById("modal-search-result");n.innerHTML="";typeof i!="undefined"&&clearTimeout(i);typeof t!="undefined"&&t.readyState!==XMLHttpRequest.DONE&&t.abort();i=setInterval(l,200)}function l(){typeof i!="undefined"&&clearTimeout(i);const n=document.getElementById("modal-search-input");t=new XMLHttpRequest;t.onreadystatechange=a;t.open("GET",`/api/GetSearchResult/${n.value}/`,!0);t.setRequestHeader("accept","application/json");t.send(null)}function a(){if(t.readyState===XMLHttpRequest.DONE&&t.status===200){const n=document.getElementById("modal-search-result"),r=document.getElementById("result-template"),u=jsrender.templates(r.innerHTML),f=u.render(JSON.parse(t.responseText));n.innerHTML=f;const i=n.getElementsByTagName("a");for(let n=0;n<i.length;n++)i[n].addEventListener("click",n=>{n.preventDefault();const t=document.getElementById("modal-search-input");ga("send","pageview",`/api/GetSearchResult/${t.value}/`);location.assign(n.currentTarget.href)})}}function v(){const n=document.getElementsByClassName("dropdown-parent");for(let t=0;t<n.length;t++)for(let i=0;i<n[t].childNodes.length;i++){const r=n[t].childNodes[i];r.nodeName==="A"&&r.addEventListener("click",u)}const t=document.getElementById("settings-theme-menu").getElementsByTagName("a");for(let n=0;n<t.length;n++)t[n].addEventListener("click",f);const i=document.getElementById("settings-lang-menu").getElementsByTagName("a");for(let n=0;n<i.length;n++)i[n].addEventListener("click",e);const l=document.getElementById("page-navigation-toggle");l.addEventListener("click",r);const a=document.getElementById("page-navigation-search");a.addEventListener("click",o);const v=document.getElementById("modal-search-overlay");v.addEventListener("click",s);const y=document.getElementById("modal-search");y.addEventListener("click",h);const p=document.getElementById("modal-search-input");p.addEventListener("keyup",c)}let t,i;n.MobileMenuToggle=r;n.DropdownClick=u;n.SwitchTheme=f;n.SwitchLanguage=e;n.OpenSearch=o;n.CloseSearch=s;n.StopClick=h;n.InitiateSearch=c;n.SendSearch=l;n.CompleteSearch=a;n.BuildFeedSetup=v})(BuildFeed||(BuildFeed={}));window.addEventListener("load",BuildFeed.BuildFeedSetup);

View File

@ -22,7 +22,8 @@ module BuildFeed
link.parentElement.classList.toggle("open");
}
export function SwitchTheme(ev: MouseEvent) {
export function SwitchTheme(ev: MouseEvent)
{
ev.preventDefault();
const link = this as HTMLAnchorElement;
@ -138,7 +139,8 @@ module BuildFeed
}
const ddThemes = document.getElementById("settings-theme-menu").getElementsByTagName("a");
for (let i = 0; i < ddThemes.length; i++) {
for (let i = 0; i < ddThemes.length; i++)
{
ddThemes[i].addEventListener("click", SwitchTheme);
}