/static/scripts/tiny_mce/plugins/noneditable/editor_plugin_src.js

http://n23.googlecode.com/ · JavaScript · 87 lines · 61 code · 16 blank · 10 comment · 9 complexity · 5e2c8529d956deca9328fc6b922c1d35 MD5 · raw file

  1. /**
  2. * $Id: editor_plugin_src.js 743 2008-03-23 17:47:33Z spocke $
  3. *
  4. * @author Moxiecode
  5. * @copyright Copyright Š 2004-2008, Moxiecode Systems AB, All rights reserved.
  6. */
  7. (function() {
  8. var Event = tinymce.dom.Event;
  9. tinymce.create('tinymce.plugins.NonEditablePlugin', {
  10. init : function(ed, url) {
  11. var t = this, editClass, nonEditClass;
  12. t.editor = ed;
  13. editClass = ed.getParam("noneditable_editable_class", "mceEditable");
  14. nonEditClass = ed.getParam("noneditable_noneditable_class", "mceNonEditable");
  15. ed.onNodeChange.addToTop(function(ed, cm, n) {
  16. var sc, ec;
  17. // Block if start or end is inside a non editable element
  18. sc = ed.dom.getParent(ed.selection.getStart(), function(n) {
  19. return ed.dom.hasClass(n, nonEditClass);
  20. });
  21. ec = ed.dom.getParent(ed.selection.getEnd(), function(n) {
  22. return ed.dom.hasClass(n, nonEditClass);
  23. });
  24. // Block or unblock
  25. if (sc || ec) {
  26. t._setDisabled(1);
  27. return false;
  28. } else
  29. t._setDisabled(0);
  30. });
  31. },
  32. getInfo : function() {
  33. return {
  34. longname : 'Non editable elements',
  35. author : 'Moxiecode Systems AB',
  36. authorurl : 'http://tinymce.moxiecode.com',
  37. infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable',
  38. version : tinymce.majorVersion + "." + tinymce.minorVersion
  39. };
  40. },
  41. _block : function(ed, e) {
  42. var k = e.keyCode;
  43. // Don't block arrow keys, pg up/down, and F1-F12
  44. if ((k > 32 && k < 41) || (k > 111 && k < 124))
  45. return;
  46. return Event.cancel(e);
  47. },
  48. _setDisabled : function(s) {
  49. var t = this, ed = t.editor;
  50. tinymce.each(ed.controlManager.controls, function(c) {
  51. c.setDisabled(s);
  52. });
  53. if (s !== t.disabled) {
  54. if (s) {
  55. ed.onKeyDown.addToTop(t._block);
  56. ed.onKeyPress.addToTop(t._block);
  57. ed.onKeyUp.addToTop(t._block);
  58. ed.onPaste.addToTop(t._block);
  59. } else {
  60. ed.onKeyDown.remove(t._block);
  61. ed.onKeyPress.remove(t._block);
  62. ed.onKeyUp.remove(t._block);
  63. ed.onPaste.remove(t._block);
  64. }
  65. t.disabled = s;
  66. }
  67. }
  68. });
  69. // Register plugin
  70. tinymce.PluginManager.add('noneditable', tinymce.plugins.NonEditablePlugin);
  71. })();