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

     1  /* ===========================================================
     2   * trumbowyg.table.js v1.2
     3   * Table plugin for Trumbowyg
     4   * http://alex-d.github.com/Trumbowyg
     5   * ===========================================================
     6   * Author : Lawrence Meckan
     7   *          Twitter : @absalomedia
     8   *          Website : absalom.biz
     9   */
    10  
    11  (function ($) {
    12      'use strict';
    13  
    14      var defaultOptions = {
    15          rows: 0,
    16          columns: 0,
    17          styler: ''
    18      };
    19  
    20      $.extend(true, $.trumbowyg, {
    21          langs: {
    22              en: {
    23                  table: 'Insert table',
    24                  tableAddRow: 'Add rows',
    25                  tableAddColumn: 'Add columns',
    26                  rows: 'Rows',
    27                  columns: 'Columns',
    28                  styler: 'Table class',
    29                  error: 'Error'
    30              },
    31              sk: {
    32                  table: 'Vytvoriť tabuľky',
    33                  tableAddRow: 'Pridať riadok',
    34                  tableAddColumn: 'Pridať stĺpec',
    35                  rows: 'Riadky',
    36                  columns: 'Stĺpce',
    37                  styler: 'Tabuľku triedy',
    38                  error: 'Chyba'
    39              },
    40              fr: {
    41                  table: 'Insérer un tableau',
    42                  tableAddRow: 'Ajouter des lignes',
    43                  tableAddColumn: 'Ajouter des colonnes',
    44                  rows: 'Lignes',
    45                  columns: 'Colonnes',
    46                  styler: 'Classes CSS sur la table',
    47                  error: 'Erreur'
    48              },
    49              cs: {
    50                  table: 'Vytvořit příkaz Table',
    51                  tableAddRow: 'Přidat řádek',
    52                  tableAddColumn: 'Přidat sloupec',
    53                  rows: 'Řádky',
    54                  columns: 'Sloupce',
    55                  styler: 'Tabulku třída',
    56                  error: 'Chyba'
    57              },
    58              ru: {
    59                  table: 'Вставить таблицу',
    60                  tableAddRow: 'Добавить строки',
    61                  tableAddColumn: 'Добавить столбцы',
    62                  rows: 'Строки',
    63                  columns: 'Столбцы',
    64                  styler: 'Имя CSS класса для таблицы',
    65                  error: 'Ошибка'
    66              },
    67              ja: {
    68                  table: '表の挿入',
    69                  tableAddRow: '行の追加',
    70                  tableAddColumn: '列の追加',
    71                  rows: '行',
    72                  columns: '列',
    73                  styler: '表のクラス',
    74                  error: 'エラー'
    75              }
    76          },
    77  
    78          plugins: {
    79              table: {
    80                  init: function (trumbowyg) {
    81                      trumbowyg.o.plugins.table = $.extend(true, {}, defaultOptions, trumbowyg.o.plugins.table || {});
    82  
    83                      var tableBuild = {
    84                          fn: function () {
    85                              trumbowyg.saveRange();
    86                              trumbowyg.openModalInsert(
    87                                  // Title
    88                                  trumbowyg.lang.table,
    89  
    90                                  // Fields
    91                                  {
    92                                      rows: {
    93                                          type: 'number',
    94                                          required: true
    95                                      },
    96                                      columns: {
    97                                          type: 'number',
    98                                          required: true
    99                                      },
   100                                      styler: {
   101                                          label: trumbowyg.lang.styler,
   102                                          type: 'text'
   103                                      }
   104                                  },
   105                                  function (v) { // v is value
   106                                      var tabler = $('<table></table>');
   107                                      if (v.styler.length !== 0) {
   108                                          tabler.addClass(v.styler);
   109                                      }
   110  
   111                                      for (var i = 0; i < v.rows; i += 1) {
   112                                          var row = $('<tr></tr>').appendTo(tabler);
   113                                          for (var j = 0; j < v.columns; j += 1) {
   114                                              $('<td></td>').appendTo(row);
   115                                          }
   116                                      }
   117  
   118                                      trumbowyg.range.deleteContents();
   119                                      trumbowyg.range.insertNode(tabler[0]);
   120                                      return true;
   121                                  });
   122                          }
   123                      };
   124  
   125                      var addRow = {
   126                          fn: function () {
   127                              trumbowyg.saveRange();
   128                              var rower = $('<tr></tr>');
   129                              trumbowyg.range.deleteContents();
   130                              trumbowyg.range.insertNode(rower[0]);
   131                              return true;
   132  
   133                          }
   134                      };
   135  
   136                      var addColumn = {
   137                          fn: function () {
   138                              trumbowyg.saveRange();
   139                              var columner = $('<td></td>');
   140                              trumbowyg.range.deleteContents();
   141                              trumbowyg.range.insertNode(columner[0]);
   142                              return true;
   143  
   144                          }
   145                      };
   146  
   147                      trumbowyg.addBtnDef('table', tableBuild);
   148                      trumbowyg.addBtnDef('tableAddRow', addRow);
   149                      trumbowyg.addBtnDef('tableAddColumn', addColumn);
   150                  }
   151              }
   152          }
   153      });
   154  })(jQuery);