fastladder/fastladder

View on GitHub
app/assets/javascripts/lib/reader/widgets_en.js

Summary

Maintainability
C
1 day
Test Coverage
/*
 reader widgets
*/
function setup_widgets(){
    channel_widgets.sep = "  |  "
    entry_widgets.sep = "";

    entry_widgets.add('created_on', function(feed, item){
        return 'posted: ' + new DateTime(item.created_on * 1000).toString();
    });

    entry_widgets.add('modified_on', function(feed, item){
        if(item.created_on == item.modified_on) return;
        return 'modified: ' + new DateTime(item.modified_on * 1000).toString();
    });

    entry_widgets.add('subs_button', function(feed, item){
        var channel_domain = get_domain(feed.channel.link);
        var subs_button = function(url){
            return '<a href="' + url + '" rel="discover">add</a>';
        };
        return (channel_domain != get_domain(item.link)) ? subs_button(item.link) : "";
    });

    channel_widgets.add('offset', function(feed, items){
        var subscribe_id = feed.subscribe_id;
        var info = subs_item(subscribe_id);
        var size = items.length;
        var range,range_text;
        var et = (size > 1) ? 'items' : 'item';
        if(app.state.viewrange.start == 0){
            range_text = "Updated";
            range = ""
            return    [
                '<span style="background:url(\'',info.icon,'\') no-repeat 0 0;padding-left:22px">',
                ,range_text,': ',range,
                ,' <span class="num"><span id="scroll_offset"></span>',size,'</span> ', et, '</span>'
            ].join("");
        } else {
            range_text = "Archived";
            range = (app.state.viewrange.start + 1) + "-" + app.state.viewrange.end;
            return    [
                '<span style="background:url(\'',info.icon,'\') no-repeat 0 0;padding-left:22px">',
                ,range_text,': ',
                ,' <span class="num"><span id="scroll_offset"></span>',size,'</span> (',range,') ', et, '</span>'
            ].join("");
        }
    });

    channel_widgets.add('subscriber', function(feed){
        var count = feed.channel.subscribers_count;
        return [
            '<span class="subscriber" style="background:url(\'/img/icon/subscriber.gif\') no-repeat 0 0;padding-left:22px">',
            '<span class="num">', count, (count == 1 ? '</span> user</span>' : '</span> users</span>')
        ].join("");
    });

    channel_widgets.add('about', function(feed, items){
        return (
            '<a href="/about/'
            + feed.channel.feedlink
            + '" style="background-image:url(/img/icon/about.gif);background-position:0 0;background-repeat:no-repeat;padding:0 0 4px 20px;">'
            + 'about feed'
            + '</a>'
        );
    });

    channel_widgets.add('touch_button', function(feed){
        if(app.config.touch_when != "manual") return;
        return [
            "<span class='button' onclick='touch_all(\"",feed.subscribe_id,"\")'>mark as read</span>"
        ].join("");
    });

}
setup_widgets();
/* just a example:
    entry_widgets.add('clip_counter', function(feed, item){
        var link = item.link.replace(/#/g,'%23');
        var link_encoded = encodeURIComponent(item.link);
        var tmpl = [
            'http://clip.livedoor.com/clip/add?',
            'mode=confirm&title=[[title]]&link=[[url]]&tags=[[tags]]&public=[[public]]'
        ].join("");
        var add_link = tmpl.fill({
            url   : encodeURIComponent(item.link.unescapeHTML()),
            title : encodeURIComponent(item.title.unescapeHTML()),
            tags  : app.config.clip_tags,
            "public" : app.config.use_clip_public
        });
        return [
            '<a href="', add_link, '">','<img src="http://parts.blog.livedoor.jp/img/cmn/clip_16_12_w.gif" border=0></a>',
            '<a href="http://clip.livedoor.com/page/', link, '">',
            '<img style="border:none;margin-left:3px" ',
            'src="http://image.clip.livedoor.com/counter/', link, '">','</a>'
        ].join('');
    });

    entry_widgets.add('hb_counter', function(feed, item){
        var link = item.link.replace(/#/g,'%23');
        return [
            '<a href="http://b.hatena.ne.jp/entry/', link, '">',
            '<img src="http://d.hatena.ne.jp/images/b_entry.gif" border=0><img style="border:none;margin-left:3px;" ',
            'src="http://b.hatena.ne.jp/entry/image/',link, '"></a>'
        ].join('');
    }, 'はてなブックマークにブックマークされている件数です');

    channel_widgets.add('feedlink', function(feed, items){
        return '<a href="'+feed.channel.feedlink+'"><img src="/img/icon/feed.gif" border=0 style="vertival-align:middle"></a>';
    });

    channel_widgets.add('hb_counter', function(feed){
        return [
            '<a href="http://b.hatena.ne.jp/entrylist?url=', feed.channel.link, '">',
            '<img style="vertical-align:middle;border:none;" src="http://b.hatena.ne.jp/bc/', feed.channel.link, '">',
            '</a>'
        ].join("");
    });
*/