app/assets/javascripts/sufia.js in sufia-0.0.3 vs app/assets/javascripts/sufia.js in sufia-0.0.4

- old
+ new

@@ -16,10 +16,13 @@ //= require jquery-ui-1.9.2/jquery.ui.core //= require jquery-ui-1.9.2/jquery.ui.widget //= require jquery-ui-1.9.2/jquery.ui.menu //= require jquery-ui-1.9.2/jquery.ui.autocomplete +//= require jquery-ui-1.9.2/jquery.ui.position +//= require jquery-ui-1.9.2/jquery.ui.effect +//= require jquery-ui-1.9.2/jquery.ui.effect-highlight //= require bootstrap-dropdown //= require bootstrap-button //= require bootstrap-modal //= require bootstrap-collapse @@ -33,10 +36,12 @@ //= require jquery.zclip.min //= require batch_edit //= require terms_of_service //= require fileupload +//= require sufia/permissions +//= require sufia/tabs //over ride the blacklight default to submit //form when sort by or show per page change Blacklight.do_select_submit = function() { $(Blacklight.do_select_submit.selector).each(function() { @@ -100,11 +105,10 @@ }, }); }, minLength: 2 }; - //$("#generic_file_based_near").autocomplete(cities_autocomplete_opts); $("#generic_file_based_near").autocomplete(get_autocomplete_opts("location")); function get_autocomplete_opts(field) { var autocomplete_opts = { @@ -119,16 +123,10 @@ return false; }, complete: function(event) { $('.ui-autocomplete-loading').removeClass("ui-autocomplete-loading"); } - /* - select: function( event, ui ) { - $("#selectedSubjects").append("<div class = 'selectedsubject'>" + ui.item.label+"<img id='killSubject' style='position:relative; left:10px' src='images/close_icon.gif'/><div id='hiddenId' style='display:none'>"+ui.item.value+"</div></div>"); - $(this).val(""); - return false; - }*/ }; return autocomplete_opts; } var autocomplete_vocab = new Object(); @@ -157,21 +155,15 @@ /* * adds additional metadata elements */ $('.adder').click(function() { - //this.id = additional_N_submit - //id for element to clone = additional_N_clone - //id for element to append to = additional_N_elements - //var cloneId = this.id.replace("submit", "clone"); - //var newId = this.id.replace("submit", "elements"); var cloneId = this.id.replace("submit", "clone"); var newId = this.id.replace("submit", "elements"); var cloneElem = $('#'+cloneId).clone(); // change the add button to a remove button var plusbttn = cloneElem.find('#'+this.id); - //plusbttn.attr("value","-"); plusbttn.html('-<span class="accessible-hidden">remove this '+ this.name.replace("_", " ") +'</span>'); plusbttn.on('click',removeField); // remove the help tag on subsequent added fields cloneElem.find('.formHelp').remove(); @@ -229,176 +221,11 @@ }); $("a[rel=popover]").click(function() { return false;}); - /* - * - * - * permissions - * - * ids that end in 'skel' are only used as elements - * to clone into real form elements that are then - * submitted - */ - // input for uids - attach function to verify uid - $('#new_user_name_skel').on('blur', function() { - // clear out any existing messages - $('#directory_user_result').html(''); - var un = $('#new_user_name_skel').val(); - var perm = $('#new_user_permission_skel').val(); - if ( $.trim(un).length == 0 ) { - return; - } - $.ajax( { - url: "/directory/user/" + un, - success: function( data ) { - if (data != null) { - if (!data.length) { - $('#directory_user_result').html('User id ('+un+ ') does not exist.'); - $('#new_user_name_skel').select(); - $('#new_user_permission_skel').val('none'); - return; - } - else { - $('#new_user_permission_skel').focus(); - } - } - } - }); - - }); - - - // add button for new user - $('#add_new_user_skel').on('click', function() { - if ($('#new_user_name_skel').val() == "" || $('#new_user_permission_skel :selected').index() == "0") { - $('#new_user_name_skel').focus(); - return false; - } - - if ($('#new_user_name_skel').val() == $('#file_owner').html()) { - $('#permissions_error_text').html("Cannot change owner permissions."); - $('#permissions_error').show(); - $('#new_user_name_skel').val(''); - $('#new_user_name_skel').focus(); - return false; - } - - if (!is_permission_duplicate($('#new_user_name_skel').val())) { - $('#permissions_error_text').html("This user already has a permission."); - $('#permissions_error').show(); - $('#new_user_name_skel').focus(); - return false; - } - $('#permissions_error').html(); - $('#permissions_error').hide(); - - var un = $('#new_user_name_skel').val(); - var perm_form = $('#new_user_permission_skel').val(); - var perm = $('#new_user_permission_skel :selected').text(); - // clear out the elements to add more - $('#new_user_name_skel').val(''); - $('#new_user_permission_skel').val('none'); - - addPerm(un, perm_form, perm, 'new_user_name'); - return false; - }); - - // add button for new user - $('#add_new_group_skel').on('click', function() { - if ($('#new_group_name_skel :selected').index() == "0" || $('#new_group_permission_skel :selected').index() == "0") { - $('#new_group_name_skel').focus(); - return false; - } - var cn = $('#new_group_name_skel').val(); - var perm_form = $('#new_group_permission_skel').val(); - var perm = $('#new_group_permission_skel :selected').text(); - - if (!is_permission_duplicate($('#new_group_name_skel').val())) { - $('#permissions_error_text').html("This group already has a permission."); - $('#permissions_error').show(); - $('#new_group_name_skel').focus(); - return false; - } - $('#permissions_error').html(); - $('#permissions_error').hide(); - // clear out the elements to add more - $('#new_group_name_skel').val(''); - $('#new_group_permission_skel').val('none'); - - addPerm(cn, perm_form, perm, 'new_group_name'); - return false; - }); - - function addPerm(un, perm_form, perm, perm_type) - { - var tr = $(document.createElement('tr')); - var td1 = $(document.createElement('td')); - var td2 = $(document.createElement('td')); - var remove = $('<button class="btn close">X</button>'); - - $('#save_perm_note').show(); - - $('#new_perms').append(td1); - $('#new_perms').append(td2); - - td1.html('<label class="control-label">'+un+'</label>'); - td2.html(perm); - td2.append(remove); - remove.click(function () { - tr.remove(); - }); - - $('<input>').attr({ - type: 'hidden', - name: 'generic_file[permissions]['+perm_type+']['+un+']', - value: perm_form - }).appendTo(td2); - tr.append(td1); - tr.append(td2); - $('#file_permissions').after(tr); - tr.effect("highlight", {}, 3000); - } - - $('.remove_perm').on('click', function() { - var top = $(this).parent().parent(); - top.hide(); // do not show the block - top.find('.select_perm')[0].options[0].selected= true; // select the first otion which is none - return false; - - }); - - // called from edit object view - $('#edit_descriptions_link').on('click', function() { - descriptions_tab(); - }); - - // called from edit object view - $('#edit_versioning_link').on('click', function() { - versions_tab(); - }); - - // called from edit object view - $('#edit_permissions_link').on('click', function() { - permissions_tab(); - }); - - // when user clicks on visibility, update potential access levels - $("input[name='visibility']").on("change", set_access_levels); - - $('#generic_file_permissions_new_group_name').change(function (){ - var edit_option = $("#generic_file_permissions_new_group_permission option[value='edit']")[0]; - if (this.value.toUpperCase() == 'PUBLIC') { - edit_option.disabled =true; - } else { - edit_option.disabled =false; - } - - }); - /* * facets lists */ $("li.expandable").click(function(){ $(this).next("ul").slideToggle(); @@ -408,27 +235,10 @@ $("li.expandable_new").click(function(){ $(this).find('i').toggleClass("icon-chevron-down"); }); - /* - * enlarge icons on hover- on dashboard - */ - /* - $('[class^="icon-"]').hover( - //on mouseover - function(){ - $(this).addClass("icon-large"); - }, - //on mouseout - function() { - $(this).removeClass("icon-large"); - }); - */ - - - $(".sorts-dash").click(function(){ var itag =$(this).find('i'); toggle_icon(itag); sort = itag.attr('class') == "icon-caret-down" ? itag.attr('id')+' desc': itag.attr('id') +' asc'; $('#sort').val(sort).selected = true; @@ -453,126 +263,10 @@ function toggle_icon(itag){ itag.toggleClass("icon-caret-down"); itag.toggleClass("icon-caret-up"); } -// return the files visibility level (penn state, open, restricted); -function get_visibility(){ - return $("input[name='visibility']:checked").val() -} - -/* - * if visibility is Open or Penn State then we can't selectively - * set other users/groups to 'read' (it would be over ruled by the - * visibility of Open or Penn State) so disable the Read option - */ -function set_access_levels() -{ - var vis = get_visibility(); - var enabled_disabled = false; - if (vis == "open" || vis == "psu") { - enabled_disabled = true; - } - $('#new_group_permission_skel option[value=read]').attr("disabled", enabled_disabled); - $('#new_user_permission_skel option[value=read]').attr("disabled", enabled_disabled); - var perms_sel = $("select[name^='generic_file[permissions]']"); - $.each(perms_sel, function(index, sel_obj) { - $.each(sel_obj, function(j, opt) { - if( opt.value == "read") { - opt.disabled = enabled_disabled; - } - }); - }); -} - -/* - * make sure the permission being applied is not for a user/group - * that already has a permission. - */ -function is_permission_duplicate(user_or_group_name) -{ - s = "[" + user_or_group_name + "]"; - var patt = new RegExp(preg_quote(s), 'gi'); - var perms_input = $("input[name^='generic_file[permissions]']"); - var perms_sel = $("select[name^='generic_file[permissions]']"); - var flag = 1; - perms_input.each(function(index, form_input) { - // if the name is already being used - return false (not valid) - if (patt.test(form_input.name)) { - flag = 0; - } - }); - if (flag) { - perms_sel.each(function(index, form_input) { - // if the name is already being used - return false (not valid) - if (patt.test(form_input.name)) { - flag = 0; - } - }); - } - // putting a return false inside the each block - // was not working. Not sure why would seem better - // rather than setting this flag var - return (flag ? true : false); -} - -// is it worth checking to make sure users aren't filling up permissions that will be ignored. -// or when a user has already set a permission for a user then updates the visibility -- is it -// still relevant -function validate_existing_perms() -{ - var vis = get_visibility(); - if (vis == "open" || vis == "psu") - { - var perms = $("input[name^='generic_file[permissions]']"); - $.each(perms, function(index, form_input) { - if (form_input.name != "generic_file[permissions][group][public]" && form_input.name != "generic_file[permissions][group][registered]") { - if (form_input.value != 'edit') { - alert("silly permission: " + form_input.name + " " + form_input.value ); - } - } - }); - } -} - -// all called from edit object view -// when permissions link is clicked on edit object -function permissions_tab () -{ - $('#edit_permissions_link').attr('class', 'active'); - $('#edit_versioning_link').attr('class', ''); - $('#edit_descriptions_link').attr('class', ''); - - $('#descriptions_display').hide(); - $('#versioning_display').hide(); - $('#permissions_display').show(); - $('#permissions_submit').show(); -} -// when versions link is clicked on edit object -function versions_tab() -{ - $('#edit_descriptions_link').attr('class', ''); - $('#edit_versioning_link').attr('class', 'active'); - $('#edit_permissions_link').attr('class', ''); - - $('#descriptions_display').hide(); - $('#versioning_display').show(); - $('#permissions_display').hide(); - $('#permissions_submit').hide(); -} -// when descriptions link is clicked on edit object -function descriptions_tab () -{ - $('#edit_descriptions_link').attr('class', 'active'); - $('#edit_versioning_link').attr('class', ''); - $('#edit_permissions_link').attr('class', ''); - - $('#descriptions_display').show(); - $('#versioning_display').hide(); - $('#permissions_display').hide(); - $('#permissions_submit').hide(); -} function preg_quote( str ) { // http://kevin.vanzonneveld.net // + original by: booeyOH // + improved by: Ates Goral (http://magnetiq.com) // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) @@ -591,10 +285,9 @@ function initialize_audio() { if (navigator.userAgent.match("Chrome")){ $('audio').each(function() { this.controls = true; - //$(this).attr("controls","controls"); }); }else { $('audio').each(function() { $(this).attr("preload","auto"); });