mirror of
https://gitlab.com/buildfeed/BuildFeed.git
synced 2024-03-22 21:10:34 +08:00
Lotsafixes, return of the search
That'll be #8 wrapped up, plus some more of #7
This commit is contained in:
parent
75c71432a4
commit
70130aace3
@ -14,6 +14,12 @@ namespace BuildFeed
|
||||
{
|
||||
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
|
||||
|
||||
routes.MapHttpRoute(
|
||||
name: "API",
|
||||
routeTemplate: "api/{action}/{id}",
|
||||
defaults: new { controller = "api", action = "GetBuilds", id = UrlParameter.Optional }
|
||||
);
|
||||
|
||||
routes.AppendTrailingSlash = true;
|
||||
|
||||
routes.MapMvcAttributeRoutes();
|
||||
|
@ -22,7 +22,8 @@
|
||||
<IISExpressWindowsAuthentication />
|
||||
<IISExpressUseClassicPipelineMode />
|
||||
<ApplicationInsightsResourceId>/subscriptions/4af45631-0e5c-4253-9e38-d0c47f9c5b32/resourcegroups/Default-ApplicationInsights-CentralUS/providers/microsoft.insights/components/BuildFeed</ApplicationInsightsResourceId>
|
||||
<NuGetPackageImportStamp>ae3e548a</NuGetPackageImportStamp>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
<TypeScriptToolsVersion>1.4</TypeScriptToolsVersion>
|
||||
<UseGlobalApplicationHostFile />
|
||||
<TargetFrameworkProfile />
|
||||
@ -54,7 +55,31 @@
|
||||
<HintPath>..\packages\Humanizer.1.36.0\lib\portable-win+net40+sl50+wp8+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Humanizer.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.ApplicationInsights, Version=0.17.0.576, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.ApplicationInsights.0.17.0\lib\net45\Microsoft.ApplicationInsights.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.ApplicationInsights.Extensibility.PerfCollector, Version=0.17.0.587, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.ApplicationInsights.PerfCounterCollector.0.17.0\lib\net45\Microsoft.ApplicationInsights.Extensibility.PerfCollector.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry, Version=0.17.0.582, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.ApplicationInsights.DependencyCollector.0.17.0\lib\net45\Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.ApplicationInsights.Extensibility.Web, Version=0.17.0.582, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.ApplicationInsights.Web.0.17.0\lib\net45\Microsoft.ApplicationInsights.Extensibility.Web.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.ApplicationInsights.Web.TelemetryChannel, Version=0.17.0.582, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.ApplicationInsights.Web.TelemetryChannel.0.17.0\lib\net45\Microsoft.ApplicationInsights.Web.TelemetryChannel.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="Microsoft.Diagnostics.Instrumentation.Extensions.Intercept, Version=0.17.0.194, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.ApplicationInsights.Agent.Intercept.0.17.0\lib\net45\Microsoft.Diagnostics.Instrumentation.Extensions.Intercept.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Threading.Tasks">
|
||||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
|
||||
</Reference>
|
||||
@ -207,7 +232,9 @@
|
||||
<Content Include="content\tile\wide.png" />
|
||||
<Content Include="content\Web.config" />
|
||||
<Content Include="Areas\admin\Views\base\index.cshtml" />
|
||||
<Content Include="ApplicationInsights.config" />
|
||||
<Content Include="ApplicationInsights.config">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<Content Include="Areas\admin\Views\users\admins.cshtml" />
|
||||
<Content Include="Areas\admin\Views\meta\index.cshtml" />
|
||||
<Content Include="Areas\admin\Views\meta\create.cshtml" />
|
||||
@ -374,7 +401,9 @@
|
||||
<Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Microsoft.Diagnostics.Instrumentation.Extensions.Intercept.0.13.0-build22724\build\Microsoft.Diagnostics.Instrumentation.Extensions.Intercept.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Diagnostics.Instrumentation.Extensions.Intercept.0.13.0-build22724\build\Microsoft.Diagnostics.Instrumentation.Extensions.Intercept.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.20-beta\build\portable-net45+win8+wpa81\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.20-beta\build\portable-net45+win8+wpa81\Microsoft.Diagnostics.Tracing.EventSource.Redist.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Microsoft.ApplicationInsights.Agent.Intercept.0.17.0\build\Microsoft.ApplicationInsights.Agent.Intercept.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.ApplicationInsights.Agent.Intercept.0.17.0\build\Microsoft.ApplicationInsights.Agent.Intercept.targets'))" />
|
||||
</Target>
|
||||
<Import Project="..\packages\Microsoft.ApplicationInsights.Agent.Intercept.0.17.0\build\Microsoft.ApplicationInsights.Agent.Intercept.targets" Condition="Exists('..\packages\Microsoft.ApplicationInsights.Agent.Intercept.0.17.0\build\Microsoft.ApplicationInsights.Agent.Intercept.targets')" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
|
@ -67,7 +67,7 @@ namespace BuildFeed.Controllers
|
||||
orderby s.Text.ToLower().IndexOf(query.ToLower()) ascending
|
||||
select new SearchResult()
|
||||
{
|
||||
Url = Url.Route("Source Root", new { controller = "build", action = "source", source = s.Value }),
|
||||
Url = Url.Route("Source Root", new { controller = "front", action = "viewSource", source = s.Value }),
|
||||
Label = s.Text.Replace(query, "<strong>" + query + "</strong>"),
|
||||
Title = s.Text,
|
||||
Group = "Source"
|
||||
@ -81,7 +81,7 @@ namespace BuildFeed.Controllers
|
||||
orderby v.Major descending, v.Minor descending
|
||||
select new SearchResult()
|
||||
{
|
||||
Url = Url.Route("Version Root", new { controller = "build", action = "version", major = v.Major, minor = v.Minor }),
|
||||
Url = Url.Route("Version Root", new { controller = "front", action = "viewVersion", major = v.Major, minor = v.Minor }),
|
||||
Label = string.Format("{0}.{1}", v.Major, v.Minor).Replace(query, "<strong>" + query + "</strong>"),
|
||||
Title = "",
|
||||
Group = "Version"
|
||||
@ -95,7 +95,7 @@ namespace BuildFeed.Controllers
|
||||
orderby y descending
|
||||
select new SearchResult()
|
||||
{
|
||||
Url = Url.Route("Year Root", new { controller = "build", action = "year", year = y }),
|
||||
Url = Url.Route("Year Root", new { controller = "front", action = "viewYear", year = y }),
|
||||
Label = y.ToString().Replace(query, "<strong>" + query + "</strong>"),
|
||||
Title = "",
|
||||
Group = "Year"
|
||||
@ -109,7 +109,7 @@ namespace BuildFeed.Controllers
|
||||
orderby l.ToLower().IndexOf(query.ToLower()) ascending
|
||||
select new SearchResult()
|
||||
{
|
||||
Url = Url.Route("Lab Root", new { controller = "build", action = "lab", lab = l }),
|
||||
Url = Url.Route("Lab Root", new { controller = "front", action = "viewLab", lab = l }),
|
||||
Label = l.Replace(query, "<strong>" + query + "</strong>"),
|
||||
Title = l,
|
||||
Group = "Lab"
|
||||
@ -124,7 +124,7 @@ namespace BuildFeed.Controllers
|
||||
b.BuildTime descending
|
||||
select new SearchResult()
|
||||
{
|
||||
Url = Url.Route("Actions", new { controller = "build", action = "info", id = b.Id }),
|
||||
Url = Url.Route("Build", new { controller = "front", action = "viewBuild", id = b.Id }),
|
||||
Label = b.FullBuildString.Replace(query, "<strong>" + query + "</strong>"),
|
||||
Title = b.FullBuildString,
|
||||
Group = "Build"
|
||||
@ -143,7 +143,7 @@ namespace BuildFeed.Controllers
|
||||
});
|
||||
}
|
||||
|
||||
return results.Take(6);
|
||||
return results.Take(15);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ namespace BuildFeed.Controllers
|
||||
|
||||
[Route("", Order = 1)]
|
||||
#if !DEBUG
|
||||
[OutputCache(Duration = 600, VaryByParam = "none")]
|
||||
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName")]
|
||||
#endif
|
||||
public ActionResult index()
|
||||
{
|
||||
@ -24,7 +24,7 @@ namespace BuildFeed.Controllers
|
||||
|
||||
[Route("page-{page:int:min(2)}/", Order = 0)]
|
||||
#if !DEBUG
|
||||
[OutputCache(Duration = 600, VaryByParam = "page")]
|
||||
[OutputCache(Duration = 600, VaryByParam = "page", VaryByCustom = "userName")]
|
||||
#endif
|
||||
public ActionResult indexPage(int page)
|
||||
{
|
||||
@ -55,7 +55,7 @@ namespace BuildFeed.Controllers
|
||||
|
||||
[Route("group/{major}.{minor}.{number}.{revision}/")]
|
||||
#if !DEBUG
|
||||
[OutputCache(Duration = 600, VaryByParam = "none")]
|
||||
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName")]
|
||||
#endif
|
||||
public ActionResult viewGroup(byte major, byte minor, ushort number, ushort? revision = null)
|
||||
{
|
||||
@ -78,9 +78,9 @@ namespace BuildFeed.Controllers
|
||||
View(builds);
|
||||
}
|
||||
|
||||
[Route("build/{id}/")]
|
||||
[Route("build/{id}/", Name = "Build")]
|
||||
#if !DEBUG
|
||||
[OutputCache(Duration = 600, VaryByParam = "none")]
|
||||
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName")]
|
||||
#endif
|
||||
public ActionResult viewBuild(long id)
|
||||
{
|
||||
@ -88,9 +88,9 @@ namespace BuildFeed.Controllers
|
||||
return View(b);
|
||||
}
|
||||
|
||||
[Route("lab/{lab}/", Order = 1)]
|
||||
[Route("lab/{lab}/", Order = 1, Name = "Lab Root")]
|
||||
#if !DEBUG
|
||||
[OutputCache(Duration = 600, VaryByParam = "none")]
|
||||
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName")]
|
||||
#endif
|
||||
public ActionResult viewLab(string lab)
|
||||
{
|
||||
@ -99,7 +99,7 @@ namespace BuildFeed.Controllers
|
||||
|
||||
[Route("lab/{lab}/page-{page:int:min(2)}/", Order = 0)]
|
||||
#if !DEBUG
|
||||
[OutputCache(Duration = 600, VaryByParam = "page")]
|
||||
[OutputCache(Duration = 600, VaryByParam = "page", VaryByCustom = "userName")]
|
||||
#endif
|
||||
public ActionResult viewLabPage(string lab, int page)
|
||||
{
|
||||
@ -114,9 +114,9 @@ namespace BuildFeed.Controllers
|
||||
return View("viewLab", builds.Skip((page - 1) * _pageSize).Take(_pageSize));
|
||||
}
|
||||
|
||||
[Route("source/{source}/", Order = 1)]
|
||||
[Route("source/{source}/", Order = 1, Name = "Source Root")]
|
||||
#if !DEBUG
|
||||
[OutputCache(Duration = 600, VaryByParam = "none")]
|
||||
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName")]
|
||||
#endif
|
||||
public ActionResult viewSource(TypeOfSource source)
|
||||
{
|
||||
@ -125,7 +125,7 @@ namespace BuildFeed.Controllers
|
||||
|
||||
[Route("source/{source}/page-{page:int:min(2)}/", Order = 0)]
|
||||
#if !DEBUG
|
||||
[OutputCache(Duration = 600, VaryByParam = "page")]
|
||||
[OutputCache(Duration = 600, VaryByParam = "page", VaryByCustom = "userName")]
|
||||
#endif
|
||||
public ActionResult viewSourcePage(TypeOfSource source, int page)
|
||||
{
|
||||
@ -140,9 +140,9 @@ namespace BuildFeed.Controllers
|
||||
return View("viewSource", builds.Skip((page - 1) * _pageSize).Take(_pageSize));
|
||||
}
|
||||
|
||||
[Route("year/{year}/", Order = 1)]
|
||||
[Route("year/{year}/", Order = 1, Name = "Year Root")]
|
||||
#if !DEBUG
|
||||
[OutputCache(Duration = 600, VaryByParam = "none")]
|
||||
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName")]
|
||||
#endif
|
||||
public ActionResult viewYear(int year)
|
||||
{
|
||||
@ -151,7 +151,7 @@ namespace BuildFeed.Controllers
|
||||
|
||||
[Route("year/{year}/page-{page:int:min(2)}/", Order = 0)]
|
||||
#if !DEBUG
|
||||
[OutputCache(Duration = 600, VaryByParam = "page")]
|
||||
[OutputCache(Duration = 600, VaryByParam = "page", VaryByCustom = "userName")]
|
||||
#endif
|
||||
public ActionResult viewYearPage(int year, int page)
|
||||
{
|
||||
@ -166,11 +166,20 @@ namespace BuildFeed.Controllers
|
||||
return View("viewYear", builds.Skip((page - 1) * _pageSize).Take(_pageSize));
|
||||
}
|
||||
|
||||
[Route("version/{major}.{minor}/")]
|
||||
[Route("version/{major}.{minor}/", Order = 1, Name = "Version Root")]
|
||||
#if !DEBUG
|
||||
[OutputCache(Duration = 600, VaryByParam = "none")]
|
||||
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName")]
|
||||
#endif
|
||||
public ActionResult viewVersion(int major, int minor)
|
||||
{
|
||||
return viewVersionPage(major, minor, 1);
|
||||
}
|
||||
|
||||
[Route("version/{major}.{minor}/", Order = 0)]
|
||||
#if !DEBUG
|
||||
[OutputCache(Duration = 600, VaryByParam = "none", VaryByCustom = "userName")]
|
||||
#endif
|
||||
public ActionResult viewVersionPage(int major, int minor, int page)
|
||||
{
|
||||
string valueString = string.Format("{0}.{1}", major, minor);
|
||||
ViewBag.MetaItem = MetaItem.SelectById(new MetaItemKey() { Type = MetaType.Version, Value = valueString });
|
||||
|
@ -131,9 +131,9 @@ namespace BuildFeed.Controllers
|
||||
}
|
||||
|
||||
[Route("sitemap/")]
|
||||
#if !DEBUG
|
||||
[OutputCache(Duration = 3600, VaryByParam = "none")]
|
||||
#endif
|
||||
#if !DEBUG
|
||||
[OutputCache(Duration = 3600, VaryByParam = "none", VaryByCustom = "userName")]
|
||||
#endif
|
||||
public ActionResult sitemap()
|
||||
{
|
||||
IEnumerable<Build> builds = Build.SelectInVersionOrder();
|
||||
@ -158,8 +158,8 @@ namespace BuildFeed.Controllers
|
||||
Name = string.Format("Windows NT {0}.{1}", bv.Key.Major, bv.Key.Minor),
|
||||
UrlParams = new RouteValueDictionary(new
|
||||
{
|
||||
controller = "build",
|
||||
action = "version",
|
||||
controller = "front",
|
||||
action = "viewVersion",
|
||||
major = bv.Key.Major,
|
||||
minor = bv.Key.Minor,
|
||||
page = 1
|
||||
@ -176,8 +176,8 @@ namespace BuildFeed.Controllers
|
||||
Name = bv.Key,
|
||||
UrlParams = new RouteValueDictionary(new
|
||||
{
|
||||
controller = "build",
|
||||
action = "lab",
|
||||
controller = "front",
|
||||
action = "viewLab",
|
||||
lab = bv.Key,
|
||||
page = 1
|
||||
}),
|
||||
@ -193,8 +193,8 @@ namespace BuildFeed.Controllers
|
||||
Name = bv.Key.ToString(),
|
||||
UrlParams = new RouteValueDictionary(new
|
||||
{
|
||||
controller = "build",
|
||||
action = "year",
|
||||
controller = "front",
|
||||
action = "viewYear",
|
||||
year = bv.Key,
|
||||
page = 1
|
||||
}),
|
||||
@ -209,8 +209,8 @@ namespace BuildFeed.Controllers
|
||||
Name = DisplayHelpers.GetDisplayTextForEnum(bv.Key),
|
||||
UrlParams = new RouteValueDictionary(new
|
||||
{
|
||||
controller = "build",
|
||||
action = "source",
|
||||
controller = "front",
|
||||
action = "viewSource",
|
||||
source = bv.Key,
|
||||
page = 1
|
||||
}),
|
||||
@ -226,16 +226,19 @@ namespace BuildFeed.Controllers
|
||||
Name = b.FullBuildString
|
||||
}).ToArray(),
|
||||
|
||||
Actions = actions
|
||||
Actions = actions,
|
||||
Labs = (from b in builds
|
||||
group b by b.Lab into lab
|
||||
select lab.Key).ToArray()
|
||||
};
|
||||
|
||||
return View(model);
|
||||
}
|
||||
|
||||
[Route("xml-sitemap/")]
|
||||
#if !DEBUG
|
||||
[OutputCache(Duration = 3600, VaryByParam = "none")]
|
||||
#endif
|
||||
#if !DEBUG
|
||||
[OutputCache(Duration = 3600, VaryByParam = "none", VaryByCustom = "userName")]
|
||||
#endif
|
||||
public ActionResult xmlsitemap()
|
||||
{
|
||||
XNamespace xn = XNamespace.Get("http://www.sitemaps.org/schemas/sitemap/0.9");
|
||||
@ -271,9 +274,9 @@ namespace BuildFeed.Controllers
|
||||
}
|
||||
|
||||
[Route("statistics/")]
|
||||
#if !DEBUG
|
||||
[OutputCache(Duration = 3600, VaryByParam = "none")]
|
||||
#endif
|
||||
#if !DEBUG
|
||||
[OutputCache(Duration = 3600, VaryByParam = "none", VaryByCustom = "userName")]
|
||||
#endif
|
||||
public ActionResult stats()
|
||||
{
|
||||
var builds = Build.Select();
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Optimization;
|
||||
using System.Web.Routing;
|
||||
@ -19,5 +20,16 @@ namespace BuildFeed
|
||||
ModelBinders.Binders.Add(typeof(DateTime), db);
|
||||
ModelBinders.Binders.Add(typeof(DateTime?), db);
|
||||
}
|
||||
|
||||
public override string GetVaryByCustomString(HttpContext context, string custom)
|
||||
{
|
||||
switch(custom)
|
||||
{
|
||||
case "userName":
|
||||
return context.User.Identity.Name.ToLower();
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,6 +10,8 @@ namespace BuildFeed.Models.ViewModel
|
||||
{
|
||||
public SitemapDataBuild[] Builds { get; set; }
|
||||
public Dictionary<string, SitemapPagedAction[]> Actions { get; set; }
|
||||
|
||||
public string[] Labs { get; set; }
|
||||
}
|
||||
|
||||
public class SitemapDataBuild
|
||||
|
@ -2,6 +2,10 @@
|
||||
var bfsTimeout;
|
||||
|
||||
$(function () {
|
||||
$("#page-navigation-search").click(function (event) {
|
||||
event.preventDefault();
|
||||
$("#search-modal").modal('show');
|
||||
});
|
||||
$("#search-input").keyup(function () {
|
||||
var search = $(this);
|
||||
$(this).parent().find(".list-group").remove();
|
||||
@ -24,7 +28,7 @@ $(function () {
|
||||
var item = template.render(data);
|
||||
content.append(item);
|
||||
|
||||
search.after(content);
|
||||
$("#search-results").html(content);
|
||||
|
||||
$(".panel-search a.list-group-item").click(function () {
|
||||
ga('send', 'pageview', '/api/GetSearchResult/?query=' + $("#search-input").val());
|
||||
|
@ -59,6 +59,7 @@
|
||||
{
|
||||
<li><a href="@Url.Action("logout", new { controller = "support", area = "" }) " title="Log out"><i class="fa fa-user"></i> Log out</a></li>
|
||||
}
|
||||
<li><a href="#" title="Search" id="page-navigation-search"><i class="fa fa-search"></i> Search</a></li>
|
||||
<li><a href="@Url.Action("stats", new { controller = "support", area = "" }) " title="Statistics"><i class="fa fa-line-chart"></i> Statistics</a></li>
|
||||
<li><a href="@Url.Action("rss", new { controller = "support", area = "" })" title="RSS Feeds"><i class="fa fa-rss"></i> RSS Feeds</a></li>
|
||||
<li><a href="https://twitter.com/buildfeed" title="Twitter" target="_blank"><i class="fa fa-twitter"></i> Twitter</a></li>
|
||||
@ -83,14 +84,46 @@
|
||||
<div class="col-sm-4 text-right">
|
||||
<p>
|
||||
© 2013 - @DateTime.Now.Year.ToString(), BuildFeed<br />
|
||||
Developed by <a href="https://twitter.com/tomhounsell" target="_blank">Thomas Hounsell</a>
|
||||
Developed by <a href="https://twitter.com/tomhounsell" target="_blank">Thomas Hounsell</a><br />
|
||||
Contribute on <a href="https://github.com/hounsell/BuildFeed" target="_blank">GitHub</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
<div class="modal fade" id="search-modal" tabindex="-1" role="dialog" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<h4 class="modal-title">Search BuildFeed...</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-sm-6 col-sm-offset-3">
|
||||
@Html.Label("search-input", "Search query", new { @class = "sr-only" })
|
||||
@Html.TextBox("search-input", "", new { @class = "form-control", placeholder = "type to search..." })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" id="search-results"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@Scripts.Render("~/bundles/jquery")
|
||||
<script type="text/javascript" src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
|
||||
@Scripts.Render("~/bundles/jsrender")
|
||||
<script type="text/javascript" src="~/Scripts/bfs.js"></script>
|
||||
@RenderSection("scripts", required: false)
|
||||
<script id="result-template" type="text/x-jsrender">
|
||||
<div class="col-sm-4">
|
||||
<a href="{{:Url}}" class="list-group-item" title="{{:Title}}">
|
||||
<h4 class="list-group-item-heading">{{:Label}}</h4>
|
||||
<p class="list-group-item-text">{{:Group}}</p>
|
||||
</a>
|
||||
</div>
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -64,15 +64,11 @@
|
||||
</article>
|
||||
<footer id="page-footer">
|
||||
<div class="row">
|
||||
<div class="col-sm-8">
|
||||
<p>
|
||||
<a href="@Url.Action("sitemap", new { controller = "support" })">Sitemap</a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-sm-4 text-right">
|
||||
<div class="col-sm-offset-8 col-sm-4 text-right">
|
||||
<p>
|
||||
© 2013 - @DateTime.Now.Year.ToString(), BuildFeed<br />
|
||||
Developed by <a href="https://twitter.com/tomhounsell" target="_blank">Thomas Hounsell</a>
|
||||
Developed by <a href="https://twitter.com/tomhounsell" target="_blank">Thomas Hounsell</a><br />
|
||||
Contribute on <a href="https://github.com/hounsell/BuildFeed" target="_blank">GitHub</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -27,11 +27,12 @@
|
||||
{
|
||||
if (string.IsNullOrEmpty(action.Name))
|
||||
{
|
||||
for (int i = 1; i <= action.Pages; i++)
|
||||
<li>@Html.ActionLink("Page 1", action.Action, action.UrlParams)</li>
|
||||
for (int i = 2; i <= action.Pages; i++)
|
||||
{
|
||||
var urlParams = action.UrlParams;
|
||||
urlParams["page"] = i;
|
||||
<li>@Html.ActionLink("Page " + i.ToString(), action.Action, urlParams)</li>
|
||||
<li>@Html.ActionLink("Page " + i.ToString(), action.Action + "Page", urlParams)</li>
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -39,11 +40,12 @@
|
||||
<li>
|
||||
<a href="#sitemap-@action.UniqueId" data-toggle="collapse">@action.Name</a>
|
||||
<ul id="sitemap-@action.UniqueId" class="collapse">
|
||||
@for (int i = 1; i <= action.Pages; i++)
|
||||
<li>@Html.ActionLink("Page 1", action.Action, action.UrlParams)</li>
|
||||
@for (int i = 2; i <= action.Pages; i++)
|
||||
{
|
||||
var urlParams = action.UrlParams;
|
||||
urlParams["page"] = i;
|
||||
<li>@Html.ActionLink("Page " + i.ToString(), action.Action, urlParams)</li>
|
||||
<li>@Html.ActionLink("Page " + i.ToString(), action.Action + "Page", urlParams)</li>
|
||||
}
|
||||
</ul>
|
||||
</li>
|
||||
@ -66,6 +68,15 @@
|
||||
<li><a href="@Url.Action("flight", new { controller = "rss", id = "high" })" title="High flight level"><i class="fa fa-sm fa-rss"></i> High flight level</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#rss-labs" data-toggle="collapse">Labs</a>
|
||||
<ul id="rss-labs" class="collapse">
|
||||
@foreach (string lab in Model.Labs)
|
||||
{
|
||||
<li><a href="@Url.Action("lab", new { controller = "rss", lab = lab })" title="@lab"><i class="fa fa-sm fa-rss"></i> @lab</a></li>
|
||||
}
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -16,8 +16,15 @@
|
||||
-->
|
||||
<system.web>
|
||||
<compilation xdt:Transform="RemoveAttributes(debug)" />
|
||||
<httpModules xdt:Transform="Insert">
|
||||
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Extensibility.Web.RequestTracking.WebRequestTrackingModule, Microsoft.ApplicationInsights.Extensibility.Web" />
|
||||
</httpModules>
|
||||
</system.web>
|
||||
<system.webServer>
|
||||
<modules xdt:Transform="Insert">
|
||||
<remove name="ApplicationInsightsWebTracking" />
|
||||
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Extensibility.Web.RequestTracking.WebRequestTrackingModule, Microsoft.ApplicationInsights.Extensibility.Web" preCondition="managedHandler" />
|
||||
</modules>
|
||||
<rewrite xdt:Transform="Insert">
|
||||
<rules>
|
||||
<rule name="CanonicalHost" stopProcessing="true">
|
||||
|
10
Web.config
10
Web.config
@ -17,14 +17,6 @@
|
||||
<add key="form:QuestionToEmail" value="thomas@buildfeed.net" />
|
||||
<add key="RouteDebugger:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<!--
|
||||
For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367.
|
||||
|
||||
The following attributes can be set on the <httpRuntime> tag.
|
||||
<system.Web>
|
||||
<httpRuntime targetFramework="4.5.2" />
|
||||
</system.Web>
|
||||
-->
|
||||
<system.web>
|
||||
<compilation debug="true" targetFramework="4.5.2" />
|
||||
<httpRuntime targetFramework="4.5" />
|
||||
@ -47,10 +39,8 @@
|
||||
<add name="BuildFeedRoleProvider" type="RedisAuth.RedisRoleProvider,RedisAuth" />
|
||||
</providers>
|
||||
</roleManager>
|
||||
<httpModules />
|
||||
</system.web>
|
||||
<system.webServer>
|
||||
<modules />
|
||||
<urlCompression doDynamicCompression="true" />
|
||||
<validation validateIntegratedModeConfiguration="false" />
|
||||
<handlers>
|
||||
|
@ -100,3 +100,27 @@ label, .control-label, .help-block, .checkbox, .radio
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#search-results
|
||||
{
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
#search-results .list-group-item
|
||||
{
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
#search-results .list-group-item-heading
|
||||
{
|
||||
overflow: hidden;
|
||||
-ms-text-overflow: ellipsis;
|
||||
-o-text-overflow: ellipsis;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
#search-results .list-group-item-heading h4
|
||||
{
|
||||
font-size: 16px;
|
||||
}
|
||||
|
@ -7,6 +7,12 @@
|
||||
<package id="jquery.TypeScript.DefinitelyTyped" version="2.2.4" targetFramework="net45" userInstalled="true" />
|
||||
<package id="jQuery.Validation" version="1.13.1" targetFramework="net45" userInstalled="true" />
|
||||
<package id="jsrender.TypeScript.DefinitelyTyped" version="0.0.3" targetFramework="net45" userInstalled="true" />
|
||||
<package id="Microsoft.ApplicationInsights" version="0.17.0" targetFramework="net452" userInstalled="true" />
|
||||
<package id="Microsoft.ApplicationInsights.Agent.Intercept" version="0.17.0" targetFramework="net452" userInstalled="true" />
|
||||
<package id="Microsoft.ApplicationInsights.DependencyCollector" version="0.17.0" targetFramework="net452" userInstalled="true" />
|
||||
<package id="Microsoft.ApplicationInsights.PerfCounterCollector" version="0.17.0" targetFramework="net452" userInstalled="true" />
|
||||
<package id="Microsoft.ApplicationInsights.Web" version="0.17.0" targetFramework="net452" userInstalled="true" />
|
||||
<package id="Microsoft.ApplicationInsights.Web.TelemetryChannel" version="0.17.0" targetFramework="net452" userInstalled="true" />
|
||||
<package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45" userInstalled="true" />
|
||||
<package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net45" userInstalled="true" />
|
||||
<package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net45" userInstalled="true" />
|
||||
|
Loading…
x
Reference in New Issue
Block a user