sufia 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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
+