Created
February 19, 2012 18:21
-
-
Save techieBrandon/1864965 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<%#[terry] don't render this partial directly - instead use VulnerabilitiesHelper#bulk_actions %> | |
<% container = 'vuln-update-selected-dialog' + suffix %> | |
<% bulk_actions ||= [] %> | |
<a href="javascript: void(0)" class='bulk-action-activate-btn action-btn' style="display:none; float: left; margin-left: 5em;" id="bulk-action-activate<%= suffix %>"><span class="icon_view_all">Update Selected<span class="bulk-update-vuln-count"></span></span></a> | |
<% backup, @vulnerability = @vulnerability, nil %> | |
<div id="hidden-<%= container %>" class="<%= container %> hidden-vuln-update-selected-dialog" style="display: none;"> | |
<%= form_tag(params.merge(:action => :bulk_update), :id => "vuln-bulk-update-form#{suffix}") do %> | |
<% bulk_actions.each do |action| %> | |
<%= render(:partial => "/vulnerabilities/bulk_update/#{action}", :locals => {:vuln => backup}) %> | |
<% end %> | |
<% end -%> | |
</div> | |
<script type="text/javascript"> | |
$(function() { | |
var dialogName = '<%= container %>'; | |
var dialogHandle = "#" + dialogName; | |
var trigger = '#bulk-action-activate<%= suffix %>'; | |
var parent = '#<%= parent %>'; | |
var xhr = <%= xhr %>; | |
var submitHandler = <%= submit %>; | |
var formHandle = "#vuln-bulk-update-form<%= suffix %>"; | |
$(trigger).click(function(event) { | |
event.preventDefault(); | |
var hidden_vuln_update_selected_dialog = $("#hidden-" + dialogName); | |
if($.neo.loadedDialogs[dialogName] === undefined) { | |
$.neo.loadedDialogs[dialogName] = add_attachment_dialog = $('<div></div>') | |
.html( | |
function(){ | |
hidden_vuln_update_selected_dialog.attr("style", ""); | |
return hidden_vuln_update_selected_dialog; | |
}() | |
) | |
.neodialog({ | |
modal: true, | |
autoOpen: false, | |
dialogClass: 'neo-green update-selected', | |
title: "Update Selected", | |
resizable: false, | |
titleButtons: [{ | |
text: 'Update', | |
fx: function(event){ | |
event.preventDefault(); | |
$(dialogHandle).append($.neo.loadedDialogs[dialogName].clone().attr('style', 'display:none;')); | |
var selects = $.neo.loadedDialogs[dialogName].find("select"); | |
$(selects).each(function(i) { | |
var select = this; | |
$(formHandle).find("select").eq(i).val($(select).val()); | |
}); | |
$.each($(parent + ' .vulnerability_checkbox:checked'), function(i, checkbox){ | |
$(formHandle).append("<input type='checkbox' checked='checked' style='display:none;' name='vulnerability_ids[]' value='" + $(checkbox).val() + "'/>"); | |
}); | |
if(xhr) { | |
$.neo.loadedDialogs[dialogName].neodialog('close'); | |
submitHandler($(formHandle).serializeJSON()); | |
} else { | |
$(formHandle).submit(); | |
} | |
} | |
}], | |
width: '400px', | |
}).neodialog('open'); | |
} else { | |
$.neo.loadedDialogs[dialogName].find("form")[0].reset(); | |
$.neo.loadedDialogs[dialogName].neodialog('open'); | |
} | |
}); | |
var select_all_matching = function(parent) { | |
var checkbox_selector = parent + " .vulnerability_checkbox"; | |
var all_checkbox_selector = parent +" .select_all_vulnerabilities_checkbox"; | |
var count_label_selector = parent+" .vuln_count_label"; | |
var results_count_total_selector = parent+" .vul_count_total"; | |
var update_button_selector = parent+" .bulk-action-activate-btn"; | |
var bulk_update_all_on_page_selector = parent+" .bulk_update_select_all_page_btn" | |
var total_results = ($(results_count_total_selector).size()==0) ? 0 : $(results_count_total_selector).first().val(); | |
var update_all_field = $('<input class="bulk_update_type_field" name="update_all" type="hidden" value="true" />'); | |
$(parent +" .bulk_update_type_field").remove(); | |
$(formHandle).append(update_all_field); | |
$(count_label_selector).each(function(){ | |
$(this).html('All vulnerabilities matching query selected. <a class="bulk_update_select_all_page_btn" href="javascript: void(0);">Click</a> to select only results on this page'); | |
$(bulk_update_all_on_page_selector).click(function(){ | |
select_all_on_pivot(parent) | |
}); | |
}); | |
$(checkbox_selector).attr('checked', true); | |
$(checkbox_selector).attr('disabled', true); | |
$(all_checkbox_selector).attr('checked', true); | |
$(all_checkbox_selector).attr('disabled', true); | |
}; | |
var select_all_on_pivot = function(parent) { | |
var checkbox_selector = parent + " .vulnerability_checkbox"; | |
var all_checkbox_selector = parent + " .select_all_vulnerabilities_checkbox"; | |
var count_label_selector = parent + " .vuln_count_label"; | |
var bulk_update_all_matching_selector = parent + " .bulk_update_select_all_btn" | |
var number_checked = $(checkbox_selector).filter(':checked').length; | |
$(parent + " .bulk_update_type_field").remove(); | |
$(count_label_selector).each(function(){ | |
$(this).html(String(number_checked)+' selected. <a class="bulk_update_select_all_btn" href="javascript: void(0);">Click</a> to select all results matching query.'); | |
$(bulk_update_all_matching_selector).click(function(){ | |
select_all_matching(parent); | |
}); | |
}); | |
$(checkbox_selector).attr('disabled', false); | |
$(checkbox_selector).attr('checked', true); | |
$(all_checkbox_selector).attr('disabled', false); | |
$(all_checkbox_selector).attr('checked', true); | |
}; | |
var refresh_bulk_update_view = function(parent){ | |
var checkbox_selector = parent + " .vulnerability_checkbox"; | |
var all_checkbox_selector = parent + " .select_all_vulnerabilities_checkbox"; | |
var count_label_selector = parent + " .vuln_count_label"; | |
var results_count_total_selector = parent + " .vuln_count_total"; | |
var update_button_selector = parent + " .bulk-action-activate-btn"; | |
var bulk_update_all_matching_selector = parent + " .bulk_update_select_all_btn" | |
var number_checked = $(checkbox_selector).filter(':checked').length; | |
var number_unchecked = $(checkbox_selector).not(':checked').length; | |
var total_results = ($(results_count_total_selector).size()==0) ? 0 : $(results_count_total_selector).first().val(); | |
if(number_checked > 0){ | |
$(update_button_selector).show(); | |
if(number_unchecked == 0){ | |
$(count_label_selector).each(function(){ | |
$(this).html('All '+String(number_checked)+' selected. <a class="bulk_update_select_all_btn" href="javascript: void(0);">Click</a> to select all results matching query.'); | |
select_all_matching(parent); | |
}); | |
}else{ | |
$(parent + " .bulk_update_type_field").remove(); | |
$(all_checkbox_selector).attr('checked', false); | |
$(checkbox_selector).attr('disabled', false); | |
$(update_button_selector).show(); | |
$(count_label_selector).each(function(){ | |
$(this).html(String(number_checked)+" selected."); | |
}); | |
} | |
}else{ | |
$(count_label_selector).each(function(){ $(this).html(""); }); | |
$(update_button_selector).hide(); | |
$(checkbox_selector).attr('disabled', false); | |
$(all_checkbox_selector).attr('checked', false); | |
} | |
}; | |
$(parent + " .vulnerability_checkbox").click(function() { | |
refresh_bulk_update_view(parent); | |
}); | |
$(parent + " .select_all").click(function(){ | |
var checkbox_selector = parent + " .vulnerability_checkbox"; | |
var all_checkbox_selector = parent + " .select_all_vulnerabilities_checkbox"; | |
$(checkbox_selector).attr('checked', $(all_checkbox_selector).is(':checked')); | |
refresh_bulk_update_view(parent); | |
}); | |
}); | |
</script> | |
<% @vulnerability = backup %> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment