sufia 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -4
- data/README.md +1 -1
- data/app/assets/javascripts/sufia.js +5 -312
- data/app/assets/javascripts/sufia/permissions.js +216 -0
- data/app/assets/javascripts/sufia/tabs.js +58 -0
- data/app/assets/stylesheets/generic_files.css +4 -0
- data/app/assets/stylesheets/jquery-ui.css +474 -0
- data/app/assets/stylesheets/{sufia.css → sufia.css.scss} +4 -1
- data/app/controllers/directory_controller.rb +17 -11
- data/app/controllers/users_controller.rb +5 -3
- data/app/models/datastreams/file_content_datastream.rb +2 -53
- data/app/views/batch/_metadata.html.erb +0 -1
- data/app/views/batch_edits/_metadata.html.erb +0 -1
- data/app/views/batch_edits/edit.html.erb +0 -1
- data/app/views/dashboard/_facet_pagination.html.erb +20 -39
- data/app/views/dashboard/_index_partials/_thumbnail_display.html.erb +1 -1
- data/app/views/dashboard/facet.html.erb +29 -34
- data/app/views/generic_files/_descriptions.html.erb +0 -1
- data/app/views/generic_files/_groups_description.html.erb +5 -0
- data/app/views/generic_files/_multiple_upload.html.erb +135 -0
- data/app/views/generic_files/_permission.html.erb +2 -5
- data/app/views/generic_files/_versioning.html.erb +0 -1
- data/app/views/generic_files/edit.html.erb +0 -3
- data/app/views/generic_files/new.html.erb +2 -138
- data/app/views/layouts/hydra-head.html.erb +1 -0
- data/app/views/users/index.html.erb +6 -4
- data/config/locales/sufia.en.yml +2 -0
- data/lib/sufia.rb +1 -1
- data/lib/sufia/file_content.rb +8 -0
- data/lib/sufia/file_content/extract_metadata.rb +53 -0
- data/lib/sufia/file_content/versions.rb +23 -0
- data/lib/sufia/files_controller_behavior.rb +17 -33
- data/lib/sufia/generic_file.rb +0 -8
- data/lib/sufia/generic_file/characterization.rb +0 -1
- data/lib/sufia/generic_file/thumbnail.rb +2 -4
- data/lib/sufia/jobs/unzip_job.rb +0 -1
- data/lib/sufia/user.rb +0 -3
- data/lib/sufia/version.rb +1 -1
- data/spec/controllers/batch_controller_spec.rb +11 -12
- data/spec/controllers/catalog_controller_spec.rb +2 -3
- data/spec/controllers/generic_files_controller_spec.rb +14 -16
- data/spec/controllers/single_use_link_controller_spec.rb +0 -1
- data/spec/models/batch_update_job_spec.rb +2 -3
- data/spec/models/checksum_audit_log_spec.rb +1 -2
- data/spec/models/file_content_datastream_spec.rb +1 -6
- data/spec/models/generic_file_spec.rb +2 -9
- data/spec/models/single_use_link_spec.rb +0 -2
- data/spec/models/transcode_video_job_spec.rb +1 -1
- data/spec/support/Gemfile +3 -5
- data/sufia.gemspec +2 -2
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.effect-highlight.js +50 -0
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.effect.js +1276 -0
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.position.js +498 -0
- metadata +26 -21
- data/app/assets/stylesheets/font-awesome-ie7.css +0 -645
- data/app/assets/stylesheets/font-awesome.css +0 -303
- data/app/views/catalog/_facet_pagination.html.erb +0 -28
- data/app/views/catalog/facet.html.erb +0 -27
- data/public/robots.txt +0 -4
- 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
|
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
@@ -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
|
+
|