diff --git a/app/static/custom/js/custom.js b/app/static/custom/js/custom.js index 71f77b7..a0b319d 100644 --- a/app/static/custom/js/custom.js +++ b/app/static/custom/js/custom.js @@ -1,4 +1,4 @@ -function applyChanges(data, url, showResult) { +function applyChanges(data, url, showResult, refreshPage) { var success = false; $.ajax({ type : "POST", @@ -14,6 +14,9 @@ function applyChanges(data, url, showResult) { modal.find('.modal-body p').text("Applied changes successfully"); modal.modal('show'); } + if (refreshPage) { + location.reload(true); + } }, error : function(jqXHR, status) { @@ -91,7 +94,7 @@ function editRow(oTable, nRow) { jqTds[1].innerHTML = ''; jqTds[2].innerHTML = ''; jqTds[3].innerHTML = ''; - jqTds[4].innerHTML = ''; + jqTds[4].innerHTML = ''; jqTds[5].innerHTML = ''; jqTds[6].innerHTML = ''; diff --git a/app/templates/admin_settings.html b/app/templates/admin_settings.html index 9d10b18..b2dffd3 100644 --- a/app/templates/admin_settings.html +++ b/app/templates/admin_settings.html @@ -73,15 +73,13 @@ $(".setting-toggle-button").click(function() { var setting = $(this).prop('id'); - applyChanges('','/admin/setting/' + setting + '/toggle') - location.reload(); + applyChanges('','/admin/setting/' + setting + '/toggle', false, true) }); // TODO: allow editing of value field $(".setting-edit-button").click(function() { var setting = $(this).prop('id'); - applyChanges('','/admin/setting/' + setting + '/edit') - location.reload(); + applyChanges('','/admin/setting/' + setting + '/edit', false, true) }); {% endblock %} diff --git a/app/templates/domain.html b/app/templates/domain.html index d9f7e8a..27c5472 100644 --- a/app/templates/domain.html +++ b/app/templates/domain.html @@ -246,6 +246,75 @@ var domain = $(this).prop('id'); applyChanges({'domain': domain}, '/domain/' + domain + '/update'); }); + + {% if record_helper_setting %} + //handle wacky record types + $(document).on("focus", "#current_edit_record_data", function (e) { + var record_type = $(this).parents("tr").find('#record_type').val(); + var record_data = $(this); + if (record_type == "MX") { + var modal = $("#modal_custom_record"); + if (record_data.val() == "") { + var form = " \ + \ + \ + \ + "; + } else { + var parts = record_data.val().split(" "); + var form = " \ + \ + \ + \ + "; + } + modal.find('.modal-body p').html(form); + modal.find('#button_save').click(function() { + mx_server = modal.find('#mx_server').val(); + mx_priority = modal.find('#mx_priority').val(); + data = mx_priority + " " + mx_server; + record_data.val(data); + modal.modal('hide'); + }) + modal.modal('show'); + } else if (record_type == "SRV") { + var modal = $("#modal_custom_record"); + if (record_data.val() == "") { + var form = " \ + \ + \ + \ + \ + \ + \ + \ + "; + } else { + var parts = record_data.val().split(" "); + var form = " \ + \ + \ + \ + \ + \ + \ + \ + "; + } + modal.find('.modal-body p').html(form); + modal.find('#button_save').click(function() { + srv_priority = modal.find('#srv_priority').val(); + srv_weight = modal.find('#srv_weight').val(); + srv_port = modal.find('#srv_port').val(); + srv_target = modal.find('#srv_target').val(); + data = srv_priority + " " + srv_weight + " " + srv_port + " " + srv_target; + record_data.val(data); + modal.modal('hide'); + }) + modal.modal('show'); + } + }); + {% endif %} {% endblock %} {% block modals %} @@ -295,4 +364,25 @@ + {% endblock %} diff --git a/app/views.py b/app/views.py index f269d40..577fc76 100644 --- a/app/views.py +++ b/app/views.py @@ -22,6 +22,11 @@ def inject_fullscreen_layout_setting(): fullscreen_layout_setting = Setting.query.filter(Setting.name == 'fullscreen_layout').first() return dict(fullscreen_layout_setting=strtobool(fullscreen_layout_setting.value)) +@app.context_processor +def inject_record_helper_setting(): + record_helper_setting = Setting.query.filter(Setting.name == 'record_helper').first() + return dict(record_helper_setting=strtobool(record_helper_setting.value)) + # START USER AUTHENTICATION HANDLER @app.before_request def before_request(): @@ -460,7 +465,7 @@ def admin_settings_toggle(setting): if (result): return make_response(jsonify( { 'status': 'ok', 'msg': 'Toggled setting successfully.' } ), 200) else: - return make_response(jsonify( { 'status': 'error', 'msg': 'Can toggle setting.' } ), 500) + return make_response(jsonify( { 'status': 'error', 'msg': 'Unable to toggle setting.' } ), 500) @app.route('/user/profile', methods=['GET', 'POST']) @login_required diff --git a/create_db.py b/create_db.py index 7cbce74..c634fe2 100755 --- a/create_db.py +++ b/create_db.py @@ -11,10 +11,12 @@ admin_role = Role('Administrator', 'Administrator') user_role = Role('User', 'User') maintenance_setting = Setting('maintenance', 'False') fullscreen_layout_setting = Setting('fullscreen_layout', 'True') +record_helper_setting = Setting('record_helper_layout', 'True') db.session.add(admin_role) db.session.add(user_role) db.session.add(maintenance_setting) db.session.add(fullscreen_layout_setting) +db.session.add(record_helper_setting) db.session.commit() if not os.path.exists(SQLALCHEMY_MIGRATE_REPO): api.create(SQLALCHEMY_MIGRATE_REPO, 'database repository')