jQuery(function($) { "use strict"; var p = '#site-add-'; var FIELDS = { text: ['name', 'slug', 'body', 'lang', 'theme_id'], list: ['domains', 'styles', 'scripts'], } var DEFAULTS = { lang: DATA.default_lang, theme_id: DATA.default_theme_id, }; $(p + 'dialog').on('show.bs.modal', function() { $.each(FIELDS.text, function(_, id) { $(p + id).val(DEFAULTS[id] || ''); }); // clear list textareas $.each(FIELDS.list, function(_, id) { $(p + id).val(''); }); }); $(p + 'dialog').on('shown.bs.modal', function() { // show content tab $(p + 'tab-content').click(); // focus name field $(p + 'name').focus(); }); $(p + 'dialog input[type="text"]').keydown(function(ev) { if (ev.which == 13) { setTimeout(function() { $(p + 'confirm').click(); }, 10); // stop event return false; } }); $(p + 'name').keydown(function(ev) { var me = $(this); setTimeout(function() { $(p + 'slug').val(slugify(me.val())); }, 10); }); $(p + 'confirm').click(function() { var me = $(this); if (me.hasClass('disabled')) return false; // toggle loading me.toggleClass('disabled').find('.loading').toggleClass('hidden'); send('site/add', FIELDS.text.reduce(function(r, id) { r[id] = $(p + id).val(); return r; }, FIELDS.list.reduce(function(r, id) { r[id] = listify(p + id); return r; }, { // hard-code this for now is_full_feed: 't', }))).always(function() { // toggle loading me.toggleClass('disabled').find('.loading').toggleClass('hidden'); }).fail(function(r) { gripe(r, 'add site'); }).done(function(r) { $('#sites-reload').click(); $(p + 'dialog').modal('hide'); }); // stop event return false; }); });