/// <summary>
        /// Returns a link to the file view utility for the file with
        /// the given tilde path.
        ///
        /// Returns an empty string if an error occurs.
        /// </summary>
        /// <param name="context">Web site HttpContext object</param>
        /// <param name="tildeFilePath">A file tilde path</param>
        public static string MakeFileViewLinkMarkup
            (HttpContext context, string tildeFilePath)
        {
            try
            {
                if (context == null)
                {
                    return("");
                }

                if (StringTools.IsTrivial(tildeFilePath))
                {
                    return("");
                }

                if (!tildeFilePath.StartsWith(SourceTools.tildeStart))
                {
                    return("");
                }

                string filename =
                    HttpContextTools.GetFileName(tildeFilePath);

                string fileviewPath =
                    HttpContextTools.
                    MakeMergedPath(context, fileviewTildePath);

                StringBuilder builder = new StringBuilder();

                builder.Append(openFileViewMarkup);

                // Download button
                builder.Append(Download1);
                builder.Append(tildeFilePath);
                builder.Append(Download2);

                // FileView link
                builder.Append(HTML_Tools.open_span);
                builder.Append(HTML_Tools.open_anchor);
                builder.Append(fileviewPath);
                builder.Append("?");
                builder.Append(tildeFilePath);
                builder.Append(HTML_Tools.mid_anchor_blank);
                builder.Append(HTML_Tools.open_code);
                builder.Append(filename);
                builder.Append(HTML_Tools.shut_code);
                builder.Append(HTML_Tools.shut_anchor);
                builder.Append(HTML_Tools.shut_span);

                // Data for the file

                string filePath =
                    context.Server.MapPath(tildeFilePath);

                FileInfo info = new FileInfo(filePath);

                // bytes
                long bytes = info.Length;

                builder.Append(HTML_Tools.open_span);
                builder.Append(bytes.ToString());
                builder.Append(HTML_Tools.shut_span);

                // most recent date and time
                DateTime mostrecent = info.MostRecentTime();

                builder.Append(HTML_Tools.open_span);
                builder.Append(mostrecent.ToYMD());
                builder.Append(HTML_Tools.shut_span);

                builder.Append(HTML_Tools.open_span);
                builder.Append(mostrecent.ToHMS());
                builder.Append(HTML_Tools.shut_span);

                builder.Append(shutFileViewMarkup);

                return(builder.ToString());
            }
            catch (Exception)
            {
                return("");
            }
        }