示例#1
0
        /// <summary>
        /// Creates new menu page
        /// </summary>
        /// <param name="srcPage">Source page</param>
        /// <param name="title">Page title</param>
        /// <returns>Menu page</returns>
        public static IContextPage BuildPage(IContextPage srcPage, string title)
        {
            var page = new MenuPage();

            page.DataDictionary["title"] = title;
            page.Url     = srcPage.Url;
            page.FullUrl = srcPage.FullUrl;
            return(page);
        }
示例#2
0
        /// <summary>
        /// Extracts the title from this page
        /// </summary>
        /// <param name="page">This page</param>
        /// <param name="data">Page metadata</param>
        /// <returns>Title</returns>
        public static string GetTitle(IContextPage page, IContextMetadata data)
        {
            var title = page.Data.GetOrDefault <string>(DEFAULT_TITLE_ATT);

            if (string.IsNullOrEmpty(title))
            {
                title = page.Url.Split('/', StringSplitOptions.RemoveEmptyEntries).LastOrDefault();
            }

            return(title);
        }
示例#3
0
        /// <summary>
        /// Finds the language of this page
        /// </summary>
        /// <param name="site">Site</param>
        /// <param name="page">Page to get language for</param>
        /// <returns>Language</returns>
        public static string GetLanguage(IContextSite site, IContextPage page)
        {
            const string LANG_VAR = "lang";

            var lang = page.Data.GetOrDefault <string>(LANG_VAR);

            if (string.IsNullOrEmpty(lang))
            {
                lang = site.Configuration.GetOrDefault <string>(LANG_VAR);
            }

            return(lang);
        }
示例#4
0
        /// <summary>
        /// Gets all pages from all level
        /// </summary>
        /// <param name="page">This page</param>
        /// <returns>All pages</returns>
        public static IEnumerable <IContextPage> GetAllPages(IContextPage page)
        {
            if (page.SubPages != null)
            {
                foreach (var childPage in page.SubPages)
                {
                    yield return(childPage);

                    foreach (var subChildPage in GetAllPages(childPage))
                    {
                        yield return(subChildPage);
                    }
                }
            }
        }
示例#5
0
        /// <summary>
        /// Returns the caption (short title) of the page
        /// </summary>
        /// <param name="page">This page</param>
        /// <param name="data">Page metadata</param>
        /// <returns>Caption</returns>
        public static string GetCaption(IContextPage page, IContextMetadata data)
        {
            var caption = "";

            if (data != null)
            {
                string titleAtt;

                if (data.TryGet(TITLE_ATT, out titleAtt) && !string.IsNullOrEmpty(titleAtt))
                {
                    caption = page.Data.GetOrDefault <string>(titleAtt);
                }
            }

            if (string.IsNullOrEmpty(caption))
            {
                caption = GetTitle(page, data);
            }

            return(caption);
        }
示例#6
0
 internal ContextModel(ISite site, IPage page, IMetadata data, string url)
 {
     Site = new ContextSite(site);
     Page = new ContextPage(site, page, url);
     Data = new ContextMetadata(data);
 }