/// <summary> /// Obtiene la colección de páginas relacionadas /// </summary> internal FileTargetModelCollection GetPagesRelated(FileTargetModel file, DocumentModel document) { FileTargetModelCollection files = new FileTargetModelCollection(Processor); // Si el archivo tiene páginas relacionadas, las añade, si no, busca las páginas más cercanas // de la categoría if (document.ChildPages != null && document.ChildPages.Count > 0) { foreach (FileModel child in document.ChildPages) { foreach (FileTargetModel target in this) { if (child.FullFileName == target.File.FullFileName) { files.Add(target); } } } } else { // Añade los documentos de la categoría files = GetSiblings(file, true); // Quita archivos hasta quedarse con los más cercanos en fecha files = files.SliceByDate(file.DateUpdate, 10); } // Elimina los duplicados files.RemoveDuplicates(); // Devuelve la colección de archivos return(files); }
/// <summary> /// Obtiene los archivos hijo de una etiqueta /// </summary> internal FileTargetModelCollection GetChildsTag(FileTargetModel file, DocumentModel document) { FileTargetModelCollection files = new FileTargetModelCollection(Processor); Application.Bussiness.Documents.DocumentBussiness bussiness = new Application.Bussiness.Documents.DocumentBussiness(); // Obtiene los documentos que tengan la etiqueta asociada foreach (FileTargetModel child in this) { if (child.File.FileType == FileModel.DocumentType.Document) { DocumentModel documentChild = bussiness.Load(Processor.Project, child.GetFullFileNameCompiledShort(Processor)); bool found = false; // Recorre las etiquetas comprobando si se asocian a esta etiqueta foreach (FileModel tagDocument in documentChild.Tags) { if (tagDocument.Path.EqualsIgnoreCase(file.File.Path)) { found = true; } } // Si pertenece a esta etiqueta, se añade if (found) { files.Add(child); } } } // Elimina los duplicados files.RemoveDuplicates(); // Devuelve la colección return(files); }
/// <summary> /// Obtiene los archivos hijo de una colección /// </summary> internal FileTargetModelCollection GetChilds(FilesModelCollection files, bool isRecursive, bool onlyRss) { FileTargetModelCollection childs = new FileTargetModelCollection(Processor); // Recorre los archivos añadiendo los hijos foreach (FileModel file in files) { childs.AddRange(GetChilds(file, isRecursive, onlyRss)); } // Elimina los duplicados childs.RemoveDuplicates(); // Devuelve la colección return(childs); }
/// <summary> /// Obtiene los hijos de un documento de mapa de sitio /// </summary> internal FileTargetModelCollection GetChildsSitemap(FileTargetModel file, DocumentModel document) { FileTargetModelCollection files = GetChilds(document.ChildPages, true, false); // Elimina las páginas internas de categoría for (int index = files.Count - 1; index >= 0; index--) { if (files [index].Page > 0) { files.RemoveAt(index); } } // Elimina los duplicados files.RemoveDuplicates(); // Devuelve la colección de archivos return(files); }
/// <summary> /// Obtiene los archivos hijos de un directorio /// </summary> internal FileTargetModelCollection GetChildsCategory(FileTargetModel category, bool isRecursive) { FileTargetModelCollection files = new FileTargetModelCollection(Processor); // Recorre los archivos buscando los hijos de un directorio foreach (FileTargetModel file in this) { if (file.File.FileType == FileModel.DocumentType.Document && IsChild(category.File, file.File, isRecursive) && file.Page == 0) { files.Add(file); } } // Elimina los duplicados files.RemoveDuplicates(); // Devuelve la colección de archivos return(files); }
/// <summary> /// Obtiene los hermanos de un archivo /// </summary> internal FileTargetModelCollection GetSiblings(FileTargetModel file, bool onlyRss) { FileTargetModelCollection files = new FileTargetModelCollection(Processor); // Recorre los archivos buscando los que se encuentren en el mismo directorio foreach (FileTargetModel sibling in this) { if (sibling.File.FileType == FileModel.DocumentType.Document) { if (IsSibling(sibling, file)) { files.Add(sibling); } } } // Elimina los duplicados files.RemoveDuplicates(); // Devuelve la colección de archivos return(files); }
/// <summary> /// Obtiene la colección de padres de un archivo /// </summary> internal FileTargetModelCollection GetParents(FileTargetModel file) { FileTargetModelCollection parents = new FileTargetModelCollection(Processor); // Añade los padres foreach (FileTargetModel parent in this) { if (parent.File.FileType == FileModel.DocumentType.Document && IsChild(parent.File, file.File, true) && parent.Page == 0) { parents.Add(parent); } } // Ordena por nombres parents.SortByPath(true); // Elimina los duplicados parents.RemoveDuplicates(); // Devuelve la colección de padres return(parents); }