public void AddTask(HiddenStringFieldUpdateProcessVariant variant, HiddenStringFieldSettings settings, ContentPartFieldDefinitionBuilder builder)
 {
     if (variant != HiddenStringFieldUpdateProcessVariant.None)
     {
         _processingEngine
         .AddTask(_shellSettings,
                  _shellDescriptorManager.GetShellDescriptor(),
                  "IHiddenStringFieldUpdateProcessor.Process",
                  new Dictionary <string, object> {
             { "contentItemIds", GetIdsToProcess(variant, builder) },
             { "partName", builder.PartName },
             { "fieldName", builder.Name },
             { "settings", settings }
         });
     }
 }
        public void Process(IEnumerable <int> contentItemIds, string partName, string fieldName, HiddenStringFieldSettings settings)
        {
            var parts = _contentManager.GetMany <ContentItem>(contentItemIds, VersionOptions.Published, new QueryHints())
                        .Select(ci => ci.Parts.FirstOrDefault(pa => pa.PartDefinition.Name == partName));

            if (settings.Tokenized)
            {
                foreach (var item in parts.Select(pa =>
                                                  new KeyValuePair <HiddenStringField, Dictionary <string, object> >(
                                                      pa.Fields.FirstOrDefault(fi => IsMyField(fi, fieldName)) as HiddenStringField,
                                                      new Dictionary <string, object> {
                    { "Content", pa.ContentItem }
                }
                                                      )))
                {
                    item.Key.Value = _tokenizer.Replace(settings.TemplateString, item.Value);
                }
            }
            else
            {
                var fields = parts.SelectMany(pa => pa.Fields
                                              .Where(fi => IsMyField(fi, fieldName))
                                              .Select(fi => fi as HiddenStringField));
                foreach (var field in fields)
                {
                    field.Value = settings.TemplateString;
                }
            }
        }
Пример #3
0
        public void Process(IEnumerable <int> contentItemIds, string partName, string fieldName, HiddenStringFieldSettings settings)
        {
            var parts = _contentManager.GetMany <ContentItem>(contentItemIds, VersionOptions.Published, new QueryHints())
                        .Select(ci => ci.Parts.FirstOrDefault(pa => pa.PartDefinition.Name == partName));

            if (settings.Tokenized)
            {
                foreach (var part in parts)
                {
                    var item = new KeyValuePair <HiddenStringField, Dictionary <string, object> >(
                        part.Fields.FirstOrDefault(fi => IsMyField(fi, fieldName)) as HiddenStringField,
                        new Dictionary <string, object> {
                        { "Content", part.ContentItem }
                    });
                    item.Key.Value = _tokenizer.Replace(settings.TemplateString, item.Value);
                    //Updates the index for projections
                    _fieldIndexService.Set(
                        part.ContentItem.As <FieldIndexPart>(),
                        part.PartDefinition.Name,
                        item.Key.Name,
                        "",
                        item.Key.Value,
                        typeof(string));
                }
            }
            else
            {
                foreach (var part in parts)
                {
                    var fields = part.Fields
                                 .Where(fi => IsMyField(fi, fieldName))
                                 .Select(fi => fi as HiddenStringField);
                    foreach (var field in fields)
                    {
                        field.Value = settings.TemplateString;
                        //Updates the index for projections
                        _fieldIndexService.Set(
                            part.ContentItem.As <FieldIndexPart>(),
                            part.PartDefinition.Name,
                            field.Name,
                            "",
                            field.Value,
                            typeof(string));
                    }
                }
            }
        }