var AIRTIME = (function(AIRTIME) { var mod; var $templateDiv; var $templateList; var $fileMDList; if (AIRTIME.itemTemplate === undefined) { AIRTIME.itemTemplate = {}; } mod = AIRTIME.itemTemplate; //config: name, type, filemd, required function createTemplateLi(config) { var templateRequired = "
  • '" + ">" + "<%= label %>" + "<%= type %>" + "
  • "; var templateOptional = "
  • '" + ">" + "<%= label %>" + "<%= type %>" + "" + "
  • "; var template = (config.required) === true ? templateRequired : templateOptional; template = _.template(template); var $li = $(template(config)); return $li; } //taken from //http://stackoverflow.com/questions/1349404/generate-a-string-of-5-random-characters-in-javascript function randomString(len, charSet) { //can only use small letters to avoid DB query problems. charSet = charSet || 'abcdefghijklmnopqrstuvwxyz'; var randomString = ''; for (var i = 0; i < len; i++) { var randomPoz = Math.floor(Math.random() * charSet.length); randomString += charSet.substring(randomPoz,randomPoz+1); } return randomString; } function addField(config) { $templateList.append(createTemplateLi(config)); } function getFieldData($el) { return { name: $el.data("name"), type: $el.data("type"), label: $el.data("label"), isFileMd: $el.data("filemd") }; } mod.onReady = function() { $templateDiv = $("#configure_item_template"); $templateList = $(".template_item_list"); $fileMDList = $(".template_file_md"); $fileMDList.on("click", "i.icon-plus", function(){ var $li = $(this).parents("li"); var config = { name: $li.data("name"), type: $li.data("type"), label: $li.data("label"), filemd: true, required: false }; addField(config); $li.remove(); }); $templateList.sortable(); $templateDiv.on("click", ".template_item_remove", function() { $(this).parents("li").remove(); }); $templateDiv.on("click", ".template_item_add button", function() { var $div = $(this).parents("div.template_item_add"), $input = $div.find("input"), label = $input.val(), name; $input.val(""); //create a string name that will work for all languages. name = randomString(10); var config = { name: name, label: label, type: $div.find("select").val(), filemd: false, required: false }; addField(config); }); function updateTemplate(template_id, isDefault) { var url = baseUrl+"Playouthistorytemplate/update-template/format/json"; var data = {}; var $lis, $li; var i, len; var templateName; templateName = $("#template_name").val(); $lis = $templateList.children(); for (i = 0, len = $lis.length; i < len; i++) { $li = $($lis[i]); data[i] = getFieldData($li); } $.post(url, {'id': template_id, 'name': templateName, 'fields': data, 'setDefault': isDefault}, function(json) { var x; }); } $templateDiv.on("click", "#template_item_save", function(){ var template_id = $(this).data("template"); updateTemplate(template_id, false); }); $templateDiv.on("click", "#template_set_default", function() { var $btn = $(this), template_id = $btn.data("template"), url = baseUrl+"Playouthistorytemplate/set-template-default/format/json"; $btn.remove(); $.post(url, {id: template_id}); }); }; return AIRTIME; }(AIRTIME || {})); $(document).ready(AIRTIME.itemTemplate.onReady);