Exemplo n.º 1
0
        /// <summary>
        ///     Gets the name of the key word property.
        /// </summary>
        /// <param name="page">The page.</param>
        /// <returns>The propertyinfo.</returns>
        private PropertyInfo GetAddtionalSearchContentProperty(PageData page)
        {
            PropertyInfo keywordsMetatagProperty = page.GetType().GetProperties()
                                                   .FirstOrDefault(predicate: this.HasAttribute <AdditionalSearchContentAttribute>);

            return(keywordsMetatagProperty);
        }
Exemplo n.º 2
0
 public static bool IsIndexablePageType(this PageData page)
 {
     return(!page
            .GetType()
            .GetCustomAttributes(typeof(ExcludeFromSitemapAttribute), true)
            .Any());
 }
        /// <summary>
        ///     Gets the name of the key word property.
        /// </summary>
        /// <param name="page">The page.</param>
        /// <returns>System.String.</returns>
        private static PropertyInfo GetAddtionalSearchContentProperty(PageData page)
        {
            PropertyInfo keywordsMetatagProperty =
                page.GetType().GetProperties().Where(HasAttribute <AdditionalSearchContentAttribute>).FirstOrDefault();

            return(keywordsMetatagProperty);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Creates a writable clone of the PageData object
        /// </summary>
        /// <returns></returns>
        public new PageData CreateWritableClone()
        {
            PageData page = base.CreateWritableClone();
            IEnumerable <PropertyInfo> properties = page.GetType().GetPageTypePropertyGroupProperties();

            new TypedPageActivator().CreateAndPopulateNestedPropertyGroupInstances(page as TypedPageData, page, properties, string.Empty);
            return(page);
        }
        public void GivenPageDataWithUnmappedType_ConvertToTyped_ReturnsPageDataObject()
        {
            PageTypeResolver.Instance = new PageTypeResolver();
            PageData pageData = new PageData();

            pageData.Property.Add("PageTypeID", new PropertyNumber(1));

            PageData returnedObject = PageTypeResolver.Instance.ConvertToTyped(pageData);

            Assert.NotNull(returnedObject);
            Assert.Equal <Type>(typeof(PageData), returnedObject.GetType());
        }
Exemplo n.º 6
0
        /// <summary>
        /// The is restricted.
        /// </summary>
        /// <param name="item">
        /// The item.
        /// </param>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        private bool IsRestricted(PageData item)
        {
            var strContentType = item.GetType().FullName;

            strContentType = strContentType.Replace("Proxy", string.Empty);
            strContentType = strContentType.Replace("Castle.Proxies.", string.Empty);

            var restrictedContentTypes = this.dataFromBase.RestrictedTypes;

            var restrictedType = restrictedContentTypes?.FirstOrDefault(x => x.ContentType == strContentType);

            return(restrictedType != null && restrictedType.Restricted);
        }
Exemplo n.º 7
0
 public static bool InheritsFromType <T>(this PageData page) where T : TypedPageData
 {
     return(typeof(T).IsAssignableFrom(page.GetType()));
 }
Exemplo n.º 8
0
        /// <summary>
        /// The build sitemap item.
        /// </summary>
        /// <param name="doc">
        /// The doc.
        /// </param>
        /// <param name="item">
        /// The item.
        /// </param>
        /// <param name="culture">
        /// The culture.
        /// </param>
        /// <param name="site">
        /// The site.
        /// </param>
        /// <returns>
        /// The <see cref="XmlDocument"/>.
        /// </returns>
        private XmlDocument BuildSitemapItem(XmlDocument doc, PageData item, CultureInfo culture, SiteDefinition site)
        {
            var url = HttpUtility.HtmlEncode(this.GetItemUrl(item, culture ?? this.defaultLanguage.Culture, site));

            var lastMod = HttpUtility.HtmlEncode(item.Saved.ToString("yyyy-MM-ddTHH:mm:sszzz"));

            var urlSetNode = doc.LastChild;

            var urlNode = doc.CreateElement("url");

            urlSetNode.AppendChild(urlNode);

            var locNode = doc.CreateElement("loc");

            urlNode.AppendChild(locNode);
            locNode.AppendChild(doc.CreateTextNode(!showTrailingSlash ? url : url + "/"));

            if (showLocalizedUrls)
            {
                // Add different languages to the sitemap as specified in https://support.google.com/webmasters/answer/2620865?hl=en
                var existingLanguages = item.ExistingLanguages;
                var rep = ServiceLocator.Current.GetInstance <IContentLoader>();

                foreach (var lang in existingLanguages)
                {
                    var culturedPage = rep.Get <PageData>(item.ContentLink, lang);
                    var culturedUrl  = HttpUtility.HtmlEncode(this.GetItemUrl(culturedPage.ContentLink, lang, site));

                    var languageNode = doc.CreateElement("link");
                    languageNode.SetAttribute("rel", "alternate");
                    languageNode.SetAttribute("hreflang", lang.Name);
                    languageNode.SetAttribute("href", !showTrailingSlash ? culturedUrl : culturedUrl + "/");
                    urlNode.AppendChild(languageNode);
                }
            }

            var seoProperty = item.GetType().GetProperty("Priority");

            if (seoProperty?.GetValue(item) is string)
            {
                var priority = seoProperty.GetValue(item) as string;
                if (!string.IsNullOrEmpty(priority))
                {
                    // possibly validate it's between 0.0 or 1.0?  or leave up to content author?
                    double priorityNumber;
                    if (double.TryParse(priority, out priorityNumber))
                    {
                        if (priorityNumber >= 0.0 && priorityNumber <= 1.0)
                        {
                            XmlNode priorityNode = doc.CreateElement("priority");
                            urlNode.AppendChild(priorityNode);
                            priorityNode.AppendChild(doc.CreateTextNode(priority));
                        }
                    }
                }
            }

            seoProperty = item.GetType().GetProperty("ChangeFrequency");
            if (seoProperty?.GetValue(item) is string)
            {
                var frecuency = seoProperty.GetValue(item) as string;
                if (!string.IsNullOrEmpty(frecuency))
                {
                    XmlNode chgNode = doc.CreateElement("changefreq");
                    urlNode.AppendChild(chgNode);
                    chgNode.AppendChild(doc.CreateTextNode(frecuency));
                }
            }

            XmlNode lastModNode = doc.CreateElement("lastmod");

            urlNode.AppendChild(lastModNode);
            lastModNode.AppendChild(doc.CreateTextNode(lastMod));

            return(doc);
        }