码迷,mamicode.com
首页 > 其他好文 > 详细

666

时间:2014-12-06 12:38:16      阅读:329      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   sp   java   

using System.Text;
using System.Web;
using System.Web.UI.HtmlControls;
using BlogEngine.Core;
using BlogEngine.Core.Web.Controls;
using Page=System.Web.UI.Page;

[Extension("Adds SyntaxHighlighter script to your blog posts", "1.1", "<a target=\"_blank\" href=\"http://www.davidpokluda.com/blog\">David Pokluda</a>")]
public class SyntaxHighlighter
{
    private const string ExtensionName = "SourceCode SyntaxHighlighter";

    public SyntaxHighlighter()
    {
        Post.Serving += AddSyntaxHighlighter;
        ExtensionSettings settings = new ExtensionSettings(ExtensionName);
    }

    private void AddSyntaxHighlighter(object sender, ServingEventArgs e)
    {
        HttpContext context = HttpContext.Current;
        if ((context.CurrentHandler is Page == false) || (context.Items[ExtensionName] != null))
        {
            return;
        }

        Page page = (Page) context.CurrentHandler;

        AddJavaScriptToPage(page);
        AddStylesheetToPage(page);
        AddSyntaxHighlighterScriptToPage(page);

        context.Items[ExtensionName] = 1;
    }

    private void AddJavaScriptToPage(Page page)
    {
        page.Header.Controls.Add(JavaScriptUrl("SyntaxHighlighter/Scripts/shCore.js"));
        page.Header.Controls.Add(JavaScriptUrl("SyntaxHighlighter/Scripts/shBrushCpp.js"));
        page.Header.Controls.Add(JavaScriptUrl("SyntaxHighlighter/Scripts/shBrushCSharp.js"));
        page.Header.Controls.Add(JavaScriptUrl("SyntaxHighlighter/Scripts/shBrushCss.js"));
        page.Header.Controls.Add(JavaScriptUrl("SyntaxHighlighter/Scripts/shBrushJScript.js"));
        page.Header.Controls.Add(JavaScriptUrl("SyntaxHighlighter/Scripts/shBrushPlain.js"));
        page.Header.Controls.Add(JavaScriptUrl("SyntaxHighlighter/Scripts/shBrushSql.js"));
        page.Header.Controls.Add(JavaScriptUrl("SyntaxHighlighter/Scripts/shBrushXml.js"));
        page.Header.Controls.Add(JavaScriptUrl("SyntaxHighlighter/Scripts/shBrushPowerShell.js"));
        page.Header.Controls.Add(JavaScriptUrl("SyntaxHighlighter/Scripts/shBrushFSharp.js"));
        page.Header.Controls.Add(JavaScriptUrl("SyntaxHighlighter/Scripts/shBrushBash.js"));
        page.Header.Controls.Add(JavaScriptUrl("SyntaxHighlighter/Scripts/shBrushDelphi.js"));
        page.Header.Controls.Add(JavaScriptUrl("SyntaxHighlighter/Scripts/shBrushDiff.js"));
        page.Header.Controls.Add(JavaScriptUrl("SyntaxHighlighter/Scripts/shBrushGroovy.js"));
        page.Header.Controls.Add(JavaScriptUrl("SyntaxHighlighter/Scripts/shBrushJava.js"));
        page.Header.Controls.Add(JavaScriptUrl("SyntaxHighlighter/Scripts/shBrushPerl.js"));
        page.Header.Controls.Add(JavaScriptUrl("SyntaxHighlighter/Scripts/shBrushPhp.js"));
        page.Header.Controls.Add(JavaScriptUrl("SyntaxHighlighter/Scripts/shBrushPython.js"));
        page.Header.Controls.Add(JavaScriptUrl("SyntaxHighlighter/Scripts/shBrushRuby.js"));
        page.Header.Controls.Add(JavaScriptUrl("SyntaxHighlighter/Scripts/shBrushScala.js"));
        page.Header.Controls.Add(JavaScriptUrl("SyntaxHighlighter/Scripts/shBrushVb.js"));

        #region // Unused brushes
        /*
        
        page.Header.Controls.Add(JavaScriptUrl("SyntaxHighlighter/Scripts/shLegacy.js"));
        */
        #endregion
    }

    private void AddStylesheetToPage(Page page)
    {
        HtmlLink css = new HtmlLink();
        css.Attributes["type"] = "text/css";
        css.Attributes["rel"] = "stylesheet";
        css.Attributes["href"] = GetAbsoluteFromRelativeUrl("SyntaxHighlighter/Styles/shCore.css");
        page.Header.Controls.Add(css);

        css = new HtmlLink();
        css.Attributes["type"] = "text/css";
        css.Attributes["rel"] = "stylesheet";
        css.Attributes["href"] = GetAbsoluteFromRelativeUrl("SyntaxHighlighter/Styles/shThemeDefault.css");
        page.Header.Controls.Add(css);
    }

    private void AddSyntaxHighlighterScriptToPage(Page page)
    {
        StringBuilder sb = new StringBuilder();
        sb.AppendLine("\n\n<script type=\"text/javascript\">");
        sb.AppendLine("\tSyntaxHighlighter.all();");
        sb.AppendLine("</script>\n\n");
        page.ClientScript.RegisterStartupScript(page.GetType(), "SyntaxHighlighter", sb.ToString(), false);
    }


    private HtmlGenericControl JavaScriptUrl(string url)
    {
        HtmlGenericControl script = new HtmlGenericControl("script");
        script.Attributes["type"] = "text/javascript";
        script.Attributes["src"] = GetAbsoluteFromRelativeUrl(url);
        return script;
    }

    private string GetAbsoluteFromRelativeUrl(string url)
    {
        return Utils.RelativeWebRoot + url;
    }
}

666

标签:style   blog   http   io   ar   color   os   sp   java   

原文地址:http://www.cnblogs.com/iiiit/p/4148008.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!