コード例 #1
0
        public ThemeSelectorResult GetTheme(RequestContext context)
        {
            if (AdminFilter.IsApplied(context))
            {
                return(null);
            }

            if (_result != null)
            {
                return(_result);
            }

            try
            {
                var workContext = _workContextAccessor.GetContext();
                var session     = workContext.HttpContext.Session;
                if (session != null)
                {
                    string groupName = session[workContext.CurrentSite.SiteName + "MobileContrib.ThemeSwitcher.DeviceGroup"] as string;
                    if (groupName != null)
                    {
                        var devicegroup = _deviceGroupService.GetGroup(groupName);

                        _result = new ThemeSelectorResult
                        {
                            Priority  = 50,
                            ThemeName = devicegroup.Theme
                        };
                        return(_result);
                    }
                }

                var part = _deviceGroupService.GetCurrentGroup();
                if (part != null)
                {
                    _result = new ThemeSelectorResult
                    {
                        Priority  = 50,
                        ThemeName = part.Theme
                    };
                    return(_result);
                }
            }
            catch (Exception)
            {
                // HACK (jamesr): The theme selector seems to be getting called before the DeviceGroupRecord database table is created. Need to find a proper fix.
            }

            return(null);
        }
コード例 #2
0
        public void OnResultExecuting(ResultExecutingContext filterContext)
        {
            var viewResult = filterContext.Result as ViewResult;

            if (viewResult == null)
            {
                return;
            }

            var workContext = _workContextAccessor.GetContext(filterContext);

            if (workContext == null ||
                workContext.Layout == null ||
                workContext.CurrentSite == null ||
                AdminFilter.IsApplied(filterContext.RequestContext))
            {
                return;
            }

            var group = _deviceGroupService.GetCurrentGroup();

            if (group == null)
            {
                return;
            }

            if (group.Record.SwitcherEnabled && !string.IsNullOrWhiteSpace(group.Record.SwitcherText))
            {
                if (!string.IsNullOrWhiteSpace(group.Record.SwitcherZone))
                {
                    dynamic switcherShape = Shape.ThemeSwitcher_Links(SwitcherText: group.Record.SwitcherText);
                    var     zone          = workContext.Layout.Zones[group.Record.SwitcherZone];
                    zone.Add(switcherShape, group.Record.SwitcherPosition);
                }
            }
        }