Plugin Directory

Changeset 719096


Ignore:
Timestamp:
05/27/2013 10:01:00 PM (13 years ago)
Author:
matthewbe
Message:
  • improved compatibility with other plugins
Location:
spider-invasion/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • spider-invasion/trunk/js/spider-invasion.js

    r715048 r719096  
    6060function spawnSpider() {
    6161    var $j = jQuery.noConflict();
    62     var src = param.images_dir + '/cute-spider-' + (Math.floor(Math.random() * 3) + 1) + '.png';
     62    var src = spider_invasion_param.images_dir + '/cute-spider-' + (Math.floor(Math.random() * 3) + 1) + '.png';
    6363    var img = $j('<img/>')
    6464        .css({
     
    7979        height: '1px'
    8080    });
    81     if(!param.invade_content) {
     81    if(!spider_invasion_param.invade_content) {
     82        var contentId = '#content';
    8283        if(
    83             $j("#content").length > 0 &&
    84             xy[1] > ($j("#content").offset().left - img.height()) && xy[1] < ($j("#content").offset().left + $j("#content").width()) &&
    85             xy[0] > $j("#content").offset().top && xy[0] < ($j("#content").offset().top + $j("#content").height())
     84            $j(contentId).length > 0 &&
     85            xy[1] > ($j(contentId).offset().left - img.height()) && xy[1] < ($j(contentId).offset().left + $j(contentId).width()) &&
     86            xy[0] > $j(contentId).offset().top && xy[0] < ($j(contentId).offset().top + $j(contentId).height())
    8687        ) return;
    8788    }
     
    129130    }, 30, 'linear', function() { zigzagDefense(el); });
    130131}
    131 window.onload = function() {
     132jQuery(document).ready(function() {
    132133    var $j = jQuery.noConflict();
    133     param.max_density = +param.max_density; // unary plus to convert string to int
    134     param.min_density = +param.min_density;
    135     param.nb_spiders = +param.nb_spiders;
    136     param.invade_content = Boolean(param.invade_content);
     134    spider_invasion_param.max_density = +spider_invasion_param.max_density; // unary plus to convert string to int
     135    spider_invasion_param.min_density = +spider_invasion_param.min_density;
     136    spider_invasion_param.nb_spiders = +spider_invasion_param.nb_spiders;
     137    spider_invasion_param.invade_content = Boolean(spider_invasion_param.invade_content);
    137138    var surface = $j('body').height()*$j('body').width();
    138     var densityMax = Math.floor(surface/param.max_density);
    139     var densityMin = Math.floor(surface/param.min_density);
    140     var nbSpiders = param.nb_spiders > densityMax ? (densityMax < 1 ? 1 : densityMax) : Math.floor(param.nb_spiders);
     139    var densityMax = Math.floor(surface/spider_invasion_param.max_density);
     140    var densityMin = Math.floor(surface/spider_invasion_param.min_density);
     141    var nbSpiders = spider_invasion_param.nb_spiders > densityMax ? (densityMax < 1 ? 1 : densityMax) : Math.floor(spider_invasion_param.nb_spiders);
    141142    nbSpiders = (nbSpiders != 0 && nbSpiders < densityMin) ? densityMin : nbSpiders;
    142143    for(i=0;i<nbSpiders;++i) {
     
    153154        zigzagDefense($j(this));
    154155    });
    155 }
     156});
  • spider-invasion/trunk/js/spider-invasion.min.js

    r715048 r719096  
    1 function getRandomPosition(e){var t=jQuery.noConflict();var n=t("body").height()-e.height();var r=t("body").width()-e.width();var i=Math.floor(Math.random()*n);var s=Math.floor(Math.random()*r);return[i,s]}function runSpawnAnimation(e){e.animate({width:"35px",height:"21px",marginLeft:"-15",marginTop:"-7"},400,function(){e.animate({width:"50px",height:"30px",marginLeft:"-21",marginTop:"-10"},50,function(){e.shake()})})}function spawnSpider(){var e=jQuery.noConflict();var t=param.images_dir+"/cute-spider-"+(Math.floor(Math.random()*3)+1)+".png";var n=e("<img/>").css({position:"absolute",opacity:.5,width:"50px",height:"30px","z-index":100}).addClass("spider-invader").attr("src",t).appendTo("body").hide();var r=getRandomPosition(n);r[1]+=10;n.css({width:"1px",height:"1px"});if(!param.invade_content){if(e("#content").length>0&&r[1]>e("#content").offset().left-n.height()&&r[1]<e("#content").offset().left+e("#content").width()&&r[0]>e("#content").offset().top&&r[0]<e("#content").offset().top+e("#content").height())return}n.css({top:r[0]+"px",left:r[1]+"px"});n.show();runSpawnAnimation(n);var i=305;var s=r[1]-100+i;var o=r[1]-100;var u=e("<div/>").css({position:"absolute",top:r[0]-140+"px",left:r[1]-150+"px",opacity:.5,width:(s>e("body").width()?e("body").width()-o:i)+"px",height:"275px","z-index":50,overflow:"hidden"}).addClass("spider-danger-zone").appendTo("body").data("spider",n)}function spawnSpidersAtRandomIntervals(e){var t=jQuery.noConflict();spawnSpider();++e;if(t("body").height()*t("body").width()/(500*500)<e)return;setTimeout(function(){spawnSpidersAtRandomIntervals(e)},Math.floor(Math.random()*6e4)+5e3)}function zigzagDefense(e){if(e.position().top<-50)return;e.animate({left:"+=13",top:"-=25"},30,"linear").animate({left:"-=13",top:"-=25"},30,"linear",function(){zigzagDefense(e)})}(function(e){e.fn.shake=function(t){var n={shakes:4,distance:3,duration:200};if(t){e.extend(n,t)}var r;return this.each(function(){$this=e(this);r=$this.css("position");var t=0;if(!r||r==="static"){$this.css("position","relative")}else if(r==="absolute"){t=$this.position().left}for(var i=1;i<=n.shakes;i++){$this.animate({left:t+n.distance*-1},n.duration/n.shakes/4).animate({left:t+n.distance},n.duration/n.shakes/2).animate({left:t+0},n.duration/n.shakes/4)}})}})(jQuery);window.onload=function(){var e=jQuery.noConflict();param.max_density=+param.max_density;param.min_density=+param.min_density;param.nb_spiders=+param.nb_spiders;param.invade_content=Boolean(param.invade_content);var t=e("body").height()*e("body").width();var n=Math.floor(t/param.max_density);var r=Math.floor(t/param.min_density);var s=param.nb_spiders>n?n<1?1:n:Math.floor(param.nb_spiders);s=s!=0&&s<r?r:s;for(i=0;i<s;++i){setTimeout(function(){spawnSpider()},Math.floor(Math.random()*400)+10)}setTimeout(function(){spawnSpidersAtRandomIntervals(s)},Math.floor(Math.random()*6e4)+5e3);e("body").on("mouseover",".spider-danger-zone",function(){zigzagDefense(e(this).data("spider"))}).on("click",".spider-invader",function(){zigzagDefense(e(this))})}
     1function getRandomPosition(e){var t=jQuery.noConflict();var n=t("body").height()-e.height();var r=t("body").width()-e.width();var i=Math.floor(Math.random()*n);var s=Math.floor(Math.random()*r);return[i,s]}function runSpawnAnimation(e){e.animate({width:"35px",height:"21px",marginLeft:"-15",marginTop:"-7"},400,function(){e.animate({width:"50px",height:"30px",marginLeft:"-21",marginTop:"-10"},50,function(){e.shake()})})}function spawnSpider(){var e=jQuery.noConflict();var t=spider_invasion_param.images_dir+"/cute-spider-"+(Math.floor(Math.random()*3)+1)+".png";var n=e("<img/>").css({position:"absolute",opacity:.5,width:"50px",height:"30px","z-index":100}).addClass("spider-invader").attr("src",t).appendTo("body").hide();var r=getRandomPosition(n);r[1]+=10;n.css({width:"1px",height:"1px"});if(!spider_invasion_param.invade_content){var i="#content";if(e(i).length>0&&r[1]>e(i).offset().left-n.height()&&r[1]<e(i).offset().left+e(i).width()&&r[0]>e(i).offset().top&&r[0]<e(i).offset().top+e(i).height())return}n.css({top:r[0]+"px",left:r[1]+"px"});n.show();runSpawnAnimation(n);var s=305;var o=r[1]-100+s;var u=r[1]-100;var a=e("<div/>").css({position:"absolute",top:r[0]-140+"px",left:r[1]-150+"px",opacity:.5,width:(o>e("body").width()?e("body").width()-u:s)+"px",height:"275px","z-index":50,overflow:"hidden"}).addClass("spider-danger-zone").appendTo("body").data("spider",n)}function spawnSpidersAtRandomIntervals(e){var t=jQuery.noConflict();spawnSpider();++e;if(t("body").height()*t("body").width()/(500*500)<e)return;setTimeout(function(){spawnSpidersAtRandomIntervals(e)},Math.floor(Math.random()*6e4)+5e3)}function zigzagDefense(e){if(e.position().top<-50)return;e.animate({left:"+=13",top:"-=25"},30,"linear").animate({left:"-=13",top:"-=25"},30,"linear",function(){zigzagDefense(e)})}(function(e){e.fn.shake=function(t){var n={shakes:4,distance:3,duration:200};if(t){e.extend(n,t)}var r;return this.each(function(){$this=e(this);r=$this.css("position");var t=0;if(!r||r==="static"){$this.css("position","relative")}else if(r==="absolute"){t=$this.position().left}for(var i=1;i<=n.shakes;i++){$this.animate({left:t+n.distance*-1},n.duration/n.shakes/4).animate({left:t+n.distance},n.duration/n.shakes/2).animate({left:t+0},n.duration/n.shakes/4)}})}})(jQuery);jQuery(document).ready(function(){var e=jQuery.noConflict();spider_invasion_param.max_density=+spider_invasion_param.max_density;spider_invasion_param.min_density=+spider_invasion_param.min_density;spider_invasion_param.nb_spiders=+spider_invasion_param.nb_spiders;spider_invasion_param.invade_content=Boolean(spider_invasion_param.invade_content);var t=e("body").height()*e("body").width();var n=Math.floor(t/spider_invasion_param.max_density);var r=Math.floor(t/spider_invasion_param.min_density);var s=spider_invasion_param.nb_spiders>n?n<1?1:n:Math.floor(spider_invasion_param.nb_spiders);s=s!=0&&s<r?r:s;for(i=0;i<s;++i){setTimeout(function(){spawnSpider()},Math.floor(Math.random()*400)+10)}setTimeout(function(){spawnSpidersAtRandomIntervals(s)},Math.floor(Math.random()*6e4)+5e3);e("body").on("mouseover",".spider-danger-zone",function(){zigzagDefense(e(this).data("spider"))}).on("click",".spider-invader",function(){zigzagDefense(e(this))})})
  • spider-invasion/trunk/readme.txt

    r715048 r719096  
    1313Spiders invade your oldest posts. The older the post, the more spiders you get!
    1414
    15 Spiders are showing up at random locations on your web page as your post get older.
     15Spiders are showing up at random locations on your web page as your post gets older.
    1616
    1717Demo page & Blog: http://www.mendoweb.be/blog/wordpress-plugin-spider-invasion/
     
    2727
    2828== Changelog ==
     29
     30= 0.6 =
     31* improved compatibility with other plugins
    2932
    3033= 0.5.1 =
  • spider-invasion/trunk/spider-invasion.php

    r715048 r719096  
    22/*
    33Plugin Name: Spider Invasion!
    4 Version: 0.5.1
     4Version: 0.6
    55Plugin URI: http://www.mendoweb.be/blog/wordpress-plugin-spider-invasion/
    66Description: Spiders invade your oldest posts. The older the post, the more spiders you get.
     
    2323*/
    2424
    25 function includeJQuery() {
    26     if ( !is_admin() ) {
    27         wp_enqueue_script( 'jquery' );
     25define( 'SPIDER_INVASION_FILE', __FILE__ );
     26define( 'SPIDER_INVASION_VERSION', '0.6' );
     27
     28class SpiderInvasion_Init {
     29    private static $instance;
     30   
     31    public static function getInstance() {
     32        if( !self::$instance ) {
     33            $class = __CLASS__;
     34            new $class;
     35        }
     36        return self::$instance;
     37    }
     38   
     39    private function __construct() {
     40        add_action( 'plugins_loaded', array( $this, 'init' ) );
     41    }
     42   
     43    public function init() {
     44        add_action( 'wp_head', array( $this, 'spider_invasion_js' ) );
     45    }
     46   
     47    function get_date_diff($d1, $d2) {
     48        /*
     49        // only from PHP 5.3 and later versions
     50        $datetime_d2 = date_create( $d2 );
     51        $datetime_d1 = date_create( $d1 );
     52        $interval = date_diff( $datetime_d2, $datetime_d1 );
     53        return array(
     54            'y' => (int) $interval->format( '%y' ),
     55            'm' => (int) $interval->format( '%m' ),
     56            'd' => (int) $interval->format( '%d' )
     57        );
     58        */
     59        // compatible with PHP 5.2 and lower
     60        $diff = abs( strtotime( $d2 ) - strtotime( $d1 ) );
     61        $years = floor($diff / (365*60*60*24));
     62        $months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
     63        $days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
     64        return array(
     65            'y' => $years,
     66            'm' => $months,
     67            'd' => $days
     68        );
     69    }
     70   
     71    function spider_invasion_js() {
     72        if( 'post' != get_post_type() ) return;
     73        $date_post = get_the_date( 'Ymd' );
     74        if( empty( $date_post ) ) return;
     75       
     76        $date_diff = $this->get_date_diff( $date_post, date( 'Ymd' ) );
     77        if( $date_diff['y']*12 + $date_diff['m'] < 8 ) return;
     78        $nb_spiders = $date_diff['y'];
     79        $compressJS = TRUE;
     80       
     81        wp_enqueue_script(
     82            'spider-invasion',
     83            plugins_url( 'js', SPIDER_INVASION_FILE ) . '/spider-invasion' . ($compressJS ? '.min' : '') . '.js',
     84            array( 'jquery' ),
     85            SPIDER_INVASION_VERSION
     86        );
     87        $params = array(
     88            'max_density' => 800*800,
     89            'min_density' => 1800*1800,
     90            'invade_content' => FALSE,
     91            'images_dir' => plugins_url( 'images', SPIDER_INVASION_FILE ),
     92            'nb_spiders' => $nb_spiders,
     93        );
     94        wp_localize_script( 'spider-invasion', 'spider_invasion_param', $params );
    2895    }
    2996}
    30 add_action( 'init', 'includeJQuery' );
    3197
    32 function get_date_diff($d1, $d2) {
    33     /*
    34     // only from PHP 5.3 and later versions
    35     $datetime_d2 = date_create( $d2 );
    36     $datetime_d1 = date_create( $d1 );
    37     $interval = date_diff( $datetime_d2, $datetime_d1 );
    38     return array(
    39         'y' => (int) $interval->format( '%y' ),
    40         'm' => (int) $interval->format( '%m' ),
    41         'd' => (int) $interval->format( '%d' )
    42     );
    43     */
    44     // compatible with PHP 5.2 and lower
    45     $diff = abs( strtotime( $d2 ) - strtotime( $d1 ) );
    46     $years = floor($diff / (365*60*60*24));
    47     $months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
    48     $days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
    49     return array(
    50         'y' => $years,
    51         'm' => $months,
    52         'd' => $days
    53     );
    54 }
    55 
    56 function spider_invasion_js() {
    57     if( 'post' != get_post_type() ) return;
    58     $date_post = get_the_date( 'Ymd' );
    59     if( empty( $date_post ) ) return;
    60    
    61     $date_diff = get_date_diff( $date_post, date( 'Ymd' ) );
    62     if( $date_diff['y']*12 + $date_diff['m'] < 8 ) return;
    63     $nb_spiders = $date_diff['y'];
    64     $compressJS = TRUE;
    65    
    66     wp_enqueue_script( 'spider-invasion', plugins_url( 'js' , __FILE__ ) . '/spider-invasion' . ($compressJS ? '.min' : '') . '.js' );
    67     $params = array(
    68         'max_density' => 800*800,
    69         'min_density' => 1800*1800,
    70         'invade_content' => FALSE,
    71         'images_dir' => plugins_url( 'images' , __FILE__ ),
    72         'nb_spiders' => $nb_spiders,
    73     );
    74     wp_localize_script( 'spider-invasion', 'param', $params );
    75 }
    76 add_action('wp_head', 'spider_invasion_js');
     98SpiderInvasion_Init::getInstance();
    7799
    78100?>
Note: See TracChangeset for help on using the changeset viewer.