var rc = { init: function() { rc.ajax.init(); rc.dialog.init(); rc.page.init(); }, ajax: { init: function() { }, get: function(url) { $.ajax({ url: url, type: "GET", dataType: "json", success: rc.ajax.success, error: rc.ajax.failure }); }, post: function(url, data) { $.ajax({ url: url, type: "POST", dataType: "json", data: data, success: rc.ajax.success, error: rc.ajax.failure }); }, success: function(d, s, x) { rc.page.update(d); rc.dialog.prepare(d); rc.trigger_all(d); }, failure: function(x, s, e) { console.log("Ajax Failure: " + s, e); console.log(x.responseText); } }, dialog: { init: function() { $("#dialog-header-close").click(rc.dialog.close); }, prepare: function(d) { if (d.dialog && d.dialog.show) { if (d.dialog.buttons) { switch (d.dialog.buttons.type) { case 'ok': $("#dialog-footer-ok-ok").click( function() { rc.trigger(d.dialog.buttons.actions.ok, d.dialog.buttons.params); } ); $("#dialog-footer-ok").show(); break; case 'okcancel': $("#dialog-footer-okcancel-ok").click(function() { rc.trigger(d.dialog.buttons.actions.ok, d.dialog.buttons.params); }); $("#dialog-footer-okcancel-cancel").click(function() { rc.trigger(d.dialog.buttons.actions.cancel, d.dialog.buttons.params); }); $("#dialog-footer-okcancel").show(); break; case 'yesno': $("#dialog-footer-yesno-yes").click( function() { rc.trigger(d.dialog.buttons.actions.yes, d.dialog.buttons.params); } ); $("#dialog-footer-yesno-no").click( function() { rc.trigger(d.dialog.buttons.actions.no, d.dialog.buttons.params); } ); $("#dialog-footer-yesno").show(); break; } } if (d.dialog.title) { $('#dialog-header-title').html(d.dialog.title); } if (d.dialog.content) { $('#dialog-body').html(d.dialog.content); } $("#dialog").modal({ show: true, backdrop: true, keyboard: true, }); } }, close: function() { // Hide the dialog $("#dialog").modal({ show: false, }); // Remove the dialog content $("#dialog-body").html(); // Hide all buttons $(".dialog-footer-buttonset").hide(); // Strip all event handlers $(".dialog-footer-buttonset input[type='button']").unbind('click'); }, error: function(title, content, messages) { var formatted_content = $('
').text('content')); if (messages) { var formatted_messages = $('
').text('These messages were reported:').append(formatted_messages)); } rc.dialog.prepare({ dialog: { show: true, title: title, content: formatted_content, buttons: { type: 'ok', actions: { ok: 'close-dialog' } } } }); } }, page: { init: function() { rc.page.updateEvents($('#page_content')); }, update: function(d) { for ( var f in d.page_replacements) { $("#" + f).html(d.page_replacements[f].content); rc.page.updateEvents('#' + f); } }, updateEvents: function(d) { $(d).find('.progressBar').each( function() { $(this).progressBar({ steps: 100, width: 120, height: 12, boxImage: base_uri + 'images/jquery.progressbar/progressbar.gif', barImage: { 0: base_uri + 'images/jquery.progressbar/progressbg_red.gif', 25: base_uri + 'images/jquery.progressbar/progressbg_orange.gif', 50: base_uri + 'images/jquery.progressbar/progressbg_yellow.gif', 75: base_uri + 'images/jquery.progressbar/progressbg_green.gif', } }); } ); $(d).find('.hover-highlight').hover( function() { $(this).addClass('highlight'); }, function() { $(this).removeClass('highlight'); } ); $(d).find('a[rel=popover]').popover({ offset: 10, html: true, }); $(d).find('input[type=checkbox].select_all').click(function() { $('input[type=checkbox].'+$(this).attr('id')).attr('checked', $(this).attr('checked') == 'checked'); }); } }, sources: { remove: function(plugin, source) { rc.ajax.get(base_url + "ajax/delete-source/plugin/" + plugin + "/id/" + source); }, remove_confirmed: function(plugin, source) { rc.ajax.get(base_url + "ajax/delete-source/plugin/" + plugin + "/id/" + source + "/confirm/"); } }, actions: { 'close-dialog': function(params) { rc.dialog.close(); }, 'delete-source-confirm': function(params) { rc.sources.remove_confirmed(params['plugin'], params['id']); }, 'add-setting': function(params) { rc.ajax.post(base_url + 'ajax/admin/add-setting/name/' + $('#'+params.name).val() + '/type/' + $('#'+params.type).val() + '/'); }, 'add_setting_row': function(params) { $("#settings tbody").append(params.content); }, 'rename_setting': function(params) { rc.ajax.post(base_url + 'ajax/admin/rename-setting/name/' + params.name + '/new-name/' + $('#'+params.new_name_field).val() + '/confirm/'); }, 'rename_setting_confirm': function(params) { $('#setting_'+params.old_id+'_row').replaceWith($(params.content)); }, 'remove_setting': function(params) { rc.ajax.post(base_url + 'ajax/admin/remove-setting/name/' + params.name + '/'); rc.trigger('remove_setting_row', params); }, 'remove_setting_row': function(params) { $('#setting_' + params.id + '_row').remove(); } }, trigger: function(action, params) { // Handle a list of actions by repeated calling self for each argument if (action instanceof Array) { for(i in action) { rc.trigger(action[i], params); } return; } // Check if action is supported, and execute it if (rc.actions[action]) { rc.actions[action](params); } else { console.log("Action not supported: " +action); } }, trigger_all: function(params) { if (params.actions) { for (var action in params.actions) { rc.trigger(action, params.actions[action]); } } }, settings: { init: function() { $("#settings_save").click(function() { rc.settings.save(); }); $("#settings_new").click(function() { rc.settings.new_setting(); }); }, new_setting: function() { rc.ajax.get(base_url + "ajax/admin/new-setting/"); }, rename_setting: function(id, name) { rc.ajax.get(base_url + "ajax/admin/rename-setting/name/" + name + "/"); }, remove_setting: function(id, name) { rc.dialog.prepare({ dialog: { show: true, title: 'Remove this setting?', content: "Do you really want to remove setting '" + name + "'", buttons: { type: 'okcancel', actions: { ok: [ 'remove_setting', 'close-dialog' ], cancel: 'close-dialog' }, params: { id: id, name: name } } } }); }, add_stringlist_field: function(id) { var container = $('#container_'+id); var next = $('#settings_'+id+'_next'); var next_value = next.val(); var line = $('