Skip to content

Commit

Permalink
Merge pull request #3788 from 3scale/fix_essential_assets_again
Browse files Browse the repository at this point in the history
🐛 Restore `application.js` for old dev portals
  • Loading branch information
josemigallas committed May 15, 2024
2 parents 39519ea + 8ee8d11 commit cf3f88a
Showing 1 changed file with 251 additions and 0 deletions.
251 changes: 251 additions & 0 deletions app/assets/javascripts/application.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,251 @@
/**
* TODO: delete this!!!
*
* All this was cleaned up and moved to Typescript in https://github.com/3scale/porta/pull/3754 but
* it was good for the admin portal only. Unfortunately, some old dev portals will break because it
* is still used by {% essential_assets %} and we must maintain this file here for backwards compatibility
*/
(function($) {
$(document).on('click', '.show-trace-lr', function(e){
e.preventDefault();
// Show the next tr
$(this).parents('tr').next().toggle();
$(this).parents('tr').toggleClass('showing');
});

// rest
$(document).ready(function() {

// disable links with 'data-disabled' attribute and display alert instead
// delegation on body fires before rails.js
$('body').delegate('a[data-disabled]', 'click', function(event) {
event.preventDefault();
event.stopImmediatePropagation();
alert($(this).data('disabled'));
return false;
});

(function(){
// return if not in correct pages
if($("#fields_definition_name").size() == 0 ) return;
// define functions
function disableInterface(){
function enable_checkboxes(){
checkboxes_disabled(false);
}

function disable_checkboxes(){
checkboxes_disabled(true);
}
function checkboxes_disabled(action){
$("#fields_definition_hidden").attr('disabled',action);
$("#fields_definition_read_only").attr('disabled',action);
$("#fields_definition_required").attr('disabled',action);
}
function disable_name_field(){
$("#fields_definition_name")[0].value = $("#fields_definition_fieldname")[0].value;
$("#fields_definition_name").attr('readonly', true);
}
function clear_checkboxes(){
$("#fields_definition_hidden")[0].checked=false;
$("#fields_definition_read_only")[0].checked=false;
$("#fields_definition_required")[0].checked=false;
}

function clear_choices(){
$("#fields_definition_choices_for_views")[0].value = '';
}
function read_only_choices(action){
$("#fields_definition_choices_for_views").attr('readonly', action);
}
function enable_choices(){
read_only_choices(false);
}
function disable_choices(){
read_only_choices(true);
}

// new view
if($("#fields_definition_fieldname").size() != 0){
$("#fields_definition_fieldname").change(function() {
if($("#fields_definition_fieldname")[0].value == "[new field]"){
$("#fields_definition_name").attr('readonly', false);
$("#fields_definition_name")[0].value='';
clear_checkboxes();
enable_checkboxes();
clear_choices();
enable_choices();
}
else if($.inArray($("#fields_definition_fieldname")[0].value,
$("#required_fields")[0].value.split(",")) != -1){
//non_modifiable fields
disable_name_field();
clear_checkboxes();
disable_checkboxes();
clear_choices();
enable_choices();
}
else {
disable_name_field();
clear_checkboxes();
enable_checkboxes();
clear_choices();
enable_choices();
}
});
}

if (($("#fields_definition_required").size() != 0 ) &&
($("#fields_definition_required")[0].checked)){
$("#fields_definition_hidden")[0].checked=false;
$("#fields_definition_read_only")[0].checked=false;
$("#fields_definition_hidden").attr('disabled',true);
$("#fields_definition_read_only").attr('disabled',true);
}

//edit view
if($("#fields-definitions-edit-view").size() != 0 ){
$("#fields_definition_name").attr('readonly', true);
$("#fields_definition_name").attr('disabled', true);
} };

disableInterface();
// disableCheckboxesOnload();
})();

(function(){
// return if not in correct pages
if($("#fields_definition_required").lenght==0) return;
// define functions
function synchronize_checkboxes(){
$("#fields_definition_required").change(function(){
if ($("#fields_definition_required")[0].checked){
$("#fields_definition_hidden")[0].checked=false;
$("#fields_definition_read_only")[0].checked=false;
$("#fields_definition_hidden").attr('disabled',true);
$("#fields_definition_read_only").attr('disabled',true);
}
else{
$("#fields_definition_hidden").attr('disabled',false);
$("#fields_definition_read_only").attr('disabled',false);
}});
};
// call function
synchronize_checkboxes();
})();

(function(){
if ($('#plan-select').length == 0) return;
var currentPlanID = $('#plans-selector').attr('data-plan-id');
var $plans = $('div.plan-preview');

$('#plan-select')[0].options[0].value
var options = $('#plan-select')[0].options;

for (var i = options.length - 1; i >= 0; i--){
if(options[i].value == currentPlanID) {
options.selectedIndex = (i - length);
}
};

function attachEvents(){
$('#plan-select').change(function(){

var planID = this.options[this.selectedIndex].value;
$plans.hide();
$('div.plan-preview[data-plan-id="'+planID+'"]').show();

// HACK HACK HACK - redo the plan selector!
if ($('#plans-selector').attr('data-plan-id') == planID) {
$('#plan-change-submit').hide();
} else {
$('#plan-change-submit').show();
}

return false;
});
}

attachEvents();
})();

// DEPRECATED: since the introduction of PF4 and React, colorbox is being removed.
// Response of this form will be presented inside a colorbox.
$(document).on('submit', 'form.colorbox[data-remote]', function (e) {
$(this).on('ajax:complete', function(event, xhr, status){
var form = $(this).closest('form');
var width = form.data('width');
$.colorbox({
open: true,
html: xhr.responseText,
width: width,
maxWidth: '85%',
maxHeight: '90%'
});
})
});

$(document).on("click", "a.fancybox, a.colorbox", function (e) {
$(this).colorbox({ open:true });
e.preventDefault();
});

$(document).on('click', '.fancybox-close', function () {
$.colorbox.close();
return false;
});

// Show panel on click.
$("a.show-panel").click(function() {
findPanel($(this)).fadeIn("fast");
return false;
})

// Hide panel on click.
$("a.hide-panel").click(function() {
findPanel($(this)).fadeOut("fast");
return false;
})

// Toggle panel on click.
$("a.toggle-panel").click(function() {
var panel = findPanel($(this));

if (panel.is(":visible")) {
panel.fadeOut("fast");
} else {
panel.fadeIn("fast");
}

return false;
});

var findPanel = function(link) {
var id = link.attr("data-panel");

if (id) {
return $("#" + id);
} else {
return $(link.attr("href"));
}
}

// DEPRECATED: since the introduction of PF4 and React, colorbox is being removed. Also jquery-ujs has been replaced with rails-ujs.
// Added #colorbox selector to target only non-React forms
// show errors from ajax in formtastic
$(document).on('ajax:error', 'form:not(.pf-c-form)', function (event, xhr, status, error) {
switch(status){
case 'error':
$.colorbox({html: xhr.responseText});
event.stopPropagation()
break;
}
});


$(document).on('change', '#search_deleted_accounts', function () {
$(this.form).submit();
});
});

})(jQuery);

0 comments on commit cf3f88a

Please sign in to comment.