1
0

trumbowyg.base64.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. /* ===========================================================
  2. * trumbowyg.base64.js v1.0
  3. * Base64 plugin for Trumbowyg
  4. * http://alex-d.github.com/Trumbowyg
  5. * ===========================================================
  6. * Author : Cyril Biencourt (lizardK)
  7. */
  8. (function ($) {
  9. 'use strict';
  10. var isSupported = function () {
  11. return typeof FileReader !== 'undefined';
  12. };
  13. var isValidImage = function (type) {
  14. return /^data:image\/[a-z]?/i.test(type);
  15. };
  16. $.extend(true, $.trumbowyg, {
  17. langs: {
  18. // jshint camelcase:false
  19. en: {
  20. base64: 'Image as base64',
  21. file: 'File',
  22. errFileReaderNotSupported: 'FileReader is not supported by your browser.',
  23. errInvalidImage: 'Invalid image file.'
  24. },
  25. cs: {
  26. base64: 'Vložit obrázek',
  27. file: 'Soubor'
  28. },
  29. da: {
  30. base64: 'Billede som base64',
  31. file: 'Fil',
  32. errFileReaderNotSupported: 'FileReader er ikke understøttet af din browser.',
  33. errInvalidImage: 'Ugyldig billedfil.'
  34. },
  35. fr: {
  36. base64: 'Image en base64',
  37. file: 'Fichier'
  38. },
  39. hu: {
  40. base64: 'Kép beszúrás inline',
  41. file: 'Fájl',
  42. errFileReaderNotSupported: 'Ez a böngésző nem támogatja a FileReader funkciót.',
  43. errInvalidImage: 'Érvénytelen képfájl.'
  44. },
  45. ja: {
  46. base64: '画像 (Base64形式)',
  47. file: 'ファイル',
  48. errFileReaderNotSupported: 'あなたのブラウザーはFileReaderをサポートしていません',
  49. errInvalidImage: '画像形式が正しくありません'
  50. },
  51. ko: {
  52. base64: '그림 넣기(base64)',
  53. file: '파일',
  54. errFileReaderNotSupported: 'FileReader가 현재 브라우저를 지원하지 않습니다.',
  55. errInvalidImage: '유효하지 않은 파일'
  56. },
  57. nl: {
  58. base64: 'Afbeelding inline',
  59. file: 'Bestand',
  60. errFileReaderNotSupported: 'Uw browser ondersteunt deze functionaliteit niet.',
  61. errInvalidImage: 'De gekozen afbeelding is ongeldig.'
  62. },
  63. pt_br: {
  64. base64: 'Imagem em base64',
  65. file: 'Arquivo',
  66. errFileReaderNotSupported: 'FileReader não é suportado pelo seu navegador.',
  67. errInvalidImage: 'Arquivo de imagem inválido.'
  68. },
  69. ru: {
  70. base64: 'Изображение как код в base64',
  71. file: 'Файл',
  72. errFileReaderNotSupported: 'FileReader не поддерживается вашим браузером.',
  73. errInvalidImage: 'Недопустимый файл изображения.'
  74. },
  75. tr: {
  76. base64: 'Base64 olarak resim',
  77. file: 'Dosya',
  78. errFileReaderNotSupported: 'FileReader tarayıcınız tarafından desteklenmiyor.',
  79. errInvalidImage: 'Geçersiz resim dosyası.'
  80. },
  81. zh_cn: {
  82. base64: '图片(Base64编码)',
  83. file: '文件'
  84. },
  85. zh_tw: {
  86. base64: '圖片(base64編碼)',
  87. file: '檔案',
  88. errFileReaderNotSupported: '你的瀏覽器不支援FileReader',
  89. errInvalidImage: '不正確的檔案格式'
  90. },
  91. },
  92. // jshint camelcase:true
  93. plugins: {
  94. base64: {
  95. shouldInit: isSupported,
  96. init: function (trumbowyg) {
  97. var btnDef = {
  98. isSupported: isSupported,
  99. fn: function () {
  100. trumbowyg.saveRange();
  101. var file;
  102. var $modal = trumbowyg.openModalInsert(
  103. // Title
  104. trumbowyg.lang.base64,
  105. // Fields
  106. {
  107. file: {
  108. type: 'file',
  109. required: true,
  110. attributes: {
  111. accept: 'image/*'
  112. }
  113. },
  114. alt: {
  115. label: 'description',
  116. value: trumbowyg.getRangeText()
  117. }
  118. },
  119. // Callback
  120. function (values) {
  121. var fReader = new FileReader();
  122. fReader.onloadend = function (e) {
  123. if (isValidImage(e.target.result)) {
  124. trumbowyg.execCmd('insertImage', fReader.result, false, true);
  125. $(['img[src="', fReader.result, '"]:not([alt])'].join(''), trumbowyg.$box).attr('alt', values.alt);
  126. trumbowyg.closeModal();
  127. } else {
  128. trumbowyg.addErrorOnModalField(
  129. $('input[type=file]', $modal),
  130. trumbowyg.lang.errInvalidImage
  131. );
  132. }
  133. };
  134. fReader.readAsDataURL(file);
  135. }
  136. );
  137. $('input[type=file]').on('change', function (e) {
  138. file = e.target.files[0];
  139. });
  140. }
  141. };
  142. trumbowyg.addBtnDef('base64', btnDef);
  143. }
  144. }
  145. }
  146. });
  147. })(jQuery);