public ActionResult SaveFilter(EditUrlViewModel viewModel)
        {
            if (!_authorizer.Authorize(Permissions.ConfigureUrlProtector, T("Not authorized to manage settings")))
            {
                return new HttpUnauthorizedResult();
            }

            //Validate the values for valid regex patterns if a value is supplied
            if (!String.IsNullOrEmpty(viewModel.UrlFilterRecord.UrlPattern) && !IsValidRegex(viewModel.UrlFilterRecord.UrlPattern))
            {
                ModelState.AddModelError(String.Empty, "Url pattern is not a valid regex expression");
            }

            if (!String.IsNullOrEmpty(viewModel.UrlFilterRecord.UserHostAddressPattern) && !IsValidRegex(viewModel.UrlFilterRecord.UserHostAddressPattern))
            {
                ModelState.AddModelError(String.Empty, "Userhostaddress pattern is not a valid regex expression");
            }

            if (!String.IsNullOrEmpty(viewModel.UrlFilterRecord.UserAgentPattern) && !IsValidRegex(viewModel.UrlFilterRecord.UserAgentPattern))
            {
                ModelState.AddModelError(String.Empty, "Useragent pattern is not a valid regex expression");
            }

            if (viewModel.UrlFilterRecord.UrlPriority < 1 || viewModel.UrlFilterRecord.UrlPriority > 99)
            {
                ModelState.AddModelError(String.Empty, "Priority must be between 1 and 99");
            }

            if (!ModelState.IsValid)
            {
                return View("EditUrl", viewModel);
            }
            _urlFilterRecords.Update(viewModel.UrlFilterRecord);
            _orchardServices.Notifier.Add(NotifyType.Information, T("The url filter with pattern {0} has been saved", viewModel.UrlFilterRecord.UrlPattern));
            _signals.Trigger(CachedUrlProtectorRules.SignalUpdateUrlFilterRecordsTrigger);

            return RedirectToAction("Show");
        }
        public ActionResult NewFilter()
        {
            if (!_authorizer.Authorize(Permissions.ConfigureUrlProtector, T("Not authorized to manage settings")))
            {
                return new HttpUnauthorizedResult();
            }

            //Get the last content item record id
            int lastId = (from urlfilter in _urlFilterRecords.Table
                orderby urlfilter.Id descending
                select urlfilter.Id).FirstOrDefault();

            int newId = lastId + 1;
            UrlFilterRecord filterUrl = new UrlFilterRecord {Id = newId, UrlPriority = 50};
            _signals.Trigger(CachedUrlProtectorRules.SignalUpdateUrlFilterRecordsTrigger);
            EditUrlViewModel viewModel = new EditUrlViewModel
            {
                UrlFilterRecord = filterUrl,
            };

            return View("EditUrl", viewModel);
        }
        public ActionResult Edit(int urlFilterid)
        {
            if (!_authorizer.Authorize(Permissions.ConfigureUrlProtector, T("Not authorized to manage settings")))
            {
                return new HttpUnauthorizedResult();
            }

            UrlFilterRecord urlFilter = _urlFilterRecords.Get(urlFilterid);
            if (urlFilter == null)
            {
                return new HttpNotFoundResult("Could not find the url filter with id " + urlFilterid);
            }
            EditUrlViewModel viewModel = new EditUrlViewModel
            {
                UrlFilterRecord = urlFilter,
            };

            return View("EditUrl", viewModel);
        }