public static void Load(ContainerBuilder builder, ChiffonConfig config) { Require.NotNull(builder, "builder"); Require.NotNull(config, "config"); builder.Register(_ => config).AsSelf().SingleInstance(); builder.RegisterType <MailMerge>().As <IMailMerge>().InstancePerRequest(); builder.RegisterType <Messenger>().As <IMessenger>().InstancePerRequest(); // IMPORTANT: ChiffonEnvironment est entièrement résolue à l'exécution. // Cf. aussi les commentaires dans la classe ChiffonContext. builder.Register(_ => ChiffonContext.Resolve(HttpContext.Current).Environment).AsSelf().InstancePerRequest(); builder.RegisterType <SiteMapFactory>().As <ISiteMapFactory>().SingleInstance(); // FIXME: Pour les HttpHandlers, je n'arrive pas à voir pour le moment pourquoi // on ne récupère pas la bonne valeur de ChiffonEnvironment et donc de SiteMap, même // en précisant IsReusable = false. Peut-être faut-il utiliser InstancePerHttpRequest() // au niveau de RegisterHandlers() dans AspNetMvcModule ? // IMPORTANT: ISiteMap est entièrement résolue à l'exécution. builder.Register(ResolveSiteMap_).As <ISiteMap>().InstancePerRequest(); RegisterPersistenceTypes_(builder, config.EnableServerCache); RegisterServiceTypes_(builder); RegisterAspNetMvcTypes_(builder); }
protected override void ProcessRequestCore(HttpContext context) { CheckFor.HttpHandlerBase.ProcessRequestCore(context); new AuthenticationService(context).SignOut(); var nextUrl = _siteMapFactory.CreateMap(ChiffonContext.Resolve(HttpContext.Current).Environment).Home().AbsoluteUri; context.Response.Redirect(nextUrl); }
// On utilise cet événement car il se déclenche après 'PostAcquireRequestState' // qui est utilisé par 'InitializeVSContextModule'. private void OnPreRequestHandlerExecute_(object sender, EventArgs e) { var app = sender as HttpApplication; var environment = ChiffonContext.Resolve(app.Context).Environment; var language = environment.Language; if (!language.IsDefault()) { InitializeCulture_(language.GetCultureInfo(), language.GetUICultureInfo()); } }
protected override void ProcessRequestCore(HttpContext context, Maybe <Uri> query) { CheckFor.HttpHandlerBase.ProcessRequestCore(context, query); var environment = ChiffonContext.Resolve(HttpContext.Current).Environment; var siteMap = _siteMapFactory.CreateMap(environment); new AuthenticationService(context).SignIn(Member.Anonymous); var nextUrl = query.Select(_ => environment.MakeAbsoluteUri(_)).ValueOrElse(siteMap.Home()); context.Response.Redirect(nextUrl.AbsoluteUri); }
public override void OnActionExecuting(ActionExecutingContext filterContext) { Require.NotNull(filterContext, "filterContext"); var controller = filterContext.Controller as ChiffonController; if (controller == null) { throw new InvalidOperationException( "The OntologyFilter attribute should only be applied to ChiffonController."); } var controllerContext = controller.ChiffonControllerContext; var ontology = controllerContext.Ontology; if (Disabled) { controllerContext.LayoutViewModel.DisableOntology = true; ontology.Title = Strings.DefaultTitle; return; } // Il semble que "Keywords" soit ignoré par Google, il n'est donc // pas nécessaire de travailler cet aspect là. ontology.Keywords = Strings.DefaultKeywords; ontology.OpenGraph.SiteName = Strings.DefaultTitle; // Par défaut, on utilise le logo comme image. // QUICKFIX: On veut une URL absolue. var environment = ChiffonContext.Resolve(HttpContext.Current).Environment; var logoUri = environment.MakeAbsoluteUri(AssetManager.GetImageUri("logo.png")); ontology.OpenGraph.Image = new OpenGraphPng(logoUri) { Height = 144, Width = 144, }; // Autres langues dans lesquelles la page est disponible. //var alternativeLocales = from _ in OpenGraphLocales_.Value // where _ != ontology.OpenGraph.Locale // select _; //ontology.OpenGraph.AddAlternativeLocales(alternativeLocales); }
protected override void ProcessRequestCore(HttpContext context, LogOnQuery query) { CheckFor.HttpHandlerBase.ProcessRequestCore(context, query); var environment = ChiffonContext.Resolve(HttpContext.Current).Environment; var siteMap = _siteMapFactory.CreateMap(environment); var member = _memberService .MayLogOn(query.Email, query.Password); member.OnSome(_ => new AuthenticationService(context).SignIn(_)); var nextUrl = member .Select(_ => GetNextUri_(query.TargetUrl, siteMap, environment)) .ValueOrElse(GetLoginUri_(query.TargetUrl, siteMap)); context.Response.Redirect(nextUrl.AbsoluteUri); }