public void DumpList(DumperServiceContext context)
        {
            var fields = context.Content
                         .ContentItem
                         .Parts
                         .SelectMany(pa => pa.Fields)
                         .Where(fi => fi is FieldExternal)
                         .Select(fi => fi as FieldExternal)
                         .Where(fi => fi.Setting.GenerateL);

            if (fields != null && fields.Any())
            {
                var Myobject = new Dictionary <string, object> {
                    { "Content", context.Content.ContentItem }
                };
                foreach (var externalField in fields)
                {
                    var settings = externalField.PartFieldDefinition
                                   .Settings.GetModel <FieldExternalSetting>();
                    if (!settings.NoFollow)
                    {
                        var mainSb = new StringBuilder();
                        mainSb.Append("{");

                        try {
                            if (string.IsNullOrEmpty(settings.ExternalURL))
                            {
                                externalField.ContentObject = _fieldExternalService
                                                              .GetContentfromField(Myobject, externalField.ExternalUrl, externalField.Name,
                                                                                   settings, context.Content.ContentItem.ContentType, externalField.HttpVerb,
                                                                                   externalField.HttpDataType, externalField.AdditionalHeadersText, externalField.BodyRequest);
                            }
                            else
                            {
                                externalField.ContentObject = _fieldExternalService
                                                              .GetContentfromField(Myobject, settings.ExternalURL, externalField.Name,
                                                                                   settings, context.Content.ContentItem.ContentType, settings.HttpVerb,
                                                                                   settings.HttpDataType, settings.AdditionalHeadersText, settings.BodyRequest);
                            }
                        } catch (ExternalFieldRemoteException ex) {
                            externalField.ContentObject = ex;
                        }

                        if (externalField.ContentObject != null)
                        {
                            var dump = context.GetDumper()
                                       .Dump(cleanobj(externalField.ContentObject), externalField.Name, "List<generic>");
                            context.ConvertToJson(dump, mainSb);
                        }

                        mainSb.Append("}");

                        // Add the serialization to the results
                        context.ContentLists.Add(mainSb.ToString());
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public void DumpList(DumperServiceContext context)
        {
            if (_projectionManager != null)
            {
                var part = context.Content
                           .ContentItem
                           .As <ProjectionPart>();

                if (part != null)
                {
                    var mainSb = new StringBuilder();

                    mainSb.Append("{");
                    mainSb.AppendFormat("\"n\": \"{0}\"", "ProjectionList");
                    mainSb.AppendFormat(", \"v\": \"{0}\"", "ContentItem[]");
                    mainSb.Append(", \"m\": [");

                    var queryId    = part.Record.QueryPartRecord.Id;
                    var queryItems = _projectionManager
                                     .GetContentItems(queryId, (context.Page - 1) * context.PageSize, context.PageSize);

                    if (queryItems.Any())
                    {
                        mainSb.Append(
                            string.Join(",", queryItems
                                        .Select((ci, index) => {
                            var sb = new StringBuilder();
                            sb.Append("{");
                            var dump = context.GetDumper()
                                       .Dump(ci, string.Format("[{0}]", index));
                            context.ConvertToJson(dump, sb);
                            sb.Append("}");
                            return(sb.ToString());
                        }))
                            );
                    }

                    mainSb.Append("]");
                    mainSb.Append("}");

                    // Add the serialization to the results
                    context.ContentLists.Add(mainSb.ToString());
                }
            }
        }
        public void DumpList(DumperServiceContext context)
        {
            var part = context.Content
                       .ContentItem
                       .Parts
                       .FirstOrDefault(pa => pa.PartDefinition.Name == "WidgetsContainerPart");

            if (part != null)
            {
                var mainSb = new StringBuilder();
                mainSb.Append("{");
                mainSb.AppendFormat("\"n\": \"{0}\"", "WidgetList");
                mainSb.AppendFormat(", \"v\": \"{0}\"", "ContentItem[]");
                mainSb.Append(", \"m\": [");

                var queryItems = _widgetManager.GetWidgets(part.Id);
                if (queryItems.Any())
                {
                    mainSb.Append(
                        string.Join(",", queryItems
                                    .Select((wep, index) => {
                        var sb = new StringBuilder();
                        sb.Append("{");
                        var dump = context.GetDumper()
                                   .Dump(wep, string.Format("[{0}]", index));
                        context.ConvertToJson(dump, sb);
                        sb.Append("}");
                        return(sb.ToString());
                    }))
                        );
                }

                mainSb.Append("]");
                mainSb.Append("}");

                // Add the serialization to the results
                context.ContentLists.Add(mainSb.ToString());
            }
        }
Ejemplo n.º 4
0
        public void DumpList(DumperServiceContext context)
        {
            var part = context.Content
                       .ContentItem
                       .As <CalendarPart>();

            if (part != null)
            {
                var mainSb = new StringBuilder();
                mainSb.Append("{");
                mainSb.AppendFormat("\"n\": \"{0}\"", "EventList");
                mainSb.AppendFormat(", \"v\": \"{0}\"", "ContentItem[]");
                mainSb.Append(", \"m\": [");

                var queryItems = _eventsService
                                 .GetAggregatedList(part, context.Page, context.PageSize);
                if (queryItems.Any())
                {
                    mainSb.Append(
                        string.Join(",", queryItems
                                    .Select((aevm, index) => {
                        var sb = new StringBuilder();
                        sb.Append("{");
                        var dump = context.GetDumper()
                                   .Dump(aevm, string.Format("[{0}]", index));
                        context.ConvertToJson(dump, sb);
                        sb.Append("}");
                        return(sb.ToString());
                    }))
                        );
                }

                mainSb.Append("]");
                mainSb.Append("}");

                // Add the serialization to the results
                context.ContentLists.Add(mainSb.ToString());
            }
        }
        public void DumpList(DumperServiceContext context)
        {
            if (ShouldDoSomething(context.Content.ContentItem))
            {
                var part = context.Content
                           .ContentItem
                           .As <TermPart>();

                if (part != null)
                {
                    var mainSb = new StringBuilder();
                    mainSb.Append("{");
                    Func <IContent, int, XElement> dumpFunc;
                    if (context.ResultTarget == ResultTarget.Contents)
                    {
                        mainSb.AppendFormat("\"n\": \"{0}\"", "TaxonomyTermList");
                        mainSb.AppendFormat(", \"v\": \"{0}\"", "ContentItem[]");
                        dumpFunc = (item, index) => context.GetDumper()
                                   .Dump(item.ContentItem, string.Format("[{0}]", index));
                    }
                    else
                    {
                        mainSb.AppendFormat("\"n\": \"{0}\"", "TermPartList");
                        mainSb.AppendFormat(", \"v\": \"{0}\"", "TermPart[]");
                        dumpFunc = (item, index) => context.GetDumper()
                                   .Dump(item, "TermPart");
                    }
                    mainSb.Append(", \"m\": [");

                    IEnumerable <IContent> termContentItems;
                    if (context.ResultTarget == ResultTarget.Terms)
                    {
                        termContentItems = _taxonomyService
                                           .GetChildren(part, true);
                    }
                    else if (context.ResultTarget == ResultTarget.SubTerms)
                    {
                        termContentItems = _taxonomyService
                                           .GetChildren(part, false);
                    }
                    else
                    {
                        termContentItems = _taxonomyService
                                           .GetContentItems(part, (context.Page - 1) * context.PageSize, context.PageSize);
                    }

                    if (termContentItems.Any())
                    {
                        mainSb.Append(
                            string.Join(",", termContentItems
                                        .Select((ci, index) => {
                            var sb = new StringBuilder();
                            sb.Append("{");
                            context.ConvertToJson(dumpFunc(ci, index), sb);
                            sb.Append("}");
                            return(sb.ToString());
                        }))
                            );
                    }

                    mainSb.Append("]");
                    mainSb.Append("}");

                    // Add the serialization to the results
                    context.ContentLists.Add(mainSb.ToString());
                }
            }
        }
 private void GetItems(TermPart part, DumperServiceContext context)
 {
 }
Ejemplo n.º 7
0
        private ActionResult GetContent(
            IContent content,
            SourceTypes sourceType    = SourceTypes.ContentItem,
            ResultTarget resultTarget = ResultTarget.Contents,
            string fieldspartsFilter  = "",
            int page                  = 1,
            int pageSize              = 10,
            bool tinyResponse         = true,
            bool minified             = false,
            bool realformat           = false,
            int deeplevel             = 10,
            string[] complexBehaviour = null)
        {
            var result = new ContentResult {
                ContentType = "application/json"
            };
            var jsonString = "{}";

            var      _filterContentFieldsParts = fieldspartsFilter.ToLower().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
            XElement dump;
            XElement projectionDump = null;
            // il dump dell'oggetto principale non filtra per field
            ObjectDumper dumper = new ObjectDumper(deeplevel, null, false, tinyResponse, complexBehaviour);
            var          sb     = new StringBuilder();

            // verifico se l'oggetto è soggetto all'accettazione delle policies
            var policy = content.As <Policy.Models.PolicyPart>();

            if (policy != null)
            {
                if ((String.IsNullOrWhiteSpace(_orchardServices.WorkContext.HttpContext.Request.QueryString["v"]))) // E' soggetto a privacy, quindi faccio sempre il redirect se manca il parametro in querystring v=
                {
                    if (policy.HasPendingPolicies ?? false)                                                         // se ha delle pending policies deve restituire le policy text, legate al contenuto, quindi non deve mai servire cache
                    {
                        var redirectUrl = String.Format("{0}{1}v={2}", _orchardServices.WorkContext.HttpContext.Request.RawUrl, (_orchardServices.WorkContext.HttpContext.Request.RawUrl.Contains("?") ? "&" : "?"), Guid.NewGuid());
                        _orchardServices.WorkContext.HttpContext.Response.Redirect(redirectUrl, true);
                    }
                    else    // se NON ha delle pending policies deve restituire un url non cacheato (quindi aggiungo v=),
                    {
                        var redirectUrl = String.Format("{0}{1}v={2}", _orchardServices.WorkContext.HttpContext.Request.RawUrl, (_orchardServices.WorkContext.HttpContext.Request.RawUrl.Contains("?") ? "&" : "?"), "cached-content");
                        _orchardServices.WorkContext.HttpContext.Response.Redirect(redirectUrl, true);
                        //_orchardServices.WorkContext.HttpContext.Response.Redirect(redirectUrl, true);
                    }
                    return(null); // in entrambi i casi ritorno null come risultato della current request
                }
            }
            if (policy != null && (policy.HasPendingPolicies ?? false))   // Se l'oggetto ha delle pending policies allora devo serivre la lista delle pending policies
            //policy.PendingPolicies
            {
                sb.Insert(0, "{");
                sb.AppendFormat("\"n\": \"{0}\"", "Model");
                sb.AppendFormat(", \"v\": \"{0}\"", "VirtualContent");
                sb.Append(", \"m\": [{");
                sb.AppendFormat("\"n\": \"{0}\"", "VirtualId"); // Unused property for mobile mapper needs
                sb.AppendFormat(", \"v\": \"{0}\"", "0");
                sb.Append("}]");

                sb.Append(", \"l\":[");

                int i = 0;
                sb.Append("{");
                sb.AppendFormat("\"n\": \"{0}\"", "PendingPolicies");
                sb.AppendFormat(", \"v\": \"{0}\"", "ContentItem[]");
                sb.Append(", \"m\": [");

                foreach (var item in policy.PendingPolicies)
                {
                    if (i > 0)
                    {
                        sb.Append(",");
                    }
                    sb.Append("{");
                    dumper         = new ObjectDumper(deeplevel, _filterContentFieldsParts, false, tinyResponse, complexBehaviour);
                    projectionDump = dumper.Dump(item, String.Format("[{0}]", i));
                    JsonConverter.ConvertToJSon(projectionDump, sb, minified, realformat);
                    sb.Append("}");
                    i++;
                }
                sb.Append("]");
                sb.Append("}");

                sb.Append("]"); // l : [
                sb.Append("}");
            }
            else     // Se l'oggetto NON ha delle pending policies allora posso servire l'oggetto stesso
            // Doing a IContentManager.Get here should ensure that the handlers that populate lazyfields
            // are executed, and all data in ContentParts and ContentField is initialized as it should.
            {
                content = _orchardServices.ContentManager.Get(content.Id, VersionOptions.Published);

                dump = dumper.Dump(content, "Model");

                JsonConverter.ConvertToJSon(dump, sb, minified, realformat);
                sb.Insert(0, "{");
                sb.Append(", \"l\":[");
                // Dopo avere convertito il contentItem in JSON aggiungo i Json delle eventuali liste

                var dumperContext = new DumperServiceContext(
                    content,
                    () =>
                    new ObjectDumper(deeplevel, _filterContentFieldsParts, false, tinyResponse, complexBehaviour),
                    (_xElement, _stringBuilder) =>
                    JsonConverter.ConvertToJSon(_xElement, _stringBuilder, minified, realformat),
                    resultTarget,
                    page, pageSize);
                foreach (var dumperService in _dumperServices)
                {
                    dumperService.DumpList(dumperContext);
                }
                sb.Append(string.Join(",", dumperContext.ContentLists));

                sb.Append("]"); // l : [
                sb.Append("}");
            }
            jsonString     = sb.ToString().Replace("\t", " ");
            result.Content = jsonString;
            return(result);
        }