main.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. /*------------------------------------------------------------------------------------------------------------------------
  2. @package: Arkiwi Upload
  3. @author: cek
  4. @www: arkiwi.org
  5. @copyright: COPYRIGHT 25 cek
  6. @license: MIT
  7. =============================================================================
  8. Filename: main.js
  9. =============================================================================
  10. /*------------------------------------------------------------------------------------------------------------------------*/
  11. var arkiwi;
  12. var documentType;
  13. var documentValue;
  14. function supportAjaxUploadWithProgress() {
  15. return supportFileAPI() && supportAjaxUploadProgressEvents();
  16. function supportFileAPI() {
  17. var fi = document.createElement('INPUT');
  18. fi.type = 'file';
  19. return 'files' in fi;
  20. };
  21. function supportAjaxUploadProgressEvents() {
  22. var xhr = new XMLHttpRequest();
  23. return !!(xhr && ('upload' in xhr) && ('onprogress' in xhr.upload));
  24. };
  25. }
  26. function initializeUpload(endpoint) {
  27. if (!supportAjaxUploadWithProgress()) {
  28. var body = $('body');
  29. body.empty();
  30. body.append('<p>HTML 5 upload NOT supported by your browser</p>');
  31. } else {
  32. arkiwi = new ARKIWI.Uploader(endpoint);
  33. documentType = $('#document-type').val();
  34. documentValue = $('#document-value').val();
  35. }
  36. $('input[id=hiddenfileinput]').bind('change', function () {
  37. fileInputUpdate(this.files);
  38. });
  39. };
  40. function initializeEdit(endpoint) {
  41. arkiwi = new ARKIWI.Uploader(endpoint);
  42. documentType = $('#document-type').val();
  43. documentValue = $('#document-value').val();
  44. arkiwi.listMetadata(documentValue, function (result) {
  45. var metadataContainer = $('#metadata_container');
  46. for (let i = 0; i < result.length; i++) {
  47. var metadata = result[i];
  48. metadataContainer.append('<div class="metadata"><span class="metadata_name">' + metadata.name + '</span><input class="metadata_value" value="' + metadata.value + '"/><button type="button" id="rem-button" onclick="$(this).parent().remove();">X</button></div>');
  49. }
  50. //activate buttons
  51. $('#confirm-button').prop("disabled", false);
  52. $('#confirm-button').bind('click', function (e) {
  53. $('#confirm-button').prop("disabled", true);
  54. $('#add-button').prop("disabled", true);
  55. uploadMetadata();
  56. e.preventDefault();
  57. });
  58. $('#add-button').prop("disabled", false);
  59. $('#add-button').bind('click', function (e) {
  60. metadataContainer.append('<div class="metadata"><input class="metadata_name"/><input class="metadata_value"/><button type="button" id="rem-button" onclick="$(this).parent().remove();">X</button></div>');
  61. e.preventDefault();
  62. });
  63. })
  64. };
  65. function initializeCreateDirectory(endpoint) {
  66. arkiwi = new ARKIWI.Uploader(endpoint);
  67. $('#confirm-button').click(function(e) {
  68. createDirectory();
  69. e.preventDefault();
  70. });
  71. $('#confirm-button').prop("disabled", false);
  72. };
  73. function createDirectory() {
  74. documentType = $('#document-type').val();
  75. documentValue = $('#document-value').val();
  76. newDirectory = $('#mkdirInput').val();
  77. arkiwi.createDirectory(documentValue, newDirectory, function (result) {
  78. if (result == 'true') {
  79. $('#file-form').detach();
  80. $('body').append('<span>messaggio di grande complimentazione o redirect alla pagina di arkiwi con la cartella appena creata, CRI vedi tu quando fai grafica. Probabilmente serve che io ti dia i mezzi per costriure l\'url</span>')
  81. }
  82. else {
  83. $('#file-form').detach();
  84. $('body').append('<span>messaggio di grande cordoglio, CRI vedi tu quando fai grafica</span>')
  85. }
  86. });
  87. };
  88. function uploadMetadata() {
  89. var metadataArray = Array();
  90. var metadataList = $('.metadata');
  91. for (let i = 0; i < metadataList.length; i++) {
  92. var metadataObj = {};
  93. var metadata = metadataList[i];
  94. metadataObj.name = $(metadata).find('.metadata_name').val() || $(metadata).find('.metadata_name').text();
  95. metadataObj.value = $(metadata).find('.metadata_value').val();
  96. metadataArray.push(metadataObj);
  97. }
  98. var jsonString = JSON.stringify(metadataArray);
  99. arkiwi.modifyMetadata(documentValue, jsonString, function (result) {
  100. var metadataContainer = $('#metadata_container');
  101. var buttonsContainer = $('#buttons_container');
  102. metadataContainer.empty();
  103. buttonsContainer.empty();
  104. metadataContainer.append('<div>done</div>')
  105. });
  106. }
  107. function selectFile(e) {
  108. $('input[id=hiddenfileinput]').click();
  109. e.preventDefault();
  110. };
  111. function fileInputUpdate(files) {
  112. //Gestiamo solo un file, non molteplici
  113. var file = files[0];
  114. $('#file-name').text(file.name);
  115. $('#upload-button').prop("disabled", false);
  116. var loaded = 0;
  117. var total = file.size;
  118. var callbacks = {
  119. load: function (evt) {
  120. var response = JSON.parse(evt.target.response);
  121. if (response.success) {
  122. var item64 = response.item64;
  123. var redirect = window.location.protocol + "//" + window.location.host + "/arav_up_client/item64/" + item64 + "/edit"
  124. window.location.href = redirect;
  125. }
  126. },
  127. error: function (evt) {
  128. },
  129. progress: function (evt) {
  130. if (evt.lengthComputable) {
  131. var progress = Math.ceil(((loaded + evt.loaded) / total) * 100);
  132. progress = (progress > 100)? 100 : progress;
  133. $("#dvProgressPrcent").html(progress + "%");
  134. }
  135. }
  136. };
  137. $('#upload-button').bind('click', function (e) {
  138. switch (documentType) {
  139. case 'item64':
  140. arkiwi.upload(file, documentValue, callbacks);
  141. break;
  142. case 'item':
  143. alert('"item" not implemented.')
  144. break;
  145. case 'path':
  146. alert('"path" not implemented.')
  147. break;
  148. case 'path64':
  149. alert('"path64" not implemented.')
  150. break;
  151. }
  152. e.preventDefault();
  153. });
  154. };