1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2024-12-04 10:34:59 +02:00

Added ImageLink helpers for Ajax and Html links.

Added run button to System/Jobs.
This commit is contained in:
Mark McDowall 2011-12-15 00:25:16 -08:00
parent ed566e6e9a
commit 9264dcdf88
8 changed files with 99 additions and 3 deletions

View File

@ -184,6 +184,17 @@ public virtual void QueueJob(Type jobType, int targetId = 0, int secondaryTarget
}
public virtual bool QueueJob(string jobTypeString)
{
var type = Type.GetType(jobTypeString);
if (type == null)
return false;
QueueJob(type);
return true;
}
private void ProcessQueue()
{
try

View File

@ -35,7 +35,7 @@ public string Name
public int DefaultInterval
{
get { return 720; } //Daily
get { return 720; } //12-hours
}
public virtual void Start(ProgressNotification notification, int targetId, int secondaryTargetId)

View File

@ -20,5 +20,8 @@ public class JobDefinition
public DateTime LastExecution { get; set; }
public Boolean Success { get; set; }
[Ignore]
public string Command { get; set; }
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -35,7 +35,14 @@ public ActionResult Jobs()
TargetId = c.TargetId,
SecondaryTargetId = c.SecondaryTargetId
});
return View(_jobProvider.All());
var jobs = _jobProvider.All();
foreach(var jobDefinition in jobs)
{
jobDefinition.Command = "<a href=\"http://www.google.ca\"></a>";
}
return View(jobs);
}
public ActionResult Indexers()
@ -131,5 +138,13 @@ public JsonResult RenamePendingProcessing(string path)
return new JsonResult { Data = "ok" };
}
public JsonResult RunJob(string typeName)
{
if (!_jobProvider.QueueJob(typeName))
return Json(new NotificationResult { Title = "Failed to Start Job", Text = "Invalid job name", NotificationType = NotificationType.Error });
return Json(new NotificationResult { Title = "Job Queued" });
}
}
}

View File

@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using System.Web.Mvc.Html;
using System.Web.Routing;
namespace NzbDrone.Web.Helpers
{
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)
{
return ImageActionLink(helper, imageUrl, imgAttributes, actionName, null, routeValues, htmlAttributes);
}
public static MvcHtmlString ImageActionLink(this HtmlHelper helper, string imageUrl, object imgAttributes, string actionName, string controllerName, object routeValues, 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, htmlAttributes).ToHtmlString();
return new MvcHtmlString(link.Replace("[replaceme]", builder.ToString(TagRenderMode.SelfClosing)));
}
}
}

View File

@ -142,6 +142,7 @@
<Content Include="Content\2011.3.1115\telerik.sitefinity.min.css" />
<Content Include="Content\Images\background.jpg" />
<Content Include="Content\Images\blue.png" />
<Content Include="Content\Images\Gear.png" />
<Content Include="Content\Images\green.png" />
<Content Include="Content\Images\header.jpg" />
<Content Include="Content\Images\Indexers\Newznab.png" />
@ -219,6 +220,7 @@
<DependentUpon>Global.asax</DependentUpon>
</Compile>
<Compile Include="Helpers\HtmlIncludeExtentions.cs" />
<Compile Include="Helpers\LinkHelper.cs" />
<Compile Include="Helpers\ProfilerHelper.cs" />
<Compile Include="Helpers\ValueExtension.cs" />
<Compile Include="Helpers\DescriptionExtension.cs" />

View File

@ -1,9 +1,24 @@
@using NzbDrone.Web.Models
@using NzbDrone.Web.Helpers
@model IEnumerable<NzbDrone.Core.Repository.JobDefinition>
@{ViewBag.Title = "Jobs";}
@{Html.Telerik().Grid(Model).Name("Grid")
.Render();}
.Columns(c => c.Bound(g => g.Id))
.Columns(c => c.Bound(g => g.Enable))
.Columns(c => c.Bound(g => g.TypeName))
.Columns(c => c.Bound(g => g.Name))
.Columns(c => c.Bound(g => g.Interval))
.Columns(c => c.Bound(g => g.LastExecution))
.Columns(c => c.Bound(g => g.Success))
.Columns(c => c.Bound(g => g.Command)
.Template(@<text> @{ if(item.Enable)
{
@Ajax.ImageActionLink("../../Content/Images/Gear.png", new { Alt = "Run", Width = 18, Height = 18, Title = "Run Job" }, "RunJob", new { TypeName = item.TypeName }, null, null)
}
}
</text>))
.Render();}
Items currently in queue
@ -13,3 +28,9 @@
.Columns(c => c.Bound(g => g.SecondaryTargetId).Title("Secondary Target"))
.Render();}
@section Scripts{
<script>
function
</script>
}