trumbowyg.fontsize.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. (function ($) {
  2. 'use strict';
  3. $.extend(true, $.trumbowyg, {
  4. langs: {
  5. // jshint camelcase:false
  6. en: {
  7. fontsize: 'Font size',
  8. fontsizes: {
  9. 'x-small': 'Extra small',
  10. 'small': 'Small',
  11. 'medium': 'Regular',
  12. 'large': 'Large',
  13. 'x-large': 'Extra large',
  14. 'custom': 'Custom'
  15. },
  16. fontCustomSize: {
  17. title: 'Custom Font Size',
  18. label: 'Font Size',
  19. value: '48px'
  20. }
  21. },
  22. es: {
  23. fontsize: 'Tamaño de Fuente',
  24. fontsizes: {
  25. 'x-small': 'Extra pequeña',
  26. 'small': 'Pegueña',
  27. 'medium': 'Regular',
  28. 'large': 'Grande',
  29. 'x-large': 'Extra Grande',
  30. 'custom': 'Customizada'
  31. },
  32. fontCustomSize: {
  33. title: 'Tamaño de Fuente Customizada',
  34. label: 'Tamaño de Fuente',
  35. value: '48px'
  36. }
  37. },
  38. da: {
  39. fontsize: 'Skriftstørrelse',
  40. fontsizes: {
  41. 'x-small': 'Ekstra lille',
  42. 'small': 'Lille',
  43. 'medium': 'Normal',
  44. 'large': 'Stor',
  45. 'x-large': 'Ekstra stor',
  46. 'custom': 'Brugerdefineret'
  47. }
  48. },
  49. fr: {
  50. fontsize: 'Taille de la police',
  51. fontsizes: {
  52. 'x-small': 'Très petit',
  53. 'small': 'Petit',
  54. 'medium': 'Normal',
  55. 'large': 'Grand',
  56. 'x-large': 'Très grand',
  57. 'custom': 'Douane'
  58. }
  59. },
  60. de: {
  61. fontsize: 'Font size',
  62. fontsizes: {
  63. 'x-small': 'Sehr klein',
  64. 'small': 'Klein',
  65. 'medium': 'Normal',
  66. 'large': 'Groß',
  67. 'x-large': 'Sehr groß',
  68. 'custom': 'Benutzerdefiniert'
  69. },
  70. fontCustomSize: {
  71. title: 'Benutzerdefinierte Schriftgröße',
  72. label: 'Schriftgröße',
  73. value: '48px'
  74. }
  75. },
  76. nl: {
  77. fontsize: 'Lettergrootte',
  78. fontsizes: {
  79. 'x-small': 'Extra klein',
  80. 'small': 'Klein',
  81. 'medium': 'Normaal',
  82. 'large': 'Groot',
  83. 'x-large': 'Extra groot',
  84. 'custom': 'Tilpasset'
  85. }
  86. },
  87. tr: {
  88. fontsize: 'Yazı Boyutu',
  89. fontsizes: {
  90. 'x-small': 'Çok Küçük',
  91. 'small': 'Küçük',
  92. 'medium': 'Normal',
  93. 'large': 'Büyük',
  94. 'x-large': 'Çok Büyük',
  95. 'custom': 'Görenek'
  96. }
  97. },
  98. zh_tw: {
  99. fontsize: '字體大小',
  100. fontsizes: {
  101. 'x-small': '最小',
  102. 'small': '小',
  103. 'medium': '中',
  104. 'large': '大',
  105. 'x-large': '最大',
  106. 'custom': '自訂大小',
  107. },
  108. fontCustomSize: {
  109. title: '自訂義字體大小',
  110. label: '字體大小',
  111. value: '48px'
  112. }
  113. }
  114. }
  115. });
  116. // jshint camelcase:true
  117. // Add dropdown with font sizes
  118. $.extend(true, $.trumbowyg, {
  119. plugins: {
  120. fontsize: {
  121. init: function (trumbowyg) {
  122. trumbowyg.addBtnDef('fontsize', {
  123. dropdown: buildDropdown(trumbowyg)
  124. });
  125. }
  126. }
  127. }
  128. });
  129. function buildDropdown(trumbowyg) {
  130. var dropdown = [];
  131. var sizes = ['x-small', 'small', 'medium', 'large', 'x-large'];
  132. $.each(sizes, function (index, size) {
  133. trumbowyg.addBtnDef('fontsize_' + size, {
  134. text: '<span style="font-size: ' + size + ';">' + trumbowyg.lang.fontsizes[size] + '</span>',
  135. hasIcon: false,
  136. fn: function () {
  137. trumbowyg.execCmd('fontSize', index + 1, true);
  138. }
  139. });
  140. dropdown.push('fontsize_' + size);
  141. });
  142. var freeSizeButtonName = 'fontsize_custom',
  143. freeSizeBtnDef = {
  144. fn: function () {
  145. trumbowyg.openModalInsert(trumbowyg.lang.fontCustomSize.title,
  146. {
  147. size: {
  148. label: trumbowyg.lang.fontCustomSize.label,
  149. value: trumbowyg.lang.fontCustomSize.value
  150. }
  151. },
  152. function (values) {
  153. var text = trumbowyg.range.startContainer.parentElement;
  154. var selectedText = trumbowyg.getRangeText();
  155. if ($(text).html() === selectedText) {
  156. $(text).css('font-size', values.size);
  157. } else {
  158. trumbowyg.range.deleteContents();
  159. var html = '<span style="font-size: ' + values.size + ';">' + selectedText + '</span>';
  160. var node = $(html)[0];
  161. trumbowyg.range.insertNode(node);
  162. }
  163. trumbowyg.saveRange();
  164. return true;
  165. }
  166. );
  167. },
  168. text: '<span style="font-size: medium;">' + trumbowyg.lang.fontsizes.custom + '</span>',
  169. hasIcon: false
  170. };
  171. trumbowyg.addBtnDef(freeSizeButtonName, freeSizeBtnDef);
  172. dropdown.push(freeSizeButtonName);
  173. return dropdown;
  174. }
  175. })(jQuery);