content_probeForSG.js 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. /*
  2. * I am executed by Chromium extension when called from background.js
  3. *
  4. */
  5. (function(){
  6. var scriptsToInject = [
  7. // Libraries
  8. 'libs/SmallClasses.js',
  9. 'libs/wysihtml5/wysihtml5-parser.js',
  10. 'libs/wysihtml5/wysihtml5.js',
  11. 'libs/flexicolorpicker/colorpicker.js',
  12. // SuperGlue classes
  13. 'classes/SuperGlue.js',
  14. 'classes/Clipboard.js',
  15. 'classes/ColorPickerWidget.js',
  16. 'classes/Compiler.js',
  17. 'classes/CreationMenu.js',
  18. 'classes/Document.js',
  19. 'classes/DocumentMenu.js',
  20. 'classes/Element.js',
  21. 'classes/EmbedElement.js',
  22. 'classes/FileManager.js',
  23. 'classes/FileManagerWindow.js',
  24. 'classes/Grid.js',
  25. 'classes/HTMLEditor.js',
  26. 'classes/History.js',
  27. 'classes/IFrameElement.js',
  28. 'classes/ImageElement.js',
  29. 'classes/MenuItem.js',
  30. 'classes/MenuItemBackgroundColor.js',
  31. 'classes/MenuItemBackgroundImg.js',
  32. 'classes/MenuItemBackgroundRepeat.js',
  33. 'classes/MenuItemCenter.js',
  34. 'classes/MenuItemFileManager.js',
  35. 'classes/MenuItemNewPage.js',
  36. 'classes/MenuItemOutlines.js',
  37. 'classes/MenuItemPageTitle.js',
  38. 'classes/MenuItemPaste.js',
  39. 'classes/MenuItemRedo.js',
  40. 'classes/MenuItemSave.js',
  41. 'classes/MenuItemSaveAs.js',
  42. 'classes/MenuItemSaveRemote.js',
  43. 'classes/MenuItemServerSettings.js',
  44. 'classes/MenuItemUndo.js',
  45. 'classes/Keyboard.js',
  46. 'classes/ResizeHandles.js',
  47. 'classes/SCGUI.js',
  48. 'classes/SCSystemBrowser.js',
  49. 'classes/Selection.js',
  50. 'classes/SliderWidget.js',
  51. 'classes/Server.js',
  52. 'classes/TextEditor.js',
  53. 'classes/TextElement.js',
  54. 'classes/Widget.js',
  55. 'classes/WidgetBackgroundColor.js',
  56. 'classes/WidgetBorder.js',
  57. 'classes/WidgetBorderColor.js',
  58. 'classes/WidgetBorderRadius.js',
  59. 'classes/WidgetCopy.js',
  60. 'classes/WidgetDelete.js',
  61. 'classes/WidgetEditHTML.js',
  62. 'classes/WidgetIFrame.js',
  63. 'classes/WidgetImgDimensions.js',
  64. 'classes/WidgetImgLink.js',
  65. 'classes/WidgetImgSrc.js',
  66. 'classes/WidgetLayerBottom.js',
  67. 'classes/WidgetLayerTop.js',
  68. 'classes/WidgetLock.js',
  69. 'classes/WidgetOpacity.js',
  70. 'classes/WidgetPadding.js',
  71. 'classes/WidthMarkers.js',
  72. 'classes/Window.js',
  73. 'classes/WindowManager.js'
  74. ];
  75. var cssToInject = [
  76. // Libraries
  77. 'libs/flexicolorpicker/colorpicker.css',
  78. // SuperGlue CSS
  79. 'css/ColorPickerWidget.css',
  80. 'css/CreationMenu.css',
  81. 'css/Document.css',
  82. 'css/DocumentMenu.css',
  83. 'css/FileManagerWindow.css',
  84. 'css/Grid.css',
  85. 'css/HTMLEditor.css',
  86. 'css/Keyboard.css',
  87. 'css/MenuItem.css',
  88. 'css/MenuItemBackgroundColor.css',
  89. 'css/MenuItemBackgroundImg.css',
  90. 'css/MenuItemBackgroundRepeat.css',
  91. 'css/MenuItemCenter.css',
  92. 'css/MenuItemFileManager.css',
  93. 'css/MenuItemNewPage.css',
  94. 'css/MenuItemOutlines.css',
  95. 'css/MenuItemPageTitle.css',
  96. 'css/MenuItemPaste.css',
  97. 'css/MenuItemRedo.css',
  98. 'css/MenuItemSave.css',
  99. 'css/MenuItemSaveAs.css',
  100. 'css/MenuItemSaveRemote.css',
  101. 'css/MenuItemServerSettings.css',
  102. 'css/MenuItemUndo.css',
  103. 'css/ResizeHandles.css',
  104. 'css/Selection.css',
  105. 'css/SliderWidget.css',
  106. 'css/SuperGlue.css',
  107. 'css/TextEditor.css',
  108. 'css/Widget.css',
  109. 'css/WidgetBackgroundColor.css',
  110. 'css/WidgetBorder.css',
  111. 'css/WidgetBorderColor.css',
  112. 'css/WidgetBorderRadius.css',
  113. 'css/WidgetCopy.css',
  114. 'css/WidgetDelete.css',
  115. 'css/WidgetEditHTML.css',
  116. 'css/WidgetIFrame.css',
  117. 'css/WidgetImgDimensions.css',
  118. 'css/WidgetImgLink.css',
  119. 'css/WidgetImgSrc.css',
  120. 'css/WidgetLayerBottom.css',
  121. 'css/WidgetLayerTop.css',
  122. 'css/WidgetLock.css',
  123. 'css/WidgetOpacity.css',
  124. 'css/WidgetPadding.css',
  125. 'css/WidthMarkers.css',
  126. 'css/Window.css',
  127. 'css/WindowManager.css'
  128. ];
  129. var activateSuperGlue = function(){
  130. var clipboardCss = document.createElement("link");
  131. clipboardCss.setAttribute("data-superglue", "editing-interface");
  132. clipboardCss.setAttribute("rel", "stylesheet");
  133. clipboardCss.setAttribute("href", chrome.extension.getURL("superglue-client//injections/clipboard.css"));
  134. document.head.appendChild(clipboardCss);
  135. var clipboardCopy = document.createElement("textarea");
  136. clipboardCopy.setAttribute("data-superglue", "editing-interface");
  137. clipboardCopy.setAttribute("id", "sg-editing-clipboard-copy");
  138. clipboardCopy.addEventListener('click', function(){
  139. chrome.runtime.sendMessage(
  140. {
  141. action: "copy",
  142. value: clipboardCopy.value
  143. },
  144. function(response){}
  145. );
  146. }, false);
  147. document.body.insertBefore(clipboardCopy, document.body.firstElementChild);
  148. var clipboardPaste = document.createElement("textarea");
  149. clipboardPaste.setAttribute("data-superglue", "editing-interface");
  150. clipboardPaste.setAttribute("id", "sg-editing-clipboard-paste");
  151. clipboardPaste.addEventListener('click', function(){
  152. chrome.runtime.sendMessage(
  153. {
  154. action: "paste",
  155. },
  156. function(response){
  157. if(response.action === 'pasteResponse'){
  158. clipboardPaste.value = response.value;
  159. clipboardPaste.click();
  160. }
  161. }
  162. );
  163. }, false);
  164. document.body.insertBefore(clipboardPaste, document.body.firstElementChild);
  165. for (var i = 0; i < scriptsToInject.length; i++) {
  166. var script = document.createElement("script");
  167. script.setAttribute("data-superglue", "editing-interface");
  168. script.setAttribute("type", "text/javascript");
  169. script.async = false;
  170. script.setAttribute("src", chrome.extension.getURL("superglue-client/" + scriptsToInject[i]) );
  171. document.head.appendChild(script);
  172. };
  173. for (var i = 0; i < cssToInject.length; i++) {
  174. var css = document.createElement("link");
  175. css.setAttribute("data-superglue", "editing-interface");
  176. css.setAttribute("rel", "stylesheet");
  177. css.setAttribute("href", chrome.extension.getURL("superglue-client/" + cssToInject[i]) );
  178. document.head.appendChild(css);
  179. };
  180. var script = document.createElement("script");
  181. script.setAttribute("data-superglue", "editing-interface");
  182. script.setAttribute("type", "text/javascript");
  183. script.async = false;
  184. script.setAttribute("src", chrome.extension.getURL("superglue-client/injections/init.js") );
  185. document.head.appendChild(script);
  186. };
  187. var notSGpage = function(){
  188. var script = document.createElement("script");
  189. script.setAttribute("data-superglue", "editing-interface");
  190. script.setAttribute("type", "text/javascript");
  191. script.async = false;
  192. script.setAttribute("src", chrome.extension.getURL("superglue-client/injections/notSGpage.js") );
  193. document.head.appendChild(script);
  194. document.head.removeChild(script);
  195. };
  196. // check if page is superglue page
  197. if( document.querySelectorAll('meta[name=generator]').length > 0
  198. && document.querySelector('meta[name=generator]').getAttribute('content') === 'SuperGlue'){
  199. // check if editing is active
  200. if( document.querySelectorAll('meta[name=superglue-mode]').length === 0
  201. || document.querySelector('meta[name=superglue-mode]').getAttribute('content') !== 'editing'){
  202. activateSuperGlue();
  203. }
  204. } else { // page is not a superglue page
  205. notSGpage();
  206. }
  207. })();