Beispiel #1
0
        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);
        }