openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

trumbowyg.base64.js (5122B)


      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                 base64: 'Afbeelding inline',
     43                 file: 'Bestand',
     44                 errFileReaderNotSupported: 'Uw browser ondersteunt deze functionaliteit niet.',
     45                 errInvalidImage: 'De gekozen afbeelding is ongeldig.'
     46             },
     47             ru: {
     48                 base64: 'Изображение как код в base64',
     49                 file: 'Файл',
     50                 errFileReaderNotSupported: 'FileReader не поддерживается вашим браузером.',
     51                 errInvalidImage: 'Недопустимый файл изображения.'
     52             },
     53             ja: {
     54                 base64: '画像 (Base64形式)',
     55                 file: 'ファイル',
     56                 errFileReaderNotSupported: 'あなたのブラウザーはFileReaderをサポートしていません',
     57                 errInvalidImage: '画像形式が正しくありません'
     58             },
     59             tr: {
     60                 base64: 'Base64 olarak resim',
     61                 file: 'Dosya',
     62                 errFileReaderNotSupported: 'FileReader tarayıcınız tarafından desteklenmiyor.',
     63                 errInvalidImage: 'Geçersiz resim dosyası.'
     64             }
     65         },
     66         // jshint camelcase:true
     67 
     68         plugins: {
     69             base64: {
     70                 shouldInit: isSupported,
     71                 init: function (trumbowyg) {
     72                     var btnDef = {
     73                         isSupported: isSupported,
     74                         fn: function () {
     75                             trumbowyg.saveRange();
     76 
     77                             var file;
     78                             var $modal = trumbowyg.openModalInsert(
     79                                 // Title
     80                                 trumbowyg.lang.base64,
     81 
     82                                 // Fields
     83                                 {
     84                                     file: {
     85                                         type: 'file',
     86                                         required: true,
     87                                         attributes: {
     88                                             accept: 'image/*'
     89                                         }
     90                                     },
     91                                     alt: {
     92                                         label: 'description',
     93                                         value: trumbowyg.getRangeText()
     94                                     }
     95                                 },
     96 
     97                                 // Callback
     98                                 function (values) {
     99                                     var fReader = new FileReader();
    100 
    101                                     fReader.onloadend = function (e) {
    102                                         if (isValidImage(e.target.result)) {
    103                                             trumbowyg.execCmd('insertImage', fReader.result);
    104                                             $(['img[src="', fReader.result, '"]:not([alt])'].join(''), trumbowyg.$box).attr('alt', values.alt);
    105                                             trumbowyg.closeModal();
    106                                         } else {
    107                                             trumbowyg.addErrorOnModalField(
    108                                                 $('input[type=file]', $modal),
    109                                                 trumbowyg.lang.errInvalidImage
    110                                             );
    111                                         }
    112                                     };
    113 
    114                                     fReader.readAsDataURL(file);
    115                                 }
    116                             );
    117 
    118                             $('input[type=file]').on('change', function (e) {
    119                                 file = e.target.files[0];
    120                             });
    121                         }
    122                     };
    123 
    124                     trumbowyg.addBtnDef('base64', btnDef);
    125                 }
    126             }
    127         }
    128     });
    129 })(jQuery);