sufia 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. data/Gemfile +1 -4
  2. data/README.md +1 -1
  3. data/app/assets/javascripts/sufia.js +5 -312
  4. data/app/assets/javascripts/sufia/permissions.js +216 -0
  5. data/app/assets/javascripts/sufia/tabs.js +58 -0
  6. data/app/assets/stylesheets/generic_files.css +4 -0
  7. data/app/assets/stylesheets/jquery-ui.css +474 -0
  8. data/app/assets/stylesheets/{sufia.css → sufia.css.scss} +4 -1
  9. data/app/controllers/directory_controller.rb +17 -11
  10. data/app/controllers/users_controller.rb +5 -3
  11. data/app/models/datastreams/file_content_datastream.rb +2 -53
  12. data/app/views/batch/_metadata.html.erb +0 -1
  13. data/app/views/batch_edits/_metadata.html.erb +0 -1
  14. data/app/views/batch_edits/edit.html.erb +0 -1
  15. data/app/views/dashboard/_facet_pagination.html.erb +20 -39
  16. data/app/views/dashboard/_index_partials/_thumbnail_display.html.erb +1 -1
  17. data/app/views/dashboard/facet.html.erb +29 -34
  18. data/app/views/generic_files/_descriptions.html.erb +0 -1
  19. data/app/views/generic_files/_groups_description.html.erb +5 -0
  20. data/app/views/generic_files/_multiple_upload.html.erb +135 -0
  21. data/app/views/generic_files/_permission.html.erb +2 -5
  22. data/app/views/generic_files/_versioning.html.erb +0 -1
  23. data/app/views/generic_files/edit.html.erb +0 -3
  24. data/app/views/generic_files/new.html.erb +2 -138
  25. data/app/views/layouts/hydra-head.html.erb +1 -0
  26. data/app/views/users/index.html.erb +6 -4
  27. data/config/locales/sufia.en.yml +2 -0
  28. data/lib/sufia.rb +1 -1
  29. data/lib/sufia/file_content.rb +8 -0
  30. data/lib/sufia/file_content/extract_metadata.rb +53 -0
  31. data/lib/sufia/file_content/versions.rb +23 -0
  32. data/lib/sufia/files_controller_behavior.rb +17 -33
  33. data/lib/sufia/generic_file.rb +0 -8
  34. data/lib/sufia/generic_file/characterization.rb +0 -1
  35. data/lib/sufia/generic_file/thumbnail.rb +2 -4
  36. data/lib/sufia/jobs/unzip_job.rb +0 -1
  37. data/lib/sufia/user.rb +0 -3
  38. data/lib/sufia/version.rb +1 -1
  39. data/spec/controllers/batch_controller_spec.rb +11 -12
  40. data/spec/controllers/catalog_controller_spec.rb +2 -3
  41. data/spec/controllers/generic_files_controller_spec.rb +14 -16
  42. data/spec/controllers/single_use_link_controller_spec.rb +0 -1
  43. data/spec/models/batch_update_job_spec.rb +2 -3
  44. data/spec/models/checksum_audit_log_spec.rb +1 -2
  45. data/spec/models/file_content_datastream_spec.rb +1 -6
  46. data/spec/models/generic_file_spec.rb +2 -9
  47. data/spec/models/single_use_link_spec.rb +0 -2
  48. data/spec/models/transcode_video_job_spec.rb +1 -1
  49. data/spec/support/Gemfile +3 -5
  50. data/sufia.gemspec +2 -2
  51. data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.effect-highlight.js +50 -0
  52. data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.effect.js +1276 -0
  53. data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.position.js +498 -0
  54. metadata +26 -21
  55. data/app/assets/stylesheets/font-awesome-ie7.css +0 -645
  56. data/app/assets/stylesheets/font-awesome.css +0 -303
  57. data/app/views/catalog/_facet_pagination.html.erb +0 -28
  58. data/app/views/catalog/facet.html.erb +0 -27
  59. data/public/robots.txt +0 -4
  60. data/vendor/assets/fonts/fontawesome-webfont.eot +0 -0
data/Gemfile CHANGED
@@ -1,9 +1,8 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
- # Please see scholarsphere.gemspec for dependency information.
3
+ # Please see sufia.gemspec for dependency information.
4
4
  gemspec
5
5
 
6
-
7
6
  #gem 'mail_form', :git => 'git://github.com/psu-stewardship/mail_form.git', :ref => '50c00f0'
8
7
  group :development, :test do
9
8
  gem 'sqlite3'
@@ -22,6 +21,4 @@ group :development, :test do
22
21
  gem "jettywrapper"
23
22
  gem "factory_girl_rails", "~> 4.1.0"
24
23
  gem 'launchy'
25
-
26
- gem 'devise'
27
24
  end # (leave this comment here to catch a stray line inserted by blacklight!)
data/README.md CHANGED
@@ -68,5 +68,5 @@ rake fixtures
68
68
 
69
69
  # run the tests
70
70
  rake clean spec
71
- bundle exec cucumber fixtures
71
+ bundle exec cucumber features
72
72
  ```
@@ -18,6 +18,9 @@ limitations under the License.
18
18
  //= require jquery-ui-1.9.2/jquery.ui.widget
19
19
  //= require jquery-ui-1.9.2/jquery.ui.menu
20
20
  //= require jquery-ui-1.9.2/jquery.ui.autocomplete
21
+ //= require jquery-ui-1.9.2/jquery.ui.position
22
+ //= require jquery-ui-1.9.2/jquery.ui.effect
23
+ //= require jquery-ui-1.9.2/jquery.ui.effect-highlight
21
24
 
22
25
  //= require bootstrap-dropdown
23
26
  //= require bootstrap-button
@@ -35,6 +38,8 @@ limitations under the License.
35
38
  //= require batch_edit
36
39
  //= require terms_of_service
37
40
  //= require fileupload
41
+ //= require sufia/permissions
42
+ //= require sufia/tabs
38
43
 
39
44
  //over ride the blacklight default to submit
40
45
  //form when sort by or show per page change
@@ -102,7 +107,6 @@ $(function() {
102
107
  },
103
108
  minLength: 2
104
109
  };
105
- //$("#generic_file_based_near").autocomplete(cities_autocomplete_opts);
106
110
  $("#generic_file_based_near").autocomplete(get_autocomplete_opts("location"));
107
111
 
108
112
 
@@ -121,12 +125,6 @@ $(function() {
121
125
  complete: function(event) {
122
126
  $('.ui-autocomplete-loading').removeClass("ui-autocomplete-loading");
123
127
  }
124
- /*
125
- select: function( event, ui ) {
126
- $("#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>");
127
- $(this).val("");
128
- return false;
129
- }*/
130
128
  };
131
129
  return autocomplete_opts;
132
130
  }
@@ -159,17 +157,11 @@ $(function() {
159
157
  * adds additional metadata elements
160
158
  */
161
159
  $('.adder').click(function() {
162
- //this.id = additional_N_submit
163
- //id for element to clone = additional_N_clone
164
- //id for element to append to = additional_N_elements
165
- //var cloneId = this.id.replace("submit", "clone");
166
- //var newId = this.id.replace("submit", "elements");
167
160
  var cloneId = this.id.replace("submit", "clone");
168
161
  var newId = this.id.replace("submit", "elements");
169
162
  var cloneElem = $('#'+cloneId).clone();
170
163
  // change the add button to a remove button
171
164
  var plusbttn = cloneElem.find('#'+this.id);
172
- //plusbttn.attr("value","-");
173
165
  plusbttn.html('-<span class="accessible-hidden">remove this '+ this.name.replace("_", " ") +'</span>');
174
166
  plusbttn.on('click',removeField);
175
167
 
@@ -231,171 +223,6 @@ $(function() {
231
223
  $("a[rel=popover]").click(function() { return false;});
232
224
 
233
225
 
234
- /*
235
- *
236
- *
237
- * permissions
238
- *
239
- * ids that end in 'skel' are only used as elements
240
- * to clone into real form elements that are then
241
- * submitted
242
- */
243
-
244
- // input for uids - attach function to verify uid
245
- $('#new_user_name_skel').on('blur', function() {
246
- // clear out any existing messages
247
- $('#directory_user_result').html('');
248
- var un = $('#new_user_name_skel').val();
249
- var perm = $('#new_user_permission_skel').val();
250
- if ( $.trim(un).length == 0 ) {
251
- return;
252
- }
253
- $.ajax( {
254
- url: "/directory/user/" + un,
255
- success: function( data ) {
256
- if (data != null) {
257
- if (!data.length) {
258
- $('#directory_user_result').html('User id ('+un+ ') does not exist.');
259
- $('#new_user_name_skel').select();
260
- $('#new_user_permission_skel').val('none');
261
- return;
262
- }
263
- else {
264
- $('#new_user_permission_skel').focus();
265
- }
266
- }
267
- }
268
- });
269
-
270
- });
271
-
272
-
273
- // add button for new user
274
- $('#add_new_user_skel').on('click', function() {
275
- if ($('#new_user_name_skel').val() == "" || $('#new_user_permission_skel :selected').index() == "0") {
276
- $('#new_user_name_skel').focus();
277
- return false;
278
- }
279
-
280
- if ($('#new_user_name_skel').val() == $('#file_owner').html()) {
281
- $('#permissions_error_text').html("Cannot change owner permissions.");
282
- $('#permissions_error').show();
283
- $('#new_user_name_skel').val('');
284
- $('#new_user_name_skel').focus();
285
- return false;
286
- }
287
-
288
- if (!is_permission_duplicate($('#new_user_name_skel').val())) {
289
- $('#permissions_error_text').html("This user already has a permission.");
290
- $('#permissions_error').show();
291
- $('#new_user_name_skel').focus();
292
- return false;
293
- }
294
- $('#permissions_error').html();
295
- $('#permissions_error').hide();
296
-
297
- var un = $('#new_user_name_skel').val();
298
- var perm_form = $('#new_user_permission_skel').val();
299
- var perm = $('#new_user_permission_skel :selected').text();
300
- // clear out the elements to add more
301
- $('#new_user_name_skel').val('');
302
- $('#new_user_permission_skel').val('none');
303
-
304
- addPerm(un, perm_form, perm, 'new_user_name');
305
- return false;
306
- });
307
-
308
- // add button for new user
309
- $('#add_new_group_skel').on('click', function() {
310
- if ($('#new_group_name_skel :selected').index() == "0" || $('#new_group_permission_skel :selected').index() == "0") {
311
- $('#new_group_name_skel').focus();
312
- return false;
313
- }
314
- var cn = $('#new_group_name_skel').val();
315
- var perm_form = $('#new_group_permission_skel').val();
316
- var perm = $('#new_group_permission_skel :selected').text();
317
-
318
- if (!is_permission_duplicate($('#new_group_name_skel').val())) {
319
- $('#permissions_error_text').html("This group already has a permission.");
320
- $('#permissions_error').show();
321
- $('#new_group_name_skel').focus();
322
- return false;
323
- }
324
- $('#permissions_error').html();
325
- $('#permissions_error').hide();
326
- // clear out the elements to add more
327
- $('#new_group_name_skel').val('');
328
- $('#new_group_permission_skel').val('none');
329
-
330
- addPerm(cn, perm_form, perm, 'new_group_name');
331
- return false;
332
- });
333
-
334
- function addPerm(un, perm_form, perm, perm_type)
335
- {
336
- var tr = $(document.createElement('tr'));
337
- var td1 = $(document.createElement('td'));
338
- var td2 = $(document.createElement('td'));
339
- var remove = $('<button class="btn close">X</button>');
340
-
341
- $('#save_perm_note').show();
342
-
343
- $('#new_perms').append(td1);
344
- $('#new_perms').append(td2);
345
-
346
- td1.html('<label class="control-label">'+un+'</label>');
347
- td2.html(perm);
348
- td2.append(remove);
349
- remove.click(function () {
350
- tr.remove();
351
- });
352
-
353
- $('<input>').attr({
354
- type: 'hidden',
355
- name: 'generic_file[permissions]['+perm_type+']['+un+']',
356
- value: perm_form
357
- }).appendTo(td2);
358
- tr.append(td1);
359
- tr.append(td2);
360
- $('#file_permissions').after(tr);
361
- tr.effect("highlight", {}, 3000);
362
- }
363
-
364
- $('.remove_perm').on('click', function() {
365
- var top = $(this).parent().parent();
366
- top.hide(); // do not show the block
367
- top.find('.select_perm')[0].options[0].selected= true; // select the first otion which is none
368
- return false;
369
-
370
- });
371
-
372
- // called from edit object view
373
- $('#edit_descriptions_link').on('click', function() {
374
- descriptions_tab();
375
- });
376
-
377
- // called from edit object view
378
- $('#edit_versioning_link').on('click', function() {
379
- versions_tab();
380
- });
381
-
382
- // called from edit object view
383
- $('#edit_permissions_link').on('click', function() {
384
- permissions_tab();
385
- });
386
-
387
- // when user clicks on visibility, update potential access levels
388
- $("input[name='visibility']").on("change", set_access_levels);
389
-
390
- $('#generic_file_permissions_new_group_name').change(function (){
391
- var edit_option = $("#generic_file_permissions_new_group_permission option[value='edit']")[0];
392
- if (this.value.toUpperCase() == 'PUBLIC') {
393
- edit_option.disabled =true;
394
- } else {
395
- edit_option.disabled =false;
396
- }
397
-
398
- });
399
226
 
400
227
  /*
401
228
  * facets lists
@@ -410,23 +237,6 @@ $(function() {
410
237
  $(this).find('i').toggleClass("icon-chevron-down");
411
238
  });
412
239
 
413
- /*
414
- * enlarge icons on hover- on dashboard
415
- */
416
- /*
417
- $('[class^="icon-"]').hover(
418
- //on mouseover
419
- function(){
420
- $(this).addClass("icon-large");
421
- },
422
- //on mouseout
423
- function() {
424
- $(this).removeClass("icon-large");
425
- });
426
- */
427
-
428
-
429
-
430
240
  $(".sorts-dash").click(function(){
431
241
  var itag =$(this).find('i');
432
242
  toggle_icon(itag);
@@ -455,122 +265,6 @@ function toggle_icon(itag){
455
265
  itag.toggleClass("icon-caret-up");
456
266
  }
457
267
 
458
- // return the files visibility level (penn state, open, restricted);
459
- function get_visibility(){
460
- return $("input[name='visibility']:checked").val()
461
- }
462
-
463
- /*
464
- * if visibility is Open or Penn State then we can't selectively
465
- * set other users/groups to 'read' (it would be over ruled by the
466
- * visibility of Open or Penn State) so disable the Read option
467
- */
468
- function set_access_levels()
469
- {
470
- var vis = get_visibility();
471
- var enabled_disabled = false;
472
- if (vis == "open" || vis == "psu") {
473
- enabled_disabled = true;
474
- }
475
- $('#new_group_permission_skel option[value=read]').attr("disabled", enabled_disabled);
476
- $('#new_user_permission_skel option[value=read]').attr("disabled", enabled_disabled);
477
- var perms_sel = $("select[name^='generic_file[permissions]']");
478
- $.each(perms_sel, function(index, sel_obj) {
479
- $.each(sel_obj, function(j, opt) {
480
- if( opt.value == "read") {
481
- opt.disabled = enabled_disabled;
482
- }
483
- });
484
- });
485
- }
486
-
487
- /*
488
- * make sure the permission being applied is not for a user/group
489
- * that already has a permission.
490
- */
491
- function is_permission_duplicate(user_or_group_name)
492
- {
493
- s = "[" + user_or_group_name + "]";
494
- var patt = new RegExp(preg_quote(s), 'gi');
495
- var perms_input = $("input[name^='generic_file[permissions]']");
496
- var perms_sel = $("select[name^='generic_file[permissions]']");
497
- var flag = 1;
498
- perms_input.each(function(index, form_input) {
499
- // if the name is already being used - return false (not valid)
500
- if (patt.test(form_input.name)) {
501
- flag = 0;
502
- }
503
- });
504
- if (flag) {
505
- perms_sel.each(function(index, form_input) {
506
- // if the name is already being used - return false (not valid)
507
- if (patt.test(form_input.name)) {
508
- flag = 0;
509
- }
510
- });
511
- }
512
- // putting a return false inside the each block
513
- // was not working. Not sure why would seem better
514
- // rather than setting this flag var
515
- return (flag ? true : false);
516
- }
517
-
518
- // is it worth checking to make sure users aren't filling up permissions that will be ignored.
519
- // or when a user has already set a permission for a user then updates the visibility -- is it
520
- // still relevant
521
- function validate_existing_perms()
522
- {
523
- var vis = get_visibility();
524
- if (vis == "open" || vis == "psu")
525
- {
526
- var perms = $("input[name^='generic_file[permissions]']");
527
- $.each(perms, function(index, form_input) {
528
- if (form_input.name != "generic_file[permissions][group][public]" && form_input.name != "generic_file[permissions][group][registered]") {
529
- if (form_input.value != 'edit') {
530
- alert("silly permission: " + form_input.name + " " + form_input.value );
531
- }
532
- }
533
- });
534
- }
535
- }
536
-
537
- // all called from edit object view
538
- // when permissions link is clicked on edit object
539
- function permissions_tab ()
540
- {
541
- $('#edit_permissions_link').attr('class', 'active');
542
- $('#edit_versioning_link').attr('class', '');
543
- $('#edit_descriptions_link').attr('class', '');
544
-
545
- $('#descriptions_display').hide();
546
- $('#versioning_display').hide();
547
- $('#permissions_display').show();
548
- $('#permissions_submit').show();
549
- }
550
- // when versions link is clicked on edit object
551
- function versions_tab()
552
- {
553
- $('#edit_descriptions_link').attr('class', '');
554
- $('#edit_versioning_link').attr('class', 'active');
555
- $('#edit_permissions_link').attr('class', '');
556
-
557
- $('#descriptions_display').hide();
558
- $('#versioning_display').show();
559
- $('#permissions_display').hide();
560
- $('#permissions_submit').hide();
561
- }
562
- // when descriptions link is clicked on edit object
563
- function descriptions_tab ()
564
- {
565
- $('#edit_descriptions_link').attr('class', 'active');
566
- $('#edit_versioning_link').attr('class', '');
567
- $('#edit_permissions_link').attr('class', '');
568
-
569
- $('#descriptions_display').show();
570
- $('#versioning_display').hide();
571
- $('#permissions_display').hide();
572
- $('#permissions_submit').hide();
573
- }
574
268
  function preg_quote( str ) {
575
269
  // http://kevin.vanzonneveld.net
576
270
  // + original by: booeyOH
@@ -593,7 +287,6 @@ function initialize_audio() {
593
287
  if (navigator.userAgent.match("Chrome")){
594
288
  $('audio').each(function() {
595
289
  this.controls = true;
596
- //$(this).attr("controls","controls");
597
290
  });
598
291
  }else {
599
292
  $('audio').each(function() {
@@ -0,0 +1,216 @@
1
+ /*
2
+ *
3
+ *
4
+ * permissions
5
+ *
6
+ * ids that end in 'skel' are only used as elements
7
+ * to clone into real form elements that are then
8
+ * submitted
9
+ */
10
+
11
+ $(function() {
12
+ // input for uids - attach function to verify uid
13
+ $('#new_user_name_skel').on('blur', function() {
14
+ // clear out any existing messages
15
+ $('#directory_user_result').html('');
16
+ var un = $('#new_user_name_skel').val();
17
+ var perm = $('#new_user_permission_skel').val();
18
+ if ( $.trim(un).length == 0 ) {
19
+ return;
20
+ }
21
+ $.ajax( {
22
+ url: "/directory/user/" + un,
23
+ success: function( data ) {
24
+ if (data != null) {
25
+ if (!data.length) {
26
+ $('#directory_user_result').html('User id ('+un+ ') does not exist.');
27
+ $('#new_user_name_skel').select();
28
+ $('#new_user_permission_skel').val('none');
29
+ return;
30
+ }
31
+ else {
32
+ $('#new_user_permission_skel').focus();
33
+ }
34
+ }
35
+ }
36
+ });
37
+
38
+ });
39
+
40
+
41
+ // add button for new user
42
+ $('#add_new_user_skel').on('click', function() {
43
+ if ($('#new_user_name_skel').val() == "" || $('#new_user_permission_skel :selected').index() == "0") {
44
+ $('#new_user_name_skel').focus();
45
+ return false;
46
+ }
47
+
48
+ if ($('#new_user_name_skel').val() == $('#file_owner').html()) {
49
+ $('#permissions_error_text').html("Cannot change owner permissions.");
50
+ $('#permissions_error').show();
51
+ $('#new_user_name_skel').val('');
52
+ $('#new_user_name_skel').focus();
53
+ return false;
54
+ }
55
+
56
+ if (!is_permission_duplicate($('#new_user_name_skel').val())) {
57
+ $('#permissions_error_text').html("This user already has a permission.");
58
+ $('#permissions_error').show();
59
+ $('#new_user_name_skel').focus();
60
+ return false;
61
+ }
62
+ $('#permissions_error').html();
63
+ $('#permissions_error').hide();
64
+
65
+ var un = $('#new_user_name_skel').val();
66
+ var perm_form = $('#new_user_permission_skel').val();
67
+ var perm = $('#new_user_permission_skel :selected').text();
68
+ // clear out the elements to add more
69
+ $('#new_user_name_skel').val('');
70
+ $('#new_user_permission_skel').val('none');
71
+
72
+ addPerm(un, perm_form, perm, 'new_user_name');
73
+ return false;
74
+ });
75
+
76
+ // add button for new user
77
+ $('#add_new_group_skel').on('click', function() {
78
+ if ($('#new_group_name_skel :selected').index() == "0" || $('#new_group_permission_skel :selected').index() == "0") {
79
+ $('#new_group_name_skel').focus();
80
+ return false;
81
+ }
82
+ var cn = $('#new_group_name_skel').val();
83
+ var perm_form = $('#new_group_permission_skel').val();
84
+ var perm = $('#new_group_permission_skel :selected').text();
85
+
86
+ if (!is_permission_duplicate($('#new_group_name_skel').val())) {
87
+ $('#permissions_error_text').html("This group already has a permission.");
88
+ $('#permissions_error').show();
89
+ $('#new_group_name_skel').focus();
90
+ return false;
91
+ }
92
+ $('#permissions_error').html();
93
+ $('#permissions_error').hide();
94
+ // clear out the elements to add more
95
+ $('#new_group_name_skel').val('');
96
+ $('#new_group_permission_skel').val('none');
97
+
98
+ addPerm(cn, perm_form, perm, 'new_group_name');
99
+ return false;
100
+ });
101
+
102
+ // when user clicks on visibility, update potential access levels
103
+ $("input[name='visibility']").on("change", set_access_levels);
104
+
105
+ $('#generic_file_permissions_new_group_name').change(function (){
106
+ var edit_option = $("#generic_file_permissions_new_group_permission option[value='edit']")[0];
107
+ if (this.value.toUpperCase() == 'PUBLIC') {
108
+ edit_option.disabled =true;
109
+ } else {
110
+ edit_option.disabled =false;
111
+ }
112
+
113
+ });
114
+
115
+
116
+ function addPerm(un, perm_form, perm, perm_type)
117
+ {
118
+ var tr = $(document.createElement('tr'));
119
+ var td1 = $(document.createElement('td'));
120
+ var td2 = $(document.createElement('td'));
121
+ var remove = $('<button class="btn close">X</button>');
122
+
123
+ $('#save_perm_note').show();
124
+
125
+ $('#new_perms').append(td1);
126
+ $('#new_perms').append(td2);
127
+
128
+ td1.html('<label class="control-label">'+un+'</label>');
129
+ td2.html(perm);
130
+ td2.append(remove);
131
+ remove.click(function () {
132
+ tr.remove();
133
+ });
134
+
135
+ $('<input>').attr({
136
+ type: 'hidden',
137
+ name: 'generic_file[permissions]['+perm_type+']['+un+']',
138
+ value: perm_form
139
+ }).appendTo(td2);
140
+ tr.append(td1);
141
+ tr.append(td2);
142
+ $('#file_permissions').after(tr);
143
+ tr.effect("highlight", {}, 3000);
144
+ }
145
+
146
+ $('.remove_perm').on('click', function() {
147
+ var top = $(this).parent().parent();
148
+ top.hide(); // do not show the block
149
+ top.find('.select_perm')[0].options[0].selected= true; // select the first otion which is none
150
+ return false;
151
+
152
+ });
153
+
154
+ });
155
+
156
+ // return the files visibility level (penn state, open, restricted);
157
+ function get_visibility(){
158
+ return $("input[name='visibility']:checked").val()
159
+ }
160
+
161
+ /*
162
+ * if visibility is Open or Penn State then we can't selectively
163
+ * set other users/groups to 'read' (it would be over ruled by the
164
+ * visibility of Open or Penn State) so disable the Read option
165
+ */
166
+ function set_access_levels()
167
+ {
168
+ var vis = get_visibility();
169
+ var enabled_disabled = false;
170
+ if (vis == "open" || vis == "psu") {
171
+ enabled_disabled = true;
172
+ }
173
+ $('#new_group_permission_skel option[value=read]').attr("disabled", enabled_disabled);
174
+ $('#new_user_permission_skel option[value=read]').attr("disabled", enabled_disabled);
175
+ var perms_sel = $("select[name^='generic_file[permissions]']");
176
+ $.each(perms_sel, function(index, sel_obj) {
177
+ $.each(sel_obj, function(j, opt) {
178
+ if( opt.value == "read") {
179
+ opt.disabled = enabled_disabled;
180
+ }
181
+ });
182
+ });
183
+ }
184
+
185
+ /*
186
+ * make sure the permission being applied is not for a user/group
187
+ * that already has a permission.
188
+ */
189
+ function is_permission_duplicate(user_or_group_name)
190
+ {
191
+ s = "[" + user_or_group_name + "]";
192
+ var patt = new RegExp(preg_quote(s), 'gi');
193
+ var perms_input = $("input[name^='generic_file[permissions]']");
194
+ var perms_sel = $("select[name^='generic_file[permissions]']");
195
+ var flag = 1;
196
+ perms_input.each(function(index, form_input) {
197
+ // if the name is already being used - return false (not valid)
198
+ if (patt.test(form_input.name)) {
199
+ flag = 0;
200
+ }
201
+ });
202
+ if (flag) {
203
+ perms_sel.each(function(index, form_input) {
204
+ // if the name is already being used - return false (not valid)
205
+ if (patt.test(form_input.name)) {
206
+ flag = 0;
207
+ }
208
+ });
209
+ }
210
+ // putting a return false inside the each block
211
+ // was not working. Not sure why would seem better
212
+ // rather than setting this flag var
213
+ return (flag ? true : false);
214
+ }
215
+
216
+