github.com/Azareal/Gosora@v0.0.0-20210729070923-553e66b59003/pubnot/trumbowyg/plugins/base64/trumbowyg.base64.js (about)

     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  
     9  (function ($) {
    10      'use strict';
    11  
    12      var isSupported = function () {
    13          return typeof FileReader !== 'undefined';
    14      };
    15  
    16      var isValidImage = function (type) {
    17          return /^data:image\/[a-z]?/i.test(type);
    18      };
    19  
    20      $.extend(true, $.trumbowyg, {
    21          langs: {
    22              // jshint camelcase:false
    23              en: {
    24                  base64: 'Image as base64',
    25                  file: 'File',
    26                  errFileReaderNotSupported: 'FileReader is not supported by your browser.',
    27                  errInvalidImage: 'Invalid image file.'
    28              },
    29              fr: {
    30                  base64: 'Image en base64',
    31                  file: 'Fichier'
    32              },
    33              cs: {
    34                  base64: 'Vložit obrázek',
    35                  file: 'Soubor'
    36              },
    37              zh_cn: {
    38                  base64: '图片(Base64编码)',
    39                  file: '文件'
    40              },
    41              nl: {
    42                  errFileReaderNotSupported: 'Uw browser ondersteunt deze functionaliteit niet.',
    43                  errInvalidImage: 'De gekozen afbeelding is ongeldig.'
    44              },
    45              ru: {
    46                  base64: 'Изображение как код в base64',
    47                  file: 'Файл',
    48                  errFileReaderNotSupported: 'FileReader не поддерживается вашим браузером.',
    49                  errInvalidImage: 'Недопустимый файл изображения.'
    50              },
    51              ja: {
    52                  base64: '画像 (Base64形式)',
    53                  file: 'ファイル',
    54                  errFileReaderNotSupported: 'あなたのブラウザーはFileReaderをサポートしていません',
    55                  errInvalidImage: '画像形式が正しくありません'
    56              }
    57          },
    58          // jshint camelcase:true
    59  
    60          plugins: {
    61              base64: {
    62                  shouldInit: isSupported,
    63                  init: function (trumbowyg) {
    64                      var btnDef = {
    65                          isSupported: isSupported,
    66                          fn: function () {
    67                              trumbowyg.saveRange();
    68  
    69                              var file;
    70                              var $modal = trumbowyg.openModalInsert(
    71                                  // Title
    72                                  trumbowyg.lang.base64,
    73  
    74                                  // Fields
    75                                  {
    76                                      file: {
    77                                          type: 'file',
    78                                          required: true,
    79                                          attributes: {
    80                                              accept: 'image/*'
    81                                          }
    82                                      },
    83                                      alt: {
    84                                          label: 'description',
    85                                          value: trumbowyg.getRangeText()
    86                                      }
    87                                  },
    88  
    89                                  // Callback
    90                                  function (values) {
    91                                      var fReader = new FileReader();
    92  
    93                                      fReader.onloadend = function (e) {
    94                                          if (isValidImage(e.target.result)) {
    95                                              trumbowyg.execCmd('insertImage', fReader.result);
    96                                              $(['img[src="', fReader.result, '"]:not([alt])'].join(''), trumbowyg.$box).attr('alt', values.alt);
    97                                              trumbowyg.closeModal();
    98                                          } else {
    99                                              trumbowyg.addErrorOnModalField(
   100                                                  $('input[type=file]', $modal),
   101                                                  trumbowyg.lang.errInvalidImage
   102                                              );
   103                                          }
   104                                      };
   105  
   106                                      fReader.readAsDataURL(file);
   107                                  }
   108                              );
   109  
   110                              $('input[type=file]').on('change', function (e) {
   111                                  file = e.target.files[0];
   112                              });
   113                          }
   114                      };
   115  
   116                      trumbowyg.addBtnDef('base64', btnDef);
   117                  }
   118              }
   119          }
   120      });
   121  })(jQuery);