Exemple #1
0
        public override IContentQuery<Content.Models.TextContent> GetContentQuery(DataRuleContext dataRuleContext)
        {
            var contentQuery = base.GetContentQuery(dataRuleContext);
            if (contentQuery is MediaContentQuery)
            {
                throw new BscException(string.Format("The binary folder '{0}' does not support '{1}'.", FolderName, "CategoryDataRule"));
            }
            var site = dataRuleContext.Site;
            var repository = Sites.Models.ModelExtensions.GetRepository(site);
            var categoryFolder = (TextFolder)(new TextFolder(repository, CategoryFolderName).AsActual());
            if (categoryFolder == null)
            {
                throw new BscException(string.Format("The folder does not exists.\"{0}\"", CategoryFolderName));
            }
            contentQuery = ((TextContentQuery)contentQuery).Categories(categoryFolder);
            if (CategoryClauses != null)
            {
                contentQuery = contentQuery.Where(CategoryClauses.Parse(categoryFolder.GetSchema(), dataRuleContext.ValueProvider));
            }

            if (Page_Context.Current.EnabledInlineEditing(EditingType.Content))
            {
                contentQuery = contentQuery.Where(
                    new Bsc.Dmtds.Content.Query.Expressions.OrElseExpression(
                        new Bsc.Dmtds.Content.Query.Expressions.WhereEqualsExpression(null, "Published", true),
                        new Bsc.Dmtds.Content.Query.Expressions.WhereEqualsExpression(null, "Published", null)));
            }
            else
                contentQuery = contentQuery.WhereEquals("Published", true); //default query published=true.

            return contentQuery;
        }
Exemple #2
0
        //[DataMember(Order = 13)]
        //public new string FolderName { get; set; }
        public override IContentQuery<Bsc.Dmtds.Content.Models.TextContent> GetContentQuery(DataRuleContext dataRuleContext)
        {
            var site = dataRuleContext.Site;
            var repository = Sites.Models.ModelExtensions.GetRepository(site);
            if (repository == null)
            {
                throw new SiteRepositoryNotExists();
            }
            var folder = FolderHelper.Parse<TextFolder>(repository, FolderName).AsActual();
            if (folder == null)
            {
                throw new BscException(string.Format("The folder does not exists.\"{0}\"", FolderName));
            }
            Bsc.Dmtds.Content.Query.IContentQuery<Bsc.Dmtds.Content.Models.TextContent> contentQuery = null;
            if (folder is TextFolder)
            {
                var textFolder = (TextFolder)folder;
                contentQuery = textFolder.CreateQuery();
            }
            //else
            //{
            //    var binaryFolder = (MediaFolder)folder;
            //    contentQuery = binaryFolder.CreateQuery();
            //}
            if (WhereClauses != null)
            {
                contentQuery = contentQuery.Where(WhereClauses.Parse(folder.GetSchema(), dataRuleContext.ValueProvider));
            }
            if (!string.IsNullOrEmpty(CategoryFolderName) && this.CategoryClauses != null && this.CategoryClauses.Length > 0)
            {
                var categoryFolder = FolderHelper.Parse<TextFolder>(repository, CategoryFolderName);
                var categoryQuery = categoryFolder.CreateQuery();
                var expression = CategoryClauses.Parse(categoryFolder.GetSchema(), dataRuleContext.ValueProvider);
                if (expression != null)
                {
                    categoryQuery = categoryQuery.Where(expression);
                    contentQuery = contentQuery.WhereCategory(categoryQuery);
                }
            }

            //query the Published=null content for inline editor..
            if (Page_Context.Current.EnabledInlineEditing(EditingType.Content))
            {
                //contentQuery = contentQuery.Where(
                //    new Content.Query.Expressions.OrElseExpression(
                //        new Content.Query.Expressions.WhereEqualsExpression(null, "Published", true),
                //        new Content.Query.Expressions.WhereEqualsExpression(null, "Published", null)));
            }
            else
                contentQuery = contentQuery.WhereEquals("Published", true); //default query published=true.
            return contentQuery;
        }
Exemple #3
0
        public override IContentQuery<Bsc.Dmtds.Content.Models.TextContent> GetContentQuery(DataRuleContext dataRuleContext)
        {
            var site = dataRuleContext.Site;
            var repositoryName = site.Repository;
            if (string.IsNullOrEmpty(repositoryName))
            {
                throw new BscException("The repository for site is null.");
            }
            var repository = new Repository(repositoryName);
            var schema = new Schema(repository, SchemaName);
            var contentQuery = (IContentQuery<Bsc.Dmtds.Content.Models.TextContent>)schema.CreateQuery();

            contentQuery.Where(WhereClauses.Parse(schema, dataRuleContext.ValueProvider));

            return contentQuery;
        }
Exemple #4
0
 public abstract IContentQuery<Bsc.Dmtds.Content.Models.TextContent> GetContentQuery(DataRuleContext dataRuleContext);
Exemple #5
0
        public object Execute(DataRuleContext dataRuleContext, TakeOperation operation, int cacheDuration)
        {
            var contentQuery = this.GetContentQuery(dataRuleContext);
            object data = contentQuery;

            if (!string.IsNullOrEmpty(this.SortField))
            {
                if (this.SortDirection == DataRule.SortDirection.Ascending)
                {
                    contentQuery = contentQuery.OrderBy(this.SortField);
                }
                else
                {
                    contentQuery = contentQuery.OrderByDescending(this.SortField);
                }
            }
            if (this.EnablePaging.Value)
            {
                string pageIndexParameterName;
                var pageIndexValue = ParameterizedFieldValue.GetFieldValue(this.PageIndex, dataRuleContext.ValueProvider,
                    out pageIndexParameterName);
                var intPageIndexValue = 1;
                int.TryParse(pageIndexValue, out intPageIndexValue);
                if (intPageIndexValue < 1)
                {
                    intPageIndexValue = 1;
                }

                var intPageSize = 10;
                if (string.IsNullOrEmpty(this.Top))
                {
                    string pageSizeParameterName;
                    var pageSizeValue = ParameterizedFieldValue.GetFieldValue(this.PageSize,
                        dataRuleContext.ValueProvider, out pageSizeParameterName);

                    int.TryParse(pageSizeValue, out intPageSize);
                    if (intPageSize < 1)
                    {
                        intPageSize = 10;
                    }
                }
                else
                {
                    string fieldName;
                    var topValue = ParameterizedFieldValue.GetFieldValue(this.Top, dataRuleContext.ValueProvider,
                        out fieldName);
                    int.TryParse(topValue, out intPageSize);
                }

                var totalCount = contentQuery.Count();

                data = new DataRulePagedList(contentQuery.Skip((intPageIndexValue - 1)*intPageSize).Take(intPageSize)
                    , intPageIndexValue
                    , intPageSize
                    , totalCount)
                {
                    PageIndexParameterName = pageIndexParameterName
                };
            }
            else if (!string.IsNullOrEmpty(this.Top))
            {
                string fieldName;
                var topValue = ParameterizedFieldValue.GetFieldValue(this.Top, dataRuleContext.ValueProvider,
                    out fieldName);
                var intTopValue = 1;
                int.TryParse(topValue, out intTopValue);

                data = contentQuery.Take(intTopValue);
            }
            else
            {
                data = contentQuery;
            }

            if (data is IContentQuery<ContentBase>)
            {
                data = GetData((IContentQuery<TextContent>) data, operation, cacheDuration);
            }

            return data;
        }
Exemple #6
0
        public virtual void ExecuteDataRules()
        {
            var pageViewData = ControllerContext.Controller.ViewData;

            var site = PageRequestContext.Site.AsActual();
            var page = PageRequestContext.Page.AsActual();

            var dataRuleContext = new DataRuleContext(PageRequestContext.Site, PageRequestContext.Page) { ValueProvider = PageRequestContext.GetValueProvider() };
            if (page.DataRules != null)
            {
                DataRuleExecutor.Execute(pageViewData, dataRuleContext, page.DataRules);
            }
            var viewPositions = page.PagePositions.Where(it => it is ViewPosition).OrderBy(it => it.Order);
            foreach (ViewPosition viewPosition in viewPositions)
            {
                var view = new Models.View(site, viewPosition.ViewName).LastVersion().AsActual();
                if (view != null)
                {
                    var positionViewData = (ViewDataDictionary)GetPositionViewData(viewPosition.PagePositionId).Merge(pageViewData);
                    var viewDataContext = new PagePositionContext(view, viewPosition.ToParameterDictionary(), positionViewData);
                    var dataRules = view.DataRules;
                    if (dataRules != null)
                    {
                        var valueProvider = PageRequestContext.GetValueProvider();
                        valueProvider.Insert(0, new ViewParameterValueProvider(viewDataContext.Parameters));
                        dataRuleContext.ValueProvider = valueProvider;
                        DataRuleExecutor.Execute(positionViewData, dataRuleContext, dataRules);
                    }
                    if (positionViewData.Model == null)
                    {
                        positionViewData.Model = positionViewData.Values.FirstOrDefault();
                    }
                    SetPositionViewData(viewPosition.PagePositionId, positionViewData);
                }
            }
        }
Exemple #7
0
        public object Execute(DataRuleContext dataRuleContext, TakeOperation operation, int cacheDuration)
        {
            var url = EvaluateStringFormulas(this.URL, dataRuleContext);
            NameValueCollection form = KeyValuesToNameValueCollection(dataRuleContext, this.FormData);
            NameValueCollection headers = KeyValuesToNameValueCollection(dataRuleContext, this.Headers);

            var httpDataRequest = Bsc.Dmtds.Core.Runtime.EngineContext.Current.Resolve<IHttpDataRequest>();
            return httpDataRequest.GetData(url, this.HttpMethod, ContentType, form, headers);
        }
Exemple #8
0
        private static NameValueCollection KeyValuesToNameValueCollection(DataRuleContext dataRuleContext, IEnumerable<CKeyValuePair<string, string>> keyValuePairs)
        {
            NameValueCollection values = new NameValueCollection();
            if (keyValuePairs != null && keyValuePairs.Count() > 0)
            {
                foreach (var item in keyValuePairs)
                {
                    if (!string.IsNullOrEmpty(item.Key))
                    {
                        var value = EvaluateStringFormulas(item.Value, dataRuleContext);
                        values[item.Key] = value;
                    }
                }
            }

            return values;
        }
Exemple #9
0
 private static string EvaluateStringFormulas(string formula, DataRuleContext dataRuleContext)
 {
     var formulaParser = new FormulaParser();
     return formulaParser.Populate(formula, new ValueProviderBridge(dataRuleContext.ValueProvider));
 }