buildform.html.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php
  2. $maxUploadSize = strtoupper(ini_get('upload_max_filesize'));
  3. js::set('dangerExtensions', ',' . $this->config->file->dangers . ',');
  4. js::set('maxUploadSize', $maxUploadSize);
  5. ?>
  6. <div class="file-input-list" data-append-way="before" data-filedName="<?php echo $filesName;?>" name="<?php echo $filesName;?>[]" data-provide="fileInputList" data-each-file-max-size="<?php echo $maxUploadSize; ?>" data-file-size-error="<?php echo sprintf($lang->file->errorFileSize, $maxUploadSize); ?>">
  7. <div class="file-input">
  8. <div class="file-input-edit input-group">
  9. <div class="input-group-cell"><i class="icon icon-paper-clip text-muted"></i></div>
  10. <input type="text" name="<?php echo $labelsName;?>[]" class="form-control file-editbox" placeholder="<?php echo $lang->file->title;?>">
  11. <div class="input-group-btn">
  12. <button type="button" class="btn btn-success file-name-confirm"><i class="icon icon-check"></i></button>
  13. <button type="button" class="btn btn-gray file-name-cancel"><i class="icon icon-close"></i></button>
  14. </div>
  15. </div>
  16. <div class="file-input-normal input-group">
  17. <div class="input-group-cell"><i class="icon icon-paper-clip text-muted"></i></div>
  18. <div class="input-group-cell">
  19. <span class="file-title"></span>
  20. <small class="file-size muted"></small>
  21. </div>
  22. <div class="input-group-btn">
  23. <button type="button" class="fileAction btn btn-link file-input-rename" title="<?php echo $lang->file->edit;?>"><i class='icon icon-pencil-alt'></i></button>
  24. <button type="button" class="fileAction btn btn-link file-input-delete" title="<?php echo $lang->delete;?>"><i class='icon icon-trash'></i></button>
  25. </div>
  26. </div>
  27. <input type="file" name="<?php echo $filesName;?>[]" onchange="checkDangerExtension(this)" />
  28. </div>
  29. <button type="button" class="btn btn-link file-input-btn"><i class="icon icon-plus"></i> <?php echo $lang->file->addFile;?></button> <small class="muted"><?php echo sprintf($lang->file->maxUploadSize, $maxUploadSize);?></small>
  30. <input type="file" id="file-input-multiple" multiple />
  31. </div>
  32. <script>
  33. maxUploadSize = unitConversion(maxUploadSize);
  34. /**
  35. * Conversion unit to byte.
  36. *
  37. * @param string $maxUploadSize
  38. * @access public
  39. * @return int
  40. */
  41. function unitConversion(maxUploadSize)
  42. {
  43. var sizeOfString = maxUploadSize;
  44. if(sizeOfString.indexOf('K') != -1) maxUploadSize = parseFloat(maxUploadSize) * 1024;
  45. if(sizeOfString.indexOf('M') != -1) maxUploadSize = parseFloat(maxUploadSize) * 1024 * 1024;
  46. if(sizeOfString.indexOf('G') != -1) maxUploadSize = parseFloat(maxUploadSize) * 1024 * 1024 * 1024;
  47. return parseFloat(maxUploadSize);
  48. }
  49. /**
  50. * Get all files total size.
  51. *
  52. * @return int
  53. */
  54. function getTotalSize()
  55. {
  56. var totalSize = 0;
  57. $('input[type="file"]').each(function(index, element)
  58. {
  59. if (element.multiple) return;
  60. if (!element.files) return;
  61. if (!element.files[0]) return;
  62. totalSize += element.files[0].size;
  63. });
  64. return totalSize;
  65. }
  66. /**
  67. * Check danger extension and file size.
  68. *
  69. * TODO Rename.
  70. * @param object $file
  71. * @access public
  72. * @return void
  73. */
  74. function checkDangerExtension(file)
  75. {
  76. var fileName = $(file).val();
  77. var index = fileName.lastIndexOf(".");
  78. var fileSize = $(file)[0].files[0].size;
  79. var totalSize = getTotalSize();
  80. if(index >= 0)
  81. {
  82. extension = fileName.substr(index + 1);
  83. if(dangerExtensions.lastIndexOf(',' + extension + ',') >= 0)
  84. {
  85. alert(<?php echo json_encode($this->lang->file->dangerFile);?>);
  86. $(file).val('');
  87. return false;
  88. }
  89. if(fileSize == 0)
  90. {
  91. alert(<?php echo json_encode($this->lang->file->fileContentEmpty);?>);
  92. $(file).val('');
  93. return false;
  94. }
  95. if(totalSize >= maxUploadSize)
  96. {
  97. alert(<?php echo json_encode(sprintf($lang->file->errorFileSize, $maxUploadSize));?>);
  98. $(file).val('');
  99. return false;
  100. }
  101. }
  102. }
  103. </script>
  104. <style>
  105. #file-input-multiple {display: none;}
  106. .file-input .file-editbox {max-width: 40%;}
  107. .file-input-list .input-group-btn {float: left}
  108. .fileAction {color: #0c64eb !important;}
  109. .backgroundColor {background: #eff5ff;}
  110. </style>