ubuntu-it QuickReply Enhanced Editor

Aggiunge alcune delle funzionalità dell'editor completo alla risposta rapida

目前為 2015-07-23 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name ubuntu-it QuickReply Enhanced Editor
  3. // @description Aggiunge alcune delle funzionalità dell'editor completo alla risposta rapida
  4. // @namespace ubuntu-it
  5. // @include http://forum.ubuntu-it.org/viewtopic.php?*
  6. // @version 201507231337
  7. // @grant none
  8. // ==/UserScript==
  9.  
  10.  
  11. (function($, window) {
  12. $.fn.selection = function() {
  13. var doc = window.doc;
  14. var element = this[0];
  15. var selection = {};
  16. if (window.getSelection) {
  17. /* except IE */
  18. selection.start = element.selectionStart;
  19. selection.end = element.selectionEnd;
  20. selection.text = element.value.slice(selection.start, selection.end);
  21. } else if (doc.selection) {
  22. /* for IE */
  23. element.focus();
  24. var range = doc.selection.createRange(),
  25. range2 = doc.body.createTextRange();
  26. selection.text = range.text;
  27. try {
  28. range2.moveToElementText(element);
  29. range2.setEndPoint('StartToStart', range);
  30. } catch (e) {
  31. range2 = element.createTextRange();
  32. range2.setEndPoint('StartToStart', range);
  33. }
  34. selection.start = element.value.length - range2.text.length;
  35. selection.end = selection.start + range.text.length;
  36. }
  37. return selection;
  38. }
  39. })(jQuery, window);
  40.  
  41. //Pulsanti da inserire nell'editor
  42. var buttons = [{
  43. code: 'b',
  44. name: '<strong>B</strong>'
  45. }, {
  46. code: 'u',
  47. name: '<span style="text-decoration: underline;">u</span>'
  48. }, {
  49. code: 'i',
  50. name: '<i>i</i>'
  51. }, {
  52. code: 'code',
  53. name: 'Codice'
  54. }, {
  55. code: 'quote',
  56. name: 'Cita'
  57. }, {
  58. code: 'url',
  59. name: 'URL'
  60. }, ];
  61. jQuery('input[name="show_qr"]').click(function(){
  62. var previewBtn = $('<input class="button2" type="submit" value="Anteprima" name="preview" tabindex="8" accesskey="a">');
  63. previewBtn.click(function(){
  64. var action = $(this).parents('form').attr('action');
  65. $(this).parents('form').attr('action', action+'#preview');
  66. });
  67. jQuery('.submit-buttons').append(previewBtn);
  68. jQuery('#message-box').each(function() {
  69. var $buttons = $('<div id="buttons"></div>');
  70. $(this).prepend($buttons);
  71. var $textarea = $('.inputbox', this);
  72. $.each(buttons, function(i, button) {
  73. var $btn = $('<button type="button">' + button.name + '</button>');
  74. $buttons.append($btn);
  75. $btn.click(function(e) {
  76. e.preventDefault();
  77. var textarea = $textarea[0];
  78. var scrollTop = textarea.scrollTop;
  79. var selection = $textarea.selection();
  80.  
  81. var val = $textarea.val();
  82. var pre = val.substring(0, selection.start);
  83. var code = button.code;
  84. var text = selection.text || '';
  85. if( code === 'url' ){
  86. code += '=' + prompt("Inserire l'URL");
  87. if( text.length === 0 ){
  88. text += prompt("Inserire il testo");
  89. }
  90. }
  91. var bbcode = '[' + code + ']' + text + '[/' + button.code + ']';
  92. var post = val.substring(selection.end);
  93.  
  94. var newSelectionStart = selection.start + 2 + button.code.length;
  95. var newSelectionStop = newSelectionStart + selection.text.length;
  96. $textarea.val(pre + bbcode + post);
  97. textarea.selectionStart = newSelectionStart;
  98. textarea.selectionEnd = newSelectionStop;
  99. textarea.focus();
  100. textarea.scrollTop = scrollTop;
  101.  
  102. });
  103. });
  104. });
  105. });