diff --git a/src/Orchard.Web/Packages/Orchard.Wikis/Models/WikiPage.cs b/src/Orchard.Web/Packages/Orchard.Wikis/Models/WikiPage.cs index 75d613d19..6ab6e1443 100644 --- a/src/Orchard.Web/Packages/Orchard.Wikis/Models/WikiPage.cs +++ b/src/Orchard.Web/Packages/Orchard.Wikis/Models/WikiPage.cs @@ -1,7 +1,20 @@ +using System.Web.Routing; using Orchard.Models; namespace Orchard.Wikis.Models { - public class WikiPage : ContentPartForRecord { - + public class WikiPage : ContentPartForRecord, IContentItemDisplay { + + string IContentItemDisplay.DisplayText { + get { return Record.Name; } + } + + RouteValueDictionary IContentItemDisplay.DisplayRouteValues() { + return new RouteValueDictionary(new { area = "Orchard.Wikis", controller = "Page", action = "Show", id = ContentItem.Id }); + } + + RouteValueDictionary IContentItemDisplay.EditRouteValues() { + return new RouteValueDictionary(new { area = "Orchard.Wikis", controller = "Page", action = "Edit", id = ContentItem.Id }); + } + } } \ No newline at end of file diff --git a/src/Orchard/Models/IContentItemDisplay.cs b/src/Orchard/Models/IContentItemDisplay.cs new file mode 100644 index 000000000..4e6e74f38 --- /dev/null +++ b/src/Orchard/Models/IContentItemDisplay.cs @@ -0,0 +1,9 @@ +using System.Web.Routing; + +namespace Orchard.Models { + public interface IContentItemDisplay : IContentItemPart { + string DisplayText { get; } + RouteValueDictionary DisplayRouteValues(); + RouteValueDictionary EditRouteValues(); + } +} \ No newline at end of file diff --git a/src/Orchard/Mvc/Html/ContentItemExtensions.cs b/src/Orchard/Mvc/Html/ContentItemExtensions.cs new file mode 100644 index 000000000..b46cdba6f --- /dev/null +++ b/src/Orchard/Mvc/Html/ContentItemExtensions.cs @@ -0,0 +1,32 @@ +using System; +using System.Web.Mvc; +using System.Web.Mvc.Html; +using Orchard.Models; + +namespace Orchard.Mvc.Html { + public static class ContentItemExtensions { + public static MvcHtmlString ItemDisplayLink(this HtmlHelper html, string linkText, IContentItemPart item) { + var display = item.As(); + var values = display.DisplayRouteValues(); + return html.ActionLink(linkText, Convert.ToString(values["action"]), values); + } + + public static MvcHtmlString ItemDisplayLink(this HtmlHelper html, IContentItemPart item) { + var display = item.As(); + var values = display.DisplayRouteValues(); + return html.ActionLink(display.DisplayText, Convert.ToString(values["action"]), values); + } + + public static MvcHtmlString ItemEditLink(this HtmlHelper html, string linkText, IContentItemPart item) { + var display = item.As(); + var values = display.DisplayRouteValues(); + return html.ActionLink(linkText, Convert.ToString(values["action"]), values); + } + + public static MvcHtmlString ItemEditLink(this HtmlHelper html, IContentItemPart item) { + var display = item.As(); + var values = display.DisplayRouteValues(); + return html.ActionLink(display.DisplayText, Convert.ToString(values["action"]), values); + } + } +} diff --git a/src/Orchard/Orchard.csproj b/src/Orchard/Orchard.csproj index 9760f3da8..c53a4211d 100644 --- a/src/Orchard/Orchard.csproj +++ b/src/Orchard/Orchard.csproj @@ -152,6 +152,7 @@ + @@ -162,6 +163,7 @@ +