コード例 #1
0
        public static List <PhotoContent> DbContentFromBracketCodes(string toProcess, IProgress <string> progress)
        {
            if (string.IsNullOrWhiteSpace(toProcess))
            {
                return(new List <PhotoContent>());
            }

            var guidList = BracketCodeCommon.ContentBracketCodeMatches(toProcess, BracketCodeToken)
                           .Select(x => x.contentGuid).Distinct().ToList();

            var returnList = new List <PhotoContent>();

            if (!guidList.Any())
            {
                return(returnList);
            }

            var context = Db.Context().Result;

            foreach (var loopGuid in guidList)
            {
                var dbContent = context.PhotoContents.FirstOrDefault(x => x.ContentId == loopGuid);
                if (dbContent == null)
                {
                    continue;
                }

                progress?.Report($"Photo Link Code - Adding DbContent For {dbContent.Title}");

                returnList.Add(dbContent);
            }

            return(returnList);
        }
コード例 #2
0
        /// <summary>
        ///     Processes {{photo guid;human_identifier}} with a specified function - best use may be for easily building
        ///     library code.
        /// </summary>
        /// <param name="toProcess"></param>
        /// <param name="pageConversion"></param>
        /// <param name="progress"></param>
        /// <returns></returns>
        private static string PhotoCodeProcess(string toProcess, Func <SinglePhotoPage, string> pageConversion,
                                               IProgress <string> progress)
        {
            if (string.IsNullOrWhiteSpace(toProcess))
            {
                return(string.Empty);
            }

            progress?.Report("Searching for Photo Codes");

            var resultList = BracketCodeCommon.ContentBracketCodeMatches(toProcess, BracketCodeToken);

            if (!resultList.Any())
            {
                return(toProcess);
            }

            var context = Db.Context().Result;

            foreach (var loopMatch in resultList)
            {
                var dbPhoto = context.PhotoContents.FirstOrDefault(x => x.ContentId == loopMatch.contentGuid);
                if (dbPhoto == null)
                {
                    continue;
                }

                progress?.Report($"Photo Code for {dbPhoto.Title} processed");
                var singlePhotoInfo = new SinglePhotoPage(dbPhoto);

                toProcess = toProcess.Replace(loopMatch.bracketCodeText, pageConversion(singlePhotoInfo));
            }

            return(toProcess);
        }
コード例 #3
0
        public static string Process(string toProcess, IProgress <string> progress)
        {
            if (string.IsNullOrWhiteSpace(toProcess))
            {
                return(string.Empty);
            }

            var resultList = BracketCodeCommon.ContentBracketCodeMatches(toProcess, BracketCodeToken);

            var context = Db.Context().Result;

            foreach (var loopMatch in resultList)
            {
                var dbContent = context.FileContents.FirstOrDefault(x => x.ContentId == loopMatch.contentGuid);
                if (dbContent == null)
                {
                    continue;
                }

                progress?.Report($"Adding file download link {dbContent.Title} from Code");

                var settings = UserSettingsSingleton.CurrentSettings();

                var linkTag = new LinkTag(
                    string.IsNullOrWhiteSpace(loopMatch.displayText) ? dbContent.Title : loopMatch.displayText.Trim(),
                    dbContent.PublicDownloadLink
                        ? settings.FileDownloadUrl(dbContent)
                        : settings.FilePageUrl(dbContent), "file-download-link");

                toProcess = toProcess.Replace(loopMatch.bracketCodeText, linkTag.ToString());
            }

            return(toProcess);
        }
コード例 #4
0
        public static HtmlTag CoreLinksDiv(IProgress <string> progress = null)
        {
            var db = Db.Context().Result;

            var items = db.MenuLinks.OrderBy(x => x.MenuOrder).ToList();

            if (!items.Any())
            {
                return(HtmlTag.Empty());
            }

            var coreLinksDiv = new DivTag().AddClass("core-links-container");

            foreach (var loopItems in items)
            {
                var html = ContentProcessing.ProcessContent(
                    BracketCodeCommon.ProcessCodesForSite(loopItems.LinkTag, progress),
                    ContentFormatEnum.MarkdigMarkdown01);

                var coreLinkContainer = new DivTag().AddClass("core-links-item").Text(html).Encoded(false);
                coreLinksDiv.Children.Add(coreLinkContainer);
            }

            return(coreLinksDiv);
        }
コード例 #5
0
        public static string Process(string toProcess, IProgress <string> progress)
        {
            if (string.IsNullOrWhiteSpace(toProcess))
            {
                return(string.Empty);
            }

            progress?.Report("Searching for MapComponent Link Codes");

            var resultList = BracketCodeCommon.ContentBracketCodeMatches(toProcess, BracketCodeToken);

            if (!resultList.Any())
            {
                return(toProcess);
            }

            var context = Db.Context().Result;

            foreach (var loopMatch in resultList)
            {
                var dbContent = context.MapComponents.FirstOrDefault(x => x.ContentId == loopMatch.contentGuid);
                if (dbContent == null)
                {
                    continue;
                }

                progress?.Report($"Adding mapComponent {dbContent.Title} from Code");

                toProcess = toProcess.Replace(loopMatch.bracketCodeText, MapParts.MapDivAndScript(dbContent));
            }

            return(toProcess);
        }
コード例 #6
0
        public static HtmlTag PostBodyDiv(IBodyContent dbEntry, IProgress <string> progress = null)
        {
            if (string.IsNullOrWhiteSpace(dbEntry.BodyContent))
            {
                return(HtmlTag.Empty());
            }

            var bodyContainer = new HtmlTag("div").AddClass("post-body-container");

            var bodyText = ContentProcessing.ProcessContent(
                BracketCodeCommon.ProcessCodesForSite(dbEntry.BodyContent, progress), dbEntry.BodyContentFormat);

            bodyContainer.Children.Add(new HtmlTag("div").AddClass("post-body-content").Encoded(false).Text(bodyText));

            return(bodyContainer);
        }
コード例 #7
0
        public static string SpecialPagesCodeProcess(string toProcess, IProgress <string> progress)
        {
            if (string.IsNullOrWhiteSpace(toProcess))
            {
                return(string.Empty);
            }

            progress?.Report("Searching for Special Page Codes");

            var specialPageLookup = new List <(string bracketCode, string defaultDisplayString, string url)>
            {
                ("index", "Main", $"https:{UserSettingsSingleton.CurrentSettings().IndexPageUrl()}"),
                ("indexrss", "Main Page RSS Feed",
                 $"https:{UserSettingsSingleton.CurrentSettings().RssIndexFeedUrl()}"),
                ("filerss", "Files RSS Feed", $"https:{UserSettingsSingleton.CurrentSettings().FileRssUrl()}"),
                ("imagerss", "Images RSS Feed", $"https:{UserSettingsSingleton.CurrentSettings().ImageRssUrl()}"),
                ("linkrss", "Links RSS Feed", $"https:{UserSettingsSingleton.CurrentSettings().LinkRssUrl()}"),
                ("noterss", "Notes RSS Feed", $"https:{UserSettingsSingleton.CurrentSettings().NoteRssUrl()}"),
                ("photorss", "Photo Gallery RSS Feed",
                 $"https:{UserSettingsSingleton.CurrentSettings().PhotoRssUrl()}"),
                ("photogallerypage", "Photos",
                 $"https:{UserSettingsSingleton.CurrentSettings().CameraRollPhotoGalleryUrl()}"),
                ("searchpage", "Search", $"https:{UserSettingsSingleton.CurrentSettings().AllContentListUrl()}"),
                ("tagspage", "Tags", $"https:{UserSettingsSingleton.CurrentSettings().AllTagsListUrl()}"),
                ("linklistpage", "Links", $"https:{UserSettingsSingleton.CurrentSettings().LinkListUrl()}")
            };

            foreach (var loopLookups in specialPageLookup)
            {
                var matches = BracketCodeCommon.SpecialPageBracketCodeMatches(toProcess, loopLookups.bracketCode);

                foreach (var loopMatch in matches)
                {
                    progress?.Report($"Adding Special Page {loopLookups.bracketCode} from Code");

                    var linkTag =
                        new LinkTag(
                            string.IsNullOrWhiteSpace(loopMatch.displayText)
                                ? loopLookups.defaultDisplayString
                                : loopMatch.displayText.Trim(), loopLookups.url, "special-page-link");

                    toProcess = toProcess.Replace(loopMatch.bracketCodeText, linkTag.ToString());
                }
            }

            return(toProcess);
        }
コード例 #8
0
        public static string Process(string toProcess, IProgress <string> progress)
        {
            if (string.IsNullOrWhiteSpace(toProcess))
            {
                return(string.Empty);
            }

            progress?.Report("Searching for GeoJson Link Codes...");

            var resultList = BracketCodeCommon.ContentBracketCodeMatches(toProcess, BracketCodeToken);

            if (!resultList.Any())
            {
                return(toProcess);
            }

            var context = Db.Context().Result;

            foreach (var loopMatch in resultList)
            {
                var dbContent = context.GeoJsonContents.FirstOrDefault(x => x.ContentId == loopMatch.contentGuid);
                if (dbContent == null)
                {
                    continue;
                }

                progress?.Report($"Adding GeoJson Link {dbContent.Title} from Code");

                var linkTag =
                    new LinkTag(
                        string.IsNullOrWhiteSpace(loopMatch.displayText)
                            ? dbContent.Title
                            : loopMatch.displayText.Trim(),
                        UserSettingsSingleton.CurrentSettings().GeoJsonPageUrl(dbContent), "geojson-page-link");

                toProcess = toProcess.Replace(loopMatch.bracketCodeText, linkTag.ToString());
            }

            return(toProcess);
        }
コード例 #9
0
        public static HtmlTag UpdateNotesDiv(IUpdateNotes dbEntry)
        {
            if (string.IsNullOrWhiteSpace(dbEntry.UpdateNotes))
            {
                return(HtmlTag.Empty());
            }

            var updateNotesDiv = new DivTag().AddClass("update-notes-container");

            updateNotesDiv.Children.Add(new DivTag().AddClass("update-notes-title").Text("Updates:"));

            var updateNotesContentContainer = new DivTag().AddClass("update-notes-content");

            var updateNotesHtml = ContentProcessing.ProcessContent(
                BracketCodeCommon.ProcessCodesForSite(dbEntry.UpdateNotes, null), dbEntry.UpdateNotesFormat);

            updateNotesContentContainer.Encoded(false).Text(updateNotesHtml);

            updateNotesDiv.Children.Add(updateNotesContentContainer);

            return(updateNotesDiv);
        }
コード例 #10
0
 public static string IncludeIfNeeded(string content)
 {
     return(BracketCodeCommon.ContainsSpatialBracketCodes(content) ? ScriptsAndLinks() : string.Empty);
 }