trumbowyg.insertaudio.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. /*/* ===========================================================
  2. * trumbowyg.insertaudio.js v1.0
  3. * InsertAudio plugin for Trumbowyg
  4. * http://alex-d.github.com/Trumbowyg
  5. * ===========================================================
  6. * Author : Adam Hess (AdamHess)
  7. */
  8. (function ($) {
  9. 'use strict';
  10. var insertAudioOptions = {
  11. src: {
  12. label: 'URL',
  13. required: true
  14. },
  15. autoplay: {
  16. label: 'AutoPlay',
  17. required: false,
  18. type: 'checkbox'
  19. },
  20. muted: {
  21. label: 'Muted',
  22. required: false,
  23. type: 'checkbox'
  24. },
  25. preload: {
  26. label: 'preload options',
  27. required: false
  28. }
  29. };
  30. $.extend(true, $.trumbowyg, {
  31. langs: {
  32. // jshint camelcase:false
  33. en: {
  34. insertAudio: 'Insert Audio'
  35. },
  36. da: {
  37. insertAudio: 'Indsæt lyd'
  38. },
  39. fr: {
  40. insertAudio: 'Insérer un son'
  41. },
  42. hu: {
  43. insertAudio: 'Audio beszúrás'
  44. },
  45. ja: {
  46. insertAudio: '音声の挿入'
  47. },
  48. ko: {
  49. insertAudio: '소리 넣기'
  50. },
  51. pt_br: {
  52. insertAudio: 'Inserir áudio'
  53. },
  54. ru: {
  55. insertAudio: 'Вставить аудио'
  56. },
  57. tr: {
  58. insertAudio: 'Ses Ekle'
  59. },
  60. // jshint camelcase:true
  61. },
  62. plugins: {
  63. insertAudio: {
  64. init: function (trumbowyg) {
  65. var btnDef = {
  66. fn: function () {
  67. var insertAudioCallback = function (v) {
  68. // controls should always be show otherwise the audio will
  69. // be invisible defeating the point of a wysiwyg
  70. var html = '<audio controls';
  71. if (v.src) {
  72. html += ' src=\'' + v.src + '\'';
  73. }
  74. if (v.autoplay) {
  75. html += ' autoplay';
  76. }
  77. if (v.muted) {
  78. html += ' muted';
  79. }
  80. if (v.preload) {
  81. html += ' preload=\'' + v + '\'';
  82. }
  83. html += '></audio>';
  84. var node = $(html)[0];
  85. trumbowyg.range.deleteContents();
  86. trumbowyg.range.insertNode(node);
  87. return true;
  88. };
  89. trumbowyg.openModalInsert(trumbowyg.lang.insertAudio, insertAudioOptions, insertAudioCallback);
  90. }
  91. };
  92. trumbowyg.addBtnDef('insertAudio', btnDef);
  93. }
  94. }
  95. }
  96. });
  97. })(jQuery);