# A posting bookmarklet for Vellum

import vellum.hooks

def displayBookmarklet(b):
    print '''<div class="plugin">
    <h2>Bookmarklet</h2>
    <p>Drag the link below to your links bar.</p>
    <script type="text/javascript">
    bm='<a href="javascript:location.href=\\'VELLUM.CGI?a=newentry&bid=%s&BM_TITLE&BM_URL\\'">Post to \\'%s\\'</a>';
    vellumcgi = location.protocol+'//'+location.host;
    if (location.port != 80) vellumcgi += ':'+location.port;
    vellumcgi += location.pathname;
    bm_title = "bm_title='+document.title+'";
    bm_url = "bm_url='+location.href+'";
    bm = bm.replace('VELLUM.CGI',vellumcgi);
    bm = bm.replace('BM_TITLE',bm_title);
    bm = bm.replace('BM_URL',bm_url);
    document.write('<p>'+bm+'</p>');
    </script>
    </div>
    ''' % (b.id,b.title)

vellum.hooks.register_hook("blog-displayentries-pre",displayBookmarklet)

def doBookmarklet():
    print '''<script type="text/javascript">
             window.onload = fillIn;

             function parseQS() {
                // from http://www.jamesrking.com/left_brain/javascript/parse_a_querystring.asp
                var args = new Object();
	            var query = location.search.substring(1);
                var pairs = query.split("&");
                for(var i = 0; i < pairs.length; i++) {
                    var pos = pairs[i].indexOf('=');
                    if (pos == -1) continue;
                    var argname = pairs[i].substring(0,pos);
                    var value = pairs[i].substring(pos+1);
                    args[argname] = unescape(value);
                }
                return args;
             }

             function fillIn() {
                if (!document.getElementsByName) return;
                // parse out query string details
                var args = parseQS();
                if (!args.bm_title || !args.bm_url) return;

                ebodies = document.getElementsByName("ebody");
                if (ebodies.length != 1) return;
                ebody = ebodies[0];

                ebody.value = '<a href="'+args.bm_url+'">'+args.bm_title+'</a>'
             }
             </script>
             '''
vellum.hooks.register_hook("entry-new-print",doBookmarklet)

__pluginname__ = "Bookmarklet"
__description__ = """Miss your handy "Post to my blog" bookmarklet? Just drop this
plugin into your plugins directory and Vellum will provide you with
one on the blog entries screen."""

