예제 #1
0
        /// <summary>
        /// Evaluates a directory to gather the image gallery contents to XML.
        /// </summary>
        /// <param name="iterDoc">XML Document</param>        
        /// <param name="iterArticleContent">Xml Document Node</param>
        /// <param name="doc">SE4 related information</param>
        /// <param name="attributeList">List of attributes to work with</param>
        /// <param name="documentPath">Target resource directory</param>
        private void CreateOutputArticleContentDocImageGalleryToXml(XmlDocument iterDoc, XmlElement iterArticleContent, IterwebMapInfo doc, List<SE4Attribute> attributeList, string documentPath) {
            if (log.IsDebugEnabled) log.Debug("CreateOutputArticleContentDocImageGalleryToXml Start");
            if (galleryImgList.Count > 0) {
                XmlElement item = null;
                XmlElement itemChild = null;
                string contentText = "";
                XmlCDataSection cdata = null;

                item = iterDoc.CreateElement("component");
                item.SetAttribute("name", "Headline");
                item.SetAttribute("index", "1");
                iterArticleContent.AppendChild(item);

                contentText = RemoveInvalidXmlChars(imageGalleryTitle);
                cdata = iterDoc.CreateCDataSection(contentText);
                item.InnerXml = cdata.OuterXml;
                foreach (var it in galleryImgList) {
                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", GlobalConstants.IMAGE_NAME_GENERAL);
                    iterArticleContent.AppendChild(item);

                    itemChild = iterDoc.CreateElement("file");
                    itemChild.SetAttribute("path", DocumentImageDir + it.Name);
                    item.AppendChild(itemChild);

                    itemChild = iterDoc.CreateElement("component");
                    itemChild.SetAttribute("name", "Cutline");
                    contentText = it.Content;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    itemChild.InnerXml = cdata.OuterXml;
                    item.AppendChild(itemChild);
                }
                galleryImgList.Clear();
            }
            if (log.IsDebugEnabled) log.Debug("CreateOutputArticleContentDocImageGalleryToXml End");
        }
예제 #2
0
        /// <summary>
        /// Appends document content if output is new Article XML format.
        /// </summary>
        /// <param name="documentPath">Target resource directory</param>
        /// <param name="iterDoc">XML Document</param>        
        /// <param name="iterArticleContent">Xml Document Node</param>
        /// <param name="doc">SE4 related information</param>
        /// <param name="attributeList">List of attributes to work with</param>
        private void CreateOutputArticleContentDocToXml(string documentPath, XmlDocument iterDoc, XmlElement iterArticleContent, IterwebMapInfo doc, List<SE4Attribute> attributeList) {
            if (log.IsDebugEnabled) log.Debug("CreateOutputArticleContentDocToXml start (SE4 Doc processing)");
            XmlCDataSection cdata = null;
            XmlElement item = null;
            XmlElement itemChild = null;
            string contentText = "";
            string name = "";
            string targetType = "";
            string targetIndexType = "";
            ValidMapField vf = null;
            List<ValidMapField> documentValidFields = se4TemplateFieldMapping[doc.Layout];

            string mediaCutLine = "";
            string mediaRelatedImageCutLine = "";
            string mediaImageName = "";
            string mediaRelatedImageName = "";
            string textData = "";
            bool isInfographicSet = (doc.IsInfographic == 1);
            bool docHasZoomImage = false;

            // The logic behind inserting the idBrightCove value consists to prepare this value in database and
            // ask here for layout value and then if it is not null then create the componet to XML 
            // NOTE: Fields in layout with names 'videoPrincipal', and 'videoGaleria' cannot be loaded herein, that
            // is, they must be set to false in 'BuildSE4TemplateMapping()'.
            if (doc.Layout == "creacion_video" ||
                doc.Layout == "creacion_notaInterior100" ||
                doc.Layout == "creacion_minutoaminuto" ||
                doc.Layout == "creacion_notaInterior100M") {
                if (doc.IdBrightCove != null) {
                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Multimedia_Brightcove");
                    item.SetAttribute("index", "0");
                    iterArticleContent.AppendChild(item);

                    cdata = iterDoc.CreateCDataSection(doc.IdBrightCove);
                    item.InnerXml = cdata.OuterXml;
                }
            }

            if (doc.Layout == "creacion_galeria") {
                // Document has been completed processed at this step.
                CreateOutputArticleContentDocImageGalleryToXml(iterDoc, iterArticleContent, doc, attributeList, documentPath);
                return;
            }

            // Exception to general loop next to this one. That is, that loop assumes all fields are exported one by one.
            // Special evaluation for fields.            
            foreach (var it in attributeList) {
                if (doc.Layout == "creacion_notaInteriorEditorial") {
                    ;
                }
                else {
                    // At this place the 'CuerpoPrimerParrafo' is concatenated to 'EDITORHTML', 'cuerpo', ..., fields.
                    if (it.ElementName == "cuerpoPrimerParrafo" ||
                        it.ElementName == "EDITORHTML" ||
                        it.ElementName == "EditorHtml" ||
                        it.ElementName == "editorhtml" ||
                        it.ElementName == "cuerpo"
                        ) {
                        contentText = (it.HugeContentCode != -1 ? it.HugeText : it.Text);
                        contentText = RemoveInvalidXmlChars(contentText);
                        textData += contentText;
                    }
                }
                if (it.ElementName == "medio") {
                    switch (it.AttributeName) {
                        case "imagen":
                            if (mediaImageName == "") {
                                mediaImageName = ExtractMediaName(it, doc, documentPath);
                            }
                            break;
                        case "media_img_imagen":
                            if (mediaImageName == "") {
                                mediaImageName = ExtractMediaName(it, doc, documentPath);
                            }
                            break;
                        case "image_ampliacion":
                            if (mediaImageName == "") {
                                mediaImageName = ExtractMediaName(it, doc, documentPath);
                            }
                            break;
                        case "media_img_ampliacion":
                            if (mediaImageName == "") {
                                mediaImageName = ExtractMediaName(it, doc, documentPath);
                            }
                            break;
                        case "descripcion_ampliacion":
                            contentText = (it.HugeContentCode != -1 ? it.HugeText : it.Text);
                            contentText = RemoveInvalidXmlChars(contentText);
                            if (mediaCutLine == "") {
                                mediaCutLine += contentText;
                            }
                            else {
                                mediaCutLine += " |" + contentText;
                            }
                            break;
                        case "descripcionImagenNota":
                            contentText = (it.HugeContentCode != -1 ? it.HugeText : it.Text);
                            contentText = RemoveInvalidXmlChars(contentText);
                            if (mediaCutLine == "") {
                                mediaCutLine += contentText;
                            }
                            else {
                                mediaCutLine += " |" + contentText;
                            }
                            break;
                        case "credito":
                            contentText = (it.HugeContentCode != -1 ? it.HugeText : it.Text);
                            contentText = RemoveInvalidXmlChars(contentText);
                            if (mediaCutLine == "") {
                                mediaCutLine += contentText;
                            }
                            else {
                                mediaCutLine += " | " + contentText;
                            }
                            break;
                    }
                }
                if (isInfographicSet) {
                    if (it.ElementName == "fotoRelacionada" && it.AttributeName == "ampliarimagen") {
                        contentText = (it.HugeContentCode != -1 ? it.HugeText : it.Text);
                        contentText = RemoveInvalidXmlChars(contentText);
                        if (contentText != "") {
                            docHasZoomImage = true;
                        }
                    }
                    if (it.ElementName == "fotoRelacionada" && docHasZoomImage) {
                        switch (it.AttributeName) {
                            case "image_ampliacion":
                                if (mediaRelatedImageName == "") {
                                    mediaRelatedImageName = ExtractMediaName(it, doc, documentPath);
                                }
                                break;
                            case "media_img_ampliacion":
                                if (mediaRelatedImageName == "") {
                                    mediaRelatedImageName = ExtractMediaName(it, doc, documentPath);
                                }
                                break;
                            case "descripcion_ampliacion":
                                contentText = (it.HugeContentCode != -1 ? it.HugeText : it.Text);
                                contentText = RemoveInvalidXmlChars(contentText);
                                if (mediaRelatedImageCutLine == "") {
                                    mediaRelatedImageCutLine += contentText;
                                }
                                else {
                                    mediaRelatedImageCutLine += " |" + contentText;
                                }
                                break;
                            case "creditoFotoRelacionada":
                                contentText = (it.HugeContentCode != -1 ? it.HugeText : it.Text);
                                contentText = RemoveInvalidXmlChars(contentText);
                                if (mediaRelatedImageCutLine == "") {
                                    mediaRelatedImageCutLine += contentText;
                                }
                                else {
                                    mediaRelatedImageCutLine += " |" + contentText;
                                }
                                break;
                        }
                    }
                }
            }
            if (mediaImageName != "") {
                item = iterDoc.CreateElement("component");
                if (doc.Layout == "creacion_infografias") {
                    item.SetAttribute("name", GlobalConstants.IMAGE_NAME_INPHOGRAFIC);
                }
                else {
                    item.SetAttribute("name", GlobalConstants.IMAGE_NAME_GENERAL);
                }
                iterArticleContent.AppendChild(item);

                itemChild = iterDoc.CreateElement("file");
                itemChild.SetAttribute("path", mediaImageName);
                item.AppendChild(itemChild);

                if (mediaCutLine != "") {
                    itemChild = iterDoc.CreateElement("component");
                    itemChild.SetAttribute("name", "Cutline");
                    contentText = mediaCutLine;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    itemChild.InnerXml = cdata.OuterXml;
                    item.AppendChild(itemChild);
                }
            }
            if (mediaRelatedImageName != "") {
                item = iterDoc.CreateElement("component");
                if (docHasZoomImage) {
                    item.SetAttribute("name", GlobalConstants.IMAGE_NAME_INPHOGRAFIC);
                }
                else {
                    item.SetAttribute("name", GlobalConstants.IMAGE_NAME_GENERAL);
                }
                iterArticleContent.AppendChild(item);

                itemChild = iterDoc.CreateElement("file");
                itemChild.SetAttribute("path", mediaRelatedImageName);
                item.AppendChild(itemChild);

                if (mediaRelatedImageCutLine != "") {
                    itemChild = iterDoc.CreateElement("component");
                    itemChild.SetAttribute("name", "Cutline");
                    contentText = mediaRelatedImageCutLine;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    itemChild.InnerXml = cdata.OuterXml;
                    item.AppendChild(itemChild);
                }
            }

            if (doc.Layout == "creacion_video") {
                // Invalidates 'document content (text)' gathered so far
                // Special case. When we are in 'creacion_video' we put 'entradilla' (lead) concatenated to 'content' (text).
                var filteredSE4AttrList = (from a in attributeList
                                           where a.ElementName == "entradilla"
                                           select a
                            ).ToList<SE4Attribute>().FirstOrDefault<SE4Attribute>();
                if (filteredSE4AttrList != null) {
                    contentText = (filteredSE4AttrList.HugeContentCode != -1 ? filteredSE4AttrList.HugeText : filteredSE4AttrList.Text);
                    contentText = RemoveInvalidXmlChars(contentText);

                    // First lead then text to final text
                    textData = contentText + " " + textData;
                    if (textData != "") {
                        textData = textData.Trim();
                    }
                }
            }
            if (doc.Layout == "creacion_notaInteriorEditorial") {
                // Invalidates 'document content (text)' gathered so far
                var firstParagraphField = (from a in attributeList
                                           where a.ElementName == "cuerpoPrimerParrafo"
                                           select a
                                          ).ToList<SE4Attribute>().FirstOrDefault<SE4Attribute>();
                var txtField = (from a in attributeList
                                where a.ElementName == "EDITORHTML"
                                select a
                               ).ToList<SE4Attribute>().FirstOrDefault<SE4Attribute>();
                var contextFieldList = (from a in attributeList
                                        where a.ElementName == "contexto"
                                        select a
                                       ).ToList<SE4Attribute>();
                contentText = textData = "";
                var txtFirstP = (firstParagraphField.HugeContentCode != -1 ? firstParagraphField.HugeText : firstParagraphField.Text);
                txtFirstP = RemoveInvalidXmlChars(contentText);

                contentText = (txtField.HugeContentCode != -1 ? txtField.HugeText : txtField.Text);
                contentText += txtFirstP;
                contentText = RemoveInvalidXmlChars(contentText);

                textData += "<div class='detalle_editorial'>" + contentText + "</div>";

                contentText = "<p><b>Contraposición</b></p>";
                foreach (var attr in contextFieldList) {
                    if (attr.AttributeName == "tituloAyuda" || attr.AttributeName == "EDITORHTML") {
                        contentText += (attr.HugeContentCode != -1 ? attr.HugeText : attr.Text);
                    }
                }
                contentText = RemoveInvalidXmlChars(contentText);
                textData += "<div class='detalle_contraposicion'>" + contentText + "</div>";
            }
            if (doc.Layout == "NotaInteriorNavidad") {
                // Invalidates 'document content (text)' gathered so far                
                var txtField = (from a in attributeList
                                where a.ElementName == "EDITORHTML"
                                select a
                               ).ToList<SE4Attribute>().FirstOrDefault<SE4Attribute>();
                var helpFieldList = (from a in attributeList
                                     where a.ElementName == "Ayuda"
                                     select a
                                    ).ToList<SE4Attribute>();
                contentText = textData = "";
                contentText = (txtField.HugeContentCode != -1 ? txtField.HugeText : txtField.Text);
                foreach (var attr in helpFieldList) {
                    contentText += "<p>" + (attr.HugeContentCode != -1 ? attr.HugeText : attr.Text) + "</p>";
                }
                contentText = RemoveInvalidXmlChars(contentText);
                textData = contentText;

            }
            if (textData != "") {
                item = iterDoc.CreateElement("component");
                item.SetAttribute("name", "Text");
                item.SetAttribute("index", "1");
                iterArticleContent.AppendChild(item);

                cdata = iterDoc.CreateCDataSection(textData);
                item.InnerXml = cdata.OuterXml;
            }

            // Now other fields
            foreach (var it in attributeList) {
                // Discard already processed elements.
                if (it.ElementName == "medio" ||
                    it.ElementName == "cuerpoPrimerParrafo" ||
                    it.ElementName == "EDITORHTML" ||
                    it.ElementName == "EditorHtml" ||
                    it.ElementName == "editorhtml" ||
                    it.ElementName == "cuerpo" ||
                    it.ElementName == "nombreGaleria" ||
                    it.ElementName == "anteTituloEditorial" ||
                    it.ElementName == "contexto" ||
                    it.ElementName == "fotoRelacionada" ||
                    it.ElementName == "Ayuda"
                    ) {
                    continue;
                }
                vf = documentValidFields.Find(e => e.Source == it.ElementName && e.Use);
                if (vf.Attributes != null) {
                    ValidMapFieldAttributes attr = vf.Attributes.Find(e => e.SourceAttribute == it.AttributeName);
                    if (attr != null) {
                        name = attr.Target;
                        targetType = attr.TargetType;
                        targetIndexType = attr.TargetIndexType;
                    }
                    else {
                        name = vf.Target;
                        targetType = vf.TargetType;
                        targetIndexType = vf.TargetIndexType;
                    }
                }
                else {
                    name = vf.Target;
                    targetType = vf.TargetType;
                    targetIndexType = vf.TargetIndexType;
                }

                if (it.MultimediaAttribute == GlobalConstants.SE4ATTR_MULTIMEDIA_NONE) {
                    contentText = (it.HugeContentCode != -1 ? it.HugeText : it.Text);
                    contentText = RemoveInvalidXmlChars(contentText);

                    if (contentText != "") {
                        item = iterDoc.CreateElement("component");
                        item.SetAttribute("name", name);
                        item.SetAttribute("index", "1");
                        iterArticleContent.AppendChild(item);

                        cdata = iterDoc.CreateCDataSection(contentText);
                        item.InnerXml = cdata.OuterXml;
                    }
                }
            }
            if (log.IsDebugEnabled) log.Debug("CreateOutputArticleContentDocToXml end (SE4 Doc processing)");
        }
예제 #3
0
        /// <summary>
        /// Before trying to generate document to XML it is checked if content is to be generated.
        /// </summary>
        /// <param name="it">Document to process</param>
        /// <returns>TRUE if document can be written to XML</returns>
        private bool IsValidOldDocument(Doc docInfo, IterwebMapInfo it) {
            Boolean rslt = true;

            if (it.OldDocTemplateType == TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_003) {
                // Bypass check as content is already valid.
                return rslt;
            }
            else {
                switch (it.OldDocTemplateType) {
                    case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_002:
                        if (docInfo.NewsGrouper.Count == 0 && docInfo.DocumentText.Content == "") {
                            rslt = false;
                        }
                        break;
                    case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_005:
                        if (docInfo.PhotoGallery.Count == 0 && docInfo.DocumentText.Content == "") {
                            rslt = false;
                        }
                        break;
                    default:
                        if (docInfo.DocumentText.Content == "") {
                            rslt = false;
                        }
                        break;
                }
            }

            if (!rslt) {
                it.Processed = 17;
            }
            return rslt;
        }
예제 #4
0
        /// <summary>
        /// Before attempting to generate the document to XML it is checked if image gallery is actually set.
        /// </summary>
        /// <param name="doc">Properties to doc to check</param>
        /// <param name="documentPath">ZIP path</param>
        /// <returns>True if valid.</returns>
        private bool IsValidImageGallery(IterwebMapInfo doc, string documentPath) {
            bool rslt = true;
            if (log.IsDebugEnabled) log.Debug("IsValidImageGallery Start");
            // Retrieve Document Attributes and filter to use those enabled to do so.
            List<SE4Attribute> docSE4AttrList = LoadSE4DocItems(doc.IdObjetoSE, doc.Layout);
            var node = (from a in docSE4AttrList
                        where a.ElementName == "nombreGaleria"
                        select a
                       ).FirstOrDefault<SE4Attribute>();
            if (node != null) {
                string contextText = (node.HugeContentCode != -1 ? node.HugeText : node.Text);
                if (contextText == "") {
                    string msg = "Doc idSitemap=[" + doc.IdSitemap + "] has not a gallery directory set appropriately, document not exported";
                    if (log.IsFatalEnabled) {
                        log.Fatal(msg);
                    }
                    Console.WriteLine(msg);
                    doc.Processed = 12;
                    rslt = false;
                }
                else {
                    string imageGalleryFolder = _se4MediaImageGallerySourceFolder;
                    imageGalleryFolder += @"\" + contextText;
                    if (Directory.Exists(imageGalleryFolder)) {
                        string pubInfoFileName = imageGalleryFolder + @"\Pubinfo.txt";
                        if (File.Exists(pubInfoFileName)) {
                            // First store in list all found images
                            imageGalleryTitle = "";
                            galleryImgList = new List<ImageOnly>();
                            string[] lines = File.ReadAllLines(pubInfoFileName);

                            // Grab Title
                            var imageGalleryHeadLine = lines[0].Split('|');
                            if (imageGalleryHeadLine.Length > 0) {
                                imageGalleryTitle = imageGalleryHeadLine[1];
                            }

                            for (int i = 1; i < lines.Length; i++) {
                                var elements = lines[i].Split('|');
                                string fileName = elements[0];

                                fileName = HttpUtility.HtmlDecode(fileName) + ".jpg";
                                fileName = CopyImageToZip(imageGalleryFolder, documentPath, fileName, doc, false);
                                if (fileName != "") {
                                    ImageOnly imgInfo = new ImageOnly();
                                    imgInfo.Name = fileName;
                                    imgInfo.Content = elements[1] + " - " + elements[2];
                                    galleryImgList.Add(imgInfo);
                                }
                            }
                            if (galleryImgList.Count == 0) {
                                doc.Processed = 11;
                                rslt = false;
                                if (log.IsErrorEnabled) {
                                    log.Error("Doc idSitemap=[" + doc.IdSitemap + "] does not contain any images SET to processed = 11");
                                }
                            }
                        }
                        else {
                            if (log.IsErrorEnabled) {
                                log.Error("Doc idSitemap=[" + doc.IdSitemap + "] does not contain 'PubInfo.txt' file SET to processed = 10");
                            }
                            doc.Processed = 10;
                            rslt = false;
                        }
                    }
                    else {
                        if (log.IsErrorEnabled) {
                            log.Error("Doc idSitemap=[" + doc.IdSitemap + "] does not contain 'PubInfo.txt' file SET to processed = 10");
                        }
                        doc.Processed = 10;
                        rslt = false;
                    }
                }
            }
            else {
                // Document was not actually found in DB.
                rslt = false;
            }
            if (log.IsDebugEnabled) log.Debug("IsValidImageGallery End");
            return rslt;
        }
예제 #5
0
        /// <summary>
        /// Appends document content if output is new Article XML format.
        /// </summary>
        /// <param name="documentPath">Resource target directory</param>
        /// <param name="iterDoc">XML Document</param>
        /// <param name="iterArticleContent">Xml Document Node</param>
        /// <param name="doc">Database object being processed</param>
        /// <param name="info">Doc under examination</param>
        /// <param name="articleNum">Num article being processed</param>
        private void CreateOutputArticleContentDocToXml(string documentPath, XmlDocument iterDoc, XmlElement iterArticleContent, IterwebMapInfo doc, Doc info, long articleNum) {
            if (log.IsDebugEnabled) log.Debug("CreateOutputArticleContentDocToXml start (Old Doc processing)");
            XmlElement item = null;
            XmlElement itemChild = null;
            XmlCDataSection cdata = null;
            string contentText = "";
            string docGlobalRef = "/bin/";
            string fileName = "";

            switch (info.TemplateType) {
                case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_001:
                    contentText = "";
                    foreach (var tit in info.Title) {
                        contentText += tit.Content;
                    }

                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Headline");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    if (info.Bullet.Count != 0) {
                        contentText = "";
                        contentText += "<ul>";
                        foreach (var bulletItem in info.Bullet) {
                            contentText += "<li>" + bulletItem.Content + "</li>";
                        }
                        contentText += "</ul>";
                    }
                    contentText += info.DocumentText.Content + "<br><br>";
                    foreach (var rh in info.ReaderHelp) {
                        contentText += "<b>" + rh.NameTitleContent + "</b><br>";
                        contentText += rh.NameTextContent + "<br>";
                    }
                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Text");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    foreach (var pr in info.PhotoRelated) {
                        fileName = ExtractImageNamePart(pr.ImageSrc);
                        fileName = CopyImageToZip(_se4MediaSourceFolder, documentPath, fileName, doc);
                        if (fileName != "") {
                            // An image file reference.
                            item = iterDoc.CreateElement("component");
                            item.SetAttribute("name", GlobalConstants.IMAGE_NAME_GENERAL);
                            iterArticleContent.AppendChild(item);


                            contentText = docGlobalRef + fileName;
                            contentText = RemoveInvalidXmlChars(contentText);
                            itemChild = iterDoc.CreateElement("file");
                            itemChild.SetAttribute("path", contentText);
                            item.AppendChild(itemChild);

                            itemChild = iterDoc.CreateElement("component");
                            itemChild.SetAttribute("name", "Cutline");
                            contentText = pr.Footer;
                            contentText = RemoveInvalidXmlChars(contentText);
                            cdata = iterDoc.CreateCDataSection(contentText);
                            itemChild.InnerXml = cdata.OuterXml;
                            item.AppendChild(itemChild);
                        }
                    }
                    break;
                case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_002:
                    contentText = "";
                    foreach (var tit in info.Title) {
                        contentText += tit.Content;
                    }
                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Headline");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    // Process the NewsGrouper only list.
                    contentText = "";
                    foreach (var ng in info.NewsGrouper) {
                        contentText += "<p>" + ng.TitleContent + "</p>";
                        contentText += "<p>" + ng.TextContent + "</p><hr>";
                    }
                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Text");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    break;
                case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_003:
                    // Process the CartoonGrouper only list.
                    foreach (var cg in info.CartoonGrouper) {
                        item = iterDoc.CreateElement("component");
                        item.SetAttribute("name", "Headline");
                        item.SetAttribute("index", "1");
                        iterArticleContent.AppendChild(item);

                        contentText = cg.TitleContent;
                        contentText = RemoveInvalidXmlChars(contentText);
                        cdata = iterDoc.CreateCDataSection(contentText);
                        item.InnerXml = cdata.OuterXml;

                        fileName = ExtractImageNamePart(cg.TextContent);
                        fileName = CopyImageToZip(_se4MediaSourceFolder, documentPath, fileName, doc);
                        if (fileName != "") {
                            // An image file reference.
                            item = iterDoc.CreateElement("component");
                            item.SetAttribute("name", GlobalConstants.IMAGE_NAME_TOON);
                            iterArticleContent.AppendChild(item);

                            contentText = docGlobalRef + fileName;
                            contentText = RemoveInvalidXmlChars(contentText);
                            itemChild = iterDoc.CreateElement("file");
                            itemChild.SetAttribute("path", contentText);
                            item.AppendChild(itemChild);

                            itemChild = iterDoc.CreateElement("component");
                            itemChild.SetAttribute("name", "Cutline");
                            contentText = cg.AuthorContent;
                            contentText = RemoveInvalidXmlChars(contentText);
                            cdata = iterDoc.CreateCDataSection(contentText);
                            itemChild.InnerXml = cdata.OuterXml;
                            item.AppendChild(itemChild);
                        }
                    }
                    break;
                case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_004:
                    contentText = "";
                    foreach (var tit in info.Title) {
                        contentText += tit.Content;
                    }
                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Headline");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Text");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = "";
                    contentText = info.DocumentText.Content + "<br><br>";
                    foreach (var rh in info.ReaderHelp) {
                        contentText += "<b>" + rh.NameTitleContent + "<b>";
                        contentText += rh.NameTextContent + "<br>";
                    }
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Byline");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = info.CreditText.AuthorText;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "City");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = info.CreditText.CityText;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    if (info.Bullet.Count != 0) {
                        contentText = "<ul>";
                        foreach (var bulletItem in info.Bullet) {
                            contentText += "<li>" + bulletItem.Content + "</li>";
                        }
                        contentText += "</ul>";
                        item = iterDoc.CreateElement("component");
                        item.SetAttribute("name", "Lead");
                        item.SetAttribute("index", "1");
                        iterArticleContent.AppendChild(item);

                        contentText = RemoveInvalidXmlChars(contentText);
                        cdata = iterDoc.CreateCDataSection(contentText);
                        item.InnerXml = cdata.OuterXml;
                    }
                    foreach (var pr in info.PhotoRelated) {
                        // An image file reference.
                        if (pr.ImageSrc != "") {
                            fileName = ExtractImageNamePart(pr.ImageSrc);
                            fileName = CopyImageToZip(_se4MediaSourceFolder, documentPath, fileName, doc);
                            if (fileName != "") {
                                item = iterDoc.CreateElement("component");
                                item.SetAttribute("name", GlobalConstants.IMAGE_NAME_GENERAL);
                                iterArticleContent.AppendChild(item);

                                contentText = docGlobalRef + fileName;
                                contentText = RemoveInvalidXmlChars(contentText);

                                itemChild = iterDoc.CreateElement("file");
                                itemChild.SetAttribute("path", contentText);
                                item.AppendChild(itemChild);

                                itemChild = iterDoc.CreateElement("component");
                                itemChild.SetAttribute("name", "Cutline");
                                contentText = pr.Footer;
                                contentText = RemoveInvalidXmlChars(contentText);
                                cdata = iterDoc.CreateCDataSection(contentText);
                                itemChild.InnerXml = cdata.OuterXml;
                                item.AppendChild(itemChild);
                            }
                        }
                    }
                    break;
                case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_005:
                    contentText = "";
                    foreach (var tit in info.Title) {
                        contentText += tit.Content;
                    }
                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Headline");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Text");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = info.DocumentText.Content;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    foreach (var pg in info.PhotoGallery) {
                        fileName = ExtractImageNamePart(pg.PhotoBigContent);
                        fileName = CopyImageToZip(_se4MediaSourceFolder, documentPath, fileName, doc);
                        if (fileName != "") {
                            // An image file reference.
                            item = iterDoc.CreateElement("component");
                            item.SetAttribute("name", GlobalConstants.IMAGE_NAME_GENERAL);
                            iterArticleContent.AppendChild(item);

                            contentText = docGlobalRef + fileName;
                            contentText = RemoveInvalidXmlChars(contentText);
                            itemChild = iterDoc.CreateElement("file");
                            itemChild.SetAttribute("path", contentText);
                            item.AppendChild(itemChild);

                            contentText = "";
                            contentText += pg.PhotoCreditContent;
                            if (pg.PhotoFooterContent != "") {
                                contentText += " - " + pg.PhotoFooterContent;
                            }
                            if (contentText != "") {
                                itemChild = iterDoc.CreateElement("component");
                                itemChild.SetAttribute("name", "Cutline");
                                contentText = RemoveInvalidXmlChars(contentText);
                                cdata = iterDoc.CreateCDataSection(contentText);
                                itemChild.InnerXml = cdata.OuterXml;
                                item.AppendChild(itemChild);
                            }
                        }
                    }
                    break;
                case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_006:
                    contentText = "";
                    foreach (var tit in info.Title) {
                        contentText += tit.Content;
                    }
                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Headline");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    contentText = "";
                    if (info.Bullet.Count != 0) {
                        contentText += "<ul>";
                        foreach (var it in info.Bullet) {
                            contentText += "<li>" + it.Content + "</li>";
                        }
                        contentText += "</ul>";
                    }

                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Text");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText += info.DocumentText.Content;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    break;
                case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_007:
                    // COQ: Jul.01/2014 - All records discarded, not processed.
                    break;
                case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_008:
                    contentText = "";
                    foreach (var tit in info.Title) {
                        contentText += tit.Content;
                    }
                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Headline");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    contentText = "";
                    if (info.Bullet.Count != 0) {
                        contentText += "<ul>";
                        foreach (var bulletItem in info.Bullet) {
                            contentText += "<li>" + bulletItem.Content + "</li>";
                        }
                        contentText += "</ul>";
                    }
                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Text");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText += info.DocumentText.Content;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    foreach (var pr in info.PhotoRelated) {
                        fileName = ExtractImageNamePart(pr.ImageSrc);
                        fileName = CopyImageToZip(_se4MediaSourceFolder, documentPath, fileName, doc);
                        if (fileName != "") {

                            // An image file reference.
                            item = iterDoc.CreateElement("component");
                            item.SetAttribute("name", GlobalConstants.IMAGE_NAME_GENERAL);
                            iterArticleContent.AppendChild(item);


                            contentText = docGlobalRef + fileName;
                            contentText = RemoveInvalidXmlChars(contentText);
                            itemChild = iterDoc.CreateElement("file");
                            itemChild.SetAttribute("path", contentText);
                            item.AppendChild(itemChild);

                            itemChild = iterDoc.CreateElement("component");
                            itemChild.SetAttribute("name", "Cutline");
                            contentText = pr.Footer;
                            contentText = RemoveInvalidXmlChars(contentText);
                            cdata = iterDoc.CreateCDataSection(contentText);
                            itemChild.InnerXml = cdata.OuterXml;
                            item.AppendChild(itemChild);
                        }
                    }
                    break;
                case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_009:
                    contentText = "";
                    foreach (var tit in info.Title) {
                        contentText += tit.Content;
                    }
                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Headline");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    contentText = "";
                    if (info.Bullet.Count != 0) {
                        contentText += "<ul>";
                        foreach (var bulletItem in info.Bullet) {
                            contentText += "<li>" + bulletItem.Content + "</li>";
                        }
                        contentText += "<ul>";
                    }

                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Text");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText += info.DocumentText.Content;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Byline");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = info.CreditText.AuthorText;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "City");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = info.CreditText.CityText;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;
                    break;
                case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_010:
                    contentText = "";
                    foreach (var tit in info.Title) {
                        contentText += tit.Content;
                    }
                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Headline");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Text");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = info.DocumentText.Content;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    if (info.PhotoRelated.Count != 0) {
                        // An image file reference.
                        foreach (var pr in info.PhotoRelated) {
                            fileName = ExtractImageNamePart(pr.ImageSrc);
                            fileName = CopyImageToZip(_se4MediaSourceFolder, documentPath, fileName, doc);
                            if (fileName != "") {

                                item = iterDoc.CreateElement("component");
                                item.SetAttribute("name", GlobalConstants.IMAGE_NAME_GENERAL);
                                iterArticleContent.AppendChild(item);

                                contentText = docGlobalRef + fileName;
                                contentText = RemoveInvalidXmlChars(contentText);
                                itemChild = iterDoc.CreateElement("file");
                                itemChild.SetAttribute("path", contentText);
                                item.AppendChild(itemChild);

                                itemChild = iterDoc.CreateElement("component");
                                itemChild.SetAttribute("name", "Cutline");
                                contentText = pr.Footer;
                                contentText = RemoveInvalidXmlChars(contentText);
                                cdata = iterDoc.CreateCDataSection(contentText);
                                itemChild.InnerXml = cdata.OuterXml;
                                item.AppendChild(itemChild);
                            }
                        }
                    }
                    if (info.ImageOnlySet.Content != "" && info.PhotoRelated.Count == 0) {
                        fileName = ExtractImageNamePart(info.ImageOnlySet.Content);
                        fileName = CopyImageToZip(_se4MediaSourceFolder, documentPath, fileName, doc);
                        if (fileName != "") {
                            item = iterDoc.CreateElement("component");
                            item.SetAttribute("name", GlobalConstants.IMAGE_NAME_GENERAL);
                            iterArticleContent.AppendChild(item);

                            contentText = docGlobalRef + fileName;
                            contentText = RemoveInvalidXmlChars(contentText);
                            itemChild = iterDoc.CreateElement("file");
                            itemChild.SetAttribute("path", contentText);
                            item.AppendChild(itemChild);
                        }
                    }
                    break;
                case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_011:
                    contentText = "";
                    foreach (var tit in info.Title) {
                        contentText += tit.Content;
                    }
                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Headline");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Text");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = info.DocumentText.Content;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Byline");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = info.CreditText.AuthorText;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "City");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = info.CreditText.CityText;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;
                    break;
                case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_012:
                    contentText = "";
                    foreach (var tit in info.Title) {
                        contentText += tit.Content;
                    }
                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Headline");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Text");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = info.DocumentText.Content;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;
                    break;
                case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_013:
                    contentText = "";
                    foreach (var tit in info.Title) {
                        contentText += tit.Content;
                    }
                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Headline");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Text");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = info.DocumentText.Content;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Byline");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = info.CreditText.AuthorText;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "City");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = info.CreditText.CityText;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    // An image file reference.
                    fileName = ExtractImageNamePart(info.ImageOnlySet.Content);
                    fileName = CopyImageToZip(_se4MediaSourceFolder, documentPath, fileName, doc);
                    if (fileName != "") {
                        item = iterDoc.CreateElement("component");
                        item.SetAttribute("name", GlobalConstants.IMAGE_NAME_GENERAL);
                        iterArticleContent.AppendChild(item);

                        contentText = docGlobalRef + fileName;
                        contentText = RemoveInvalidXmlChars(contentText);
                        itemChild = iterDoc.CreateElement("file");
                        itemChild.SetAttribute("path", contentText);
                        item.AppendChild(itemChild);
                    }
                    break;
                case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_014:
                    contentText = "";
                    foreach (var tit in info.Title) {
                        contentText += tit.Content;
                    }
                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Headline");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Text");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = info.DocumentText.Content;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Byline");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = info.CreditText.AuthorText;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "City");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = info.CreditText.CityText;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    break;
                case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_015:
                    contentText = "";
                    foreach (var tit in info.Title) {
                        contentText += tit.Content;
                    }

                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Headline");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    item = iterDoc.CreateElement("component");
                    item.SetAttribute("name", "Text");
                    item.SetAttribute("index", "1");
                    iterArticleContent.AppendChild(item);

                    contentText = info.DocumentText.Content;
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    item.InnerXml = cdata.OuterXml;

                    foreach (var pr in info.PhotoFooterGallery.PhotoList) {
                        fileName = ExtractImageNamePart(pr.ImageSrc);
                        fileName = CopyImageToZip(_se4MediaSourceFolder, documentPath, fileName, doc);
                        if (fileName != "") {
                            // An image file reference.
                            item = iterDoc.CreateElement("component");
                            item.SetAttribute("name", GlobalConstants.IMAGE_NAME_GENERAL);
                            iterArticleContent.AppendChild(item);

                            contentText = docGlobalRef + fileName;
                            contentText = RemoveInvalidXmlChars(contentText);
                            itemChild = iterDoc.CreateElement("file");
                            itemChild.SetAttribute("path", contentText);
                            item.AppendChild(itemChild);

                            itemChild = iterDoc.CreateElement("component");
                            itemChild.SetAttribute("name", "Cutline");
                            contentText = "";
                            contentText += info.PhotoFooterGallery.FoooterTitle + " - " + info.PhotoFooterGallery.Footer;
                            contentText = RemoveInvalidXmlChars(contentText);
                            cdata = iterDoc.CreateCDataSection(contentText);
                            itemChild.InnerXml = cdata.OuterXml;
                            item.AppendChild(itemChild);
                        }
                    }
                    break;
            }
            if (log.IsDebugEnabled) log.Debug("CreateOutputArticleContentDocToXml end (Old Doc processing)");
        }
예제 #6
0
        /// <summary>
        /// Before trying to generate document to XML it is checked if content is to be generated.
        /// </summary>
        /// <param name="it">Document to process</param>
        /// <param name="docContent">Filled with the whole content being analyzed</param>
        /// <param name="threshold">How many characters to allow for document text. If it is set to -1 do not use it.</param>
        /// <returns>TRUE if document can be written to XML</returns>
        private bool IsValidDocument(IterwebMapInfo it, ref String docContent, int threshold = -1) {
            if (it.Layout == "creacion_video") {
                return true;
            }

            Boolean rslt = false;
            string textData = "";

            // Retrieve Document Attributes and filter to use those enabled to do so.
            List<SE4Attribute> docSE4AttrList = LoadSE4DocItems(it.IdObjetoSE, it.Layout);

            var filteredSE4AttrList = (from a in docSE4AttrList
                                       where a.ElementName == "cuerpoPrimerParrafo" ||
                                        a.ElementName == "EDITORHTML" ||
                                        a.ElementName == "EditorHtml" ||
                                        a.ElementName == "editorhtml" ||
                                        a.ElementName == "cuerpo"
                                       select a
                            ).ToList<SE4Attribute>();
            foreach (var attr in filteredSE4AttrList) {
                if (attr != null) {
                    textData += (attr.HugeContentCode != -1 ? attr.HugeText : attr.Text);
                }
            }
            docContent = textData;
            rslt = true; // Assume it can be written to XML.
            if (textData == "") {
                rslt = false;
            }
            else {
                if (threshold != -1) {
                    if (textData.Length <= threshold) {
                        rslt = false;
                    }
                }
            }
            return rslt;
        }
예제 #7
0
        /// <summary>
        /// If output structure is 2, it creates all of the xml elements to document.
        /// </summary>
        /// <param name="isOldDoc">OldDoc or SE4 doc</param>
        /// <param name="documentPath">Target directory for resources</param>
        /// <param name="iterDoc">XML main node</param>
        /// <param name="iterArticles">XML node to articles</param>
        /// <param name="it">Record info</param>
        /// <param name="title">Document title</param>
        /// <param name="examinedDoc">Old Doc under examination. Optional</param>
        /// <param name="articleNum">Number or article being processed. Optional.</param>
        private void CreateOutputArticleDocToXml(bool isOldDoc, string documentPath, XmlDocument iterDoc, XmlElement iterArticles, IterwebMapInfo it, string title, Doc examinedDoc = null, long articleNum = 0) {
            if (log.IsDebugEnabled) log.Debug("CreateOutputArticleDocToXml start");
            XmlElement iterArticle = iterDoc.CreateElement("article");
            XmlElement iterArticleMetadata = iterDoc.CreateElement("metadata");
            XmlElement iterArticleContent = iterDoc.CreateElement("content");

            XmlElement properties = iterDoc.CreateElement("properties");
            properties.SetAttribute("indexable", "1");
            properties.SetAttribute("urltitle", RemoveInvalidXmlChars(it.UrlPath.ExtractUrlTitle()));
            properties.SetAttribute("legacyurl", RemoveInvalidXmlChars(it.UrlPath));
            properties.SetAttribute("title", RemoveInvalidXmlChars(title));
            properties.SetAttribute("createdate", String.Format("{0:yyyy/MM/dd HH:mm:ss}", it.DisplayDate));
            properties.SetAttribute("modifieddate", String.Format("{0:yyyy/MM/dd HH:mm:ss}", it.UpdateDate));
            iterArticleMetadata.AppendChild(properties);

            iterArticle.AppendChild(iterArticleMetadata);
            iterArticle.AppendChild(iterArticleContent);

            if (isOldDoc) {
                iterArticle.SetAttribute("articleid", it.IDOldDoc);
            }
            else {
                iterArticle.SetAttribute("articleid", it.IDSE4ArticleId);
            }

            string filter = "";
            string filterEx = "";
            filter = GlobalConstants.ARTICLE_HISTORICAL_GENERAL;

            if (isOldDoc) {
                switch (examinedDoc.TemplateType) {
                    case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_003:
                        filter = GlobalConstants.ARTICLE_HISTORICAL_TOON_GALLERY;
                        break;
                    default:
                        break;
                }
            }
            else {
                if (it.Layout == "creacion_infografias") {
                    filter = GlobalConstants.ARTICLE_HISTORICAL_GENERAL;
                }
                if (it.Layout == "creacion_galeria") {
                    filter = GlobalConstants.ARTICLE_HISTORICAL_IMAGE_GALLERY;
                }
                if (it.IdBrightCove != null) {
                    if (it.Layout == "creacion_video") {
                        filter = GlobalConstants.ARTICLE_HISTORICAL_VIDEO_GALLERY;
                    }
                    else {
                        if (it.Layout == "creacion_notaInterior100" || it.Layout == "creacion_notaInterior100M") {
                            filter = GlobalConstants.ARTICLE_HISTORICAL_GENERAL;
                            filterEx = GlobalConstants.ARTICLE_HISTORICAL_VIDEO_GALLERY;
                        }
                    }
                }
                if (it.IsInfographic == 1) {
                    filterEx = GlobalConstants.ARTICLE_HISTORICAL_INFOGRAPHIC_GALLERY;
                    filter = GlobalConstants.ARTICLE_HISTORICAL_GENERAL;
                }
            }
            CreateOutputArticleSectionsDocToXml(iterDoc, iterArticleMetadata, it.DisplayDate, filter, filterEx);
            if (isOldDoc) {
                CreateOutputArticleContentDocToXml(documentPath, iterDoc, iterArticleContent, it, examinedDoc, articleNum);
            }
            else {
                CreateOutputArticleCategoriesDocToXml(iterDoc, iterArticleMetadata, it.IdObjetoSE);

                // Retrieve Document Attributes and filter to use those enabled to do so.
                List<SE4Attribute> docSE4AttrList = LoadSE4DocItems(it.IdObjetoSE, it.Layout);
                CreateOutputArticleContentDocToXml(documentPath, iterDoc, iterArticleContent, it, docSE4AttrList);
            }
            iterArticles.AppendChild(iterArticle);
            if (log.IsDebugEnabled) log.Debug("CreateOutputArticleDocToXml end");
        }
예제 #8
0
        /// <summary>
        /// Locates first CartoonGrouper file and extracts its modified date and sets it as the new CreateDate/ModifiedDate for 
        /// record.
        /// </summary>
        /// <remarks>Be specially cautious as the 'it' create/modify date is not persisted back to database.</remarks>
        /// <param name="it">Record to update</param>
        /// <param name="examinedDoc">Json Converted data.</param>
        private void UpdateOldDocToonCreateDate(IterwebMapInfo it, Doc examinedDoc) {
            if (log.IsDebugEnabled) {
                log.Debug("UpdateOldDocToonCreateDate Start");
            }

            //Se4MediaSourceFolder
                
            string fileNamePath = "";
            foreach (var cg in examinedDoc.CartoonGrouper) {
                fileNamePath = _se4MediaSourceFolder + "\\" + ExtractImageNamePart(cg.TextContent);
                DateTime dt = new DateTime(1900, 01, 01); // If file does not exist, sets this date. Used for OLD docs scanning.
                if (File.Exists(fileNamePath)) {
                    dt = File.GetLastWriteTime(fileNamePath);                    
                }
                it.DisplayDate = it.UpdateDate = dt;
            }            
            if (log.IsDebugEnabled) {
                log.Debug("UpdateOldDocToonCreateDate End");
            }
        }
예제 #9
0
 /// <summary>
 /// This actually copies the image from source directory to target directory.
 /// </summary>
 /// <param name="srcDir">Image source folder to gather</param>
 /// <param name="targetDir">Image target folder to copy to</param>
 /// <param name="fileName">File name of image.</param>
 /// <param name="info">Info of document being processed</param>
 /// <param name="printToLog">True to print to log</param>
 /// <returns>If 'fileName' has been changed due to non-ascii characters in it, it is returned like so, 
 /// otherwise, it is returned as such.</returns>
 private string CopyImageToZip(string srcDir, string targetDir, string fileName, IterwebMapInfo info, bool printToLog = true) {
     string line = "";
     string rslt = "";
     var sourceFile = srcDir + @"\" + fileName;
     rslt = fileName;
     if (log.IsDebugEnabled) {
         log.Debug("CopyImageToZip(string srcDir, string targetDir, string fileName, IterwebMapInfo info) Start");
     }
     line = "Using parameters srcDir=[" + srcDir + "], targetDir=[" + targetDir + "], fileName=[" + fileName + "], info idsitemap=[" + info.IdSitemap + "]";
     if (log.IsDebugEnabled) {
         log.Debug(line);
     }
     if (!File.Exists(sourceFile)) {
         if (printToLog && log.IsWarnEnabled) {
             log.Warn("Document image for idSitemap=[" + info.IdSitemap + "], sourceFile=[" + sourceFile + "] does not exist");
         }
         rslt = "";
     }
     else {
         rslt = ConfigureImageName(fileName, targetDir, srcDir);
     }
     if (log.IsDebugEnabled) {
         log.Debug("CopyImageToZip(string srcDir, string targetDir, string fileName, IterwebMapInfo info) End");
     }
     return rslt;
 }
예제 #10
0
 /// <summary>
 /// Inspects if there is an image in attr.
 /// </summary>
 /// <param name="attr">Data to work with</param>
 /// <param name="info">Info of document being processed</param>
 /// <param name="documentPath">Target resource directory</param>
 /// <returns>Filenane part</returns>
 private string ExtractMediaName(SE4Attribute attr, IterwebMapInfo info, string documentPath) {
     string s = "";
     if (log.IsDebugEnabled) log.Debug("Extracting mediaName Start ATTR");
     if (attr.Text != "") {
         s = attr.Text;
         var isJpg = s.Contains(".jpg") || s.Contains(".JPG");
         if (!isJpg) {
             s += ".jpg";
         }
         s = ExtractImageNamePart(s);
         attr.Text = s = s.Supress('/').Supress('\\');
         s = CopyImageToZip(_se4MediaSourceFolder, documentPath, s, info);
         if (s != "") {
             s = attr.Text = DocumentImageDir + s;
             if (log.IsDebugEnabled) log.Debug("Media name found, set to [" + attr.Text + "]");
         }
     }
     if (log.IsDebugEnabled) log.Debug("Extracting mediaName End ATTR");
     return s;
 }
예제 #11
0
        /// <summary>
        /// Retrieves document attributes and saves to disk
        /// </summary>
        /// <param name="contentPath">File System path to create the docuemnt</param>
        /// <param name="documentPath">File System path to create images</param>
        /// <param name="doc">Document info</param>
        /// <param name="attributeList">meta data elements associated with document</param>
        private void CreateDocumentAttributesToXml(string contentPath, string documentPath, IterwebMapInfo doc, List<SE4Attribute> attributeList) {
            if (log.IsDebugEnabled) log.Debug("CreateDocumentAttributesToXml start");
            XmlCDataSection cdata = null;
            XmlDocument iterDoc = null;
            XmlElement item = null;
            int i = 1;
            string name = "";
            string targetType = "";
            string targetIndexType = "";
            ValidMapField vf = null;
            List<ValidMapField> documentValidFields = se4TemplateFieldMapping[doc.Layout];

            iterDoc = new XmlDocument();
            XmlDeclaration iterDocDeclaration = iterDoc.CreateXmlDeclaration("1.0", "UTF-8", null);
            XmlElement rootIter = iterDoc.CreateElement("root");
            iterDoc.PreserveWhitespace = false;
            iterDoc.AppendChild(rootIter);
            iterDoc.InsertBefore(iterDocDeclaration, rootIter);

            foreach (var it in attributeList) {
                vf = documentValidFields.Find(e => e.Source == it.ElementName && e.Use);
                if (vf.Attributes != null) {
                    ValidMapFieldAttributes attr = vf.Attributes.Find(e => e.SourceAttribute == it.AttributeName);
                    if (attr != null) {
                        name = attr.Target;
                        targetType = attr.TargetType;
                        targetIndexType = attr.TargetIndexType;
                    }
                    else {
                        name = vf.Target;
                        targetType = vf.TargetType;
                        targetIndexType = vf.TargetIndexType;
                    }
                }
                else {
                    name = vf.Target;
                    targetType = vf.TargetType;
                    targetIndexType = vf.TargetIndexType;
                }
                if (it.MultimediaAttribute == GlobalConstants.SE4ATTR_MULTIMEDIA_NONE) {
                    item = iterDoc.CreateElement("dynamic-element");
                    item.SetAttribute("instance-id", "ec" + (i++));
                    item.SetAttribute("name", name);
                    item.SetAttribute("type", targetType);
                    item.SetAttribute("index-type", targetIndexType);
                    rootIter.AppendChild(item);

                    XmlElement itemContent = iterDoc.CreateElement("dynamic-content");
                    string contentText = (it.HugeContentCode != -1 ? it.HugeText : it.Text);
                    contentText = RemoveInvalidXmlChars(contentText);
                    cdata = iterDoc.CreateCDataSection(contentText);
                    itemContent.InnerXml = cdata.OuterXml;
                    item.AppendChild(itemContent);
                }
                else {
                    switch (it.MultimediaAttribute) {
                        case GlobalConstants.SE4ATTR_MULTIMEDIA_IMAGE:
                            item = iterDoc.CreateElement("dynamic-element");
                            item.SetAttribute("instance-id", "ec" + (i++));
                            item.SetAttribute("name", name);
                            item.SetAttribute("type", targetType);
                            item.SetAttribute("index-type", targetIndexType);
                            rootIter.AppendChild(item);

                            var itemChild = iterDoc.CreateElement("dynamic-element");
                            itemChild.SetAttribute("instance-id", "ec" + (i++));
                            itemChild.SetAttribute("name", "High");
                            itemChild.SetAttribute("type", "document_library");
                            itemChild.SetAttribute("index-type", "");
                            item.AppendChild(itemChild);

                            XmlElement itemContent = iterDoc.CreateElement("dynamic-content");
                            string contentText = (it.HugeContentCode != -1 ? it.HugeText : it.Text);
                            contentText = RemoveInvalidXmlChars(contentText);
                            cdata = iterDoc.CreateCDataSection(contentText);
                            itemContent.InnerXml = cdata.OuterXml;
                            itemChild.AppendChild(itemContent);

                            itemChild = iterDoc.CreateElement("dynamic-element");
                            itemChild.SetAttribute("instance-id", "ec" + (i++));
                            itemChild.SetAttribute("name", "Medium");
                            itemChild.SetAttribute("type", "document_library");
                            itemChild.SetAttribute("index-type", "");
                            item.AppendChild(itemChild);

                            itemContent = iterDoc.CreateElement("dynamic-content");
                            cdata = iterDoc.CreateCDataSection(contentText);
                            itemContent.InnerXml = cdata.OuterXml;
                            itemChild.AppendChild(itemContent);

                            itemChild = iterDoc.CreateElement("dynamic-element");
                            itemChild.SetAttribute("instance-id", "ec" + (i++));
                            itemChild.SetAttribute("name", "Low");
                            itemChild.SetAttribute("type", "document_library");
                            itemChild.SetAttribute("index-type", "");
                            item.AppendChild(itemChild);

                            itemContent = iterDoc.CreateElement("dynamic-content");
                            cdata = iterDoc.CreateCDataSection(contentText);
                            itemContent.InnerXml = cdata.OuterXml;
                            itemChild.AppendChild(itemContent);
                            break;
                        case GlobalConstants.SE4ATTR_MULTIMEDIA_VIDEO:
                            break;
                        case GlobalConstants.SE4ATTR_MULTIMEDIA_AUDIO:
                        default:
                            break;
                    }
                }
            }
            SaveXmlDocument(contentPath + @"\" + doc.IdObjetoSE + ".xml", iterDoc);
            if (log.IsDebugEnabled) log.Debug("CreateDocumentAttributesToXml end");
        }