spiderfw 0.6.38 → 0.6.39

Sign up to get free protection for your applications and to get access to all the features.
Files changed (515) hide show
  1. checksums.yaml +13 -5
  2. data/CHANGELOG +23 -0
  3. data/VERSION +1 -1
  4. data/apps/core/admin/views/admin.layout.shtml +6 -0
  5. data/apps/core/auth/controllers/login_controller.rb +1 -1
  6. data/apps/core/components/assets.rb +55 -6
  7. data/apps/core/components/public/bootstrap/scss/_variables.scss +5 -2
  8. data/apps/core/components/public/bootstrap/scss/bootstrap.css +942 -236
  9. data/apps/core/components/public/bootstrap/scss/responsive.css +187 -30
  10. data/apps/core/components/public/css/tinymce/skins/lightgray/AbsoluteLayout.less +17 -0
  11. data/apps/core/components/public/css/tinymce/skins/lightgray/Animations.less +10 -0
  12. data/apps/core/components/public/css/tinymce/skins/lightgray/Button.less +172 -0
  13. data/apps/core/components/public/css/tinymce/skins/lightgray/ButtonGroup.less +71 -0
  14. data/apps/core/components/public/css/tinymce/skins/lightgray/Checkbox.less +49 -0
  15. data/apps/core/components/public/css/tinymce/skins/lightgray/ColorBox.less +6 -0
  16. data/apps/core/components/public/css/tinymce/skins/lightgray/ColorButton.less +72 -0
  17. data/apps/core/components/public/css/tinymce/skins/lightgray/ColorPicker.less +80 -0
  18. data/apps/core/components/public/css/tinymce/skins/lightgray/ComboBox.less +39 -0
  19. data/apps/core/components/public/css/tinymce/skins/lightgray/Container.less +9 -0
  20. data/apps/core/components/public/css/tinymce/skins/lightgray/Content.Inline.less +4 -0
  21. data/apps/core/components/public/css/tinymce/skins/lightgray/Content.Objects.less +166 -0
  22. data/apps/core/components/public/css/tinymce/skins/lightgray/Content.less +27 -0
  23. data/apps/core/components/public/css/tinymce/skins/lightgray/CropRect.less +54 -0
  24. data/apps/core/components/public/css/tinymce/skins/lightgray/FieldSet.less +15 -0
  25. data/apps/core/components/public/css/tinymce/skins/lightgray/FitLayout.less +9 -0
  26. data/apps/core/components/public/css/tinymce/skins/lightgray/FloatPanel.less +69 -0
  27. data/apps/core/components/public/css/tinymce/skins/lightgray/FlowLayout.less +36 -0
  28. data/apps/core/components/public/css/tinymce/skins/lightgray/Icons.Ie7.less +136 -0
  29. data/apps/core/components/public/css/tinymce/skins/lightgray/Icons.less +180 -0
  30. data/apps/core/components/public/css/tinymce/skins/lightgray/Iframe.less +6 -0
  31. data/apps/core/components/public/css/tinymce/skins/lightgray/ImagePanel.less +20 -0
  32. data/apps/core/components/public/css/tinymce/skins/lightgray/InfoBox.less +71 -0
  33. data/apps/core/components/public/css/tinymce/skins/lightgray/Label.less +38 -0
  34. data/apps/core/components/public/css/tinymce/skins/lightgray/ListBox.less +26 -0
  35. data/apps/core/components/public/css/tinymce/skins/lightgray/Menu.less +34 -0
  36. data/apps/core/components/public/css/tinymce/skins/lightgray/MenuBar.less +32 -0
  37. data/apps/core/components/public/css/tinymce/skins/lightgray/MenuButton.less +34 -0
  38. data/apps/core/components/public/css/tinymce/skins/lightgray/MenuItem.less +142 -0
  39. data/apps/core/components/public/css/tinymce/skins/lightgray/Mixins.less +54 -0
  40. data/apps/core/components/public/css/tinymce/skins/lightgray/Notification.less +144 -0
  41. data/apps/core/components/public/css/tinymce/skins/lightgray/Panel.less +7 -0
  42. data/apps/core/components/public/css/tinymce/skins/lightgray/Path.less +45 -0
  43. data/apps/core/components/public/css/tinymce/skins/lightgray/Progress.less +34 -0
  44. data/apps/core/components/public/css/tinymce/skins/lightgray/Radio.less +1 -0
  45. data/apps/core/components/public/css/tinymce/skins/lightgray/Reset.less +32 -0
  46. data/apps/core/components/public/css/tinymce/skins/lightgray/ResizeHandle.less +18 -0
  47. data/apps/core/components/public/css/tinymce/skins/lightgray/Scrollable.less +44 -0
  48. data/apps/core/components/public/css/tinymce/skins/lightgray/SelectBox.less +6 -0
  49. data/apps/core/components/public/css/tinymce/skins/lightgray/Slider.less +29 -0
  50. data/apps/core/components/public/css/tinymce/skins/lightgray/Spacer.less +5 -0
  51. data/apps/core/components/public/css/tinymce/skins/lightgray/SplitButton.less +49 -0
  52. data/apps/core/components/public/css/tinymce/skins/lightgray/StackLayout.less +5 -0
  53. data/apps/core/components/public/css/tinymce/skins/lightgray/TabPanel.less +44 -0
  54. data/apps/core/components/public/css/tinymce/skins/lightgray/TextBox.less +41 -0
  55. data/apps/core/components/public/css/tinymce/skins/lightgray/Throbber.less +19 -0
  56. data/apps/core/components/public/css/tinymce/skins/lightgray/TinyMCE.less +159 -0
  57. data/apps/core/components/public/css/tinymce/skins/lightgray/ToolTip.less +129 -0
  58. data/apps/core/components/public/css/tinymce/skins/lightgray/Variables.less +214 -0
  59. data/apps/core/components/public/css/tinymce/skins/lightgray/Window.less +127 -0
  60. data/apps/core/components/public/css/tinymce/skins/lightgray/content.inline.min.css +1 -0
  61. data/apps/core/components/public/css/tinymce/skins/lightgray/content.min.css +1 -0
  62. data/apps/core/components/public/css/tinymce/skins/lightgray/fonts/readme.md +1 -0
  63. data/apps/core/components/public/css/tinymce/skins/lightgray/fonts/tinymce-small.eot +0 -0
  64. data/apps/core/components/public/css/tinymce/skins/lightgray/fonts/tinymce-small.json +1277 -0
  65. data/apps/core/components/public/css/tinymce/skins/lightgray/fonts/tinymce-small.svg +63 -0
  66. data/apps/core/components/public/css/tinymce/skins/lightgray/fonts/tinymce-small.ttf +0 -0
  67. data/apps/core/components/public/css/tinymce/skins/lightgray/fonts/tinymce-small.woff +0 -0
  68. data/apps/core/components/public/css/tinymce/skins/lightgray/fonts/tinymce.eot +0 -0
  69. data/apps/core/components/public/css/tinymce/skins/lightgray/fonts/tinymce.json +3381 -0
  70. data/apps/core/components/public/css/tinymce/skins/lightgray/fonts/tinymce.svg +129 -0
  71. data/apps/core/components/public/css/tinymce/skins/lightgray/fonts/tinymce.ttf +0 -0
  72. data/apps/core/components/public/css/tinymce/skins/lightgray/fonts/tinymce.woff +0 -0
  73. data/apps/core/components/public/css/tinymce/skins/lightgray/img/anchor.gif +0 -0
  74. data/apps/core/components/public/css/tinymce/skins/lightgray/img/loader.gif +0 -0
  75. data/apps/core/components/public/css/tinymce/skins/lightgray/img/object.gif +0 -0
  76. data/apps/core/components/public/css/tinymce/skins/lightgray/img/trans.gif +0 -0
  77. data/apps/core/components/public/css/tinymce/skins/lightgray/skin.dev.less +46 -0
  78. data/apps/core/components/public/css/tinymce/skins/lightgray/skin.ie7.dev.less +46 -0
  79. data/apps/core/components/public/css/tinymce/skins/lightgray/skin.ie7.less +2542 -0
  80. data/apps/core/components/public/css/tinymce/skins/lightgray/skin.ie7.min.css +1 -0
  81. data/apps/core/components/public/css/tinymce/skins/lightgray/skin.less +2586 -0
  82. data/apps/core/components/public/css/tinymce/skins/lightgray/skin.min.css +1 -0
  83. data/apps/core/components/public/js/bootbox_2/bootbox.js +551 -0
  84. data/apps/core/components/public/js/jquery/jquery-ui-1.9.2/ui/i18n/jquery.ui.datepicker-it-min.js +4 -0
  85. data/apps/core/components/public/js/spider.js +7 -3
  86. data/apps/core/components/public/js/tinymce/classes/AddOnManager.js +265 -0
  87. data/apps/core/components/public/js/tinymce/classes/Compat.js +90 -0
  88. data/apps/core/components/public/js/tinymce/classes/DragDropOverrides.js +224 -0
  89. data/apps/core/components/public/js/tinymce/classes/Editor.js +2221 -0
  90. data/apps/core/components/public/js/tinymce/classes/EditorCommands.js +1028 -0
  91. data/apps/core/components/public/js/tinymce/classes/EditorManager.js +715 -0
  92. data/apps/core/components/public/js/tinymce/classes/EditorObservable.js +204 -0
  93. data/apps/core/components/public/js/tinymce/classes/EditorUpload.js +191 -0
  94. data/apps/core/components/public/js/tinymce/classes/EnterKey.js +676 -0
  95. data/apps/core/components/public/js/tinymce/classes/Env.js +177 -0
  96. data/apps/core/components/public/js/tinymce/classes/FocusManager.js +266 -0
  97. data/apps/core/components/public/js/tinymce/classes/ForceBlocks.js +138 -0
  98. data/apps/core/components/public/js/tinymce/classes/Formatter.js +2378 -0
  99. data/apps/core/components/public/js/tinymce/classes/LegacyInput.js +82 -0
  100. data/apps/core/components/public/js/tinymce/classes/Mode.js +54 -0
  101. data/apps/core/components/public/js/tinymce/classes/NodeChange.js +154 -0
  102. data/apps/core/components/public/js/tinymce/classes/NotificationManager.js +156 -0
  103. data/apps/core/components/public/js/tinymce/classes/Register.js +34 -0
  104. data/apps/core/components/public/js/tinymce/classes/SelectionOverrides.js +810 -0
  105. data/apps/core/components/public/js/tinymce/classes/Shortcuts.js +172 -0
  106. data/apps/core/components/public/js/tinymce/classes/UndoManager.js +346 -0
  107. data/apps/core/components/public/js/tinymce/classes/WindowManager.js +278 -0
  108. data/apps/core/components/public/js/tinymce/classes/caret/CaretBookmark.js +263 -0
  109. data/apps/core/components/public/js/tinymce/classes/caret/CaretCandidate.js +86 -0
  110. data/apps/core/components/public/js/tinymce/classes/caret/CaretContainer.js +151 -0
  111. data/apps/core/components/public/js/tinymce/classes/caret/CaretPosition.js +371 -0
  112. data/apps/core/components/public/js/tinymce/classes/caret/CaretUtils.js +302 -0
  113. data/apps/core/components/public/js/tinymce/classes/caret/CaretWalker.js +215 -0
  114. data/apps/core/components/public/js/tinymce/classes/caret/FakeCaret.js +192 -0
  115. data/apps/core/components/public/js/tinymce/classes/caret/LineUtils.js +135 -0
  116. data/apps/core/components/public/js/tinymce/classes/caret/LineWalker.js +166 -0
  117. data/apps/core/components/public/js/tinymce/classes/data/Binding.js +79 -0
  118. data/apps/core/components/public/js/tinymce/classes/data/ObservableArray.js +196 -0
  119. data/apps/core/components/public/js/tinymce/classes/data/ObservableObject.js +194 -0
  120. data/apps/core/components/public/js/tinymce/classes/dom/BookmarkManager.js +456 -0
  121. data/apps/core/components/public/js/tinymce/classes/dom/ControlSelection.js +634 -0
  122. data/apps/core/components/public/js/tinymce/classes/dom/DOMUtils.js +1853 -0
  123. data/apps/core/components/public/js/tinymce/classes/dom/Dimensions.js +64 -0
  124. data/apps/core/components/public/js/tinymce/classes/dom/DomQuery.js +1578 -0
  125. data/apps/core/components/public/js/tinymce/classes/dom/ElementUtils.js +118 -0
  126. data/apps/core/components/public/js/tinymce/classes/dom/EventUtils.js +583 -0
  127. data/apps/core/components/public/js/tinymce/classes/dom/NodePath.js +50 -0
  128. data/apps/core/components/public/js/tinymce/classes/dom/NodeType.js +110 -0
  129. data/apps/core/components/public/js/tinymce/classes/dom/Range.js +785 -0
  130. data/apps/core/components/public/js/tinymce/classes/dom/RangeUtils.js +628 -0
  131. data/apps/core/components/public/js/tinymce/classes/dom/ScriptLoader.js +254 -0
  132. data/apps/core/components/public/js/tinymce/classes/dom/Selection.js +1008 -0
  133. data/apps/core/components/public/js/tinymce/classes/dom/Serializer.js +506 -0
  134. data/apps/core/components/public/js/tinymce/classes/dom/Sizzle.jQuery.js +23 -0
  135. data/apps/core/components/public/js/tinymce/classes/dom/Sizzle.js +2039 -0
  136. data/apps/core/components/public/js/tinymce/classes/dom/StyleSheetLoader.js +190 -0
  137. data/apps/core/components/public/js/tinymce/classes/dom/TreeWalker.js +127 -0
  138. data/apps/core/components/public/js/tinymce/classes/dom/TridentSelection.js +508 -0
  139. data/apps/core/components/public/js/tinymce/classes/file/BlobCache.js +72 -0
  140. data/apps/core/components/public/js/tinymce/classes/file/Conversions.js +106 -0
  141. data/apps/core/components/public/js/tinymce/classes/file/ImageScanner.js +145 -0
  142. data/apps/core/components/public/js/tinymce/classes/file/Uploader.js +193 -0
  143. data/apps/core/components/public/js/tinymce/classes/fmt/Hooks.js +66 -0
  144. data/apps/core/components/public/js/tinymce/classes/fmt/Preview.js +151 -0
  145. data/apps/core/components/public/js/tinymce/classes/geom/ClientRect.js +136 -0
  146. data/apps/core/components/public/js/tinymce/classes/geom/Rect.js +214 -0
  147. data/apps/core/components/public/js/tinymce/classes/html/DomParser.js +822 -0
  148. data/apps/core/components/public/js/tinymce/classes/html/Entities.js +268 -0
  149. data/apps/core/components/public/js/tinymce/classes/html/Node.js +496 -0
  150. data/apps/core/components/public/js/tinymce/classes/html/SaxParser.js +474 -0
  151. data/apps/core/components/public/js/tinymce/classes/html/Schema.js +1004 -0
  152. data/apps/core/components/public/js/tinymce/classes/html/Serializer.js +158 -0
  153. data/apps/core/components/public/js/tinymce/classes/html/Styles.js +363 -0
  154. data/apps/core/components/public/js/tinymce/classes/html/Writer.js +199 -0
  155. data/apps/core/components/public/js/tinymce/classes/jquery.tinymce.js +377 -0
  156. data/apps/core/components/public/js/tinymce/classes/text/ExtendingChar.js +53 -0
  157. data/apps/core/components/public/js/tinymce/classes/text/Zwsp.js +36 -0
  158. data/apps/core/components/public/js/tinymce/classes/ui/AbsoluteLayout.js +63 -0
  159. data/apps/core/components/public/js/tinymce/classes/ui/BoxUtils.js +98 -0
  160. data/apps/core/components/public/js/tinymce/classes/ui/Button.js +199 -0
  161. data/apps/core/components/public/js/tinymce/classes/ui/ButtonGroup.js +62 -0
  162. data/apps/core/components/public/js/tinymce/classes/ui/Checkbox.js +162 -0
  163. data/apps/core/components/public/js/tinymce/classes/ui/ClassList.js +149 -0
  164. data/apps/core/components/public/js/tinymce/classes/ui/Collection.js +438 -0
  165. data/apps/core/components/public/js/tinymce/classes/ui/ColorBox.js +72 -0
  166. data/apps/core/components/public/js/tinymce/classes/ui/ColorButton.js +124 -0
  167. data/apps/core/components/public/js/tinymce/classes/ui/ColorPicker.js +206 -0
  168. data/apps/core/components/public/js/tinymce/classes/ui/ComboBox.js +306 -0
  169. data/apps/core/components/public/js/tinymce/classes/ui/Container.js +506 -0
  170. data/apps/core/components/public/js/tinymce/classes/ui/Control.js +1301 -0
  171. data/apps/core/components/public/js/tinymce/classes/ui/DomUtils.js +107 -0
  172. data/apps/core/components/public/js/tinymce/classes/ui/DragHelper.js +144 -0
  173. data/apps/core/components/public/js/tinymce/classes/ui/ElementPath.js +79 -0
  174. data/apps/core/components/public/js/tinymce/classes/ui/Factory.js +105 -0
  175. data/apps/core/components/public/js/tinymce/classes/ui/FieldSet.js +59 -0
  176. data/apps/core/components/public/js/tinymce/classes/ui/FilePicker.js +85 -0
  177. data/apps/core/components/public/js/tinymce/classes/ui/FitLayout.js +48 -0
  178. data/apps/core/components/public/js/tinymce/classes/ui/FlexLayout.js +246 -0
  179. data/apps/core/components/public/js/tinymce/classes/ui/FloatPanel.js +409 -0
  180. data/apps/core/components/public/js/tinymce/classes/ui/FlowLayout.js +46 -0
  181. data/apps/core/components/public/js/tinymce/classes/ui/Form.js +157 -0
  182. data/apps/core/components/public/js/tinymce/classes/ui/FormItem.js +56 -0
  183. data/apps/core/components/public/js/tinymce/classes/ui/FormatControls.js +535 -0
  184. data/apps/core/components/public/js/tinymce/classes/ui/GridLayout.js +233 -0
  185. data/apps/core/components/public/js/tinymce/classes/ui/Iframe.js +85 -0
  186. data/apps/core/components/public/js/tinymce/classes/ui/InfoBox.js +93 -0
  187. data/apps/core/components/public/js/tinymce/classes/ui/KeyboardNavigation.js +406 -0
  188. data/apps/core/components/public/js/tinymce/classes/ui/Label.js +144 -0
  189. data/apps/core/components/public/js/tinymce/classes/ui/Layout.js +120 -0
  190. data/apps/core/components/public/js/tinymce/classes/ui/ListBox.js +152 -0
  191. data/apps/core/components/public/js/tinymce/classes/ui/Menu.js +195 -0
  192. data/apps/core/components/public/js/tinymce/classes/ui/MenuBar.js +33 -0
  193. data/apps/core/components/public/js/tinymce/classes/ui/MenuButton.js +268 -0
  194. data/apps/core/components/public/js/tinymce/classes/ui/MenuItem.js +336 -0
  195. data/apps/core/components/public/js/tinymce/classes/ui/MessageBox.js +202 -0
  196. data/apps/core/components/public/js/tinymce/classes/ui/Movable.js +200 -0
  197. data/apps/core/components/public/js/tinymce/classes/ui/Notification.js +154 -0
  198. data/apps/core/components/public/js/tinymce/classes/ui/Panel.js +67 -0
  199. data/apps/core/components/public/js/tinymce/classes/ui/PanelButton.js +114 -0
  200. data/apps/core/components/public/js/tinymce/classes/ui/Path.js +127 -0
  201. data/apps/core/components/public/js/tinymce/classes/ui/Progress.js +81 -0
  202. data/apps/core/components/public/js/tinymce/classes/ui/Radio.js +29 -0
  203. data/apps/core/components/public/js/tinymce/classes/ui/ReflowQueue.js +79 -0
  204. data/apps/core/components/public/js/tinymce/classes/ui/Resizable.js +68 -0
  205. data/apps/core/components/public/js/tinymce/classes/ui/ResizeHandle.js +86 -0
  206. data/apps/core/components/public/js/tinymce/classes/ui/Scrollable.js +141 -0
  207. data/apps/core/components/public/js/tinymce/classes/ui/SelectBox.js +106 -0
  208. data/apps/core/components/public/js/tinymce/classes/ui/Selector.js +369 -0
  209. data/apps/core/components/public/js/tinymce/classes/ui/Slider.js +161 -0
  210. data/apps/core/components/public/js/tinymce/classes/ui/Spacer.js +39 -0
  211. data/apps/core/components/public/js/tinymce/classes/ui/SplitButton.js +146 -0
  212. data/apps/core/components/public/js/tinymce/classes/ui/StackLayout.js +34 -0
  213. data/apps/core/components/public/js/tinymce/classes/ui/TabPanel.js +178 -0
  214. data/apps/core/components/public/js/tinymce/classes/ui/TextBox.js +208 -0
  215. data/apps/core/components/public/js/tinymce/classes/ui/Throbber.js +88 -0
  216. data/apps/core/components/public/js/tinymce/classes/ui/Toolbar.js +56 -0
  217. data/apps/core/components/public/js/tinymce/classes/ui/Tooltip.js +73 -0
  218. data/apps/core/components/public/js/tinymce/classes/ui/Widget.js +151 -0
  219. data/apps/core/components/public/js/tinymce/classes/ui/Window.js +474 -0
  220. data/apps/core/components/public/js/tinymce/classes/util/Arr.js +153 -0
  221. data/apps/core/components/public/js/tinymce/classes/util/Class.js +167 -0
  222. data/apps/core/components/public/js/tinymce/classes/util/Color.js +235 -0
  223. data/apps/core/components/public/js/tinymce/classes/util/Delay.js +191 -0
  224. data/apps/core/components/public/js/tinymce/classes/util/EventDispatcher.js +294 -0
  225. data/apps/core/components/public/js/tinymce/classes/util/Fun.js +87 -0
  226. data/apps/core/components/public/js/tinymce/classes/util/I18n.js +116 -0
  227. data/apps/core/components/public/js/tinymce/classes/util/JSON.js +109 -0
  228. data/apps/core/components/public/js/tinymce/classes/util/JSONP.js +38 -0
  229. data/apps/core/components/public/js/tinymce/classes/util/JSONRequest.js +110 -0
  230. data/apps/core/components/public/js/tinymce/classes/util/LocalStorage.js +213 -0
  231. data/apps/core/components/public/js/tinymce/classes/util/Observable.js +129 -0
  232. data/apps/core/components/public/js/tinymce/classes/util/Promise.js +200 -0
  233. data/apps/core/components/public/js/tinymce/classes/util/Quirks.js +1701 -0
  234. data/apps/core/components/public/js/tinymce/classes/util/Tools.js +442 -0
  235. data/apps/core/components/public/js/tinymce/classes/util/URI.js +411 -0
  236. data/apps/core/components/public/js/tinymce/classes/util/VK.js +37 -0
  237. data/apps/core/components/public/js/tinymce/classes/util/XHR.js +110 -0
  238. data/apps/core/components/public/js/tinymce/jquery.tinymce.min.js +1 -0
  239. data/apps/core/components/public/js/tinymce/langs/it.js +219 -0
  240. data/apps/core/components/public/js/tinymce/langs/readme.md +3 -0
  241. data/apps/core/components/public/js/tinymce/license.txt +504 -0
  242. data/apps/core/components/public/js/tinymce/plugins/advlist/plugin.js +97 -0
  243. data/apps/core/components/public/js/tinymce/plugins/advlist/plugin.min.js +1 -0
  244. data/apps/core/components/public/js/tinymce/plugins/anchor/plugin.js +55 -0
  245. data/apps/core/components/public/js/tinymce/plugins/anchor/plugin.min.js +1 -0
  246. data/apps/core/components/public/js/tinymce/plugins/autolink/plugin.js +204 -0
  247. data/apps/core/components/public/js/tinymce/plugins/autolink/plugin.min.js +1 -0
  248. data/apps/core/components/public/js/tinymce/plugins/autoresize/plugin.js +162 -0
  249. data/apps/core/components/public/js/tinymce/plugins/autoresize/plugin.min.js +1 -0
  250. data/apps/core/components/public/js/tinymce/plugins/autosave/plugin.js +165 -0
  251. data/apps/core/components/public/js/tinymce/plugins/autosave/plugin.min.js +1 -0
  252. data/apps/core/components/public/js/tinymce/plugins/bbcode/plugin.js +123 -0
  253. data/apps/core/components/public/js/tinymce/plugins/bbcode/plugin.min.js +1 -0
  254. data/apps/core/components/public/js/tinymce/plugins/charmap/plugin.js +450 -0
  255. data/apps/core/components/public/js/tinymce/plugins/charmap/plugin.min.js +1 -0
  256. data/apps/core/components/public/js/tinymce/plugins/code/plugin.js +60 -0
  257. data/apps/core/components/public/js/tinymce/plugins/code/plugin.min.js +1 -0
  258. data/apps/core/components/public/js/tinymce/plugins/codesample/classes/Dialog.js +121 -0
  259. data/apps/core/components/public/js/tinymce/plugins/codesample/classes/Plugin.js +95 -0
  260. data/apps/core/components/public/js/tinymce/plugins/codesample/classes/Prism.js +937 -0
  261. data/apps/core/components/public/js/tinymce/plugins/codesample/classes/Utils.js +33 -0
  262. data/apps/core/components/public/js/tinymce/plugins/codesample/css/prism.css +138 -0
  263. data/apps/core/components/public/js/tinymce/plugins/codesample/plugin.dev.js +141 -0
  264. data/apps/core/components/public/js/tinymce/plugins/codesample/plugin.js +1299 -0
  265. data/apps/core/components/public/js/tinymce/plugins/codesample/plugin.min.js +1 -0
  266. data/apps/core/components/public/js/tinymce/plugins/colorpicker/plugin.js +112 -0
  267. data/apps/core/components/public/js/tinymce/plugins/colorpicker/plugin.min.js +1 -0
  268. data/apps/core/components/public/js/tinymce/plugins/compat3x/css/dialog.css +118 -0
  269. data/apps/core/components/public/js/tinymce/plugins/compat3x/img/buttons.png +0 -0
  270. data/apps/core/components/public/js/tinymce/plugins/compat3x/img/icons.gif +0 -0
  271. data/apps/core/components/public/js/tinymce/plugins/compat3x/img/items.gif +0 -0
  272. data/apps/core/components/public/js/tinymce/plugins/compat3x/img/menu_arrow.gif +0 -0
  273. data/apps/core/components/public/js/tinymce/plugins/compat3x/img/menu_check.gif +0 -0
  274. data/apps/core/components/public/js/tinymce/plugins/compat3x/img/progress.gif +0 -0
  275. data/apps/core/components/public/js/tinymce/plugins/compat3x/img/tabs.gif +0 -0
  276. data/apps/core/components/public/js/tinymce/plugins/compat3x/plugin.js +297 -0
  277. data/apps/core/components/public/js/tinymce/plugins/compat3x/plugin.min.js +1 -0
  278. data/apps/core/components/public/js/tinymce/plugins/compat3x/tiny_mce_popup.js +542 -0
  279. data/apps/core/components/public/js/tinymce/plugins/compat3x/utils/editable_selects.js +70 -0
  280. data/apps/core/components/public/js/tinymce/plugins/compat3x/utils/form_utils.js +210 -0
  281. data/apps/core/components/public/js/tinymce/plugins/compat3x/utils/mctabs.js +164 -0
  282. data/apps/core/components/public/js/tinymce/plugins/compat3x/utils/validate.js +252 -0
  283. data/apps/core/components/public/js/tinymce/plugins/contextmenu/plugin.js +88 -0
  284. data/apps/core/components/public/js/tinymce/plugins/contextmenu/plugin.min.js +1 -0
  285. data/apps/core/components/public/js/tinymce/plugins/directionality/plugin.js +64 -0
  286. data/apps/core/components/public/js/tinymce/plugins/directionality/plugin.min.js +1 -0
  287. data/apps/core/components/public/js/tinymce/plugins/emoticons/img/smiley-cool.gif +0 -0
  288. data/apps/core/components/public/js/tinymce/plugins/emoticons/img/smiley-cry.gif +0 -0
  289. data/apps/core/components/public/js/tinymce/plugins/emoticons/img/smiley-embarassed.gif +0 -0
  290. data/apps/core/components/public/js/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif +0 -0
  291. data/apps/core/components/public/js/tinymce/plugins/emoticons/img/smiley-frown.gif +0 -0
  292. data/apps/core/components/public/js/tinymce/plugins/emoticons/img/smiley-innocent.gif +0 -0
  293. data/apps/core/components/public/js/tinymce/plugins/emoticons/img/smiley-kiss.gif +0 -0
  294. data/apps/core/components/public/js/tinymce/plugins/emoticons/img/smiley-laughing.gif +0 -0
  295. data/apps/core/components/public/js/tinymce/plugins/emoticons/img/smiley-money-mouth.gif +0 -0
  296. data/apps/core/components/public/js/tinymce/plugins/emoticons/img/smiley-sealed.gif +0 -0
  297. data/apps/core/components/public/js/tinymce/plugins/emoticons/img/smiley-smile.gif +0 -0
  298. data/apps/core/components/public/js/tinymce/plugins/emoticons/img/smiley-surprised.gif +0 -0
  299. data/apps/core/components/public/js/tinymce/plugins/emoticons/img/smiley-tongue-out.gif +0 -0
  300. data/apps/core/components/public/js/tinymce/plugins/emoticons/img/smiley-undecided.gif +0 -0
  301. data/apps/core/components/public/js/tinymce/plugins/emoticons/img/smiley-wink.gif +0 -0
  302. data/apps/core/components/public/js/tinymce/plugins/emoticons/img/smiley-yell.gif +0 -0
  303. data/apps/core/components/public/js/tinymce/plugins/emoticons/plugin.js +65 -0
  304. data/apps/core/components/public/js/tinymce/plugins/emoticons/plugin.min.js +1 -0
  305. data/apps/core/components/public/js/tinymce/plugins/example/dialog.html +8 -0
  306. data/apps/core/components/public/js/tinymce/plugins/example/plugin.js +68 -0
  307. data/apps/core/components/public/js/tinymce/plugins/example/plugin.min.js +1 -0
  308. data/apps/core/components/public/js/tinymce/plugins/example_dependency/plugin.js +22 -0
  309. data/apps/core/components/public/js/tinymce/plugins/example_dependency/plugin.min.js +1 -0
  310. data/apps/core/components/public/js/tinymce/plugins/fullpage/plugin.js +490 -0
  311. data/apps/core/components/public/js/tinymce/plugins/fullpage/plugin.min.js +1 -0
  312. data/apps/core/components/public/js/tinymce/plugins/fullscreen/plugin.js +154 -0
  313. data/apps/core/components/public/js/tinymce/plugins/fullscreen/plugin.min.js +1 -0
  314. data/apps/core/components/public/js/tinymce/plugins/hr/plugin.js +30 -0
  315. data/apps/core/components/public/js/tinymce/plugins/hr/plugin.min.js +1 -0
  316. data/apps/core/components/public/js/tinymce/plugins/image/plugin.js +630 -0
  317. data/apps/core/components/public/js/tinymce/plugins/image/plugin.min.js +1 -0
  318. data/apps/core/components/public/js/tinymce/plugins/imagetools/config/bolt/atomic.js +6 -0
  319. data/apps/core/components/public/js/tinymce/plugins/imagetools/config/bolt/browser.js +6 -0
  320. data/apps/core/components/public/js/tinymce/plugins/imagetools/config/bolt/demo.js +8 -0
  321. data/apps/core/components/public/js/tinymce/plugins/imagetools/config/bolt/prod.js +6 -0
  322. data/apps/core/components/public/js/tinymce/plugins/imagetools/plugin.js +2668 -0
  323. data/apps/core/components/public/js/tinymce/plugins/imagetools/plugin.min.js +1 -0
  324. data/apps/core/components/public/js/tinymce/plugins/imagetools/src/demo/html/demo.html +16 -0
  325. data/apps/core/components/public/js/tinymce/plugins/imagetools/src/demo/js/Demo.js +92 -0
  326. data/apps/core/components/public/js/tinymce/plugins/imagetools/src/main/js/CropRect.js +214 -0
  327. data/apps/core/components/public/js/tinymce/plugins/imagetools/src/main/js/Dialog.js +485 -0
  328. data/apps/core/components/public/js/tinymce/plugins/imagetools/src/main/js/ImagePanel.js +218 -0
  329. data/apps/core/components/public/js/tinymce/plugins/imagetools/src/main/js/Plugin.js +411 -0
  330. data/apps/core/components/public/js/tinymce/plugins/imagetools/src/main/js/UndoStack.js +57 -0
  331. data/apps/core/components/public/js/tinymce/plugins/importcss/plugin.js +227 -0
  332. data/apps/core/components/public/js/tinymce/plugins/importcss/plugin.min.js +1 -0
  333. data/apps/core/components/public/js/tinymce/plugins/insertdatetime/plugin.js +121 -0
  334. data/apps/core/components/public/js/tinymce/plugins/insertdatetime/plugin.min.js +1 -0
  335. data/apps/core/components/public/js/tinymce/plugins/layer/plugin.js +225 -0
  336. data/apps/core/components/public/js/tinymce/plugins/layer/plugin.min.js +1 -0
  337. data/apps/core/components/public/js/tinymce/plugins/legacyoutput/plugin.js +211 -0
  338. data/apps/core/components/public/js/tinymce/plugins/legacyoutput/plugin.min.js +1 -0
  339. data/apps/core/components/public/js/tinymce/plugins/link/plugin.js +403 -0
  340. data/apps/core/components/public/js/tinymce/plugins/link/plugin.min.js +1 -0
  341. data/apps/core/components/public/js/tinymce/plugins/lists/plugin.js +885 -0
  342. data/apps/core/components/public/js/tinymce/plugins/lists/plugin.min.js +1 -0
  343. data/apps/core/components/public/js/tinymce/plugins/media/moxieplayer.swf +0 -0
  344. data/apps/core/components/public/js/tinymce/plugins/media/plugin.js +878 -0
  345. data/apps/core/components/public/js/tinymce/plugins/media/plugin.min.js +1 -0
  346. data/apps/core/components/public/js/tinymce/plugins/nonbreaking/plugin.js +53 -0
  347. data/apps/core/components/public/js/tinymce/plugins/nonbreaking/plugin.min.js +1 -0
  348. data/apps/core/components/public/js/tinymce/plugins/noneditable/plugin.js +101 -0
  349. data/apps/core/components/public/js/tinymce/plugins/noneditable/plugin.min.js +1 -0
  350. data/apps/core/components/public/js/tinymce/plugins/pagebreak/plugin.js +88 -0
  351. data/apps/core/components/public/js/tinymce/plugins/pagebreak/plugin.min.js +1 -0
  352. data/apps/core/components/public/js/tinymce/plugins/paste/classes/Clipboard.js +672 -0
  353. data/apps/core/components/public/js/tinymce/plugins/paste/classes/Plugin.js +121 -0
  354. data/apps/core/components/public/js/tinymce/plugins/paste/classes/Quirks.js +159 -0
  355. data/apps/core/components/public/js/tinymce/plugins/paste/classes/Utils.js +140 -0
  356. data/apps/core/components/public/js/tinymce/plugins/paste/classes/WordFilter.js +500 -0
  357. data/apps/core/components/public/js/tinymce/plugins/paste/plugin.dev.js +142 -0
  358. data/apps/core/components/public/js/tinymce/plugins/paste/plugin.js +1708 -0
  359. data/apps/core/components/public/js/tinymce/plugins/paste/plugin.min.js +1 -0
  360. data/apps/core/components/public/js/tinymce/plugins/preview/plugin.js +88 -0
  361. data/apps/core/components/public/js/tinymce/plugins/preview/plugin.min.js +1 -0
  362. data/apps/core/components/public/js/tinymce/plugins/print/plugin.js +32 -0
  363. data/apps/core/components/public/js/tinymce/plugins/print/plugin.min.js +1 -0
  364. data/apps/core/components/public/js/tinymce/plugins/save/plugin.js +98 -0
  365. data/apps/core/components/public/js/tinymce/plugins/save/plugin.min.js +1 -0
  366. data/apps/core/components/public/js/tinymce/plugins/searchreplace/plugin.js +609 -0
  367. data/apps/core/components/public/js/tinymce/plugins/searchreplace/plugin.min.js +1 -0
  368. data/apps/core/components/public/js/tinymce/plugins/spellchecker/classes/DomTextMatcher.js +480 -0
  369. data/apps/core/components/public/js/tinymce/plugins/spellchecker/classes/Plugin.js +439 -0
  370. data/apps/core/components/public/js/tinymce/plugins/spellchecker/plugin.dev.js +139 -0
  371. data/apps/core/components/public/js/tinymce/plugins/spellchecker/plugin.js +1026 -0
  372. data/apps/core/components/public/js/tinymce/plugins/spellchecker/plugin.min.js +1 -0
  373. data/apps/core/components/public/js/tinymce/plugins/tabfocus/plugin.js +120 -0
  374. data/apps/core/components/public/js/tinymce/plugins/tabfocus/plugin.min.js +1 -0
  375. data/apps/core/components/public/js/tinymce/plugins/table/classes/CellSelection.js +202 -0
  376. data/apps/core/components/public/js/tinymce/plugins/table/classes/Dialogs.js +824 -0
  377. data/apps/core/components/public/js/tinymce/plugins/table/classes/Plugin.js +599 -0
  378. data/apps/core/components/public/js/tinymce/plugins/table/classes/Quirks.js +400 -0
  379. data/apps/core/components/public/js/tinymce/plugins/table/classes/ResizeBars.js +984 -0
  380. data/apps/core/components/public/js/tinymce/plugins/table/classes/TableGrid.js +941 -0
  381. data/apps/core/components/public/js/tinymce/plugins/table/classes/Utils.js +36 -0
  382. data/apps/core/components/public/js/tinymce/plugins/table/plugin.dev.js +142 -0
  383. data/apps/core/components/public/js/tinymce/plugins/table/plugin.js +4106 -0
  384. data/apps/core/components/public/js/tinymce/plugins/table/plugin.min.js +2 -0
  385. data/apps/core/components/public/js/tinymce/plugins/template/plugin.js +270 -0
  386. data/apps/core/components/public/js/tinymce/plugins/template/plugin.min.js +1 -0
  387. data/apps/core/components/public/js/tinymce/plugins/textcolor/plugin.js +282 -0
  388. data/apps/core/components/public/js/tinymce/plugins/textcolor/plugin.min.js +1 -0
  389. data/apps/core/components/public/js/tinymce/plugins/textpattern/plugin.js +268 -0
  390. data/apps/core/components/public/js/tinymce/plugins/textpattern/plugin.min.js +1 -0
  391. data/apps/core/components/public/js/tinymce/plugins/visualblocks/css/visualblocks.css +135 -0
  392. data/apps/core/components/public/js/tinymce/plugins/visualblocks/img/address.gif +0 -0
  393. data/apps/core/components/public/js/tinymce/plugins/visualblocks/img/article.gif +0 -0
  394. data/apps/core/components/public/js/tinymce/plugins/visualblocks/img/aside.gif +0 -0
  395. data/apps/core/components/public/js/tinymce/plugins/visualblocks/img/blockquote.gif +0 -0
  396. data/apps/core/components/public/js/tinymce/plugins/visualblocks/img/div.gif +0 -0
  397. data/apps/core/components/public/js/tinymce/plugins/visualblocks/img/dl.gif +0 -0
  398. data/apps/core/components/public/js/tinymce/plugins/visualblocks/img/figure.gif +0 -0
  399. data/apps/core/components/public/js/tinymce/plugins/visualblocks/img/h1.gif +0 -0
  400. data/apps/core/components/public/js/tinymce/plugins/visualblocks/img/h2.gif +0 -0
  401. data/apps/core/components/public/js/tinymce/plugins/visualblocks/img/h3.gif +0 -0
  402. data/apps/core/components/public/js/tinymce/plugins/visualblocks/img/h4.gif +0 -0
  403. data/apps/core/components/public/js/tinymce/plugins/visualblocks/img/h5.gif +0 -0
  404. data/apps/core/components/public/js/tinymce/plugins/visualblocks/img/h6.gif +0 -0
  405. data/apps/core/components/public/js/tinymce/plugins/visualblocks/img/hgroup.gif +0 -0
  406. data/apps/core/components/public/js/tinymce/plugins/visualblocks/img/ol.gif +0 -0
  407. data/apps/core/components/public/js/tinymce/plugins/visualblocks/img/p.gif +0 -0
  408. data/apps/core/components/public/js/tinymce/plugins/visualblocks/img/pre.gif +0 -0
  409. data/apps/core/components/public/js/tinymce/plugins/visualblocks/img/section.gif +0 -0
  410. data/apps/core/components/public/js/tinymce/plugins/visualblocks/img/ul.gif +0 -0
  411. data/apps/core/components/public/js/tinymce/plugins/visualblocks/plugin.js +86 -0
  412. data/apps/core/components/public/js/tinymce/plugins/visualblocks/plugin.min.js +1 -0
  413. data/apps/core/components/public/js/tinymce/plugins/visualchars/plugin.js +123 -0
  414. data/apps/core/components/public/js/tinymce/plugins/visualchars/plugin.min.js +1 -0
  415. data/apps/core/components/public/js/tinymce/plugins/wordcount/plugin.js +69 -0
  416. data/apps/core/components/public/js/tinymce/plugins/wordcount/plugin.min.js +1 -0
  417. data/apps/core/components/public/js/tinymce/skins/lightgray/AbsoluteLayout.less +17 -0
  418. data/apps/core/components/public/js/tinymce/skins/lightgray/Animations.less +10 -0
  419. data/apps/core/components/public/js/tinymce/skins/lightgray/Button.less +172 -0
  420. data/apps/core/components/public/js/tinymce/skins/lightgray/ButtonGroup.less +71 -0
  421. data/apps/core/components/public/js/tinymce/skins/lightgray/Checkbox.less +49 -0
  422. data/apps/core/components/public/js/tinymce/skins/lightgray/ColorBox.less +6 -0
  423. data/apps/core/components/public/js/tinymce/skins/lightgray/ColorButton.less +72 -0
  424. data/apps/core/components/public/js/tinymce/skins/lightgray/ColorPicker.less +80 -0
  425. data/apps/core/components/public/js/tinymce/skins/lightgray/ComboBox.less +39 -0
  426. data/apps/core/components/public/js/tinymce/skins/lightgray/Container.less +9 -0
  427. data/apps/core/components/public/js/tinymce/skins/lightgray/Content.Inline.less +4 -0
  428. data/apps/core/components/public/js/tinymce/skins/lightgray/Content.Objects.less +166 -0
  429. data/apps/core/components/public/js/tinymce/skins/lightgray/Content.less +27 -0
  430. data/apps/core/components/public/js/tinymce/skins/lightgray/CropRect.less +54 -0
  431. data/apps/core/components/public/js/tinymce/skins/lightgray/FieldSet.less +15 -0
  432. data/apps/core/components/public/js/tinymce/skins/lightgray/FitLayout.less +9 -0
  433. data/apps/core/components/public/js/tinymce/skins/lightgray/FloatPanel.less +69 -0
  434. data/apps/core/components/public/js/tinymce/skins/lightgray/FlowLayout.less +36 -0
  435. data/apps/core/components/public/js/tinymce/skins/lightgray/Icons.Ie7.less +136 -0
  436. data/apps/core/components/public/js/tinymce/skins/lightgray/Icons.less +180 -0
  437. data/apps/core/components/public/js/tinymce/skins/lightgray/Iframe.less +6 -0
  438. data/apps/core/components/public/js/tinymce/skins/lightgray/ImagePanel.less +20 -0
  439. data/apps/core/components/public/js/tinymce/skins/lightgray/InfoBox.less +71 -0
  440. data/apps/core/components/public/js/tinymce/skins/lightgray/Label.less +38 -0
  441. data/apps/core/components/public/js/tinymce/skins/lightgray/ListBox.less +26 -0
  442. data/apps/core/components/public/js/tinymce/skins/lightgray/Menu.less +34 -0
  443. data/apps/core/components/public/js/tinymce/skins/lightgray/MenuBar.less +32 -0
  444. data/apps/core/components/public/js/tinymce/skins/lightgray/MenuButton.less +34 -0
  445. data/apps/core/components/public/js/tinymce/skins/lightgray/MenuItem.less +142 -0
  446. data/apps/core/components/public/js/tinymce/skins/lightgray/Mixins.less +54 -0
  447. data/apps/core/components/public/js/tinymce/skins/lightgray/Notification.less +144 -0
  448. data/apps/core/components/public/js/tinymce/skins/lightgray/Panel.less +7 -0
  449. data/apps/core/components/public/js/tinymce/skins/lightgray/Path.less +45 -0
  450. data/apps/core/components/public/js/tinymce/skins/lightgray/Progress.less +34 -0
  451. data/apps/core/components/public/js/tinymce/skins/lightgray/Radio.less +1 -0
  452. data/apps/core/components/public/js/tinymce/skins/lightgray/Reset.less +32 -0
  453. data/apps/core/components/public/js/tinymce/skins/lightgray/ResizeHandle.less +18 -0
  454. data/apps/core/components/public/js/tinymce/skins/lightgray/Scrollable.less +44 -0
  455. data/apps/core/components/public/js/tinymce/skins/lightgray/SelectBox.less +6 -0
  456. data/apps/core/components/public/js/tinymce/skins/lightgray/Slider.less +29 -0
  457. data/apps/core/components/public/js/tinymce/skins/lightgray/Spacer.less +5 -0
  458. data/apps/core/components/public/js/tinymce/skins/lightgray/SplitButton.less +49 -0
  459. data/apps/core/components/public/js/tinymce/skins/lightgray/StackLayout.less +5 -0
  460. data/apps/core/components/public/js/tinymce/skins/lightgray/TabPanel.less +44 -0
  461. data/apps/core/components/public/js/tinymce/skins/lightgray/TextBox.less +41 -0
  462. data/apps/core/components/public/js/tinymce/skins/lightgray/Throbber.less +19 -0
  463. data/apps/core/components/public/js/tinymce/skins/lightgray/TinyMCE.less +159 -0
  464. data/apps/core/components/public/js/tinymce/skins/lightgray/ToolTip.less +129 -0
  465. data/apps/core/components/public/js/tinymce/skins/lightgray/Variables.less +214 -0
  466. data/apps/core/components/public/js/tinymce/skins/lightgray/Window.less +127 -0
  467. data/apps/core/components/public/js/tinymce/skins/lightgray/content.inline.min.css +1 -0
  468. data/apps/core/components/public/js/tinymce/skins/lightgray/content.min.css +1 -0
  469. data/apps/core/components/public/js/tinymce/skins/lightgray/fonts/readme.md +1 -0
  470. data/apps/core/components/public/js/tinymce/skins/lightgray/fonts/tinymce-small.eot +0 -0
  471. data/apps/core/components/public/js/tinymce/skins/lightgray/fonts/tinymce-small.json +1277 -0
  472. data/apps/core/components/public/js/tinymce/skins/lightgray/fonts/tinymce-small.svg +63 -0
  473. data/apps/core/components/public/js/tinymce/skins/lightgray/fonts/tinymce-small.ttf +0 -0
  474. data/apps/core/components/public/js/tinymce/skins/lightgray/fonts/tinymce-small.woff +0 -0
  475. data/apps/core/components/public/js/tinymce/skins/lightgray/fonts/tinymce.eot +0 -0
  476. data/apps/core/components/public/js/tinymce/skins/lightgray/fonts/tinymce.json +3381 -0
  477. data/apps/core/components/public/js/tinymce/skins/lightgray/fonts/tinymce.svg +129 -0
  478. data/apps/core/components/public/js/tinymce/skins/lightgray/fonts/tinymce.ttf +0 -0
  479. data/apps/core/components/public/js/tinymce/skins/lightgray/fonts/tinymce.woff +0 -0
  480. data/apps/core/components/public/js/tinymce/skins/lightgray/img/anchor.gif +0 -0
  481. data/apps/core/components/public/js/tinymce/skins/lightgray/img/loader.gif +0 -0
  482. data/apps/core/components/public/js/tinymce/skins/lightgray/img/object.gif +0 -0
  483. data/apps/core/components/public/js/tinymce/skins/lightgray/img/trans.gif +0 -0
  484. data/apps/core/components/public/js/tinymce/skins/lightgray/skin.dev.less +46 -0
  485. data/apps/core/components/public/js/tinymce/skins/lightgray/skin.ie7.dev.less +46 -0
  486. data/apps/core/components/public/js/tinymce/skins/lightgray/skin.ie7.less +2542 -0
  487. data/apps/core/components/public/js/tinymce/skins/lightgray/skin.ie7.min.css +1 -0
  488. data/apps/core/components/public/js/tinymce/skins/lightgray/skin.less +2586 -0
  489. data/apps/core/components/public/js/tinymce/skins/lightgray/skin.min.css +1 -0
  490. data/apps/core/components/public/js/tinymce/themes/modern/theme.js +878 -0
  491. data/apps/core/components/public/js/tinymce/themes/modern/theme.min.js +1 -0
  492. data/apps/core/components/public/js/tinymce/tinymce.dev.js +286 -0
  493. data/apps/core/components/public/js/tinymce/tinymce.js +45811 -0
  494. data/apps/core/components/public/js/tinymce/tinymce.min.js +13 -0
  495. data/apps/core/forms/widgets/form/form.rb +3 -1
  496. data/apps/core/forms/widgets/form/form.shtml +1 -0
  497. data/apps/core/forms/widgets/inputs/search_select/search_select.rb +1 -1
  498. data/apps/core/forms/widgets/inputs/select/select.rb +1 -1
  499. data/apps/core/forms/widgets/inputs/select/select.shtml +0 -1
  500. data/apps/messenger/backends/sms/skebby.rb +1 -1
  501. data/apps/messenger/controllers/mixins/messenger_helper.rb +23 -5
  502. data/lib/spiderfw/config/options/spider.rb +1 -1
  503. data/lib/spiderfw/controller/mixins/visual.rb +2 -0
  504. data/lib/spiderfw/http/adapters/rack.rb +10 -5
  505. data/lib/spiderfw/http/http.rb +4 -2
  506. data/lib/spiderfw/model/base_model.rb +4 -4
  507. data/lib/spiderfw/model/mappers/db_mapper.rb +4 -2
  508. data/lib/spiderfw/model/storage/db/adapters/mysql.rb +2 -1
  509. data/lib/spiderfw/model/storage/db/db_storage.rb +4 -0
  510. data/lib/spiderfw/spider.rb +6 -0
  511. data/lib/spiderfw/templates/layout.rb +1 -1
  512. data/lib/spiderfw/utils/monkey/object.rb +3 -0
  513. data/spider.gemspec +6 -2
  514. metadata +539 -42
  515. data/blueprints/.DS_Store +0 -0
@@ -0,0 +1,85 @@
1
+ /**
2
+ * FilePicker.js
3
+ *
4
+ * Released under LGPL License.
5
+ * Copyright (c) 1999-2015 Ephox Corp. All rights reserved
6
+ *
7
+ * License: http://www.tinymce.com/license
8
+ * Contributing: http://www.tinymce.com/contributing
9
+ */
10
+
11
+ /*global tinymce:true */
12
+
13
+ /**
14
+ * This class creates a file picker control.
15
+ *
16
+ * @class tinymce.ui.FilePicker
17
+ * @extends tinymce.ui.ComboBox
18
+ */
19
+ define("tinymce/ui/FilePicker", [
20
+ "tinymce/ui/ComboBox",
21
+ "tinymce/util/Tools"
22
+ ], function(ComboBox, Tools) {
23
+ "use strict";
24
+
25
+ return ComboBox.extend({
26
+ /**
27
+ * Constructs a new control instance with the specified settings.
28
+ *
29
+ * @constructor
30
+ * @param {Object} settings Name/value object with settings.
31
+ */
32
+ init: function(settings) {
33
+ var self = this, editor = tinymce.activeEditor, editorSettings = editor.settings;
34
+ var actionCallback, fileBrowserCallback, fileBrowserCallbackTypes;
35
+
36
+ settings.spellcheck = false;
37
+
38
+ fileBrowserCallbackTypes = editorSettings.file_picker_types || editorSettings.file_browser_callback_types;
39
+ if (fileBrowserCallbackTypes) {
40
+ fileBrowserCallbackTypes = Tools.makeMap(fileBrowserCallbackTypes, /[, ]/);
41
+ }
42
+
43
+ if (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[settings.filetype]) {
44
+ fileBrowserCallback = editorSettings.file_picker_callback;
45
+ if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[settings.filetype])) {
46
+ actionCallback = function() {
47
+ var meta = self.fire('beforecall').meta;
48
+
49
+ meta = Tools.extend({filetype: settings.filetype}, meta);
50
+
51
+ // file_picker_callback(callback, currentValue, metaData)
52
+ fileBrowserCallback.call(
53
+ editor,
54
+ function(value, meta) {
55
+ self.value(value).fire('change', {meta: meta});
56
+ },
57
+ self.value(),
58
+ meta
59
+ );
60
+ };
61
+ } else {
62
+ // Legacy callback: file_picker_callback(id, currentValue, filetype, window)
63
+ fileBrowserCallback = editorSettings.file_browser_callback;
64
+ if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[settings.filetype])) {
65
+ actionCallback = function() {
66
+ fileBrowserCallback(
67
+ self.getEl('inp').id,
68
+ self.value(),
69
+ settings.filetype,
70
+ window
71
+ );
72
+ };
73
+ }
74
+ }
75
+ }
76
+
77
+ if (actionCallback) {
78
+ settings.icon = 'browse';
79
+ settings.onaction = actionCallback;
80
+ }
81
+
82
+ self._super(settings);
83
+ }
84
+ });
85
+ });
@@ -0,0 +1,48 @@
1
+ /**
2
+ * FitLayout.js
3
+ *
4
+ * Released under LGPL License.
5
+ * Copyright (c) 1999-2015 Ephox Corp. All rights reserved
6
+ *
7
+ * License: http://www.tinymce.com/license
8
+ * Contributing: http://www.tinymce.com/contributing
9
+ */
10
+
11
+ /**
12
+ * This layout manager will resize the control to be the size of it's parent container.
13
+ * In other words width: 100% and height: 100%.
14
+ *
15
+ * @-x-less FitLayout.less
16
+ * @class tinymce.ui.FitLayout
17
+ * @extends tinymce.ui.AbsoluteLayout
18
+ */
19
+ define("tinymce/ui/FitLayout", [
20
+ "tinymce/ui/AbsoluteLayout"
21
+ ], function(AbsoluteLayout) {
22
+ "use strict";
23
+
24
+ return AbsoluteLayout.extend({
25
+ /**
26
+ * Recalculates the positions of the controls in the specified container.
27
+ *
28
+ * @method recalc
29
+ * @param {tinymce.ui.Container} container Container instance to recalc.
30
+ */
31
+ recalc: function(container) {
32
+ var contLayoutRect = container.layoutRect(), paddingBox = container.paddingBox;
33
+
34
+ container.items().filter(':visible').each(function(ctrl) {
35
+ ctrl.layoutRect({
36
+ x: paddingBox.left,
37
+ y: paddingBox.top,
38
+ w: contLayoutRect.innerW - paddingBox.right - paddingBox.left,
39
+ h: contLayoutRect.innerH - paddingBox.top - paddingBox.bottom
40
+ });
41
+
42
+ if (ctrl.recalc) {
43
+ ctrl.recalc();
44
+ }
45
+ });
46
+ }
47
+ });
48
+ });
@@ -0,0 +1,246 @@
1
+ /**
2
+ * FlexLayout.js
3
+ *
4
+ * Released under LGPL License.
5
+ * Copyright (c) 1999-2015 Ephox Corp. All rights reserved
6
+ *
7
+ * License: http://www.tinymce.com/license
8
+ * Contributing: http://www.tinymce.com/contributing
9
+ */
10
+
11
+ /**
12
+ * This layout manager works similar to the CSS flex box.
13
+ *
14
+ * @setting {String} direction row|row-reverse|column|column-reverse
15
+ * @setting {Number} flex A positive-number to flex by.
16
+ * @setting {String} align start|end|center|stretch
17
+ * @setting {String} pack start|end|justify
18
+ *
19
+ * @class tinymce.ui.FlexLayout
20
+ * @extends tinymce.ui.AbsoluteLayout
21
+ */
22
+ define("tinymce/ui/FlexLayout", [
23
+ "tinymce/ui/AbsoluteLayout"
24
+ ], function(AbsoluteLayout) {
25
+ "use strict";
26
+
27
+ return AbsoluteLayout.extend({
28
+ /**
29
+ * Recalculates the positions of the controls in the specified container.
30
+ *
31
+ * @method recalc
32
+ * @param {tinymce.ui.Container} container Container instance to recalc.
33
+ */
34
+ recalc: function(container) {
35
+ // A ton of variables, needs to be in the same scope for performance
36
+ var i, l, items, contLayoutRect, contPaddingBox, contSettings, align, pack, spacing, totalFlex, availableSpace, direction;
37
+ var ctrl, ctrlLayoutRect, ctrlSettings, flex, maxSizeItems = [], size, maxSize, ratio, rect, pos, maxAlignEndPos;
38
+ var sizeName, minSizeName, posName, maxSizeName, beforeName, innerSizeName, deltaSizeName, contentSizeName;
39
+ var alignAxisName, alignInnerSizeName, alignSizeName, alignMinSizeName, alignBeforeName, alignAfterName;
40
+ var alignDeltaSizeName, alignContentSizeName;
41
+ var max = Math.max, min = Math.min;
42
+
43
+ // Get container items, properties and settings
44
+ items = container.items().filter(':visible');
45
+ contLayoutRect = container.layoutRect();
46
+ contPaddingBox = container.paddingBox;
47
+ contSettings = container.settings;
48
+ direction = container.isRtl() ? (contSettings.direction || 'row-reversed') : contSettings.direction;
49
+ align = contSettings.align;
50
+ pack = container.isRtl() ? (contSettings.pack || 'end') : contSettings.pack;
51
+ spacing = contSettings.spacing || 0;
52
+
53
+ if (direction == "row-reversed" || direction == "column-reverse") {
54
+ items = items.set(items.toArray().reverse());
55
+ direction = direction.split('-')[0];
56
+ }
57
+
58
+ // Setup axis variable name for row/column direction since the calculations is the same
59
+ if (direction == "column") {
60
+ posName = "y";
61
+ sizeName = "h";
62
+ minSizeName = "minH";
63
+ maxSizeName = "maxH";
64
+ innerSizeName = "innerH";
65
+ beforeName = 'top';
66
+ deltaSizeName = "deltaH";
67
+ contentSizeName = "contentH";
68
+
69
+ alignBeforeName = "left";
70
+ alignSizeName = "w";
71
+ alignAxisName = "x";
72
+ alignInnerSizeName = "innerW";
73
+ alignMinSizeName = "minW";
74
+ alignAfterName = "right";
75
+ alignDeltaSizeName = "deltaW";
76
+ alignContentSizeName = "contentW";
77
+ } else {
78
+ posName = "x";
79
+ sizeName = "w";
80
+ minSizeName = "minW";
81
+ maxSizeName = "maxW";
82
+ innerSizeName = "innerW";
83
+ beforeName = 'left';
84
+ deltaSizeName = "deltaW";
85
+ contentSizeName = "contentW";
86
+
87
+ alignBeforeName = "top";
88
+ alignSizeName = "h";
89
+ alignAxisName = "y";
90
+ alignInnerSizeName = "innerH";
91
+ alignMinSizeName = "minH";
92
+ alignAfterName = "bottom";
93
+ alignDeltaSizeName = "deltaH";
94
+ alignContentSizeName = "contentH";
95
+ }
96
+
97
+ // Figure out total flex, availableSpace and collect any max size elements
98
+ availableSpace = contLayoutRect[innerSizeName] - contPaddingBox[beforeName] - contPaddingBox[beforeName];
99
+ maxAlignEndPos = totalFlex = 0;
100
+ for (i = 0, l = items.length; i < l; i++) {
101
+ ctrl = items[i];
102
+ ctrlLayoutRect = ctrl.layoutRect();
103
+ ctrlSettings = ctrl.settings;
104
+ flex = ctrlSettings.flex;
105
+ availableSpace -= (i < l - 1 ? spacing : 0);
106
+
107
+ if (flex > 0) {
108
+ totalFlex += flex;
109
+
110
+ // Flexed item has a max size then we need to check if we will hit that size
111
+ if (ctrlLayoutRect[maxSizeName]) {
112
+ maxSizeItems.push(ctrl);
113
+ }
114
+
115
+ ctrlLayoutRect.flex = flex;
116
+ }
117
+
118
+ availableSpace -= ctrlLayoutRect[minSizeName];
119
+
120
+ // Calculate the align end position to be used to check for overflow/underflow
121
+ size = contPaddingBox[alignBeforeName] + ctrlLayoutRect[alignMinSizeName] + contPaddingBox[alignAfterName];
122
+ if (size > maxAlignEndPos) {
123
+ maxAlignEndPos = size;
124
+ }
125
+ }
126
+
127
+ // Calculate minW/minH
128
+ rect = {};
129
+ if (availableSpace < 0) {
130
+ rect[minSizeName] = contLayoutRect[minSizeName] - availableSpace + contLayoutRect[deltaSizeName];
131
+ } else {
132
+ rect[minSizeName] = contLayoutRect[innerSizeName] - availableSpace + contLayoutRect[deltaSizeName];
133
+ }
134
+
135
+ rect[alignMinSizeName] = maxAlignEndPos + contLayoutRect[alignDeltaSizeName];
136
+
137
+ rect[contentSizeName] = contLayoutRect[innerSizeName] - availableSpace;
138
+ rect[alignContentSizeName] = maxAlignEndPos;
139
+ rect.minW = min(rect.minW, contLayoutRect.maxW);
140
+ rect.minH = min(rect.minH, contLayoutRect.maxH);
141
+ rect.minW = max(rect.minW, contLayoutRect.startMinWidth);
142
+ rect.minH = max(rect.minH, contLayoutRect.startMinHeight);
143
+
144
+ // Resize container container if minSize was changed
145
+ if (contLayoutRect.autoResize && (rect.minW != contLayoutRect.minW || rect.minH != contLayoutRect.minH)) {
146
+ rect.w = rect.minW;
147
+ rect.h = rect.minH;
148
+
149
+ container.layoutRect(rect);
150
+ this.recalc(container);
151
+
152
+ // Forced recalc for example if items are hidden/shown
153
+ if (container._lastRect === null) {
154
+ var parentCtrl = container.parent();
155
+ if (parentCtrl) {
156
+ parentCtrl._lastRect = null;
157
+ parentCtrl.recalc();
158
+ }
159
+ }
160
+
161
+ return;
162
+ }
163
+
164
+ // Handle max size elements, check if they will become to wide with current options
165
+ ratio = availableSpace / totalFlex;
166
+ for (i = 0, l = maxSizeItems.length; i < l; i++) {
167
+ ctrl = maxSizeItems[i];
168
+ ctrlLayoutRect = ctrl.layoutRect();
169
+ maxSize = ctrlLayoutRect[maxSizeName];
170
+ size = ctrlLayoutRect[minSizeName] + ctrlLayoutRect.flex * ratio;
171
+
172
+ if (size > maxSize) {
173
+ availableSpace -= (ctrlLayoutRect[maxSizeName] - ctrlLayoutRect[minSizeName]);
174
+ totalFlex -= ctrlLayoutRect.flex;
175
+ ctrlLayoutRect.flex = 0;
176
+ ctrlLayoutRect.maxFlexSize = maxSize;
177
+ } else {
178
+ ctrlLayoutRect.maxFlexSize = 0;
179
+ }
180
+ }
181
+
182
+ // Setup new ratio, target layout rect, start position
183
+ ratio = availableSpace / totalFlex;
184
+ pos = contPaddingBox[beforeName];
185
+ rect = {};
186
+
187
+ // Handle pack setting moves the start position to end, center
188
+ if (totalFlex === 0) {
189
+ if (pack == "end") {
190
+ pos = availableSpace + contPaddingBox[beforeName];
191
+ } else if (pack == "center") {
192
+ pos = Math.round(
193
+ (contLayoutRect[innerSizeName] / 2) - ((contLayoutRect[innerSizeName] - availableSpace) / 2)
194
+ ) + contPaddingBox[beforeName];
195
+
196
+ if (pos < 0) {
197
+ pos = contPaddingBox[beforeName];
198
+ }
199
+ } else if (pack == "justify") {
200
+ pos = contPaddingBox[beforeName];
201
+ spacing = Math.floor(availableSpace / (items.length - 1));
202
+ }
203
+ }
204
+
205
+ // Default aligning (start) the other ones needs to be calculated while doing the layout
206
+ rect[alignAxisName] = contPaddingBox[alignBeforeName];
207
+
208
+ // Start laying out controls
209
+ for (i = 0, l = items.length; i < l; i++) {
210
+ ctrl = items[i];
211
+ ctrlLayoutRect = ctrl.layoutRect();
212
+ size = ctrlLayoutRect.maxFlexSize || ctrlLayoutRect[minSizeName];
213
+
214
+ // Align the control on the other axis
215
+ if (align === "center") {
216
+ rect[alignAxisName] = Math.round((contLayoutRect[alignInnerSizeName] / 2) - (ctrlLayoutRect[alignSizeName] / 2));
217
+ } else if (align === "stretch") {
218
+ rect[alignSizeName] = max(
219
+ ctrlLayoutRect[alignMinSizeName] || 0,
220
+ contLayoutRect[alignInnerSizeName] - contPaddingBox[alignBeforeName] - contPaddingBox[alignAfterName]
221
+ );
222
+ rect[alignAxisName] = contPaddingBox[alignBeforeName];
223
+ } else if (align === "end") {
224
+ rect[alignAxisName] = contLayoutRect[alignInnerSizeName] - ctrlLayoutRect[alignSizeName] - contPaddingBox.top;
225
+ }
226
+
227
+ // Calculate new size based on flex
228
+ if (ctrlLayoutRect.flex > 0) {
229
+ size += ctrlLayoutRect.flex * ratio;
230
+ }
231
+
232
+ rect[sizeName] = size;
233
+ rect[posName] = pos;
234
+ ctrl.layoutRect(rect);
235
+
236
+ // Recalculate containers
237
+ if (ctrl.recalc) {
238
+ ctrl.recalc();
239
+ }
240
+
241
+ // Move x/y position
242
+ pos += size + spacing;
243
+ }
244
+ }
245
+ });
246
+ });
@@ -0,0 +1,409 @@
1
+ /**
2
+ * FloatPanel.js
3
+ *
4
+ * Released under LGPL License.
5
+ * Copyright (c) 1999-2015 Ephox Corp. All rights reserved
6
+ *
7
+ * License: http://www.tinymce.com/license
8
+ * Contributing: http://www.tinymce.com/contributing
9
+ */
10
+
11
+ /**
12
+ * This class creates a floating panel.
13
+ *
14
+ * @-x-less FloatPanel.less
15
+ * @class tinymce.ui.FloatPanel
16
+ * @extends tinymce.ui.Panel
17
+ * @mixes tinymce.ui.Movable
18
+ * @mixes tinymce.ui.Resizable
19
+ */
20
+ define("tinymce/ui/FloatPanel", [
21
+ "tinymce/ui/Panel",
22
+ "tinymce/ui/Movable",
23
+ "tinymce/ui/Resizable",
24
+ "tinymce/ui/DomUtils",
25
+ "tinymce/dom/DomQuery",
26
+ "tinymce/util/Delay"
27
+ ], function(Panel, Movable, Resizable, DomUtils, $, Delay) {
28
+ "use strict";
29
+
30
+ var documentClickHandler, documentScrollHandler, windowResizeHandler, visiblePanels = [];
31
+ var zOrder = [], hasModal;
32
+
33
+ function isChildOf(ctrl, parent) {
34
+ while (ctrl) {
35
+ if (ctrl == parent) {
36
+ return true;
37
+ }
38
+
39
+ ctrl = ctrl.parent();
40
+ }
41
+ }
42
+
43
+ function skipOrHidePanels(e) {
44
+ // Hide any float panel when a click/focus out is out side that float panel and the
45
+ // float panels direct parent for example a click on a menu button
46
+ var i = visiblePanels.length;
47
+
48
+ while (i--) {
49
+ var panel = visiblePanels[i], clickCtrl = panel.getParentCtrl(e.target);
50
+
51
+ if (panel.settings.autohide) {
52
+ if (clickCtrl) {
53
+ if (isChildOf(clickCtrl, panel) || panel.parent() === clickCtrl) {
54
+ continue;
55
+ }
56
+ }
57
+
58
+ e = panel.fire('autohide', {target: e.target});
59
+ if (!e.isDefaultPrevented()) {
60
+ panel.hide();
61
+ }
62
+ }
63
+ }
64
+ }
65
+
66
+ function bindDocumentClickHandler() {
67
+
68
+ if (!documentClickHandler) {
69
+ documentClickHandler = function(e) {
70
+ // Gecko fires click event and in the wrong order on Mac so lets normalize
71
+ if (e.button == 2) {
72
+ return;
73
+ }
74
+
75
+ skipOrHidePanels(e);
76
+ };
77
+
78
+ $(document).on('click touchstart', documentClickHandler);
79
+ }
80
+ }
81
+
82
+ function bindDocumentScrollHandler() {
83
+ if (!documentScrollHandler) {
84
+ documentScrollHandler = function() {
85
+ var i;
86
+
87
+ i = visiblePanels.length;
88
+ while (i--) {
89
+ repositionPanel(visiblePanels[i]);
90
+ }
91
+ };
92
+
93
+ $(window).on('scroll', documentScrollHandler);
94
+ }
95
+ }
96
+
97
+ function bindWindowResizeHandler() {
98
+ if (!windowResizeHandler) {
99
+ var docElm = document.documentElement, clientWidth = docElm.clientWidth, clientHeight = docElm.clientHeight;
100
+
101
+ windowResizeHandler = function() {
102
+ // Workaround for #7065 IE 7 fires resize events event though the window wasn't resized
103
+ if (!document.all || clientWidth != docElm.clientWidth || clientHeight != docElm.clientHeight) {
104
+ clientWidth = docElm.clientWidth;
105
+ clientHeight = docElm.clientHeight;
106
+ FloatPanel.hideAll();
107
+ }
108
+ };
109
+
110
+ $(window).on('resize', windowResizeHandler);
111
+ }
112
+ }
113
+
114
+ /**
115
+ * Repositions the panel to the top of page if the panel is outside of the visual viewport. It will
116
+ * also reposition all child panels of the current panel.
117
+ */
118
+ function repositionPanel(panel) {
119
+ var scrollY = DomUtils.getViewPort().y;
120
+
121
+ function toggleFixedChildPanels(fixed, deltaY) {
122
+ var parent;
123
+
124
+ for (var i = 0; i < visiblePanels.length; i++) {
125
+ if (visiblePanels[i] != panel) {
126
+ parent = visiblePanels[i].parent();
127
+
128
+ while (parent && (parent = parent.parent())) {
129
+ if (parent == panel) {
130
+ visiblePanels[i].fixed(fixed).moveBy(0, deltaY).repaint();
131
+ }
132
+ }
133
+ }
134
+ }
135
+ }
136
+
137
+ if (panel.settings.autofix) {
138
+ if (!panel.state.get('fixed')) {
139
+ panel._autoFixY = panel.layoutRect().y;
140
+
141
+ if (panel._autoFixY < scrollY) {
142
+ panel.fixed(true).layoutRect({y: 0}).repaint();
143
+ toggleFixedChildPanels(true, scrollY - panel._autoFixY);
144
+ }
145
+ } else {
146
+ if (panel._autoFixY > scrollY) {
147
+ panel.fixed(false).layoutRect({y: panel._autoFixY}).repaint();
148
+ toggleFixedChildPanels(false, panel._autoFixY - scrollY);
149
+ }
150
+ }
151
+ }
152
+ }
153
+
154
+ function addRemove(add, ctrl) {
155
+ var i, zIndex = FloatPanel.zIndex || 0xFFFF, topModal;
156
+
157
+ if (add) {
158
+ zOrder.push(ctrl);
159
+ } else {
160
+ i = zOrder.length;
161
+
162
+ while (i--) {
163
+ if (zOrder[i] === ctrl) {
164
+ zOrder.splice(i, 1);
165
+ }
166
+ }
167
+ }
168
+
169
+ if (zOrder.length) {
170
+ for (i = 0; i < zOrder.length; i++) {
171
+ if (zOrder[i].modal) {
172
+ zIndex++;
173
+ topModal = zOrder[i];
174
+ }
175
+
176
+ zOrder[i].getEl().style.zIndex = zIndex;
177
+ zOrder[i].zIndex = zIndex;
178
+ zIndex++;
179
+ }
180
+ }
181
+
182
+ var modalBlockEl = $('#' + ctrl.classPrefix + 'modal-block', ctrl.getContainerElm())[0];
183
+
184
+ if (topModal) {
185
+ $(modalBlockEl).css('z-index', topModal.zIndex - 1);
186
+ } else if (modalBlockEl) {
187
+ modalBlockEl.parentNode.removeChild(modalBlockEl);
188
+ hasModal = false;
189
+ }
190
+
191
+ FloatPanel.currentZIndex = zIndex;
192
+ }
193
+
194
+ var FloatPanel = Panel.extend({
195
+ Mixins: [Movable, Resizable],
196
+
197
+ /**
198
+ * Constructs a new control instance with the specified settings.
199
+ *
200
+ * @constructor
201
+ * @param {Object} settings Name/value object with settings.
202
+ * @setting {Boolean} autohide Automatically hide the panel.
203
+ */
204
+ init: function(settings) {
205
+ var self = this;
206
+
207
+ self._super(settings);
208
+ self._eventsRoot = self;
209
+
210
+ self.classes.add('floatpanel');
211
+
212
+ // Hide floatpanes on click out side the root button
213
+ if (settings.autohide) {
214
+ bindDocumentClickHandler();
215
+ bindWindowResizeHandler();
216
+ visiblePanels.push(self);
217
+ }
218
+
219
+ if (settings.autofix) {
220
+ bindDocumentScrollHandler();
221
+
222
+ self.on('move', function() {
223
+ repositionPanel(this);
224
+ });
225
+ }
226
+
227
+ self.on('postrender show', function(e) {
228
+ if (e.control == self) {
229
+ var $modalBlockEl, prefix = self.classPrefix;
230
+
231
+ if (self.modal && !hasModal) {
232
+ $modalBlockEl = $('#' + prefix + 'modal-block', self.getContainerElm());
233
+ if (!$modalBlockEl[0]) {
234
+ $modalBlockEl = $(
235
+ '<div id="' + prefix + 'modal-block" class="' + prefix + 'reset ' + prefix + 'fade"></div>'
236
+ ).appendTo(self.getContainerElm());
237
+ }
238
+
239
+ Delay.setTimeout(function() {
240
+ $modalBlockEl.addClass(prefix + 'in');
241
+ $(self.getEl()).addClass(prefix + 'in');
242
+ });
243
+
244
+ hasModal = true;
245
+ }
246
+
247
+ addRemove(true, self);
248
+ }
249
+ });
250
+
251
+ self.on('show', function() {
252
+ self.parents().each(function(ctrl) {
253
+ if (ctrl.state.get('fixed')) {
254
+ self.fixed(true);
255
+ return false;
256
+ }
257
+ });
258
+ });
259
+
260
+ if (settings.popover) {
261
+ self._preBodyHtml = '<div class="' + self.classPrefix + 'arrow"></div>';
262
+ self.classes.add('popover').add('bottom').add(self.isRtl() ? 'end' : 'start');
263
+ }
264
+ },
265
+
266
+ fixed: function(state) {
267
+ var self = this;
268
+
269
+ if (self.state.get('fixed') != state) {
270
+ if (self.state.get('rendered')) {
271
+ var viewport = DomUtils.getViewPort();
272
+
273
+ if (state) {
274
+ self.layoutRect().y -= viewport.y;
275
+ } else {
276
+ self.layoutRect().y += viewport.y;
277
+ }
278
+ }
279
+
280
+ self.classes.toggle('fixed', state);
281
+ self.state.set('fixed', state);
282
+ }
283
+
284
+ return self;
285
+ },
286
+
287
+ /**
288
+ * Shows the current float panel.
289
+ *
290
+ * @method show
291
+ * @return {tinymce.ui.FloatPanel} Current floatpanel instance.
292
+ */
293
+ show: function() {
294
+ var self = this, i, state = self._super();
295
+
296
+ i = visiblePanels.length;
297
+ while (i--) {
298
+ if (visiblePanels[i] === self) {
299
+ break;
300
+ }
301
+ }
302
+
303
+ if (i === -1) {
304
+ visiblePanels.push(self);
305
+ }
306
+
307
+ return state;
308
+ },
309
+
310
+ /**
311
+ * Hides the current float panel.
312
+ *
313
+ * @method hide
314
+ * @return {tinymce.ui.FloatPanel} Current floatpanel instance.
315
+ */
316
+ hide: function() {
317
+ removeVisiblePanel(this);
318
+ addRemove(false, this);
319
+
320
+ return this._super();
321
+ },
322
+
323
+ /**
324
+ * Hide all visible float panels with he autohide setting enabled. This is for
325
+ * manually hiding floating menus or panels.
326
+ *
327
+ * @method hideAll
328
+ */
329
+ hideAll: function() {
330
+ FloatPanel.hideAll();
331
+ },
332
+
333
+ /**
334
+ * Closes the float panel. This will remove the float panel from page and fire the close event.
335
+ *
336
+ * @method close
337
+ */
338
+ close: function() {
339
+ var self = this;
340
+
341
+ if (!self.fire('close').isDefaultPrevented()) {
342
+ self.remove();
343
+ addRemove(false, self);
344
+ }
345
+
346
+ return self;
347
+ },
348
+
349
+ /**
350
+ * Removes the float panel from page.
351
+ *
352
+ * @method remove
353
+ */
354
+ remove: function() {
355
+ removeVisiblePanel(this);
356
+ this._super();
357
+ },
358
+
359
+ postRender: function() {
360
+ var self = this;
361
+
362
+ if (self.settings.bodyRole) {
363
+ this.getEl('body').setAttribute('role', self.settings.bodyRole);
364
+ }
365
+
366
+ return self._super();
367
+ }
368
+ });
369
+
370
+ /**
371
+ * Hide all visible float panels with he autohide setting enabled. This is for
372
+ * manually hiding floating menus or panels.
373
+ *
374
+ * @static
375
+ * @method hideAll
376
+ */
377
+ FloatPanel.hideAll = function() {
378
+ var i = visiblePanels.length;
379
+
380
+ while (i--) {
381
+ var panel = visiblePanels[i];
382
+
383
+ if (panel && panel.settings.autohide) {
384
+ panel.hide();
385
+ visiblePanels.splice(i, 1);
386
+ }
387
+ }
388
+ };
389
+
390
+ function removeVisiblePanel(panel) {
391
+ var i;
392
+
393
+ i = visiblePanels.length;
394
+ while (i--) {
395
+ if (visiblePanels[i] === panel) {
396
+ visiblePanels.splice(i, 1);
397
+ }
398
+ }
399
+
400
+ i = zOrder.length;
401
+ while (i--) {
402
+ if (zOrder[i] === panel) {
403
+ zOrder.splice(i, 1);
404
+ }
405
+ }
406
+ }
407
+
408
+ return FloatPanel;
409
+ });