コード例 #1
0
ファイル: ShopContextFilter.cs プロジェクト: writele/training
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var shopContext = filterContext.HttpContext.Request.Params[ShopContextParam];

            if (string.IsNullOrEmpty(shopContext))
            {
                return;
            }
            var siteContext = Sitecore.Sites.SiteContextFactory.GetSiteContext(shopContext);
            var database    = Sitecore.Data.Database.GetDatabase("master");
            var switcher    = new ShopContextSwitcher(siteContext, database);

            filterContext.RequestContext.HttpContext.Items[SwitcherKey] = switcher;
        }
コード例 #2
0
        /// <summary>
        /// Runs the processor.
        /// </summary>
        /// <param name="args">The arguments.</param>
        public void Process(PipelineArgs args)
        {
            this.ResetHttpContext();

            SiteContext site = Sitecore.Context.Site;

            if (site == null || string.Compare(this.ShellSiteName, site.Name, StringComparison.OrdinalIgnoreCase) != 0)
            {
                return;
            }

            var queryString = this.HttpContext.Request.QueryString;

            string itemId = queryString["id"] ?? queryString["sc_itemid"];

            if (string.IsNullOrEmpty(itemId) || !ID.IsID(itemId))
            {
                return;
            }

            string   databaseOverrideName = queryString["database"] ?? queryString["db"] ?? queryString["sc_database"];
            Database databaseOverride     = null;

            if (!string.IsNullOrEmpty(databaseOverrideName))
            {
                databaseOverride = Database.GetDatabase(databaseOverrideName);
            }

            var shop = this.ShopContextFactory.GetWebShops().FirstOrDefault(sh => this.CheckIfCurrentShopContext(sh, databaseOverride, ID.Parse(itemId)));

            if (shop == null)
            {
                return;
            }

            shop.GeneralSettings         = this.ShopConfiguration.GetGeneralSettings(shop.InnerSite, shop.Database);
            shop.BusinessCatalogSettings = this.ShopConfiguration.GetBusinesCatalogSettings(shop.InnerSite, shop.Database);

            // INFO: looks like using factories here is an overdesign. Simple instantiation is used instead.
            this.shopContextSwitcher = new ShopContextSwitcher(shop);
        }
コード例 #3
0
        /// <summary>
        /// Runs the processor.
        /// </summary>
        /// <param name="args">The arguments.</param>
        public void Process(PipelineArgs args)
        {
            this.ResetHttpContext();

              SiteContext site = Sitecore.Context.Site;
              if (site == null || string.Compare(this.ShellSiteName, site.Name, StringComparison.OrdinalIgnoreCase) != 0)
              {
            return;
              }

              var queryString = this.HttpContext.Request.QueryString;

              string itemId = queryString["id"] ?? queryString["sc_itemid"];
              if (string.IsNullOrEmpty(itemId) || !ID.IsID(itemId))
              {
            return;
              }

              string databaseOverrideName = queryString["database"] ?? queryString["db"] ?? queryString["sc_database"];
              Database databaseOverride = null;

              if (!string.IsNullOrEmpty(databaseOverrideName))
              {
            databaseOverride = Database.GetDatabase(databaseOverrideName);
              }

              var shop = this.ShopContextFactory.GetWebShops().FirstOrDefault(sh => this.CheckIfCurrentShopContext(sh, databaseOverride, ID.Parse(itemId)));
              if (shop == null)
              {
            return;
              }

              shop.GeneralSettings = this.ShopConfiguration.GetGeneralSettings(shop.InnerSite, shop.Database);
              shop.BusinessCatalogSettings = this.ShopConfiguration.GetBusinesCatalogSettings(shop.InnerSite, shop.Database);

              // INFO: looks like using factories here is an overdesign. Simple instantiation is used instead.
              this.shopContextSwitcher = new ShopContextSwitcher(shop);
        }