manager-view.js 1.64 KB
$(function() {
  $('#vocabulary-select').change(function() {
    $('#user-privileges input[type=checkbox]').prop('checked', false);
    $.ajaxJSON({
      method: 'get',
      url: ajax_get_privileges,
      data: {name: $(this).value()},
      callback: function(data) {
        $.each(data.viewers, function(i, id) {
          $('#view-'+id).prop('checked', true);
        });
        $.each(data.editors, function(i, id) {
          $('#change-'+id).prop('checked', true);
        });
        $.each(data.managers, function(i, id) {
          $('#manage-'+id).prop('checked', true);
        });
      }
    });
  });
  $('#add-vocabulary').click(function() {
    var name = $('#new-vocabulary').value();
    $('#new-vocabulary').val('');
    $.ajaxJSON({
      method: 'post',
      url: ajax_add_vocabulary,
      data: {name: name},
      callback: function() {
        var option = $('<option/>').text(name).val(name);
        $('#vocabulary-select').append(option);
      }
    });
  });
  $('#user-privileges input[type=checkbox]').change(function() {
    var $t = $(this),
      id = this.id.split('-')[1],
      type = this.id.split('-')[0],
      name = $('#vocabulary-select').value();
    $.ajaxJSON({
      method: 'post',
      url: ajax_set_privilege,
      data: {
        name: name,
        id: id,
        type: type,
        set: $t.is(':checked')
      }
    });
    if (type == 'change' && $t.is(':checked') && ! $('#view-'+id).is(':checked')) {
      $('#view-'+id).prop('checked', true).change();
    }
    if (type == 'view' && ! $t.is(':checked') && $('#change-'+id).is(':checked')) {
      $('#change-'+id).prop('checked', false).change();
    }
  });
});