| var counters = {};
/**
 * Format
 *
 * @param id
 * @param i
 * @param config
 * @param idPrefix
 * @returns {string}
 */
window.formatDynamicLink = function(id, i, config, idPrefix) {
    id = Airship.filter(String(id), Airship.FILTER_ID);
    i = Airship.filter(String(i), Airship.FILTER_ID);
    idPrefix = Airship.filter(idPrefix, Airship.FILTER_ID);
    var elem = $("#" + id);
    var dataName = elem.data('name');
    if (typeof config === 'undefined') {
        var config = {};
    }
    return "<li>" + "\n" +
        "<button type=\"button\" id=\"" + idPrefix + "_delete_link_" + i + "\" class=\"" + idPrefix + "_delete_link\" data-id=\"" + id + "\" title=\"Delete this Link\"> " +
        "<i class=\"fa fa-remove\"></i>" +
        "</button> " + "\n" +
        "<label>URL:</label> " +
        "<input type=\"text\" name=\"" + dataName + "[" + i + "][url]\" value=\"" +
        ('url' in config
            ? config['url']
            : '') +
        "\" /> " + "\n" +
        "<label>Label:</label> " +
        "<input type=\"text\" name=\"" + dataName + "[" + i + "][label]\" value=\"" + ('label' in config
                ? config['label']
                : ''
        ) + "\" /> " + "\n" +
        "<input id=\"" + idPrefix +"_translate_" + i + "\" type='checkbox' name='" + dataName + "[" + i + "][translate]' value='1'" +
        (config.translate
                ? " checked='checked'"
                : ""
        ) + " />" +
        "<label for=\"" + idPrefix +"_translate_" + i + "\">Translate?</label>" +
        "</li>" + "\n";
};
window.addDynamicNavLink = function() {
    var id = $(this).data('id');
    var idPrefix = $(this).data('idprefix');
    counters[id]++;
    var formatted = formatDynamicLink(id, counters[id], {}, idPrefix);
    console.log(formatted);
    $("#" + idPrefix + "_filler").append(formatted);
    $("#" + idPrefix + "_delete_link_" + counters[id]).click(window.delDynamicNavLink);
};
window.delDynamicNavLink = function() {
    $(this).parent().remove();
};
/**
 * @param id
 * @param config
 */
window.setupDynamicNavigationEditor = function (id, config) {
    var elem = $("#" + id);
    var dataName = Airship.filter(elem.data('name'), Airship.FILTER_ID);
    var idPrefix = Airship.filter(elem.data('idprefix'), Airship.FILTER_ID);
    var filled = elem.append("<ol id=\"" + idPrefix + "_filler\"></ol>")
        .append(
            "<button " +
                "type=\"button\" " +
                "data-idprefix=\"" + idPrefix + "\" " +
                "id=\"" + idPrefix + "_add_link\" " +
                "data-id=\"" + Airship.e(id) + "\" " +
                "class=\"pure-button pure-button-secondary\"" +
            ">Add Link</button>" + "\n"
        );
    var fillerHTML = "";
    var n = 0;
    for (var i in config) {
        fillerHTML += window.formatDynamicLink(id, i, config[i], idPrefix);
        n++;
    }
    counters[id] = n;
    $("#" + idPrefix + "_filler").html(fillerHTML);
    $("#" + idPrefix + "_add_link").click(window.addDynamicNavLink);
    $("." + idPrefix + "_delete_link").click(window.delDynamicNavLink);
};
window.hpkpAdd = function () {
    var addHash = $("#add-hpkp-hash");
    var num = parseInt(addHash.data('numhashes'), 10);
    $("#hpkp-hashes").append(
        "<li><input class=\"full-width\" type=\"text\" name=\"config[hpkp][hashes][" + num + "][hash]\"/></li>"
    );
    addHash.data('numhashes', (num + 1));
};
$(document).ready(function() {
    $("#cabin_accordion").accordion({
        heightStyle: "content"
    });
    $(".dynamic_navigation").each(function() {
        var config = $(this).html();
        $(this).html('');
        return window.setupDynamicNavigationEditor(
            $(this).attr('id'),
            $.parseJSON(config)
        );
    });
    $("#add-hpkp-hash").on('click', function() {
        return window.hpkpAdd();
    });
    $("#clear-cache-button").on('click', function() {
        var base_url = $("#clear_cache").data('baseurl');
        var val = $("#clear_cache").data('saved');
        $.get(
            base_url + 'ajax/clear_cache/' + val,
            function (result) {
                if (result.status !== "OK") {
                    alert(result.message);
                }
            }
        );
    });
});
 |