Esempio n. 1
0
        private void EditResource(Resource resource, ResourceContentBuilder builder)
        {
            // load resource xml from repository
            var xDoc = new XmlDocument();

            using var resStream = resource.Binary.GetStream();
            xDoc.Load(resStream);

            foreach (var classBuilder in builder.Classes)
            {
                // load or create the class element
                var resClassElement = LoadOrAddElement(xDoc.DocumentElement,
                                                       $"ResourceClass[@name='{classBuilder.ClassName}']", "ResourceClass",
                                                       new Dictionary <string, string>
                {
                    { "name", classBuilder.ClassName }
                },
                                                       @"<Languages></Languages>");

                foreach (var cultureBuilder in classBuilder.Cultures)
                {
                    foreach (var resourceItem in cultureBuilder.Resources)
                    {
                        // main operation: add or modify xml elements for one resource
                        AddOrEditResource(resClassElement, cultureBuilder.CultureName, resourceItem.Key, resourceItem.Value);
                    }
                }
            }

            // save the resource content
            using var modifiedStream = RepositoryTools.GetStreamFromString(xDoc.OuterXml);
            resource.Binary.SetStream(modifiedStream);
            resource.Save(SavingMode.KeepVersion);
        }
Esempio n. 2
0
        public IResourceContentBuilder Content(string contentName)
        {
            if (string.IsNullOrEmpty(contentName))
            {
                throw new ArgumentNullException(nameof(contentName));
            }

            var rcb = ResourceContentBuilders.FirstOrDefault(res => res.ContentName == contentName);

            if (rcb != null)
            {
                return(rcb);
            }

            rcb = new ResourceContentBuilder(contentName);
            ResourceContentBuilders.Add(rcb);

            return(rcb);
        }
Esempio n. 3
0
 internal ResourceClassBuilder(ResourceContentBuilder contentBuilder, string className)
 {
     ContentBuilder = contentBuilder;
     ClassName      = className;
 }