void FillEntrySubstitutions(Hashtable substitutions, DayEntry d, string blog_base, bool single_entry) { string category_paths = GetCategoryPaths(d, blog_base); string entry_path = LB.GetEntryPath(blog_base, d); substitutions.Add("@ENTRY_ID@", d.Id); substitutions.Add("@ENTRY_PATH@", entry_path); substitutions.Add("@ENTRY_PERMALINK@", d.PermaLink); substitutions.Add("@ENTRY_CAPTION@", d.Caption); substitutions.Add("@ENTRY_CAPTION_ENC@", HttpUtility.UrlEncode(d.Caption)); substitutions.Add("@BASEDIR@", config.BlogWebDirectory); substitutions.Add("@BASEIMAGES@", config.BlogImageBasedir); substitutions.Add("@COPYRIGHT@", config.Copyright); substitutions.Add("@ENTRY_CATEGORY@", d.Category); substitutions.Add("@ENTRY_DATECAPTION@", d.DateCaption); substitutions.Add("@ENTRY_CATEGORY_PATHS@", category_paths); substitutions.Add("@BLOGWEBDIR@", config.BlogWebDirectory); substitutions.Add("@ENTRY_URL_PERMALINK@", Path.Combine(config.BlogWebDirectory, d.PermaLink)); if (d.Comments && single_entry) { StringWriter rendered_comment = new StringWriter(new StringBuilder(comments.Length)); Translate(comments, rendered_comment, substitutions); substitutions.Add("@COMMENTS@", rendered_comment.ToString()); d.RenderedComment = rendered_comment.ToString(); } else { substitutions.Add("@COMMENTS@", ""); } }
public void RenderArchive() { for (int i = 0; i < Entries; i++) { DayEntry d = (DayEntry)entries [i]; string parent_dir = "../.."; if (d.Category.Length > 0) { parent_dir += Regex.Replace(d.Category, "[^/]+", ".."); } RenderHtml(Path.Combine(config.Prefix, d.PermaLink), entries.Count - i - 1, entries.Count - i, parent_dir, false); if (d.Images == null) { continue; } foreach (string filename in d.Images) { string file = Path.GetFileName(filename); string thumbnail = Path.Combine(LB.GetEntryPath(config.Prefix + "/", d), LB.GetThumbnailName(file)); string thumbnail_target = Path.Combine( LB.GetEntryPath(config.Prefix + "/", d), file); file = Path.Combine(config.ImageDirectory, filename); if (!File.Exists(file)) { Console.Error.WriteLine("lb: Missing file for #thumbnail {0}, ({1}).", filename, file); continue; } if (!File.Exists(thumbnail_target)) { File.Copy(file, thumbnail_target); } if (!File.Exists(thumbnail)) { ProcessStartInfo psi = new ProcessStartInfo(config.ThumbnailCommandFileName); psi.Arguments = string.Format(config.ThumbnailCommandArguments, file, thumbnail); Process p = Process.Start(psi); p.WaitForExit(); if (p.ExitCode != 0) { Console.Error.WriteLine("lb: error running command: {0} {1}", psi.FileName, psi.Arguments); } } } } foreach (DictionaryEntry de in category_entries) { string category = de.Key.ToString(); IList entries = (IList)de.Value; string parent_dir = ".." + Regex.Replace(category, "[^/]+", ".."); RenderHtml(Path.Combine(config.Prefix, "archive" + category + config.BlogFileName), parent_dir, entries, 0, entries.Count, false); } }