Plugin Directory

Changeset 1705902


Ignore:
Timestamp:
07/31/2017 07:53:07 PM (9 years ago)
Author:
lonfirebrand
Message:

Updated for 4.8

Location:
simple-content-experiments/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • simple-content-experiments/trunk/readme.txt

    r1533949 r1705902  
    44Tags:  testing, google, content experiments, a/b testing
    55Requires at least: 3.2.1
    6 Tested up to: 4.5.3
    7 Stable tag: 3.0.0
     6Tested up to: 4.8
     7Stable tag: 3.0.1
    88License: GPLv2
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    152152
    153153== Changelog ==
     154= 3.0.1
     155Update for WordPress 4.8
     156
    154157= 3.0.0
    155158+ Restructure code
  • simple-content-experiments/trunk/simple-content-experiments.js

    r1533949 r1705902  
    66    event_flavor: "unknown", // no default
    77    ga_name: '', // function name of Universal Analytics functions
     8    analytics_flavor: "unknown",
    89    cx_loaded: "pending", // has the content experiments code loaded?
    910    event: {
     
    1718        if (simple_content_experiements_debug){ console.log(str);} // uses global simple_content_experiements_debug
    1819    },
     20   
     21    /**
     22     * Returns the currently running "flavor" of Google Analytics
     23     * @returns {string} unknown | gtm | classic | universal
     24     */
    1925    get_analytics_event_flavor: function(){
    2026        var retval = "unknown"
     
    3440        if ( "unknown" == retval){
    3541            if ( "string" == typeof window["GoogleAnalyticsObject"]){
    36                 content_experiment.ga_name = window["GoogleAnalyticsObject"];
     42                this.ga_name = window["GoogleAnalyticsObject"];
    3743                retval = "universal";
    3844            }
    3945        }
     46        this.analytics_flavor = retval;
    4047        return retval;
    4148    },
    42     display_experiment: function(){
    43         if ("loaded" == content_experiment.cx_loaded.substr( 0, 6 )){
    44             //Execute the chosen view:
    45             var selected_variation = content_experiment.selected;
    46             content_experiment.event.label = content_experiment.id;
    47             content_experiment.event.action = "select";
    48             content_experiment.event.value = selected_variation;
    49             content_experiment.dbgmsg("chosenExperiment = " +  content_experiment.id + "\nchosenVariation = " + selected_variation);
    50             content_experiment.dbgmsg("number of variations: " + content_experiment.variant_count);
    51             for ( i = 1; i <= content_experiment.variant_count; i++) {
     49    /**
     50     * Updates the DOM to display the selected variant and
     51     * remove the other variations.
     52     * @param {number} selected_variation - which variation to display
     53     */
     54    display_experiment: function(selected_variation){
     55            this.dbgmsg("display_experiment()");
     56            this.event.label = this.id;
     57            this.event.action = "select";
     58            this.event.value = selected_variation;
     59            this.dbgmsg("chosenExperiment = " +  this.id );
     60            this.dbgmsg("number of variations: " + this.variant_count);
     61            this.dbgmsg("chosenVariation = " + selected_variation);
     62            for ( i = 1; i <= this.variant_count; i++) {
    5263                if ( (i - 1) == selected_variation) { // 0 based
    53                     // content_experiment.dbgmsg("showing variant " + i + content_experiment.id + "__" + i);
    54                     jQuery("#" + content_experiment.id + "__" + i).show();
     64                     this.dbgmsg("showing variant " + i + ": " + this.id + "__" + i);
     65                    jQuery("#" + this.id + "__" + i).show();
    5566                } else {
    56                      // content_experiment.dbgmsg("hiding variant " + i + content_experiment.id + "__" + i);
    57                     jQuery("#" + content_experiment.id + "__" + i).remove();
    58                 }
    59             }
    60 
    61         } else {
    62             // stuff didn\'t load:
    63             // fail case is already in the record. Report "not loaded yet" case as an event:
    64             if ( false !== content_experiment.cx_loaded ){
    65                 content_experiment.label = content_experiment.cx_loaded ;
    66             }
    67            
    68         }
    69    
     67                      this.dbgmsg("hiding variant " + i + ": " + this.id + "__" + i);
     68                    jQuery("#" + this.id + "__" + i).remove();
     69                }
     70            }
     71
    7072   
    7173    },
    7274    analytics_event: function(){
    73         content_experiment.dbgmsg("analytics_event: analytics type: " + content_experiment.event_flavor);
     75        this.dbgmsg("analytics_event()");
     76        this.dbgmsg("analytics type: " + this.event_flavor);
    7477   
    7578    // sometimes the scripts load in the wrong order and Google Analytics won\'t get an event from chooseVariation()
    7679            // Send any event to analytics to solve this:
    7780           
    78             switch (content_experiment.event_flavor){
     81            switch (this.event_flavor){
    7982                case "classic":
    8083                    _trackEvent( // category, action, opt_label, opt_value, opt_noninteraction
    81                         content_experiment.event.category,
    82                         content_experiment.event.action,
    83                         content_experiment.event.label,
    84                         content_experiment.event.value,
     84                        this.event.category,
     85                        this.event.action,
     86                        this.event.label,
     87                        this.event.value,
    8588                        true
    8689                    );
    87                     content_experiment.dbgmsg("_trackEvent  posted ");
     90                    this.dbgmsg("_trackEvent  posted ");
    8891                    break;
    8992               
     
    9194                    dataLayer.push({
    9295                          "event" : "SimpleXGAEvent",
    93                           "eventCategory" : content_experiment.event.category,
    94                           "eventAction" : content_experiment.event.action,
    95                           "eventLabel" : content_experiment.event.label,
    96                           "eventValue" : content_experiment.event.value,
     96                          "eventCategory" : this.event.category,
     97                          "eventAction" : this.event.action,
     98                          "eventLabel" : this.event.label,
     99                          "eventValue" : this.event.value,
    97100                          "nonInteraction": true
    98101                    });
    99                     content_experiment.dbgmsg("dataLayer.push  posted ");
     102                    this.dbgmsg("dataLayer.push  posted ");
    100103                    break;
    101104                case "universal":
    102                     window[content_experiment.ga_name]("send", "event",
    103                         content_experiment.event.category,
    104                         content_experiment.event.action,
    105                         content_experiment.event.label,
    106                         content_experiment.event.value,
     105                    window[this.ga_name]("send", "event",
     106                        this.event.category,
     107                        this.event.action,
     108                        this.event.label,
     109                        this.event.value,
    107110                        { nonInteraction: true }
    108111                    );
    109                     content_experiment.dbgmsg( content_experiment.ga_name + " event posted ");
     112                    this.dbgmsg( this.ga_name + " event posted ");
    110113                    break;
    111114                default:
    112                     content_experiment.dbgmsg("event_flavor: " + content_experiment.event_flavor);
     115                    this.dbgmsg("event_flavor: " + this.event_flavor);
    113116            }
    114117
    115118    },
    116119    run_experiment: function(){
    117         content_experiment.dbgmsg("run_experiment");
     120        this.dbgmsg("run_experiment");
    118121        // create list of experiments (as marked up in DOM) and how many variations:
    119122        jQuery( ".contentexperimentvariant" ).each(
     
    126129            }
    127130        );
    128         // content_experiment.ex_list is object of experiment ID with counts
    129         var keys = Object.keys(content_experiment.ex_list);
     131        // this.ex_list is object of experiment ID with counts
     132        var keys = Object.keys(this.ex_list);
    130133        if (keys.length > 0){ // no experiments
    131             content_experiment.dbgmsg("detected " + keys.length + " experiment(s).");
     134            this.dbgmsg("detected " + keys.length + " experiment(s).");
    132135            // pick an experiment to run on this page:
    133136            var i =  Math.floor((Math.random() * keys.length)); // 0 based
    134             content_experiment.id = keys[i];
    135             content_experiment.variant_count = content_experiment.ex_list[content_experiment.id];
     137            this.id = keys[i];
     138            this.variant_count = this.ex_list[this.id];
    136139            jQuery.getScript(
    137140                "//www.google-analytics.com/cx/api.js?experiment=" + content_experiment.id,
     
    147150                        jQuery("#" + content_experiment.id + "__" + i).find("a").addClass("xvariantclick");
    148151                    }
    149                     content_experiment.display_experiment();
     152                   
     153                   
     154                   
     155                    if ("loaded" == content_experiment.cx_loaded.substr( 0, 6 )){
     156                        // Sanity check some values:
     157                        if ("unknown" == content_experiment.analytics_flavor){
     158                            content_experiment.dbgmsg("No analytics");
     159                            content_experiment.selected = 0;
     160                        }
     161                        if (content_experiment.selected > content_experiment.variant_count){
     162                            content_experiment.selected = 0;
     163                            content_experiment.dbgmsg("selection out of range.");
     164                        }
     165                    } else { //loading error
     166                        // fail case is already in the record. Report "not loaded yet" case as an event:
     167                        if ( false !== content_experiment.cx_loaded ){
     168                            content_experiment.dbgmsg("experiments didn't load.");
     169                            content_experiment.label = content_experiment.cx_loaded;
     170                            content_experiment.selected = 0;
     171                        }
     172                    }
     173                   
     174                    //display the chosen view:
     175                    content_experiment.display_experiment(content_experiment.selected);
     176
    150177                    content_experiment.analytics_event(); // move this until after we're sure it's loaded?
    151178                }
     
    157184            })
    158185            .fail(function( jqxhr, settings, exception ) {
     186           
     187       
    159188                console.log( "getScript: Triggered ajaxError handler." );
    160189                content_experiment.action = "Fail";
     
    166195            content_experiment.dbgmsg("no experiments detected.");
    167196        }
    168 }
    169 
     197    }
    170198};
    171199
  • simple-content-experiments/trunk/simple-content-experiments.php

    r1533949 r1705902  
    22/**
    33 * @package content-experiments
    4  * @version 3.0.0
     4 * @version 3.0.1
    55 */
    66/*
     
    88Description: Shortcodes to create Google Content Experiments elements in a page
    99Author: Lon Koenig (Firebrand LLC)
    10 Version: 3.0.0
     10Version: 3.0.1
    1111Author URI: //firebrand.net/
    1212
     
    4444    private static $experiment_id = null;
    4545    private static $errmsg = '';
    46     public $debug_enable = 'false';
     46    public $debug_enable = 'true';
    4747
    4848    public function __construct() {
Note: See TracChangeset for help on using the changeset viewer.