mirror of https://github.com/Radarr/Radarr
Ajax Links are all handled by jQuery now, no more MvcAjax handlers.
This commit is contained in:
parent
7a1301610a
commit
4a55d08130
|
@ -14,14 +14,12 @@ namespace NzbDrone.Web.Controllers
|
||||||
_jobProvider = jobProvider;
|
_jobProvider = jobProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
|
||||||
public JsonResult Search(int episodeId)
|
public JsonResult Search(int episodeId)
|
||||||
{
|
{
|
||||||
_jobProvider.QueueJob(typeof(EpisodeSearchJob), episodeId);
|
_jobProvider.QueueJob(typeof(EpisodeSearchJob), episodeId);
|
||||||
return JsonNotificationResult.Info("Queued");
|
return JsonNotificationResult.Info("Queued");
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
|
||||||
public JsonResult SearchSeason(int seriesId, int seasonNumber)
|
public JsonResult SearchSeason(int seriesId, int seasonNumber)
|
||||||
{
|
{
|
||||||
_jobProvider.QueueJob(typeof(SeasonSearchJob), seriesId, seasonNumber);
|
_jobProvider.QueueJob(typeof(SeasonSearchJob), seriesId, seasonNumber);
|
||||||
|
|
|
@ -11,21 +11,6 @@ namespace NzbDrone.Web.Helpers
|
||||||
{
|
{
|
||||||
public static class LinkHelper
|
public static class LinkHelper
|
||||||
{
|
{
|
||||||
public static MvcHtmlString ImageActionLink(this AjaxHelper helper, string imageUrl, object imgAttributes, string actionName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes)
|
|
||||||
{
|
|
||||||
return ImageActionLink(helper, imageUrl, imgAttributes, actionName, null, routeValues, ajaxOptions, htmlAttributes);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static MvcHtmlString ImageActionLink(this AjaxHelper helper, string imageUrl, object imgAttributes, string actionName, string controllerName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes)
|
|
||||||
{
|
|
||||||
var builder = new TagBuilder("img");
|
|
||||||
builder.MergeAttribute("src", imageUrl);
|
|
||||||
var imgAttributesDictionary = new RouteValueDictionary(imgAttributes);
|
|
||||||
builder.MergeAttributes(imgAttributesDictionary);
|
|
||||||
var link = helper.ActionLink("[replaceme]", actionName, controllerName, routeValues, ajaxOptions, htmlAttributes).ToHtmlString();
|
|
||||||
return new MvcHtmlString(link.Replace("[replaceme]", builder.ToString(TagRenderMode.SelfClosing)));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static MvcHtmlString ImageActionLink(this HtmlHelper helper, string imageUrl, object imgAttributes, string actionName, object routeValues, object htmlAttributes)
|
public static MvcHtmlString ImageActionLink(this HtmlHelper helper, string imageUrl, object imgAttributes, string actionName, object routeValues, object htmlAttributes)
|
||||||
{
|
{
|
||||||
return ImageActionLink(helper, imageUrl, imgAttributes, actionName, null, routeValues, htmlAttributes);
|
return ImageActionLink(helper, imageUrl, imgAttributes, actionName, null, routeValues, htmlAttributes);
|
||||||
|
|
|
@ -43,3 +43,20 @@
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//Make .ajaxLink use jQuery Ajax for the request
|
||||||
|
|
||||||
|
$(document).on('click', '.ajaxLink', function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
var onSuccess = $(this).attr('onsuccess');
|
||||||
|
$.ajax({
|
||||||
|
url: this.href,
|
||||||
|
cache: false,
|
||||||
|
success: function () {
|
||||||
|
if (onSuccess) {
|
||||||
|
window[onSuccess]();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
|
@ -1,6 +1,6 @@
|
||||||
/* Click on row, show details */
|
/* Click on row, show details */
|
||||||
$('.seriesTable a, .dataTable a').live('click', function (event) {
|
$(document).on('click', '.seriesTable a, .dataTable a', function (event) {
|
||||||
if ($(this).attr('onclick'))
|
if ($(this).hasClass('ajaxLink') || $(this).attr('onclick'))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
@ -48,8 +48,8 @@ function fnFormatDetails(nTr) {
|
||||||
|
|
||||||
//Create Image
|
//Create Image
|
||||||
function createImageAjaxLink(url, image, alt, title, classes) {
|
function createImageAjaxLink(url, image, alt, title, classes) {
|
||||||
var html = "<a onclick=\"Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace });\" href=\"" + url + "\">" +
|
var html = '<a href="' + url + '" class="ajaxLink">' +
|
||||||
"<img class=\"" + classes + "\" src=\"" + image + "\" title=\"" + title + "\" alt=\"" + alt + "\"></a>";
|
'<img class="' + classes + '" src="' + image + '" title="' + title + '" alt="' + alt + '" /></a>';
|
||||||
|
|
||||||
return html;
|
return html;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
@{ViewBag.Title = "History";}
|
@{ViewBag.Title = "History";}
|
||||||
@section ActionMenu{
|
@section ActionMenu{
|
||||||
<ul class="sub-menu">
|
<ul class="sub-menu">
|
||||||
<li>@Ajax.ActionLink("Trim History", "Trim", "History", new AjaxOptions { OnSuccess = "reloadGrid" })</li>
|
<li>@Html.ActionLink("Trim History", "Trim", "History", null, new { @class = "ajaxLink", onSuccess = "reloadGrid" })</li>
|
||||||
<li>@Ajax.ActionLink("Purge History", "Purge", "History", new AjaxOptions { OnSuccess = "reloadGrid" })</li>
|
<li>@Html.ActionLink("Purge History", "Purge", "History", null, new { @class = "ajaxLink", onSuccess = "reloadGrid" })</li>
|
||||||
</ul>
|
</ul>
|
||||||
}
|
}
|
||||||
@section HeaderContent
|
@section HeaderContent
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
@{ ViewBag.Title = "Logs";}
|
@{ ViewBag.Title = "Logs";}
|
||||||
@section ActionMenu{
|
@section ActionMenu{
|
||||||
<ul class="sub-menu">
|
<ul class="sub-menu">
|
||||||
<li>@Ajax.ActionLink("Clear Logs", "Clear", "Log", new AjaxOptions { OnSuccess = "redrawGrid" })</li>
|
<li>@Html.ActionLink("Clear Logs", "Clear", "Log", null, new { @class = "ajaxLink", onSuccess = "redrawGrid" })</li>
|
||||||
<li>@Html.ActionLink("File", "File", "Log")</li>
|
<li>@Html.ActionLink("File", "File", "Log")</li>
|
||||||
</ul>
|
</ul>
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,9 +9,9 @@
|
||||||
}
|
}
|
||||||
@section ActionMenu{
|
@section ActionMenu{
|
||||||
<ul class="sub-menu">
|
<ul class="sub-menu">
|
||||||
<li>@Ajax.ActionLink("Start RSS Sync", "RssSync", "Command", null, null)</li>
|
<li>@Html.ActionLink("Start RSS Sync", "RssSync", "Command", null, new { @class = "ajaxLink" })</li>
|
||||||
<li>@Ajax.ActionLink("Start Backlog Search", "BacklogSearch", "Command", null, null, new { title = "Backlog search for ALL missing episodes" })</li>
|
<li>@Html.ActionLink("Start Backlog Search", "BacklogSearch", "Command", null, new { title = "Backlog search for ALL missing episodes", @class = "ajaxLink" })</li>
|
||||||
<li>@Ajax.ActionLink("Start Recent Backlog Search", "RecentBacklogSearch", "Command", null, null, new { title = "Backlog search for missing episodes that aired in the last 30 days only" })</li>
|
<li>@Html.ActionLink("Start Recent Backlog Search", "RecentBacklogSearch", "Command", null, new { title = "Backlog search for missing episodes that aired in the last 30 days only", @class = "ajaxLink" })</li>
|
||||||
</ul>
|
</ul>
|
||||||
}
|
}
|
||||||
<div class="grid-container">
|
<div class="grid-container">
|
||||||
|
|
|
@ -68,9 +68,9 @@
|
||||||
{
|
{
|
||||||
<ul class="sub-menu">
|
<ul class="sub-menu">
|
||||||
<li><a class="editButton" value="@Model.SeriesId" rel="@Model.Title">Edit</a></li>
|
<li><a class="editButton" value="@Model.SeriesId" rel="@Model.Title">Edit</a></li>
|
||||||
<li>@Ajax.ActionLink("Force Refresh", "ForceRefresh", "Command", new { seriesId = Model.SeriesId }, null)</li>
|
<li>@Html.ActionLink("Force Refresh", "ForceRefresh", "Command", new { seriesId = Model.SeriesId }, new { @class = "ajaxLink" })</li>
|
||||||
<li>@Ajax.ActionLink("Search for missing episodes", "BacklogSeries", "Episode", new { seriesId = Model.SeriesId }, null)</li>
|
<li>@Html.ActionLink("Search for missing episodes", "BacklogSeries", "Episode", new { seriesId = Model.SeriesId }, new { @class = "ajaxLink" })</li>
|
||||||
<li>@Ajax.ActionLink("Rename Episode Files", "RenameEpisodes", "Episode", new { seriesId = Model.SeriesId }, null)</li>
|
<li>@Html.ActionLink("Rename Episode Files", "RenameEpisodes", "Episode", new { seriesId = Model.SeriesId }, new { @class = "ajaxLink" })</li>
|
||||||
</ul>
|
</ul>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
@*Commands Column*@
|
@*Commands Column*@
|
||||||
<td class="@cellColourClass">
|
<td class="@cellColourClass">
|
||||||
<img src='../../Content/Images/@(Model.Ignored ? "ignored" : "notIgnored").png' class='ignoreEpisode ignoreEpisode_@(Model.SeasonNumber)@(Model.Ignored ? " ignored" : " ") gridAction' id='@Model.EpisodeId' title='Click to toggle episode ignore status' />
|
<img src='../../Content/Images/@(Model.Ignored ? "ignored" : "notIgnored").png' class='ignoreEpisode ignoreEpisode_@(Model.SeasonNumber)@(Model.Ignored ? " ignored" : " ") gridAction' id='@Model.EpisodeId' title='Click to toggle episode ignore status' />
|
||||||
@Ajax.ImageActionLink("../../Content/Images/Search.png", new { Alt = "Search", Title = "Search for episode", @class = "gridAction" }, "Search", "Episode", new { episodeId = Model.EpisodeId }, null, null)
|
@Html.ImageActionLink("../../Content/Images/Search.png", new { Alt = "Search", Title = "Search for episode", @class = "gridAction" }, "Search", "Episode", new { episodeId = Model.EpisodeId }, new { @class = "ajaxLink" })
|
||||||
<img src='../../Content/Images/@(Model.Status).png' alt='@Model.Status' title='@Model.Status' class='gridImage status-@Model.Status statusImage' />
|
<img src='../../Content/Images/@(Model.Status).png' alt='@Model.Status' title='@Model.Status' class='gridImage status-@Model.Status statusImage' />
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -75,7 +75,7 @@
|
||||||
@section ActionMenu{
|
@section ActionMenu{
|
||||||
<ul class="sub-menu">
|
<ul class="sub-menu">
|
||||||
<li>@Html.ActionLink("Add Series", "Index", "AddSeries")</li>
|
<li>@Html.ActionLink("Add Series", "Index", "AddSeries")</li>
|
||||||
<li>@Ajax.ActionLink("Start RSS Sync", "RssSync", "Command", null)</li>
|
<li>@Html.ActionLink("Start RSS Sync", "RssSync", "Command", null, new { @class = "ajaxLink" })</li>
|
||||||
<li>@Html.ActionLink("Series Editor", "SeriesEditor", "Series")</li>
|
<li>@Html.ActionLink("Series Editor", "SeriesEditor", "Series")</li>
|
||||||
</ul>
|
</ul>
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,8 +23,8 @@
|
||||||
@*Commands Column*@
|
@*Commands Column*@
|
||||||
<th>
|
<th>
|
||||||
<img src='../../Content/Images/@(Model.Ignored ? "ignored" : "notIgnored").png' class='ignoredEpisodesMaster ignoreEpisode ignoreSeason_@(Model.SeasonNumber)@(Model.Ignored ? " ignored" : " ") gridAction' title='Click to toggle season ignore status' />
|
<img src='../../Content/Images/@(Model.Ignored ? "ignored" : "notIgnored").png' class='ignoredEpisodesMaster ignoreEpisode ignoreSeason_@(Model.SeasonNumber)@(Model.Ignored ? " ignored" : " ") gridAction' title='Click to toggle season ignore status' />
|
||||||
@Ajax.ImageActionLink("../../Content/Images/Search.png", new { Alt = "Search", Title = "Search for all episodes in this season", @class = "gridAction" }, "SearchSeason", "Episode", new { SeriesId = Model.SeriesId, SeasonNumber = Model.SeasonNumber }, null, null)
|
@Html.ImageActionLink("../../Content/Images/Search.png", new { Alt = "Search", Title = "Search for all episodes in this season", @class = "gridAction" }, "SearchSeason", "Episode", new { SeriesId = Model.SeriesId, SeasonNumber = Model.SeasonNumber }, new { @class = "ajaxLink" })
|
||||||
@Ajax.ImageActionLink("../../Content/Images/Rename.png", new { Alt = "Rename", Title = "Rename all episodes in this season", @class = "gridAction" }, "RenameSeason", "Episode", new { SeriesId = Model.SeriesId, SeasonNumber = Model.SeasonNumber }, null, null)
|
@Html.ImageActionLink("../../Content/Images/Rename.png", new { Alt = "Rename", Title = "Rename all episodes in this season", @class = "gridAction" }, "RenameSeason", "Episode", new { SeriesId = Model.SeriesId, SeasonNumber = Model.SeasonNumber }, new { @class = "ajaxLink" })
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
}
|
}
|
||||||
@section ActionMenu{
|
@section ActionMenu{
|
||||||
<ul class="sub-menu">
|
<ul class="sub-menu">
|
||||||
<li>@Ajax.ActionLink("Start RSS Sync", "RssSync", "Command", null, null)</li>
|
<li>@Html.ActionLink("Start RSS Sync", "RssSync", "Command", null, new { @class = "ajaxLink" })</li>
|
||||||
</ul>
|
</ul>
|
||||||
}
|
}
|
||||||
<div class="gridControls">
|
<div class="gridControls">
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
@*Commands Column*@
|
@*Commands Column*@
|
||||||
<td class="@cellColourClass">
|
<td class="@cellColourClass">
|
||||||
<img src='../../Content/Images/@(Model.Status).png' alt='@Model.Status' title='@Model.Status' class='gridImage statusImage' />
|
<img src='../../Content/Images/@(Model.Status).png' alt='@Model.Status' title='@Model.Status' class='gridImage statusImage' />
|
||||||
@Ajax.ImageActionLink("../../Content/Images/Search.png", new { Alt = "Search", Title = "Search for episode", @class = "gridAction" }, "Search", "Episode", new { episodeId = Model.EpisodeId }, null, null)
|
@Html.ImageActionLink("../../Content/Images/Search.png", new { Alt = "Search", Title = "Search for episode", @class = "gridAction" }, "Search", "Episode", new { episodeId = Model.EpisodeId }, new { @class = "ajaxLink" })
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ else
|
||||||
{
|
{
|
||||||
<h2>
|
<h2>
|
||||||
Available Update: @Model.UpdatePackage.Version
|
Available Update: @Model.UpdatePackage.Version
|
||||||
@Ajax.ActionLink("Update", "StartUpdate", "Update", null)
|
@Html.ActionLink("Update", "StartUpdate", "Update", null, new { @class = "ajaxLink" })
|
||||||
</h2>
|
</h2>
|
||||||
}
|
}
|
||||||
@if (Model.LogFiles.Count != 0)
|
@if (Model.LogFiles.Count != 0)
|
||||||
|
|
Loading…
Reference in New Issue