Skip to content

jQuery Dilbert 1.0

Da un’idea di Carlo… un plugin senza troppi fronzoli e soprattutto senza flash

  • Proxy php per il recupero del feed
  • Navigabile da tastiera con il tasto “>” e il tasto “<”

DEMO

ZIP


/*
 *
 * Dilbert plugin 1.0
 * $Date: 2008-04-29 10:20:55 +0200 (mar, 29 apr 2008) $
 * $Rev: 10 $
 * @requires jQuery v1.2.3
 *
 * Copyright (c) 2008 Massimiliano Balestrieri
 * Examples and docs at: http://maxb.net/blog/
 * Licensed GPL licenses:
 * http://www.gnu.org/licenses/gpl.html
 *
 */

//if(!window.console)window.console = {log : function(){}};

Dilbert = {
    date      : '',
    title     : 'Dilbert Daily Strip',
    link      : '',
    desc      : '',
    pages     : 1,
    jpages    : [],
    current   : 1,
    options   : {},
    build     : function(options)
    {

        Dilbert.options = options || {};
        return this.each(
            function(nr)
            {
                //setto un po’ di variabili
                if(!Dilbert.options.feed)
                    Dilbert.options.feed  = ‘http://feeds.feedburner.com/DilbertDailyStrip’;
                if(!Dilbert.options.proxy)
                     Dilbert.options.proxy || ‘proxy.php’;

                var that = this;
                Dilbert.get(1,that);
            }
        );

    },
    get : function(num,el){
        //console.log(num);
        jQuery.ajax({
            dataType : ‘xml’,
            url      :  Dilbert.options.proxy,
            data     : ‘url=’ + Dilbert.options.feed,
            success: function(rss){
                //console.log(data.firstChild);
                var titles = rss.getElementsByTagName("title");
                var link = rss.getElementsByTagName("link");
                var desc = rss.getElementsByTagName("description");
                Dilbert.pages = titles.length - 1;
                Dilbert.title = titles[0].firstChild.nodeValue;
                Dilbert.date  = titles[num].firstChild.nodeValue;
                //Dilbert.link = link[num].firstChild.nodeValue;
                Dilbert.desc = desc[num].firstChild.nodeValue;

                //console.log(Dilbert.title);
                //console.log(Dilbert.date);
                if(el){
                    Dilbert.gui(el);
                }else{
                    jQuery(".dilbert-title", el).text(Dilbert.title + ‘ - ‘ + Dilbert.date);
                    jQuery(".dilbert-desc", el).html(Dilbert.desc);
                    Dilbert.reset_toolbar(el);
                    //console.log(Dilbert.current);
                    Dilbert.jpages[(Dilbert.current - 1)].css({"color":"red","text-decoration":"none"});

                }
            }
         });
    },
    gui : function(el)
    {
        jQuery(el).append(’<div class="dilbert-jquery">’);
        var jcontainer = jQuery(".dilbert-jquery", el);
        jcontainer.append(’<div class="dilbert-title-cont"><div class="dilbert-title" re="#"></div><div class="dilbert-pager"></div>’);
        jQuery(".dilbert-title", el).text(Dilbert.title + ‘ - ‘ + Dilbert.date);
        //console.log(Dilbert.title);
        //console.log(Dilbert.date);
        jcontainer.append(’<div class="dilbert-desc">’);
        jQuery(".dilbert-desc", el).html(Dilbert.desc);

        jcontainer.append(”);
        var pager = jQuery(".dilbert-pager", el);

        var first = jQuery(’<a href="#"></a>’)
            .text("<<")
            .click(function(){
                Dilbert.current = 1;
                Dilbert.get(1);
                return false;
            });
        var prev = jQuery(’<a href="#"></a>’)
            .text("<")
            .click(function(){
                if(Dilbert.current > 1)
                    Dilbert.get(–Dilbert.current);
                return false;
            });
        var next = jQuery(’<a href="#"></a>’)
            .text(">")
            .click(function(){
                if(Dilbert.current < Dilbert.pages)
                    Dilbert.get(++Dilbert.current);
                return false;
            });
        var last = jQuery(’<a href="#"></a>’)
            .text(">>")
            .click(function(){
                Dilbert.current = Dilbert.pages;
                Dilbert.get(Dilbert.pages);
            return false;
            });            

        pager.append(first);
        pager.append(prev);
        for(var i = 0;i < Dilbert.pages;i++){
            var link = jQuery(’<a href="#"></a>’)
                .text((i + 1))
                .click(function(){
                	Dilbert.current = parseInt(jQuery(this).text());
                    Dilbert.get(Dilbert.current);
                    return false;
                });
            if((Dilbert.current-1) == i)
                link.css({"color":"red","text-decoration":"none"});

            Dilbert.jpages[i] = link;
            pager.append(link);
        }
        pager.append(next);
        pager.append(last);

        document.onkeydown = function(e){
            if (e == null) { // ie
                keycode = event.keyCode;
            } else { // mozilla
                keycode = e.which;
            }
            if(keycode == 190){ // display previous image
                if(Dilbert.current > 1){
                     //console.log(Dilbert.current);
                    Dilbert.get(–Dilbert.current);
                }
            } else if(keycode == 188){ // display next image
                if(Dilbert.current < Dilbert.pages){
                    //console.log(Dilbert.current);
                    Dilbert.get(++Dilbert.current);
                }
            }
        };

    },
    reset_toolbar : function(el){
        jQuery(".dilbert-pager>a", el).css({"color":"black","text-decoration":"underline"});
    }
};
jQuery.fn.dilbert = Dilbert.build;

{ 1 } Trackback

  1. [...] Corretto l’evento onkeydown della 1.0. [...]

Post a Comment

Your email is never published nor shared. Required fields are marked *