/// <summary> /// Create a view. /// </summary> /// <param name="context">Context to render</param> public void Render(IControllerContext context, IViewData viewData, TextWriter writer) { string layoutName; if (context.LayoutName != null) layoutName = context.LayoutName; else { var controllerName = context.ControllerUri.TrimEnd('/'); int pos = controllerName.LastIndexOf('/'); layoutName = context.ControllerUri; layoutName += pos == -1 ? controllerName + ".haml" : controllerName.Substring(pos + 1) + ".haml"; if (!MvcServer.CurrentMvc.ViewProvider.Exists(layoutName)) layoutName = "Shared/Application.haml"; } string viewPath = context.ViewPath + ".haml"; CompiledTemplate template = _templateEngine.Compile(new List<string> {layoutName, viewPath}, typeof (NHamlView)); var instance = (NHamlView)template.CreateInstance(); instance.ViewData = viewData; instance.Render(writer); }
protected override void OnAfterRendering(IEngineContext context, IController controller, IControllerContext controllerContext){ var mvc = MvcContext.Create((Controller) controller); var logname = acl.token(mvc).Replace("/", ".").Substring(1); var log = logger.get(logname); log.info(() => myapp.usrName + "\t\tAFTER_RENDER:\t" + acl.token(mvc)); }
protected override void OnAfterRendering(IEngineContext context, IController controller, IControllerContext controllerContext){ if (writeAfterAction){ return; } doLog(context); }
public bool AuthorizeContext(IControllerContext controllerContext, IController controller) { //ОБЩАЯ ПОЛИТИКА - ОТКРЫТОСТЬ ДЕЙСТВИЯ // сперва проверим не админ ли сам пользователь var usr = myapp.usr; if(myapp.roles.IsAdmin(usr)) return true; //админам можно // потом проверим не назначены ли пользователю спец-права на данное действие или контроллер var denyspecialrole = string.Format("DENY_{0}_{1}", controllerContext.Name, controllerContext.Action).ToUpper(); if (myapp.roles.IsInRole(usr, denyspecialrole)) return false; var allowspecialrole = string.Format("ALLOW_{0}_{1}", controllerContext.Name, controllerContext.Action).ToUpper(); if (myapp.roles.IsInRole(usr, allowspecialrole)) return true; var denycontrollerrolename = string.Format("DENY_{0}", controllerContext.Name).ToUpper(); if (myapp.roles.IsInRole(usr, denycontrollerrolename)) return false; var allowcontrollerrolename = string.Format("ALLOW_{0}", controllerContext.Name).ToUpper(); if (myapp.roles.IsInRole(usr, allowcontrollerrolename)) return true; //потом проверяем по атрибутам ролей IEnumerable<string> roles = getroles(controller, controllerContext); if (roles.Count() != 0) { if (roles.All(x => !myapp.roles.IsInRole(usr, x))) return false; } //если доехали до сюда, значит ошибок авторизации не было, значит дозволим выполнение return true; }
/// <summary> /// Calculates the param points. Implementers should return value equals or greater than /// zero indicating whether the parameter can be bound successfully. The greater the value (points) /// the more successful the implementation indicates to the framework /// </summary> /// <param name="context">The context.</param> /// <param name="controller">The controller.</param> /// <param name="controllerContext">The controller context.</param> /// <param name="parameterInfo">The parameter info.</param> /// <returns> /// </returns> public int CalculateParamPoints(IEngineContext context, IController controller, IControllerContext controllerContext, ParameterInfo parameterInfo) { var token = context.Request[parameterName]; if (CanConvert(parameterInfo.ParameterType, token)) return 10; return 0; }
public void Init() { mocks = new MockRepository(); MockServices services = new MockServices(); services.ViewSourceLoader = new FileAssemblyViewSourceLoader("Views"); services.AddService(typeof(IViewSourceLoader), services.ViewSourceLoader); viewComponentFactory = new DefaultViewComponentFactory(); viewComponentFactory.Initialize(); services.AddService(typeof(IViewComponentFactory), viewComponentFactory); services.AddService(typeof(IViewComponentRegistry), viewComponentFactory.Registry); controller = mocks.DynamicMock<IController>(); engineContext = new MockEngineContext(new UrlInfo("", "Home", "Index", "/", "castle")); controllerContext = new ControllerContext(); factory = new SparkViewFactory(); factory.Service(services); engineContext.AddService(typeof(IViewComponentFactory), viewComponentFactory); engineContext.AddService(typeof(IViewComponentRegistry), viewComponentFactory.Registry); manager = new DefaultViewEngineManager(); manager.RegisterEngineForExtesionLookup(factory); manager.RegisterEngineForView(factory); }
/// <summary> /// Sets the context for the controller /// </summary> /// <param name="engineContext">The engine context.</param> /// <param name="context">The controller context.</param> public virtual void Contextualize(IEngineContext engineContext, IControllerContext context) { this.context = context; SetEngineContext(engineContext); renderingSupport = new RenderingSupport(context, engineContext); isContextualized = true; }
public bool Perform(ExecuteWhen exec, IEngineContext context, IController controller, IControllerContext controllerContext) { /* ArrayList admins = new ArrayList(); admins.Add("jpino"); admins.Add("logas"); admins.Add("lmolina"); if (admins.Contains (context.CurrentUser.Identity.Name.ToLower())) return true; else { context.Flash["TypeMsg"] = "alert alert-error"; context.Flash["Msg"] = "Error : No eres admin"; context.Response.RedirectToUrl ("/"); return false; } */ if (context.CurrentUser.IsInRole ("admin")) return true; else { context.Flash["TypeMsg"] = "alert alert-error"; context.Flash["Msg"] = "Error : No eres admin"; context.Response.RedirectToUrl ("/"); return false; } }
/// <summary> /// Creates the JS code generator info. Temporarily on IViewEngineManager /// </summary> /// <param name="engineContext">The engine context.</param> /// <param name="controller">The controller.</param> /// <param name="controllerContext">The controller context.</param> /// <returns></returns> public JSCodeGeneratorInfo CreateJSCodeGeneratorInfo(IEngineContext engineContext, IController controller, IControllerContext controllerContext) { var codeGen = new JSCodeGenerator(); return new JSCodeGeneratorInfo(codeGen, new PrototypeGenerator(codeGen), new object[0], new object[0]); }
public void Init() { mocks = new MockRepository(); serviceProvider = new StubMonoRailServices(); var viewSourceLoader = new FileAssemblyViewSourceLoader("MonoRail.Tests.Views"); viewSourceLoader.Service(this.serviceProvider); serviceProvider.ViewSourceLoader = viewSourceLoader; serviceProvider.AddService(typeof(IViewSourceLoader), viewSourceLoader); Configure(); controllerContext = new ControllerContext(); propertyBag = controllerContext.PropertyBag; controllerContext.LayoutNames = new []{"default"}; output = new StringWriter(); server = new StubServerUtility(); routingEngine = MockRepository.GenerateMock<IRoutingEngine>(); var urlBuilder = new DefaultUrlBuilder(server, routingEngine); serviceProvider.UrlBuilder = urlBuilder; serviceProvider.AddService(typeof(IUrlBuilder), urlBuilder); InitUrlInfo("", "home", "index"); response = engineContext.Response; }
public void Init() { mocks = new MockRepository(); factory = new SparkViewFactory(); engineContext = mocks.CreateMock<IEngineContext>(); server = new MockServerUtility(); request = mocks.CreateMock<IRequest>(); response = mocks.CreateMock<IResponse>(); controller = mocks.CreateMock<IController>(); controllerContext = mocks.CreateMock<IControllerContext>(); routingEngine = mocks.CreateMock<IRoutingEngine>(); output = new StringWriter(); helpers = new HelperDictionary(); propertyBag = new Dictionary<string, object>(); flash = new Flash(); session = new Dictionary<string, object>(); requestParams = new NameValueCollection(); contextItems = new Dictionary<string, object>(); SetupResult.For(engineContext.Server).Return(server); SetupResult.For(engineContext.Request).Return(request); SetupResult.For(engineContext.Response).Return(response); SetupResult.For(engineContext.CurrentController).Return(controller); SetupResult.For(engineContext.CurrentControllerContext).Return(controllerContext); SetupResult.For(engineContext.Flash).Return(flash); SetupResult.For(engineContext.Session).Return(session); SetupResult.For(engineContext.Items).Return(contextItems); SetupResult.For(request.Params).Return(requestParams); SetupResult.For(controllerContext.LayoutNames).Return(new[] { "default" }); SetupResult.For(controllerContext.Helpers).Return(helpers); SetupResult.For(controllerContext.PropertyBag).Return(propertyBag); SetupResult.For(routingEngine.IsEmpty).Return(true); var urlBuilder = new DefaultUrlBuilder(server, routingEngine); var serviceProvider = mocks.CreateMock<IServiceProvider>(); var viewSourceLoader = new FileAssemblyViewSourceLoader("Views"); SetupResult.For(serviceProvider.GetService(typeof(IViewSourceLoader))).Return(viewSourceLoader); SetupResult.For(serviceProvider.GetService(typeof(ILoggerFactory))).Return(new NullLogFactory()); SetupResult.For(serviceProvider.GetService(typeof(ISparkViewEngine))).Return(null); SetupResult.For(serviceProvider.GetService(typeof(IUrlBuilder))).Return(urlBuilder); SetupResult.For(serviceProvider.GetService(typeof(IViewComponentFactory))).Return(null); mocks.Replay(serviceProvider); SetupResult.For(engineContext.GetService(null)).IgnoreArguments().Do( new Func<Type, object>(serviceProvider.GetService)); factory.Service(serviceProvider); manager = new DefaultViewEngineManager(); manager.RegisterEngineForExtesionLookup(factory); manager.RegisterEngineForView(factory); }
public object Bind(IEngineContext context, IController controller, IControllerContext controllerContext, ParameterInfo parameterInfo) { string token = context.Request[parameterInfo.Name]; Type type = parameterInfo.ParameterType; if (CanConvert(type, token)) return Convert.ChangeType(token, type); return value; }
protected override bool OnBeforeAction(IEngineContext context, IController controller, IControllerContext controllerContext){ // ioc.get<IRequestConversationHandler>().PrepareConversationOnBegin(); ((Controller) controller).PropertyBag["conversation"] = myapp.conversation.Current; ((Controller) controller).PropertyBag["conversationKey"] = myapp.conversation.Current.Code; return true; }
public void Init(IControllerContext controllerContext, IEngineContext engineContext) { Invariant.ArgumentNotNull(controllerContext, "controllerContext"); ViewContext = engineContext; PropertyBag = controllerContext.PropertyBag; }
protected override void OnAfterAction(IEngineContext context, IController controller, IControllerContext controllerContext){ var partitions = Container.get<IPartitionsSource>().GetPartitions(controller); ((Controller) controller).PropertyBag["partitions"] = partitions; foreach (var partition in partitions){ partition.Execute(controller); } }
protected override bool OnBeforeAction(IEngineContext context, IController controller, IControllerContext controllerContext){ var mvc = MvcContext.Create((Controller) controller); var logname = acl.token(mvc).Replace("/", ".").Substring(1); var log = logger.get(logname); log.info(() => myapp.usrName + "\t\tBEFORE_ACTION:\t" + acl.token(mvc)); return true; }
/// <summary> /// Initializes a new instance of the <see cref="BaseHttpHandler"/> class. /// </summary> /// <param name="engineContext">The engine context.</param> /// <param name="controller">The controller.</param> /// <param name="controllerContext">The controller context.</param> /// <param name="sessionless">if set to <c>true</c> then we wont have a session to work.</param> protected BaseHttpHandler(IEngineContext engineContext, IController controller, IControllerContext controllerContext, bool sessionless) { this.controller = controller; this.controllerContext = controllerContext; this.engineContext = engineContext; this.sessionless = sessionless; }
/// <summary> /// Binds the specified parameters for the action. /// </summary> /// <param name="context">The context.</param> /// <param name="controller">The controller.</param> /// <param name="controllerContext">The controller context.</param> /// <param name="parameterInfo">The parameter info.</param> /// <returns> /// </returns> public object Bind(IEngineContext context, IController controller, IControllerContext controllerContext, ParameterInfo parameterInfo) { var token = context.Request[parameterName]; if (CanConvert(parameterInfo.ParameterType, token) == false) return null; return Convert.ChangeType(token, parameterInfo.ParameterType); }
/// <summary> /// Execute the response result. /// </summary> /// <param name="context">HTTP controller context</param> /// <remarks>Invoked by <see cref="ControllerFactory"/> to process the response.</remarks> public override void ExecuteResult(IControllerContext context) { if (string.IsNullOrEmpty(_url)) { string body = @"<!DOCTYPE html><html><head><META http-equiv='refresh' content='0;URL=" + _url + @"'</head><body></body></html>"; context.HttpContext.Response.Content = new HttpStringContent(body, UnicodeEncoding.Utf8); } }
public void Rescue(Exception exception, IController controller, IControllerContext controllerContext) { var statusCode = GetStatusCode(exception); PropertyBag.Add("statusCode", statusCode); PropertyBag.Add("message", exception.Message); Response.StatusCode = statusCode; }
/// <summary> /// Errors the specified controller. /// </summary> /// <param name="controller">The controller.</param> /// <param name="controllerContext">The controller context.</param> /// <param name="usr">The usr.</param> /// <remarks></remarks> private void error(IController controller, IControllerContext controllerContext, IPrincipal usr) { ((Controller)controller).Redirect("notauthorized","show",new Dictionary<string,string> { {"name" , controllerContext.Name}, {"action" , controllerContext.Action}, {"user", usr.Identity.Name}, }); }
public bool Perform(ExecuteWhen exec, IEngineContext context, IController controller, IControllerContext controllerContext) { if (context.Request.Headers["mybadheader"] != null) { context.Response.Write("Denied!"); return false; } return true; }
protected override void PerformActionProcess(IEngineContext engineContext, IController controller, IControllerContext controllerContext) { base.PerformActionProcess(engineContext, controller, controllerContext); controllerContext.PropertyBag.Add("items", PaginationHelper.CreatePagination(engineContext, PerformFindAll(), 10)); controllerContext.PropertyBag["properties"] = ObtainListableProperties(Model); }
public void Init() { mocks = new MockRepository(); view = mocks.PartialMock<SparkView>(); engineContext = new StubEngineContext(new UrlInfo("", "Home", "Index", "/", "castle")); controllerContext = new ControllerContext(); }
protected override bool OnBeforeAction(IEngineContext context, IController controller, IControllerContext controllerContext){ if (waserror){ return true; } var conversation = myapp.conversation.Current; conversation.Data[_stopwatch] = new DateRange(DateTime.Now, DateExtensions.Begin); return true; }
/// <summary> /// Execute the response result. /// </summary> /// <param name="context">HTTP controller context</param> /// <remarks>Invoked by <see cref="ControllerFactory"/> to process the response.</remarks> public override void ExecuteResult(IControllerContext context) { if (!StringUtility.IsNullOrEmpty(_url)) { byte[] body = Encoding.UTF8.GetBytes( @"<!DOCTYPE html><html><head><META http-equiv='refresh' content='0;URL=" + _url + @"'</head><body></body></html>"); context.HttpContext.Response.Body = new MemoryStream(body); } }
/// <summary> /// Execute the response result. /// </summary> /// <param name="context">HTTP controller context</param> /// <remarks>Invoked by <see cref="ControllerFactory"/> to process the response.</remarks> public override void ExecuteResult(IControllerContext context) { //Logger.WriteDebug(this, "Pipeline => ExecuteResult"); if (context == null) { throw new ArgumentNullException("context"); } // only handle GET and HEAD if (!context.HttpContext.Request.HttpMethod.ToUpper().Equals("GET") && !context.HttpContext.Request.HttpMethod.ToUpper().Equals("HEAD")) return; var header = context.HttpContext.Request.Headers["If-Modified-Since"]; // TODO: Build reliable date parser var time = DateTime.MinValue; //var time = header != null // ? ParseUtility.TryParseDateTime(header) // : DateTime.MinValue; var fileContext = new FileContext(context.HttpContext.Request, time); _fileService.GetFile(fileContext,_fullFilePath); if (!fileContext.IsFound) return; if (!fileContext.IsModified) { context.HttpContext.Response.StatusCode = (int)HttpStatusCode.NotModified; context.HttpContext.Response.StatusDescription = "Was last modified " + fileContext.LastModifiedAtUtc.ToString("R"); return; } var mimeType = MimeTypeProvider.Instance.Get(fileContext.Filename); if (mimeType == null) { context.HttpContext.Response.StatusCode = (int)HttpStatusCode.UnsupportedMediaType; context.HttpContext.Response.StatusDescription = string.Concat("File type '", Path.GetExtension(fileContext.Filename), "' is not supported."); return; } context.HttpContext.Response.AddHeader("Last-Modified", fileContext.LastModifiedAtUtc.ToString("R")); context.HttpContext.Response.AddHeader("Accept-Ranges", "bytes"); context.HttpContext.Response.AddHeader("Content-Disposition", "inline;filename=\"" + Path.GetFileName(fileContext.Filename) + "\""); context.HttpContext.Response.ContentType = mimeType; context.HttpContext.Response.ContentLength = (int)fileContext.FileStream.Length; context.HttpContext.Response.Body = fileContext.FileStream; // Do not include a body when the client only want's to get content information. if (context.HttpContext.Request.HttpMethod.ToUpper().Equals("HEAD") && context.HttpContext.Response.Body != null) { context.HttpContext.Response.Body.Dispose(); context.HttpContext.Response.Body = null; } }
/// <summary> /// Initializes a new instance of the <see cref="BrailBase"/> class. /// </summary> /// <param name="viewEngine">The view engine.</param> /// <param name="output">The output.</param> /// <param name="context">The context.</param> /// <param name="__controller">The controller.</param> /// <param name="__controllerContext">The __controller context.</param> public BrailBase(BooViewEngine viewEngine, TextWriter output, IEngineContext context, IController __controller, IControllerContext __controllerContext) { this.viewEngine = viewEngine; outputStream = output; this.context = context; this.__controller = __controller; this.__controllerContext = __controllerContext; InitProperties(context, __controller, __controllerContext); }
public bool Perform(ExecuteWhen exec, IEngineContext context, IController controller, IControllerContext controllerContext) { if (context.CurrentUser == null || context.CurrentUser.Identity.IsAuthenticated == false) { context.Flash["error"] = "Du musst eingeloggt sein um den Mitglieder Bereich zu sehen"; context.Response.Redirect("", "home", "index"); return false; } return true; }
/// <summary> /// Registers the actions on the controller. /// </summary> /// <param name="engineContext">The engine context.</param> /// <param name="controller">The controller.</param> /// <param name="context">The context.</param> public static void RegisterActions(IEngineContext engineContext, IController controller, IControllerContext context) { //TODO: DynamicActionProvider strategy has made this obsolete // foreach(Type providerType in context.ControllerDescriptor.ActionProviders) // { // IDynamicActionProvider provider = (IDynamicActionProvider) Activator.CreateInstance(providerType); // provider.IncludeActions(engineContext, controller, context); // } }
public BenchmarkFacade( IControllerContext controllerContext, JsonApiOptions options) : base(controllerContext, options) { }
public virtual AspViewBase GetView(string fileName, TextWriter output, IEngineContext context, IController controller, IControllerContext controllerContext) { fileName = NormalizeFileName(fileName); string className = GetClassName(fileName); if (needsRecompiling) { CompileViewsInMemory(); needsRecompiling = false; } Type viewType = compilations[className] as Type; if (viewType == null) { throw new AspViewException("Cannot find view type for {0}.", fileName); } // create a view instance AspViewBase theView; try { theView = CreateView(viewType, output, context, controller, controllerContext); } catch (Exception ex) { throw new AspViewException(string.Format( "Cannot create view instance from '{0}'.", fileName), ex); } if (theView == null) { throw new AspViewException(string.Format( "Cannot find view '{0}'", fileName)); } return(theView); }
public override void RenderStaticWithinLayout(string contents, IEngineContext context, IController controller, IControllerContext controllerContext) { throw new NotImplementedException(); }
public override void ProcessPartial(string partialName, TextWriter output, IEngineContext context, IController controller, IControllerContext controllerContext) { throw new NotImplementedException(); }
public bool Perform(ExecuteWhen exec, IEngineContext context, IController controller, IControllerContext controllerContext) { controllerContext.PropertyBag["categories"] = ActiveRecordBase <categories> .FindAll(); controllerContext.PropertyBag["campuses"] = ActiveRecordBase <campus> .FindAll(); controllerContext.PropertyBag["colleges"] = ActiveRecordBase <colleges> .FindAll(); controllerContext.PropertyBag["departments"] = ActiveRecordBase <departments> .FindAll(); controllerContext.PropertyBag["admindepartments"] = ActiveRecordBase <admindepartments> .FindAll(); controllerContext.PropertyBag["programs"] = ActiveRecordBase <programs> .FindAll(); controllerContext.PropertyBag["schools"] = ActiveRecordBase <schools> .FindAll(); controllerContext.PropertyBag["userService"] = userService; controllerContext.PropertyBag["helperService"] = helperService; controllerContext.PropertyBag["helper"] = helperService; if (context.Request.IsLocal) { users currentUser = userService.getUserFull(); if (currentUser != null) { users you = ActiveRecordBase <users> .Find(currentUser.id); you.loggedin = true; you.LastActive = DateTime.Now; ActiveRecordMediator <users> .Update(you); ActiveRecordMediator <users> .Save(you); } //return true; } else { // Read previous authenticated principal from session // (could be from cookie although with more work) User user = (User)context.Session["user"]; // Sets the principal as the current user context.CurrentUser = user; String username = Authentication.authenticate(); users[] authors = ActiveRecordBase <users> .FindAllByProperty("nid", username); if (authors.Length == 0) { context.Response.RedirectToUrl("~/?username="******"manager"] = true; context.Session["username"] = username; user = new User(username, new String[0]); context.CurrentUser = user; System.Threading.Thread.CurrentPrincipal = user; if (userService.isLoggedIn()) { users currentUser = userService.getUserFull(); if (currentUser != null) { users you = ActiveRecordBase <users> .Find(currentUser.id); you.loggedin = true; you.LastActive = DateTime.Now; ActiveRecordMediator <users> .Update(you); ActiveRecordMediator <users> .Save(you); } } } controllerContext.PropertyBag["campus"] = userService.getUserCoreCampus(); // Everything is ok return(true); }
public Repository_Person(SCRUDContext db, IControllerContext controllerContext) { _db = db; _controllerContext = controllerContext; }
private static IProject getProject(IControllerContext context) { string prjCode = context.State.GetString("prjCurrent"); return(getProject(prjCode)); }
/// <summary> /// Implementors should return a generator instance if /// the view engine supports JS generation. /// </summary> /// <param name="generatorInfo">The generator info.</param> /// <param name="context">The request context.</param> /// <param name="controller">The controller.</param> /// <param name="controllerContext">The controller context.</param> /// <returns>A JS generator instance</returns> public abstract object CreateJSGenerator(JSCodeGeneratorInfo generatorInfo, IEngineContext context, IController controller, IControllerContext controllerContext);
/// <summary> /// Processes the js generation view template - using the templateName /// to obtain the correct template, and using the specified <see cref="TextWriter"/> /// to output the result. /// </summary> /// <param name="templateName">Name of the template.</param> /// <param name="output">The output.</param> /// <param name="generatorInfo">The generator info.</param> /// <param name="context">The request context.</param> /// <param name="controller">The controller.</param> /// <param name="controllerContext">The controller context.</param> public abstract void GenerateJS(string templateName, TextWriter output, JSCodeGeneratorInfo generatorInfo, IEngineContext context, IController controller, IControllerContext controllerContext);
///<summary> /// Processes the view - using the templateName /// to obtain the correct template /// and writes the results to the System.IO.TextWriter. /// </summary> public abstract void Process(String templateName, TextWriter output, IEngineContext context, IController controller, IControllerContext controllerContext);
/// <summary> /// Should process the specified partial. The partial name must contains /// the path relative to the views folder. /// </summary> /// <param name="output">The output.</param> /// <param name="context">The request context.</param> /// <param name="controller">The controller.</param> /// <param name="controllerContext">The controller context.</param> /// <param name="partialName">The partial name.</param> public abstract void ProcessPartial(string partialName, TextWriter output, IEngineContext context, IController controller, IControllerContext controllerContext);
/// <summary> /// Wraps the specified content in the layout using the /// context to output the result. /// </summary> public abstract void RenderStaticWithinLayout(String contents, IEngineContext context, IController controller, IControllerContext controllerContext);
/// <summary> /// Create view /// </summary> /// <param name="context">Context used creating view</param> /// <param name="viewUri">Path to view being created.</param> /// <param name="data">Data used.</param> /// <returns>Created view.</returns> /// <exception cref="ViewNotFoundException">Failed to find spark view.</exception> private SparkView GenerateView(IControllerContext context, string viewUri, IViewData data) { var descriptor = new SparkViewDescriptor(); descriptor.AddTemplate(viewUri); // Let's not include layouts for ajax requests. if (!context.RequestContext.Request.IsAjax) { string layoutUri = SelectLayoutName(context.LayoutName); descriptor.Templates.Add(layoutUri); } if (!MvcServer.CurrentMvc.ViewProvider.Exists(viewUri)) { _logger.Info("Failed to find " + viewUri); throw new ViewNotFoundException(viewUri, "Failed to find spark view '" + viewUri + "'."); } /* Disabled since types can be null. * * // since we use strongly typed accessors, we need to loop through view data. * // and add direct accessors. * foreach (var viewData in data) * { * string typeName = GetTypeName(viewData.Value.GetType(), true); * descriptor.AddAccessor(typeName + " " + viewData.Key, * "(" + typeName + ")ViewData[\"" + viewData.Key + "\"]"); * } */ ISparkViewEntry entry; try { entry = _engine.CreateEntry(descriptor); } catch (Exception err) { _logger.Warning("Failed to compile view.", err); throw new InternalServerException("Failed to compile view '" + viewUri + "'.", err); } // only lock when adding, to avoid duplicates. if (context.RequestContext.Request.IsAjax) { lock (_ajaxMappings) { Mapping mapping; if (!_ajaxMappings.TryGetValue(viewUri, out mapping)) { mapping = new Mapping(data.GetHashCode(), entry); _ajaxMappings.Add(viewUri, mapping); } else { mapping.Add(data.GetHashCode(), entry); } } } else { lock (_mappings) { Mapping mapping; if (!_mappings.TryGetValue(viewUri, out mapping)) { mapping = new Mapping(data.GetHashCode(), entry); _mappings.Add(viewUri, mapping); } else { mapping.Add(data.GetHashCode(), entry); } } } return((SparkView)entry.CreateInstance()); }
///<summary> /// /// Processes the js generation view template - using the templateName /// to obtain the correct template, and using the specified <see cref="T:System.IO.TextWriter" /> /// to output the result. /// ///</summary> /// ///<param name="templateName">Name of the template.</param> ///<param name="output">The output.</param> ///<param name="generatorInfo">The generator info.</param> ///<param name="context">The request context.</param> ///<param name="controller">The controller.</param> ///<param name="controllerContext">The controller context.</param> public override void GenerateJS(string templateName, TextWriter output, JSCodeGeneratorInfo generatorInfo, IEngineContext context, IController controller, IControllerContext controllerContext) { throw new NotImplementedException(); }
public AspViewBase CreateView(Type type, TextWriter output, IEngineContext context, IController controller, IControllerContext controllerContext) { AspViewBase view = (AspViewBase)FormatterServices.GetUninitializedObject(type); view.Initialize(this, output, context, controller, controllerContext); return(view); }
public void Process(IEngineContext engineContext, IControllerContext context) { throw new Exception("The method or operation is not implemented."); }
public override void ProcessPartial(string partialName, TextWriter output, IEngineContext context, IController controller, IControllerContext controllerContext) { throw new Exception("The method or operation is not implemented."); }
/// <summary> /// Instantiates RenderingSupport for the attached contexts. /// </summary> /// <param name="context">The controller context</param> /// <param name="engineContext">The engine context</param> public RenderingSupport(IControllerContext context, IEngineContext engineContext) { this.context = context; this.engineContext = engineContext; }
public override void Process(string templateName, TextWriter output, IEngineContext context, IController controller, IControllerContext controllerContext) { string fileName = GetFileName(templateName); IViewBaseInternal view; view = GetView(fileName, output, context, controller, controllerContext); if (controllerContext.LayoutNames != null) { string[] layoutNames = controllerContext.LayoutNames; for (int i = layoutNames.Length - 1; i >= 0; --i) { string layoutName = layoutNames[i].Trim(); IViewBaseInternal layout = GetLayout(layoutName, output, context, controller, controllerContext); layout.ContentView = view; view = layout; } } if (controller != null) { controller.PreSendView(view); } view.Process(); if (controller != null) { controller.PostSendView(view); } }
public BaseController(IControllerContext context) { Context = context; }
public bool Perform(ExecuteWhen exec, IEngineContext context, IController controller, IControllerContext controllerContext) { return(context.Session["Admin"] != null); }
public BaseController(UserControl control) { Context = new ControllerContext(control); }
protected override void RenderStandardHtml(IEngineContext engineContext, IController controller, IControllerContext controllerContext) { SetUpHelpers(engineContext, controller, controllerContext); RenderFromTemplate("remove.vm", engineContext, controller, controllerContext); }
public BaseController(Page page) { Context = new ControllerContext(page); }
protected virtual AspViewBase GetLayout(string layoutName, TextWriter output, IEngineContext context, IController controller, IControllerContext controllerContext) { string layoutTemplate = "layouts\\" + layoutName; if (layoutName.StartsWith("\\")) { layoutTemplate = layoutName; } string layoutFileName = GetFileName(layoutTemplate); return(GetView(layoutFileName, output, context, controller, controllerContext)); }
/// <summary> /// Execute the response result. /// </summary> /// <param name="context">HTTP controller context</param> /// <remarks>Invoked by <see cref="ControllerFactory"/> to process the response.</remarks> public override void ExecuteResult(IControllerContext context) { //Logger.WriteDebug(this, "Pipeline => ExecuteResult"); if (context == null) { throw new ArgumentNullException("context"); } // only handle GET and HEAD if (!context.HttpContext.Request.HttpMethod.ToUpper().Equals("GET") && !context.HttpContext.Request.HttpMethod.ToUpper().Equals("HEAD")) { return; } var header = context.HttpContext.Request.Headers["If-Modified-Since"]; // TODO: Build reliable date parser var time = DateTime.MinValue; //var time = header != null // ? ParseUtility.TryParseDateTime(header) // : DateTime.MinValue; var fileContext = new FileContext(context.HttpContext.Request, time); _fileService.GetFile(fileContext, _fullFilePath); if (!fileContext.IsFound) { return; } if (!fileContext.IsModified) { context.HttpContext.Response.StatusCode = (int)HttpStatusCode.NotModified; context.HttpContext.Response.StatusDescription = "Was last modified " + fileContext.LastModifiedAtUtc.ToString("R"); return; } var mimeType = MimeTypeProvider.Instance.Get(fileContext.Filename); if (mimeType == null) { context.HttpContext.Response.StatusCode = (int)HttpStatusCode.UnsupportedMediaType; context.HttpContext.Response.StatusDescription = string.Concat("File type '", Path.GetExtension(fileContext.Filename), "' is not supported."); return; } context.HttpContext.Response.AddHeader("Last-Modified", fileContext.LastModifiedAtUtc.ToString("R")); context.HttpContext.Response.AddHeader("Accept-Ranges", "bytes"); context.HttpContext.Response.AddHeader("Content-Disposition", "inline;filename=\"" + Path.GetFileName(fileContext.Filename) + "\""); context.HttpContext.Response.ContentType = mimeType; context.HttpContext.Response.ContentLength = (int)fileContext.FileStream.Length; context.HttpContext.Response.Body = fileContext.FileStream; // Do not include a body when the client only want's to get content information. if (context.HttpContext.Request.HttpMethod.ToUpper().Equals("HEAD") && context.HttpContext.Response.Body != null) { context.HttpContext.Response.Body.Dispose(); context.HttpContext.Response.Body = null; } }
protected override void PerformActionProcess(IEngineContext engineContext, IController controller, IControllerContext controllerContext) { base.PerformActionProcess(engineContext, controller, controllerContext); var idVal = CommonOperationUtils.ReadPkFromParams(controllerContext.CustomActionParameters, engineContext.Request, ObtainPKProperty()); controllerContext.PropertyBag["id"] = idVal; try { AssertIsPost(engineContext.Request.HttpMethod); var instance = ActiveRecordMediator.FindByPrimaryKey(Model.Type, idVal, true); controllerContext.PropertyBag["instance"] = instance; ActiveRecordMediator.DeleteAndFlush(instance); } catch (Exception ex) { controllerContext.PropertyBag["exception"] = ex; } }
/// <summary> /// Sets controller context /// </summary> /// <remarks> /// Context contains information about the current request. /// </remarks> internal void SetContext(IControllerContext context) { _context = context; }
public ActionExecutingContext(IControllerContext context) { HttpContext = context.HttpContext; }
///<summary> /// /// Implementors should return a generator instance if /// the view engine supports JS generation. /// ///</summary> /// ///<param name="generatorInfo">The generator info.</param> ///<param name="context">The request context.</param> ///<param name="controller">The controller.</param> ///<param name="controllerContext">The controller context.</param> ///<returns> ///A JS generator instance ///</returns> /// public override object CreateJSGenerator(JSCodeGeneratorInfo generatorInfo, IEngineContext context, IController controller, IControllerContext controllerContext) { throw new NotImplementedException(); }