public static string Published <TModel>(this HtmlHelper <TModel> htmlHelper, Post post) where TModel : OxiteViewModel
        {
            OxiteViewModel model = htmlHelper.ViewData.Model;

            if (post.State == EntityState.Removed)
            {
                return(model.Localize("Removed"));
            }

            if (post.Published.HasValue)
            {
                return(htmlHelper.ConvertToLocalTime(post.Published.Value, htmlHelper.ViewData.Model).ToString("MMM d, yyyy"));
            }

            return(model.Localize("Draft"));
        }
        public static string OpenSearchOSDXLink <TModel>(this HtmlHelper <TModel> htmlHelper) where TModel : OxiteViewModel
        {
            OxiteViewModel model = htmlHelper.ViewData.Model;

            if (model.Site.IncludeOpenSearch && htmlHelper.ViewContext.HttpContext.Request.UserAgent.Contains("Windows NT 6.1"))
            {
                UrlHelper urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext);

                return(htmlHelper.Link(string.Format(model.Localize("Search.WindowsSearch", "Search {0} from Windows"), model.Site.DisplayName), urlHelper.AppPath(urlHelper.OpenSearchOSDX()), new { @class = "windowsSearch" }));
            }

            return("");
        }
        public void OnActionExecuted(ActionExecutedContext filterContext)
        {
            OxiteViewModel            model           = filterContext.Controller.ViewData.Model as OxiteViewModel;
            ValidationStateDictionary validationState = filterContext.Controller.ViewData["ValidationState"] as ValidationStateDictionary;

            if (model != null && validationState != null)
            {
                foreach (KeyValuePair <Type, ValidationState> validationStateItem in validationState)
                {
                    foreach (ValidationError error in validationStateItem.Value.Errors)
                    {
                        if (!string.IsNullOrEmpty(error.MessageKey))
                        {
                            error.LocalizeMessage((key, defaultValue) => model.Localize(key, defaultValue));
                        }
                    }
                }
            }

            if (validationState != null)
            {
                filterContext.Controller.ViewData.ModelState.AddModelErrors(validationState);
            }
        }
        public static void RenderOpenSearch <TModel>(this HtmlHelper <TModel> htmlHelper) where TModel : OxiteViewModel
        {
            OxiteViewModel model = htmlHelper.ViewData.Model;

            if (model.Site.IncludeOpenSearch)
            {
                UrlHelper urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext);

                htmlHelper.ViewContext.HttpContext.Response.Write(htmlHelper.HeadLink("search", urlHelper.AbsolutePath(urlHelper.OpenSearch()), "application/opensearchdescription+xml", string.Format(model.Localize("SearchFormat", "{0} Search"), model.Site.DisplayName)));
            }
        }
        public static string TextBoxWithValidation <TModel>(this HtmlHelper <TModel> htmlHelper, string validationKey, string name, object value, object htmlAttributes) where TModel : OxiteViewModel
        {
            OxiteViewModel model = htmlHelper.ViewData.Model;

            return(htmlHelper.TextBox(name, value, htmlAttributes) + htmlHelper.ValidationMessage(validationKey, model.Localize(validationKey)));
        }