google_custom_url_builder_jquery_02

a widget/add-on/extension to build custom campaign urls to track in google analytics

by Nic Fontaine

HTML

<input type="text" class="field-editable" id="field-url" value="Site URL *" required><div id="button-dl"></div><br />
<input type="text" class="field-editable" id="field-source" value="Campaign Source *" required><br />
<input type="text" class="field-editable" id="field-medium" value="Campaign Medium *" required><br />
<div class="bar"></div><div id="button-toggle"></div>
<div id="container-toggle">
    <input type="text" class="field-editable" id="field-term" value="Campaign Term"><br/>
    <input type="text" class="field-editable" id="field-content" value="Campaign Content"><br/>
    <div class="bar"></div>
</div>
<div id="row-bot">
    <input type="text" class="field-editable" id="field-name" value="Campaign Name *" required><br />
    
    <input type="submit" id="button-submit" value="Submit"><input type="button" id="button-copy" value="Copy"><br />
    <input type="text" id="field-custom-url" value="Custom URL" size="94" onclick="this.select()"><br />
    <p id="demo"></p>
</div>

CSS

body {
    font-family: "Open Sans", Helvetica, san-serif;
}
#button-dl {
    width: 0;
    height: 0;
    border-top: 8px solid #D6A7C2;
    border-right: 5px solid transparent;
    border-left: 5px solid transparent;
    display: inline-block;
    margin-left: 10px;
    cursor: pointer;
}
.bar {
    width: 145px;
    height: 1px;
    background: #D6A7C2;
    margin: 5px 0;
    display: inline-block;
}
#button-toggle {
    width: 0;
    height: 0;
    border-right: 8px solid #D6A7C2;
    border-top: 5px solid transparent;
    border-bottom: 5px solid transparent;
    margin-left: 10px;
    margin-top: 2px;
    margin-bottom: 2px;
    display: inline-block;
    clear: right;
    cursor: pointer
}
input {
    margin: 5px 0;
    color: #bbb;
    border: 1px solid #ccc;
    border-radius: 2px;
}
#field-custom-url {
    border: 1px solid #D6A7C2
}
#row-bot {
    display: block;
}
#button-submit {
    padding: 2px 57px;
    background-color: #EB7ABB;
    color: #fff;
    cursor: pointer;
    display: inline-block;
    margin: 19px 0 5px 0;
    border-radius: 2px;
    border: 0;
    font-size: 14px;
}
#button-copy {
    padding: 2px 10px;
    background-color: #C58AE3;
    color: #fff;
    cursor: pointer;
    display: inline-block;
    margin: 19px 0 5px 0;
    border-radius: 1px;
    margin-left: 10px;
    border: 0;
    font-size: 14px;
    display: none;
}

JavaScript

//init var as url of current tab
var tabUrl = window.location.href;

$(document).ready(function() {
    
    var customUrl = "";
    
    //make field blank on select
    $('.field-editable').click(function() {
        $(this).val("");     
    });
    
    //hide toggle container on doc ready
    $('#container-toggle').hide();
    
    //button grabs current tab url, puts in site url field
    $('#button-dl').click(function() {
        document.getElementById("field-url").value = tabUrl;   
    });
    
    //toggle container
    $('#button-toggle').click(function() {
        $('#container-toggle').slideToggle(300);
    });
    
    //call createUrl function on Enter press
    $('#button-submit').keyup(function(e) {
        if(e.keyCode == 13) {
            createUrl();
        }
    });
    
    //call createUrl function if submit button is pressed
    $('#button-submit').click(function() {
        createUrl();
    });
    
    //submit button creates url
    var createUrl = function() {
        var inputUrl = $('input[id=field-url]').val();
        var valSource = $('input[id=field-source]').val();
        var valMedium = $('input[id=field-medium]').val();
        var valTerm = $('input[id=field-term]').val();
        var valContent = $('input[id=field-content]').val();
        var valName = $('input[id=field-name]').val();
        
        //if field isn't changed, give it a blank string value
        if (inputUrl === "Site URL *") { inputUrl = ""; }
        if (valTerm === "Campaign Term") { valTerm = ""; }
        if (valContent === "Campaign Content") { valContent = ""; }
        if (valName === "Campaign Name *") { valName = ""; }
        
        //only creates info if field isn't blank
        if (valTerm.length > 0) {
            var inputTerm = "&utm_term=" + valTerm;
        } else {
            var inputTerm = "";
        }
        
        //only creates info if field isn't blank
        if (valContent.length > 0) {
            var inputContent =...