public static void GiveFrame(this ActionContext ac, int status, bool? @public = null, int maxage = 60) { HtmlContent h = new HtmlContent(true, 8 * 1024); h.Add("<!DOCTYPE html>"); h.Add("<html style=\"height:100%\">"); h.Add("<head>"); h.Add("<title>粗粮达人</title>"); h.Add("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">"); h.Add("<link rel=\"stylesheet\" href=\"//cdn.bootcss.com/croppie/2.4.1/croppie.min.css\">"); h.Add("<link rel=\"stylesheet\" href=\"/app.min.css\">"); h.Add("</head>"); h.Add("<body style=\"height:100%\">"); Work work = ac.Work; Roll <Work> subs = work.Works; h.Add("<ul class=\"tabs\" data-tabs id=\"frame-tabs\">"); h.Add("<li class=\"tabs-title is-active\">"); h.Add("<a href=\"#paneltop\">"); h.Add(work.Label); h.Add("</a>"); h.Add("</li>"); if (subs != null) { for (int i = 0; i < subs.Count; i++) { Work sub = subs[i]; if (!sub.DoAuthorize(ac)) { continue; } h.Add("<li class=\"tabs-title\"><a href=\"#panel"); h.Add(i); h.Add("\">"); h.Add(sub.Label); h.Add("</a></li>"); } } h.Add("</ul>"); h.Add("<div class=\"tabs-content\" data-tabs-content=\"frame-tabs\">"); h.Add("<div class=\"tabs-panel is-active\" id=\"paneltop\">"); h.Add("<div class=\"title-bar\">"); h.Add("<div class=\"title-bar-left\">"); h.TRIGGERS(work.UiActions, ac); h.Add("</div>"); h.Add("<div class=\"title-bar-title\">"); h.Add("<span class=\"button primary hollow\">"); string title = ac[work]; if (title.Length > 20) { title = ((User)ac.Principal).name; } h.Add(title); h.Add("</span>"); h.Add("</div>"); h.Add("</div>"); h.Add("</div>"); if (subs != null) { for (int i = 0; i < subs.Count; i++) { Work sub = subs[i]; if (!sub.DoAuthorize(ac)) { continue; } h.Add("<div class=\"tabs-panel\" style=\"height: 100%\" id=\"panel"); h.Add(i); h.Add("\">"); h.Add("<iframe id=\""); h.Add(sub.Name); h.Add("/\" frameborder=\"0\" style=\"width:100%; height:100%;\"></iframe>"); h.Add(" </div>"); } } h.Add(" </div>"); // zurb foundation h.Add("<script src=\"//cdn.bootcss.com/jquery/3.2.1/jquery.min.js\"></script>"); h.Add("<script src=\"//cdn.bootcss.com/foundation/6.3.1/js/foundation.min.js\"></script>"); h.Add("<script src=\"//cdn.bootcss.com/croppie/2.4.1/croppie.min.js\"></script>"); h.Add("<script src=\"/app.min.js\"></script>"); h.Add("<script>"); h.Add("$(document).foundation();"); h.Add("$('#frame-tabs').on('change.zf.tabs', function(e){var ifr = $('.tabs-panel.is-active').find('iframe'); if (ifr && !ifr[0].src) ifr[0].src = ifr[0].id;});"); h.Add("</script>"); h.Add("</body>"); h.Add("</html>"); ac.Give(status, h, @public, maxage); }