AlwaysShowToolbar.js
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:4k
源码类别:

OA系统

开发平台:

Java

  1. /*
  2. Copyright (c) 2004-2006, The Dojo Foundation
  3. All Rights Reserved.
  4. Licensed under the Academic Free License version 2.1 or above OR the
  5. modified BSD license. For more information on Dojo licensing, see:
  6. http://dojotoolkit.org/community/licensing.shtml
  7. */
  8. dojo.provide("dojo.widget.Editor2Plugin.AlwaysShowToolbar");
  9. dojo.event.topic.subscribe("dojo.widget.Editor2::onLoad", function (editor) {
  10. if (editor.toolbarAlwaysVisible) {
  11. var p = new dojo.widget.Editor2Plugin.AlwaysShowToolbar(editor);
  12. }
  13. });
  14. dojo.declare("dojo.widget.Editor2Plugin.AlwaysShowToolbar", null, function (editor) {
  15. this.editor = editor;
  16. this.editor.registerLoadedPlugin(this);
  17. this.setup();
  18. }, {_scrollSetUp:false, _fixEnabled:false, _scrollThreshold:false, _handleScroll:true, setup:function () {
  19. var tdn = this.editor.toolbarWidget;
  20. if (!tdn.tbBgIframe) {
  21. tdn.tbBgIframe = new dojo.html.BackgroundIframe(tdn.domNode);
  22. tdn.tbBgIframe.onResized();
  23. }
  24. this.scrollInterval = setInterval(dojo.lang.hitch(this, "globalOnScrollHandler"), 100);
  25. dojo.event.connect("before", this.editor.toolbarWidget, "destroy", this, "destroy");
  26. }, globalOnScrollHandler:function () {
  27. var isIE = dojo.render.html.ie;
  28. if (!this._handleScroll) {
  29. return;
  30. }
  31. var dh = dojo.html;
  32. var tdn = this.editor.toolbarWidget.domNode;
  33. var db = dojo.body();
  34. if (!this._scrollSetUp) {
  35. this._scrollSetUp = true;
  36. var editorWidth = dh.getMarginBox(this.editor.domNode).width;
  37. this._scrollThreshold = dh.abs(tdn, true).y;
  38. if ((isIE) && (db) && (dh.getStyle(db, "background-image") == "none")) {
  39. with (db.style) {
  40. backgroundImage = "url(" + dojo.uri.moduleUri("dojo.widget", "templates/images/blank.gif") + ")";
  41. backgroundAttachment = "fixed";
  42. }
  43. }
  44. }
  45. var scrollPos = (window["pageYOffset"]) ? window["pageYOffset"] : (document["documentElement"] || document["body"]).scrollTop;
  46. if (scrollPos > this._scrollThreshold) {
  47. if (!this._fixEnabled) {
  48. var tdnbox = dojo.html.getMarginBox(tdn);
  49. this.editor.editorObject.style.marginTop = tdnbox.height + "px";
  50. if (isIE) {
  51. tdn.style.left = dojo.html.abs(tdn, dojo.html.boxSizing.MARGIN_BOX).x;
  52. if (tdn.previousSibling) {
  53. this._IEOriginalPos = ["after", tdn.previousSibling];
  54. } else {
  55. if (tdn.nextSibling) {
  56. this._IEOriginalPos = ["before", tdn.nextSibling];
  57. } else {
  58. this._IEOriginalPos = ["", tdn.parentNode];
  59. }
  60. }
  61. dojo.body().appendChild(tdn);
  62. dojo.html.addClass(tdn, "IEFixedToolbar");
  63. } else {
  64. with (tdn.style) {
  65. position = "fixed";
  66. top = "0px";
  67. }
  68. }
  69. tdn.style.width = tdnbox.width + "px";
  70. tdn.style.zIndex = 1000;
  71. this._fixEnabled = true;
  72. }
  73. if (!dojo.render.html.safari) {
  74. var eHeight = (this.height) ? parseInt(this.editor.height) : this.editor._lastHeight;
  75. if (scrollPos > (this._scrollThreshold + eHeight)) {
  76. tdn.style.display = "none";
  77. } else {
  78. tdn.style.display = "";
  79. }
  80. }
  81. } else {
  82. if (this._fixEnabled) {
  83. (this.editor.object || this.editor.iframe).style.marginTop = null;
  84. with (tdn.style) {
  85. position = "";
  86. top = "";
  87. zIndex = "";
  88. display = "";
  89. }
  90. if (isIE) {
  91. tdn.style.left = "";
  92. dojo.html.removeClass(tdn, "IEFixedToolbar");
  93. if (this._IEOriginalPos) {
  94. dojo.html.insertAtPosition(tdn, this._IEOriginalPos[1], this._IEOriginalPos[0]);
  95. this._IEOriginalPos = null;
  96. } else {
  97. dojo.html.insertBefore(tdn, this.editor.object || this.editor.iframe);
  98. }
  99. }
  100. tdn.style.width = "";
  101. this._fixEnabled = false;
  102. }
  103. }
  104. }, destroy:function () {
  105. this._IEOriginalPos = null;
  106. this._handleScroll = false;
  107. clearInterval(this.scrollInterval);
  108. this.editor.unregisterLoadedPlugin(this);
  109. if (dojo.render.html.ie) {
  110. dojo.html.removeClass(this.editor.toolbarWidget.domNode, "IEFixedToolbar");
  111. }
  112. }});