public RestResult Get(int? id, ItemRange range)
        {
            if (id.HasValue)
            {
                ContentReference currentContentRef = new PageReference(id.Value);
                if (new ContentReference(id.Value) != null && EPiServer.DataFactory.Instance.Get<IContent>(new ContentReference(id.Value)) as PageData != null)
                {
                    PageData currentPage = EPiServer.DataFactory.Instance.GetPage(new PageReference(id.Value));
                    var pageId = currentPage.ContentLink.ID;
                    var _rules = new List<RuleDescription>();

                    List<Rule> _rulesLeft = RuleEngine.Instance.GetRulesLeft(pageId) as List<Rule>;
                    List<Rule> _rulesRight = RuleEngine.Instance.GetRulesRight(pageId) as List<Rule>;

                    AccessControlList list = currentPage.ACL;

                    foreach (Rule leftRule in _rulesLeft)
                    {
                        RuleDescription rd = new RuleDescription() { RuleName = leftRule.RuleTextLeft, RuleDesc = leftRule.RuleDescriptionLeft, RuleDirection = "left", RuleGuid = leftRule.Id.ExternalId.ToString(), RuleId = leftRule.RuleName };
                        if (HasAccess(list, leftRule.EditModeAccessLevel) && leftRule.RuleVisibleLeft)
                            _rules.Add(rd);
                    }

                    foreach (Rule rightRule in _rulesRight)
                    {
                        RuleDescription rd = new RuleDescription() { RuleName = rightRule.RuleTextRight, RuleDesc = rightRule.RuleDescriptionRight, RuleDirection = "right", RuleGuid = rightRule.Id.ExternalId.ToString(), RuleId = rightRule.RuleName };
                        if (HasAccess(list, rightRule.EditModeAccessLevel) && rightRule.RuleVisibleRight && rightRule.RuleTextLeft != rightRule.RuleTextRight)
                            _rules.Add(rd);
                    }

                    /*

                    List<RuleDescription> result = new List<RuleDescription>();
                    int cnt = 0;

                    foreach (Rule rule in _rules)
                    {
                        bool isLeftRule = (RuleEngine.Instance.IsLeftRule(pageId, RuleEngine.Instance.GetRule(rule.RuleName)));
                        if ((from p in result where p.RuleName == rule.RuleName select p).Any())
                            result.Add(new RuleDescription() { RuleGuid = rule.Id.ExternalId.ToString(), RuleId = rule.RuleName, RuleDirection = "left", RuleName = rule.RuleTextLeft + "2", RuleDesc = (RuleEngine.Instance.IsLeftRule(pageId, RuleEngine.Instance.GetRule(rule.RuleName))) ? rule.RuleDescriptionLeft : rule.RuleDescriptionRight });
                        else
                            result.Add(new RuleDescription() { RuleGuid = rule.Id.ExternalId.ToString(), RuleId = rule.RuleName, RuleDirection = "left", RuleName = rule.RuleTextLeft, RuleDesc = (RuleEngine.Instance.IsLeftRule(pageId, RuleEngine.Instance.GetRule(rule.RuleName))) ? rule.RuleDescriptionLeft : rule.RuleDescriptionRight });
                        cnt++;
                    }

                    foreach (Rule rule in _rulesRight)
                    {
                        bool isLeftRule = (RuleEngine.Instance.IsLeftRule(pageId, RuleEngine.Instance.GetRule(rule.RuleName)));
                        if ((from p in result where p.RuleName == rule.RuleName select p).Any())
                            result.Add(new RuleDescription() { RuleGuid = rule.Id.ExternalId.ToString(), RuleId = rule.RuleName, RuleDirection = "right", RuleName = rule.RuleTextRight + "2", RuleDesc = (RuleEngine.Instance.IsLeftRule(pageId, RuleEngine.Instance.GetRule(rule.RuleName))) ? rule.RuleDescriptionLeft : rule.RuleDescriptionRight });
                        else
                            result.Add(new RuleDescription() { RuleGuid = rule.Id.ExternalId.ToString(), RuleId = rule.RuleName, RuleDirection = "right", RuleName = rule.RuleTextRight, RuleDesc = (RuleEngine.Instance.IsLeftRule(pageId, RuleEngine.Instance.GetRule(rule.RuleName))) ? rule.RuleDescriptionLeft : rule.RuleDescriptionRight });
                        cnt++;
                    }
                    */
                    return Rest(_rules.Select(m => new { Guid = m.RuleGuid, Name = TryTranslate( m.RuleName), Id = m.RuleId, Description = TryTranslate(m.RuleDesc), Direction = m.RuleDirection }));
                }
            }
            return null;
        }
Exemple #2
0
        public RestResult Get(int?id, ItemRange range)
        {
            if (id.HasValue)
            {
                ContentReference currentContentRef = new PageReference(id.Value);
                if (new ContentReference(id.Value) != null && EPiServer.DataFactory.Instance.Get <IContent>(new ContentReference(id.Value)) as PageData != null)
                {
                    PageData currentPage = EPiServer.DataFactory.Instance.GetPage(new PageReference(id.Value));
                    var      pageId      = currentPage.ContentLink.ID;
                    var      _rules      = new List <RuleDescription>();

                    List <Rule> _rulesLeft  = RuleEngine.Instance.GetRulesLeft(pageId) as List <Rule>;
                    List <Rule> _rulesRight = RuleEngine.Instance.GetRulesRight(pageId) as List <Rule>;

                    AccessControlList list = currentPage.ACL;

                    foreach (Rule leftRule in _rulesLeft)
                    {
                        RuleDescription rd = new RuleDescription()
                        {
                            RuleName = leftRule.RuleTextLeft, RuleDesc = leftRule.RuleDescriptionLeft, RuleDirection = "left", RuleGuid = leftRule.Id.ExternalId.ToString(), RuleId = leftRule.RuleName
                        };
                        if (HasAccess(list, leftRule.EditModeAccessLevel) && leftRule.RuleVisibleLeft)
                        {
                            _rules.Add(rd);
                        }
                    }



                    foreach (Rule rightRule in _rulesRight)
                    {
                        RuleDescription rd = new RuleDescription()
                        {
                            RuleName = rightRule.RuleTextRight, RuleDesc = rightRule.RuleDescriptionRight, RuleDirection = "right", RuleGuid = rightRule.Id.ExternalId.ToString(), RuleId = rightRule.RuleName
                        };
                        if (HasAccess(list, rightRule.EditModeAccessLevel) && rightRule.RuleVisibleRight && rightRule.RuleTextLeft != rightRule.RuleTextRight)
                        {
                            _rules.Add(rd);
                        }
                    }

                    /*
                     *
                     * List<RuleDescription> result = new List<RuleDescription>();
                     * int cnt = 0;
                     *
                     * foreach (Rule rule in _rules)
                     * {
                     *  bool isLeftRule = (RuleEngine.Instance.IsLeftRule(pageId, RuleEngine.Instance.GetRule(rule.RuleName)));
                     *  if ((from p in result where p.RuleName == rule.RuleName select p).Any())
                     *      result.Add(new RuleDescription() { RuleGuid = rule.Id.ExternalId.ToString(), RuleId = rule.RuleName, RuleDirection = "left", RuleName = rule.RuleTextLeft + "2", RuleDesc = (RuleEngine.Instance.IsLeftRule(pageId, RuleEngine.Instance.GetRule(rule.RuleName))) ? rule.RuleDescriptionLeft : rule.RuleDescriptionRight });
                     *  else
                     *      result.Add(new RuleDescription() { RuleGuid = rule.Id.ExternalId.ToString(), RuleId = rule.RuleName, RuleDirection = "left", RuleName = rule.RuleTextLeft, RuleDesc = (RuleEngine.Instance.IsLeftRule(pageId, RuleEngine.Instance.GetRule(rule.RuleName))) ? rule.RuleDescriptionLeft : rule.RuleDescriptionRight });
                     *  cnt++;
                     * }
                     *
                     * foreach (Rule rule in _rulesRight)
                     * {
                     *  bool isLeftRule = (RuleEngine.Instance.IsLeftRule(pageId, RuleEngine.Instance.GetRule(rule.RuleName)));
                     *  if ((from p in result where p.RuleName == rule.RuleName select p).Any())
                     *      result.Add(new RuleDescription() { RuleGuid = rule.Id.ExternalId.ToString(), RuleId = rule.RuleName, RuleDirection = "right", RuleName = rule.RuleTextRight + "2", RuleDesc = (RuleEngine.Instance.IsLeftRule(pageId, RuleEngine.Instance.GetRule(rule.RuleName))) ? rule.RuleDescriptionLeft : rule.RuleDescriptionRight });
                     *  else
                     *      result.Add(new RuleDescription() { RuleGuid = rule.Id.ExternalId.ToString(), RuleId = rule.RuleName, RuleDirection = "right", RuleName = rule.RuleTextRight, RuleDesc = (RuleEngine.Instance.IsLeftRule(pageId, RuleEngine.Instance.GetRule(rule.RuleName))) ? rule.RuleDescriptionLeft : rule.RuleDescriptionRight });
                     *  cnt++;
                     * }
                     */
                    return(Rest(_rules.Select(m => new { Guid = m.RuleGuid, Name = TryTranslate(m.RuleName), Id = m.RuleId, Description = TryTranslate(m.RuleDesc), Direction = m.RuleDirection })));
                }
            }
            return(null);
        }