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); }
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); }
/// <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); }
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); }
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); }