예제 #1
0
 public ComposerFunctionUpdater()
 {
     _functions        = ReflectionHelper.GetTypesWithAttribute(typeof(FunctionTypeAttribute)).ToList();
     _contentTypes     = PageTypeHelper.GetPageTypes(ContentFunctionTypeManager.List());
     _pageTypes        = PageTypeManager.List().Select(p => new WrappedPageType(p)).ToList();
     RulesTimer        = new System.Diagnostics.Stopwatch();
     AccessTimer       = new System.Diagnostics.Stopwatch();
     ContentAreasTimer = new System.Diagnostics.Stopwatch();
 }
예제 #2
0
        private void UpdateRules(FunctionTypeAttribute functionTypeAttribute, WrappedPageType functionType)
        {
            RulesTimer.Start();

            int functionTypeID = functionType.ID;

            var filteredPageTypes   = _pageTypes;
            var filteredContetTypes = _contentTypes;

            if (functionTypeAttribute.AvailableOnPages == AvailableOn.Specific)
            {
                filteredPageTypes = PageTypeHelper.GetPageTypes(functionTypeAttribute.AvailableOnPageTypes);
            }

            if (functionTypeAttribute.AvailableOnContent == AvailableOn.Specific)
            {
                filteredContetTypes = PageTypeHelper.GetFunctionPageTypes(functionTypeAttribute.AvailableOnContentTypes);
            }

            var rules = new List <TypeIdContentAreaId>();

            foreach (var pageType in filteredPageTypes)
            {
                var realPageType = PageType.Load(pageType.ID);
                if (realPageType == null)
                {
                    continue;
                }
                var pageAreas = ContentAreaManager.GetAvailableContentAreasViaProperty(realPageType);

                foreach (var pageArea in pageAreas)
                {
                    rules.Add(new TypeIdContentAreaId(pageType.ID, pageArea.ID));
                }
            }

            foreach (var contentType in filteredContetTypes)
            {
                if (contentType.ID == functionTypeID)
                {
                    continue;
                }

                List <ContentAreaData> contentAreas = ContentAreaManager.GetAvailableContentAreasViaProperty(contentType.ID);

                foreach (var contentArea in contentAreas)
                {
                    rules.Add(new TypeIdContentAreaId(contentType.ID, contentArea.ID));
                }
            }

            SyncRules(functionTypeID, rules);

            RulesTimer.Stop();
        }
예제 #3
0
        private void UpdateRules(FunctionTypeAttribute functionTypeAttribute, PageType functionType)
        {
            int functionTypeID = functionType.ID;

            RuleContentAreaCollection ruleCaCollection = RuleContentAreaManager.XMLRuleContentAreaList();

            ruleCaCollection.RemoveRuleContentFunction(functionTypeID);

            var filteredPageTypes   = _pageTypes;
            var filteredContetTypes = _contentTypes;

            if (functionTypeAttribute.AvailableOnPages == AvailableOn.Specific)
            {
                filteredPageTypes = PageTypeHelper.GetPageTypes(functionTypeAttribute.AvailableOnPageTypes);
            }

            if (functionTypeAttribute.AvailableOnContent == AvailableOn.Specific)
            {
                filteredContetTypes = PageTypeHelper.GetFunctionPageTypes(functionTypeAttribute.AvailableOnContentTypes);
            }

            foreach (var pageType in filteredPageTypes)
            {
                List <ContentAreaData> pageAreas = ContentAreaManager.GetAvailableContentAreasViaProperty(pageType);

                foreach (var pageArea in pageAreas)
                {
                    ruleCaCollection.AddRule(pageType.ID, pageArea.ID, functionTypeID);
                }
            }

            foreach (var contentType in filteredContetTypes)
            {
                if (contentType.ID == functionTypeID)
                {
                    continue;
                }

                List <ContentAreaData> contentAreas = ContentAreaManager.GetAvailableContentAreasViaProperty(contentType.ID);

                foreach (var contentArea in contentAreas)
                {
                    ruleCaCollection.AddRule(contentType.ID, contentArea.ID, functionTypeID);
                }
            }

            RuleContentAreaManager.SaveRuleContentAreaCollection(ruleCaCollection);
        }
예제 #4
0
 public ComposerFunctionUpdater()
 {
     _functions    = ReflectionHelper.GetTypesWithAttribute(typeof(FunctionTypeAttribute)).ToList();
     _contentTypes = PageTypeHelper.GetPageTypes(ContentFunctionTypeManager.List());
     _pageTypes    = PageTypeManager.List();
 }