LibreCat/LibreCat

View on GitHub
views/backend/generator/fields/modal_fileupload.tt

Summary

Maintainability
Test Coverage
<div id="upload_file" class="modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">

  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        <h3>[% h.loc("forms.${type}.field.dropzone.edit_modal.heading") %]</h3>
      </div>

      <form enctype="multipart/form-data" name="upLoad" id="upLoad">

      <div class="modal-body">
        <input type="hidden" name="file_id" id="id_file_id" value="" />
        <input type="hidden" name="tempid" id="id_temp_id" value="" />
        <input type="hidden" name="cancel" value="" />

        <h4>[% h.loc("forms.${type}.field.dropzone.edit_modal.heading_file") %]</h4>
        <div class="form-group">
          <label class="text" id="fileNameTag">
            [% h.loc("forms.${type}.field.dropzone.edit_modal.current_file") %]
            <input type="text" name="fileName" id="id_fileName" value="" readonly="readonly" class="form-control"/>
          </label>
        </div>

        <div class="form-group">
          <strong>[% h.loc("forms.${type}.field.dropzone.edit_modal.relation") %]</strong><br />
          <select name="relation" class="form-control" id="id_select_relation">
            <option value="main_file"[% IF !relation %] selected="selected"[% END %]>[% lf.relation.main_file.select %]</option>
            [% FOREACH rel IN h.config.lists.relations_file %]
              <option value="[% rel.relation | html %]"[% IF rel.relation == relation %] selected="selected"[% END %]>[% lf.relation.${rel.relation}.select %]</option>
            [% END %]
          </select>
        </div>

        <h4>Access Level</h4>
        <div class="form-group col-md-offset-1">
          <script type="text/javascript">
          <!--
          function oamode(f, flag) {
            if (flag) {
              f.accessEmbargo.checked=false;
              f.accessEmbargo.disabled=true;
              f.embargo.disabled=true;
            } else {
              f.accessEmbargo.disabled=false;
            }
          }
          //-->
          </script>

          <label class="radio">
            <input type="radio" name="accessLevel" id="id_accessLevel_openAccess" value="open_access" onclick="oamode(this.form, true);"/> [% h.loc("forms.${type}.field.dropzone.edit_modal.access.open_access") %]
          </label>
          <label class="radio">
            <input type="radio" name="accessLevel" id="id_accessLevel_local" value="local" onclick="oamode(this.form,false);" /> [% h.loc("forms.${type}.field.dropzone.edit_modal.access.local") %]
          </label>
          <label class="radio">
            <input type="radio" name="accessLevel" id="id_accessLevel_admin" value="closed" onclick="oamode(this.form,false);" /> [% h.loc("forms.${type}.field.dropzone.edit_modal.access.closed") %]
          </label>
          <label class="radio">
            <input type="radio" name="accessLevel" id="id_accessLevel_request" value="request" onclick="oamode(this.form,false);" /> [% h.loc("forms.${type}.field.dropzone.edit_modal.access.request_a_copy") %]
          </label>
          <input type="email" class="form-control" name="rac_email" id="id_rac_email" placeholder="[% h.loc("forms.${type}.field.dropzone.edit_modal.access.rac_email") | html %]" value="">
          <label class="checkbox control-label">
            <input type="checkbox" name="accessEmbargo" id="id_accessEmbargo" value="1" />[% h.loc("forms.${type}.field.dropzone.edit_modal.access.embargo") %]<br />
          </label>
          <select id="id_embargo_to" name="embargo_to" class="form-control">
            <option value="open_access">[% h.loc("forms.${type}.field.dropzone.edit_modal.access.open_access") %]</option>
            <option value="local">[% h.loc("forms.${type}.field.dropzone.edit_modal.access.local") %]</option>
          </select>
          <input type="text" class="form-control" name="embargo" id="id_embargo" placeholder="YYYY-MM-DD" value="" size="10" maxlength="10">
        </div>

        <h4>[% h.loc("forms.${type}.field.dropzone.edit_modal.additional_information.heading") %]</h4>
        <div class="form-group">
          <strong>[% h.loc("forms.${type}.field.dropzone.edit_modal.additional_information.title") %]</strong><br />
          <input type="text" name="title" id="id_fileTitle" value="" class="form-control" />
        </div>

        <div class="form-group">
          <strong>[% h.loc("forms.${type}.field.dropzone.edit_modal.additional_information.description") %]</strong><br />
          <textarea name="description" id="id_fileDescription" class="form-control" rows="3">[% description %]</textarea>
        </div>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-success" name="finalSubmit" id="fileSubmit"><span class="fa fa-check"></span> [% h.loc("forms.button.save") %]</button>
        <button type="button" class="btn btn-warning" data-dismiss="modal" aria-hidden="true"><span class="fa fa-times"></span> [% h.loc("forms.button.cancel") %]</button>
      </div>
      </form>
    </div>
  </div>
</div>

<script>

$('#fileSubmit').click( function() {
  var data            = Object();
  data.file_id        = $('#id_file_id').val();
  data.tempid         = $('#id_temp_id').val();
  data.file_name      = $('#id_fileName').val();
  data.relation       = $('#id_select_relation').val();
  data.title          = $('#id_fileTitle').val();
  data.description    = $('#id_fileDescription').val();
  data.date_updated   = 'now';
  data.rac_email      = $('#id_rac_email').val();

  // Open access
  if ($('#id_accessLevel_openAccess').is(':checked')) {
    data.access_level   = 'open_access';
  }
  // Local access
  else if ($('#id_accessLevel_local').is(':checked') ){
    data.access_level   = 'local';
  }
  // Closed access
  else if ($('#id_accessLevel_admin').is(':checked')) {
    data.access_level   = 'closed';
  }
  // Request a copy
  else if ($('#id_accessLevel_request').is(':checked')) {
    data.access_level = 'request';
    if ($('#id_rac_email').val()){
      data.rac_email = $('#id_rac_email').val();
    }
  }

  // Add an embargo?
  if ($('#id_embargo').val() && $('#id_embargo').val().match(/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/) && $('#id_accessEmbargo').is(':checked')) {
    data.embargo        = $('#id_embargo').val();
  }
  if ($('#id_embargo_to').val() && data.embargo) {
    data.embargo_to     = $('#id_embargo_to').val();
  }

  var use_file_id = data.file_id ? data.file_id : data.tempid;
  var namediv     = $('#' + use_file_id + ' div.padded');

  namediv.html('');
  namediv.html('<span class="fa fa-file text-muted"></span> <span class="text-muted"><strong>' + data.file_name + '</strong></span>');

  var accessLevel;

  // Open access
  if(data.access_level == "open_access"){
    accessLevel = "[% lf.$type.field.dropzone.access.open_access %]";
  }
  // Local access
  else if(data.access_level == "local"){
    accessLevel = "[% lf.$type.field.dropzone.access.local %]";

    if (data.embargo) {
      accessLevel += "<br />([% lf.$type.field.dropzone.access.until %] " +
                     data.embargo +
                     ")";
    }
  }
  // Closed access
  else if(data.access_level == "closed"){
    accessLevel = "[% lf.$type.field.dropzone.access.closed %]";

    if (data.embargo) {
      accessLevel += "<br />([% lf.$type.field.dropzone.access.until %] " +
                     data.embargo +
                     ")";
    }
  }

  // rac
  else if(data.access_level == "request"){
    accessLevel = "[% lf.$type.field.dropzone.access.request_a_copy %]";

    if (data.embargo) {
      accessLevel += "<br />([% lf.$type.field.dropzone.access.until %] " +
                     data.embargo +
                     ")";
    }
  }

  var rac = "";
  if(data.access_level == 'request'){
    if(data.rac_email){
      rac += " (" + data.rac_email + ")";
    }
    rac += "</div>";
  }

  $('#access_'   + use_file_id).html(accessLevel);
  $('#updated_'  + use_file_id).html(data.date_updated);
  $('#creator_'  + use_file_id).html(data.creator);
  $('#relation_' + use_file_id).html(data.relation);
  $('#file_'     + use_file_id).val(JSON.stringify(data));
  if(data.access_level != 'request'){
    $('#rac_' + use_file_id).html("");
  }
  else{
    $('#rac_' + use_file_id).html(rac);
  }


  $('#upLoad')[0].reset();
  $('#upLoad').find('input[type="hidden"]').val('');
  $('#upload_file').modal('hide');

  return false;
});

$('#id_accessEmbargo').bind('change', function(){
  if($(this).is(':checked')){
    $('#id_embargo').prop('disabled',false);
  }
  else {
    $('#id_embargo').prop('disabled',true);
  }
});

$('*[data-dismiss="modal"]').click(function(){
    $('#upLoad')[0].reset();
    $('#upLoad').find('input[type="hidden"]').val('');
    $('#upload_file').modal('hide');
});

</script>