alchemy_cms 2.9.1 → 3.0.0.rc5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (695) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/.travis.yml +14 -3
  4. data/CONTRIBUTING.md +73 -0
  5. data/Gemfile +25 -24
  6. data/LICENSE +19 -16
  7. data/README.md +16 -33
  8. data/alchemy_cms.gemspec +62 -59
  9. data/app/assets/images/alchemy/alchemy-logo.svg +70 -0
  10. data/app/assets/images/alchemy/favicon.ico +0 -0
  11. data/app/assets/images/alchemy/icon.svg +14 -0
  12. data/app/assets/javascripts/alchemy/alchemy.autocomplete.js.coffee +30 -0
  13. data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +28 -30
  14. data/app/assets/javascripts/alchemy/alchemy.browser.js.coffee +20 -26
  15. data/app/assets/javascripts/alchemy/alchemy.confirm_dialog.js.coffee +80 -0
  16. data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +261 -0
  17. data/app/assets/javascripts/alchemy/alchemy.dirty.js.coffee +15 -15
  18. data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.coffee +4 -1
  19. data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +20 -9
  20. data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +67 -68
  21. data/app/assets/javascripts/alchemy/alchemy.file_progress.js.coffee +63 -0
  22. data/app/assets/javascripts/alchemy/alchemy.growler.js.coffee +1 -1
  23. data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +2 -1
  24. data/app/assets/javascripts/alchemy/alchemy.hotkeys.js.coffee +32 -14
  25. data/app/assets/javascripts/alchemy/alchemy.i18n.js.coffee +21 -0
  26. data/app/assets/javascripts/alchemy/alchemy.image_cropper.js.coffee +4 -1
  27. data/app/assets/javascripts/alchemy/{alchemy.onload.js.coffee → alchemy.initializer.js.coffee} +22 -5
  28. data/app/assets/javascripts/alchemy/alchemy.js +13 -11
  29. data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +221 -0
  30. data/app/assets/javascripts/alchemy/alchemy.list_filter.js.coffee +2 -2
  31. data/app/assets/javascripts/alchemy/alchemy.page_sorter.js +0 -2
  32. data/app/assets/javascripts/alchemy/alchemy.preview.js.coffee +37 -35
  33. data/app/assets/javascripts/alchemy/alchemy.preview_window.js.coffee +42 -69
  34. data/app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee +1 -1
  35. data/app/assets/javascripts/alchemy/alchemy.spinner.js.coffee +4 -4
  36. data/app/assets/javascripts/alchemy/alchemy.tinymce.js.coffee.erb +3 -7
  37. data/app/assets/javascripts/alchemy/alchemy.translations.js.coffee +107 -19
  38. data/app/assets/javascripts/alchemy/alchemy.uploader.js.coffee +97 -0
  39. data/app/assets/javascripts/alchemy/alchemy.windows.js.coffee +14 -273
  40. data/app/assets/javascripts/alchemy/menubar.js.coffee +8 -0
  41. data/app/assets/javascripts/alchemy/preview.js +0 -2
  42. data/app/assets/javascripts/tinymce/plugins/alchemy_link/plugin.min.js +19 -0
  43. data/app/assets/stylesheets/alchemy/{defaults.scss → _defaults.scss} +2 -0
  44. data/app/assets/stylesheets/alchemy/{extends.scss → _extends.scss} +7 -61
  45. data/app/assets/stylesheets/alchemy/_mixins.scss +112 -0
  46. data/app/assets/stylesheets/alchemy/{variables.scss → _variables.scss} +31 -11
  47. data/app/assets/stylesheets/alchemy/admin.css.scss +6 -3
  48. data/app/assets/stylesheets/alchemy/archive.scss +27 -32
  49. data/app/assets/stylesheets/alchemy/base.scss +93 -127
  50. data/app/assets/stylesheets/alchemy/buttons.scss +227 -0
  51. data/app/assets/stylesheets/alchemy/dashboard.scss +14 -1
  52. data/app/assets/stylesheets/alchemy/dialogs.scss +209 -0
  53. data/app/assets/stylesheets/alchemy/elements.scss +173 -210
  54. data/app/assets/stylesheets/alchemy/errors.scss +5 -15
  55. data/app/assets/stylesheets/alchemy/flash.scss +12 -11
  56. data/app/assets/stylesheets/alchemy/form_fields.scss +56 -0
  57. data/app/assets/stylesheets/alchemy/forms.scss +161 -0
  58. data/app/assets/stylesheets/alchemy/frame.scss +8 -6
  59. data/app/assets/stylesheets/alchemy/icon-font.css.scss +40 -40
  60. data/app/assets/stylesheets/alchemy/icons.scss +14 -6
  61. data/app/assets/stylesheets/alchemy/jquery-ui.scss +11 -629
  62. data/app/assets/stylesheets/alchemy/menubar.css.scss +27 -72
  63. data/app/assets/stylesheets/alchemy/notices.scss +6 -5
  64. data/app/assets/stylesheets/alchemy/pagination.scss +1 -1
  65. data/app/assets/stylesheets/alchemy/search.scss +4 -3
  66. data/app/assets/stylesheets/alchemy/selects.scss +199 -0
  67. data/app/assets/stylesheets/alchemy/sitemap.scss +31 -60
  68. data/app/assets/stylesheets/alchemy/tables.scss +0 -77
  69. data/app/assets/stylesheets/alchemy/toolbar.scss +0 -2
  70. data/app/assets/stylesheets/alchemy/upload.scss +60 -57
  71. data/app/assets/stylesheets/tinymce/skins/alchemy/content.min.css.scss +81 -0
  72. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/readme.md +1 -0
  73. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.eot +0 -0
  74. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.svg +175 -0
  75. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.ttf +0 -0
  76. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.woff +0 -0
  77. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.eot +0 -0
  78. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.svg +153 -0
  79. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.ttf +0 -0
  80. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.woff +0 -0
  81. data/app/assets/stylesheets/tinymce/skins/alchemy/img/anchor.gif +0 -0
  82. data/app/assets/stylesheets/tinymce/skins/alchemy/img/loader.gif +0 -0
  83. data/app/assets/stylesheets/tinymce/skins/alchemy/img/object.gif +0 -0
  84. data/{vendor/assets/javascripts/tiny_mce/themes/advanced → app/assets/stylesheets/tinymce/skins/alchemy}/img/trans.gif +0 -0
  85. data/app/assets/stylesheets/tinymce/skins/alchemy/img/wline.gif +0 -0
  86. data/app/assets/stylesheets/tinymce/skins/alchemy/skin.ie7.min.css +1 -0
  87. data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +1813 -0
  88. data/app/controllers/alchemy/admin/attachments_controller.rb +39 -50
  89. data/app/controllers/alchemy/admin/base_controller.rb +32 -32
  90. data/app/controllers/alchemy/admin/clipboard_controller.rb +2 -2
  91. data/app/controllers/alchemy/admin/contents_controller.rb +12 -7
  92. data/app/controllers/alchemy/admin/dashboard_controller.rb +1 -1
  93. data/app/controllers/alchemy/admin/elements_controller.rb +41 -32
  94. data/app/controllers/alchemy/admin/essence_files_controller.rb +4 -3
  95. data/app/controllers/alchemy/admin/essence_pictures_controller.rb +13 -16
  96. data/app/controllers/alchemy/admin/languages_controller.rb +0 -1
  97. data/app/controllers/alchemy/admin/layoutpages_controller.rb +2 -1
  98. data/app/controllers/alchemy/admin/pages_controller.rb +106 -166
  99. data/app/controllers/alchemy/admin/pictures_controller.rb +54 -80
  100. data/app/controllers/alchemy/admin/resources_controller.rb +25 -9
  101. data/app/controllers/alchemy/admin/tags_controller.rb +26 -14
  102. data/app/controllers/alchemy/admin/trash_controller.rb +5 -2
  103. data/app/controllers/alchemy/attachments_controller.rb +8 -8
  104. data/app/controllers/alchemy/base_controller.rb +23 -89
  105. data/app/controllers/alchemy/contents_controller.rb +17 -0
  106. data/app/controllers/alchemy/elements_controller.rb +7 -30
  107. data/app/controllers/alchemy/messages_controller.rb +18 -18
  108. data/app/controllers/alchemy/pages_controller.rb +73 -48
  109. data/app/controllers/alchemy/pictures_controller.rb +45 -46
  110. data/app/helpers/alchemy/admin/attachments_helper.rb +1 -0
  111. data/app/helpers/alchemy/admin/base_helper.rb +95 -90
  112. data/app/helpers/alchemy/admin/contents_helper.rb +34 -37
  113. data/app/helpers/alchemy/admin/elements_helper.rb +4 -5
  114. data/app/helpers/alchemy/admin/essences_helper.rb +13 -90
  115. data/app/helpers/alchemy/admin/form_helper.rb +30 -0
  116. data/app/helpers/alchemy/admin/navigation_helper.rb +34 -2
  117. data/app/helpers/alchemy/base_helper.rb +3 -3
  118. data/app/helpers/alchemy/elements_helper.rb +105 -142
  119. data/app/helpers/alchemy/essences_helper.rb +17 -53
  120. data/app/helpers/alchemy/pages_helper.rb +148 -177
  121. data/app/helpers/alchemy/url_helper.rb +5 -25
  122. data/app/models/alchemy/attachment.rb +39 -14
  123. data/app/models/alchemy/cell.rb +18 -4
  124. data/app/models/alchemy/content.rb +69 -79
  125. data/app/models/alchemy/content/factory.rb +2 -6
  126. data/app/models/alchemy/element.rb +94 -89
  127. data/app/models/alchemy/essence_boolean.rb +13 -2
  128. data/app/models/alchemy/essence_date.rb +15 -8
  129. data/app/models/alchemy/essence_file.rb +25 -1
  130. data/app/models/alchemy/essence_html.rb +13 -6
  131. data/app/models/alchemy/essence_link.rb +16 -7
  132. data/app/models/alchemy/essence_picture.rb +102 -21
  133. data/app/models/alchemy/essence_richtext.rb +15 -37
  134. data/app/models/alchemy/essence_select.rb +13 -2
  135. data/app/models/alchemy/essence_text.rb +17 -42
  136. data/app/models/alchemy/folded_page.rb +10 -0
  137. data/app/models/alchemy/language.rb +62 -48
  138. data/app/models/alchemy/legacy_page_url.rb +12 -2
  139. data/app/models/alchemy/message.rb +11 -43
  140. data/app/models/alchemy/page.rb +107 -88
  141. data/app/models/alchemy/page/{page_cells.rb → cells.rb} +2 -2
  142. data/app/models/alchemy/page/{page_elements.rb → elements.rb} +5 -6
  143. data/app/models/alchemy/page/{page_naming.rb → naming.rb} +6 -11
  144. data/app/models/alchemy/page/{page_natures.rb → natures.rb} +29 -5
  145. data/app/models/alchemy/page/{page_scopes.rb → scopes.rb} +14 -14
  146. data/app/models/alchemy/page/{page_users.rb → users.rb} +4 -4
  147. data/app/models/alchemy/picture.rb +113 -41
  148. data/app/models/alchemy/picture/sweeping.rb +17 -0
  149. data/app/models/alchemy/site.rb +14 -2
  150. data/app/models/alchemy/tag.rb +8 -0
  151. data/app/serializers/alchemy/attachment_serializer.rb +15 -0
  152. data/app/serializers/alchemy/cell_serializer.rb +18 -0
  153. data/app/serializers/alchemy/content_serializer.rb +27 -0
  154. data/app/serializers/alchemy/element_serializer.rb +17 -0
  155. data/app/serializers/alchemy/essence_boolean_serializer.rb +11 -0
  156. data/app/serializers/alchemy/essence_date_serializer.rb +11 -0
  157. data/app/serializers/alchemy/essence_file_serializer.rb +12 -0
  158. data/app/serializers/alchemy/essence_html_serializer.rb +11 -0
  159. data/app/serializers/alchemy/essence_link_serializer.rb +14 -0
  160. data/app/serializers/alchemy/essence_picture_serializer.rb +28 -0
  161. data/app/serializers/alchemy/essence_richtext_serializer.rb +12 -0
  162. data/app/serializers/alchemy/essence_select_serializer.rb +11 -0
  163. data/app/serializers/alchemy/essence_text_serializer.rb +22 -0
  164. data/app/serializers/alchemy/page_serializer.rb +29 -0
  165. data/app/serializers/alchemy/picture_serializer.rb +16 -0
  166. data/app/views/alchemy/_menubar.html.erb +16 -0
  167. data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +27 -29
  168. data/app/views/alchemy/admin/attachments/_attachment.html.erb +24 -24
  169. data/app/views/alchemy/admin/attachments/_file_to_assign.html.erb +1 -1
  170. data/app/views/alchemy/admin/attachments/_files_list.html.erb +1 -1
  171. data/app/views/alchemy/admin/attachments/_overlay_file_list.html.erb +2 -2
  172. data/app/views/alchemy/admin/attachments/archive_overlay.js.erb +7 -4
  173. data/app/views/alchemy/admin/attachments/create.js.erb +11 -9
  174. data/app/views/alchemy/admin/attachments/edit.html.erb +9 -26
  175. data/app/views/alchemy/admin/attachments/index.html.erb +4 -4
  176. data/app/views/alchemy/admin/attachments/new.html.erb +13 -10
  177. data/app/views/alchemy/admin/attachments/show.html.erb +1 -1
  178. data/app/views/alchemy/admin/clipboard/clear.js.erb +3 -7
  179. data/app/views/alchemy/admin/clipboard/index.html.erb +21 -22
  180. data/app/views/alchemy/admin/clipboard/insert.js.erb +19 -14
  181. data/app/views/alchemy/admin/contents/_missing.html.erb +10 -12
  182. data/app/views/alchemy/admin/contents/create.js.erb +32 -36
  183. data/app/views/alchemy/admin/contents/destroy.js.coffee +3 -3
  184. data/app/views/alchemy/admin/contents/new.html.erb +9 -21
  185. data/app/views/alchemy/admin/contents/order.js.erb +2 -5
  186. data/app/views/alchemy/admin/dashboard/help.html.erb +21 -0
  187. data/app/views/alchemy/admin/dashboard/index.html.erb +5 -7
  188. data/app/views/alchemy/admin/dashboard/info.html.erb +13 -9
  189. data/app/views/alchemy/admin/elements/_add_picture.html.erb +6 -6
  190. data/app/views/alchemy/admin/elements/_element.html.erb +4 -1
  191. data/app/views/alchemy/admin/elements/_element_head.html.erb +2 -2
  192. data/app/views/alchemy/admin/elements/_new_element_form.html.erb +20 -27
  193. data/app/views/alchemy/admin/elements/_picture_gallery_editor.html.erb +7 -7
  194. data/app/views/alchemy/admin/elements/_refresh_editor.js.erb +1 -1
  195. data/app/views/alchemy/admin/elements/create.js.erb +6 -6
  196. data/app/views/alchemy/admin/elements/fold.js.erb +10 -10
  197. data/app/views/alchemy/admin/elements/index.html.erb +24 -26
  198. data/app/views/alchemy/admin/elements/list.html.erb +16 -0
  199. data/app/views/alchemy/admin/elements/new.html.erb +12 -28
  200. data/app/views/alchemy/admin/elements/trash.js.erb +3 -3
  201. data/app/views/alchemy/admin/elements/update.js.erb +12 -8
  202. data/app/views/alchemy/admin/essence_files/assign.js.erb +9 -14
  203. data/app/views/alchemy/admin/essence_files/edit.html.erb +17 -27
  204. data/app/views/alchemy/admin/essence_pictures/assign.js.erb +18 -0
  205. data/app/views/alchemy/admin/essence_pictures/crop.html.erb +1 -1
  206. data/app/views/alchemy/admin/essence_pictures/destroy.js.erb +9 -13
  207. data/app/views/alchemy/admin/essence_pictures/edit.html.erb +27 -67
  208. data/app/views/alchemy/admin/essence_pictures/save_link.js.erb +1 -1
  209. data/app/views/alchemy/admin/essence_pictures/update.js.erb +3 -3
  210. data/app/views/alchemy/admin/languages/_form.html.erb +13 -55
  211. data/app/views/alchemy/admin/languages/_language.html.erb +10 -16
  212. data/app/views/alchemy/admin/languages/_table.html.erb +1 -1
  213. data/app/views/alchemy/admin/languages/index.html.erb +4 -4
  214. data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +25 -27
  215. data/app/views/alchemy/admin/layoutpages/index.html.erb +5 -5
  216. data/app/views/alchemy/admin/pages/_create_language_form.html.erb +25 -31
  217. data/app/views/alchemy/admin/pages/_external_link.html.erb +24 -35
  218. data/app/views/alchemy/admin/pages/_file_link.html.erb +31 -45
  219. data/app/views/alchemy/admin/pages/_internal_link.html.erb +36 -42
  220. data/app/views/alchemy/admin/pages/_new_page_form.html.erb +8 -26
  221. data/app/views/alchemy/admin/pages/_page.html.erb +76 -75
  222. data/app/views/alchemy/admin/pages/_page_for_links.html.erb +15 -16
  223. data/app/views/alchemy/admin/pages/configure.html.erb +56 -86
  224. data/app/views/alchemy/admin/pages/configure_external.html.erb +32 -39
  225. data/app/views/alchemy/admin/pages/destroy.js.erb +10 -10
  226. data/app/views/alchemy/admin/pages/edit.html.erb +57 -63
  227. data/app/views/alchemy/admin/pages/fold.js.erb +3 -5
  228. data/app/views/alchemy/admin/pages/index.html.erb +11 -13
  229. data/app/views/alchemy/admin/pages/info.html.erb +28 -31
  230. data/app/views/alchemy/admin/pages/link.html.erb +8 -19
  231. data/app/views/alchemy/admin/pages/new.html.erb +11 -35
  232. data/app/views/alchemy/admin/pages/show.html.erb +1 -1
  233. data/app/views/alchemy/admin/pages/sort.js.erb +5 -7
  234. data/app/views/alchemy/admin/pages/update.js.erb +19 -20
  235. data/app/views/alchemy/admin/partials/_autocomplete_tag_list.html.erb +1 -9
  236. data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +8 -19
  237. data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +1 -1
  238. data/app/views/alchemy/admin/partials/_sub_navigation.html.erb +1 -1
  239. data/app/views/alchemy/admin/partials/_toolbar_button.html.erb +3 -3
  240. data/app/views/alchemy/admin/partials/_upload_form.html.erb +37 -55
  241. data/app/views/alchemy/admin/pictures/_archive.html.erb +3 -3
  242. data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +11 -13
  243. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +1 -1
  244. data/app/views/alchemy/admin/pictures/_overlay_picture_list.html.erb +4 -2
  245. data/app/views/alchemy/admin/pictures/_picture.html.erb +37 -37
  246. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +1 -1
  247. data/app/views/alchemy/admin/pictures/archive_overlay.js.erb +8 -5
  248. data/app/views/alchemy/admin/pictures/edit.html.erb +8 -21
  249. data/app/views/alchemy/admin/pictures/edit_multiple.html.erb +15 -33
  250. data/app/views/alchemy/admin/pictures/index.html.erb +9 -7
  251. data/app/views/alchemy/admin/pictures/index.js.erb +2 -2
  252. data/app/views/alchemy/admin/pictures/info.html.erb +35 -40
  253. data/app/views/alchemy/admin/pictures/new.html.erb +15 -11
  254. data/app/views/alchemy/admin/pictures/show.html.erb +5 -5
  255. data/app/views/alchemy/admin/resources/_form.html.erb +7 -31
  256. data/app/views/alchemy/admin/resources/_resource.html.erb +9 -16
  257. data/app/views/alchemy/admin/resources/_table.html.erb +1 -1
  258. data/app/views/alchemy/admin/resources/index.html.erb +5 -5
  259. data/app/views/alchemy/admin/sites/index.html.erb +3 -3
  260. data/app/views/alchemy/admin/tags/_tag.html.erb +15 -15
  261. data/app/views/alchemy/admin/tags/edit.html.erb +20 -37
  262. data/app/views/alchemy/admin/tags/index.html.erb +16 -19
  263. data/app/views/alchemy/admin/tags/new.html.erb +6 -15
  264. data/app/views/alchemy/admin/trash/clear.js.coffee +2 -2
  265. data/app/views/alchemy/admin/trash/index.html.erb +24 -20
  266. data/app/views/alchemy/base/500.html.erb +2 -2
  267. data/app/views/alchemy/base/error_notice.js.erb +1 -1
  268. data/app/views/alchemy/base/leave.html.erb +11 -11
  269. data/app/views/alchemy/base/permission_denied.js.erb +1 -1
  270. data/app/views/alchemy/base/redirect.js.erb +12 -1
  271. data/app/views/alchemy/base/update.js.erb +4 -4
  272. data/app/views/alchemy/breadcrumb/_spacer.html.erb +1 -1
  273. data/app/views/alchemy/elements/show.js.erb +1 -5
  274. data/app/views/alchemy/essences/_essence_boolean_editor.html.erb +1 -1
  275. data/app/views/alchemy/essences/_essence_boolean_view.html.erb +3 -1
  276. data/app/views/alchemy/essences/_essence_date_editor.html.erb +4 -3
  277. data/app/views/alchemy/essences/_essence_date_view.html.erb +9 -5
  278. data/app/views/alchemy/essences/_essence_file_editor.html.erb +33 -32
  279. data/app/views/alchemy/essences/_essence_file_view.html.erb +9 -7
  280. data/app/views/alchemy/essences/_essence_html_view.html.erb +3 -1
  281. data/app/views/alchemy/essences/_essence_link_editor.html.erb +2 -2
  282. data/app/views/alchemy/essences/_essence_link_view.html.erb +5 -1
  283. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +11 -11
  284. data/app/views/alchemy/essences/_essence_picture_view.html.erb +3 -1
  285. data/app/views/alchemy/essences/_essence_richtext_editor.html.erb +1 -1
  286. data/app/views/alchemy/essences/_essence_richtext_view.html.erb +3 -4
  287. data/app/views/alchemy/essences/_essence_select_editor.html.erb +1 -1
  288. data/app/views/alchemy/essences/_essence_select_view.html.erb +3 -1
  289. data/app/views/alchemy/essences/_essence_text_editor.html.erb +14 -28
  290. data/app/views/alchemy/essences/_essence_text_view.html.erb +4 -0
  291. data/app/views/alchemy/essences/shared/_essence_picture_tools.html.erb +29 -29
  292. data/app/views/alchemy/essences/shared/_linkable_essence_tools.html.erb +9 -9
  293. data/app/views/alchemy/language_links/_language.html.erb +1 -1
  294. data/app/views/kaminari/{_first_page.html.erb → alchemy/_first_page.html.erb} +1 -1
  295. data/app/views/kaminari/{_gap.html.erb → alchemy/_gap.html.erb} +0 -0
  296. data/app/views/kaminari/{_last_page.html.erb → alchemy/_last_page.html.erb} +1 -1
  297. data/app/views/kaminari/{_next_page.html.erb → alchemy/_next_page.html.erb} +2 -2
  298. data/app/views/kaminari/{_page.html.erb → alchemy/_page.html.erb} +2 -2
  299. data/app/views/kaminari/{_paginator.html.erb → alchemy/_paginator.html.erb} +0 -0
  300. data/app/views/kaminari/{_prev_page.html.erb → alchemy/_prev_page.html.erb} +2 -2
  301. data/app/views/layouts/alchemy/admin.html.erb +17 -17
  302. data/bin/alchemy +179 -44
  303. data/bin/rails +8 -0
  304. data/config/alchemy/config.yml +24 -22
  305. data/config/alchemy/modules.yml +7 -1
  306. data/config/initializers/dragonfly.rb +20 -23
  307. data/config/initializers/simple_form.rb +144 -0
  308. data/config/locales/alchemy.de.yml +42 -33
  309. data/config/locales/alchemy.en.yml +32 -19
  310. data/config/locales/alchemy.nl.yml +937 -0
  311. data/config/locales/simple_form.de.yml +26 -0
  312. data/config/locales/simple_form.en.yml +25 -0
  313. data/config/locales/simple_form.nl.yml +25 -0
  314. data/config/routes.rb +9 -10
  315. data/db/migrate/20130827094554_alchemy_two_point_six.rb +261 -251
  316. data/db/migrate/20130828121054_remove_do_not_index_from_alchemy_essence_texts.rb +5 -0
  317. data/db/migrate/20130828121120_remove_do_not_index_from_alchemy_essence_richtexts.rb +5 -0
  318. data/db/migrate/20130918201742_add_published_at_to_alchemy_pages.rb +5 -0
  319. data/db/migrate/20140107192720_add_missing_unique_indices_to_tags_and_taggings.rb +21 -0
  320. data/lib/alchemy/auth_accessors.rb +23 -2
  321. data/lib/alchemy/cache_digests/template_tracker.rb +65 -0
  322. data/lib/alchemy/capistrano.rb +28 -38
  323. data/lib/alchemy/controller_actions.rb +130 -0
  324. data/lib/alchemy/engine.rb +54 -47
  325. data/lib/alchemy/essence.rb +83 -63
  326. data/lib/alchemy/forms/builder.rb +23 -0
  327. data/lib/alchemy/hints.rb +57 -0
  328. data/lib/alchemy/locale.rb +63 -0
  329. data/lib/alchemy/modules.rb +17 -17
  330. data/lib/alchemy/mount_point.rb +1 -1
  331. data/lib/alchemy/permissions.rb +199 -0
  332. data/lib/alchemy/picture_attributes.rb +1 -1
  333. data/lib/alchemy/resource.rb +13 -17
  334. data/lib/alchemy/resources_helper.rb +16 -18
  335. data/lib/alchemy/seeder.rb +8 -10
  336. data/lib/alchemy/shell.rb +8 -6
  337. data/lib/alchemy/tasks/helpers.rb +6 -4
  338. data/lib/alchemy/test_support/auth_helpers.rb +3 -3
  339. data/lib/alchemy/test_support/controller_requests.rb +1 -1
  340. data/lib/alchemy/test_support/essence_shared_examples.rb +141 -0
  341. data/lib/alchemy/test_support/factories.rb +27 -9
  342. data/lib/alchemy/test_support/integration_helpers.rb +1 -27
  343. data/lib/alchemy/tinymce.rb +12 -32
  344. data/lib/alchemy/touching.rb +41 -0
  345. data/lib/alchemy/upgrader.rb +17 -12
  346. data/lib/alchemy/upgrader/three_point_zero.rb +62 -0
  347. data/lib/alchemy/version.rb +2 -1
  348. data/lib/alchemy_cms.rb +1 -7
  349. data/lib/rails/generators/alchemy/elements/elements_generator.rb +3 -2
  350. data/lib/rails/generators/alchemy/elements/templates/editor.html.erb +0 -2
  351. data/lib/rails/generators/alchemy/elements/templates/editor.html.haml +2 -3
  352. data/lib/rails/generators/alchemy/elements/templates/editor.html.slim +0 -2
  353. data/lib/rails/generators/alchemy/elements/templates/view.html.erb +23 -23
  354. data/lib/rails/generators/alchemy/elements/templates/view.html.haml +16 -17
  355. data/lib/rails/generators/alchemy/elements/templates/view.html.slim +16 -17
  356. data/lib/rails/generators/alchemy/essence/templates/editor.html.erb +1 -1
  357. data/lib/rails/generators/alchemy/scaffold/files/_article_editor.html.erb +5 -0
  358. data/lib/rails/generators/alchemy/scaffold/files/_article_view.html.erb +7 -0
  359. data/lib/rails/generators/alchemy/scaffold/files/alchemy.de.yml +31 -0
  360. data/lib/rails/generators/alchemy/scaffold/files/alchemy.elements.css.scss +30 -0
  361. data/lib/rails/generators/alchemy/scaffold/files/alchemy.en.yml +31 -0
  362. data/lib/rails/generators/alchemy/scaffold/files/application.html.erb +4 -2
  363. data/lib/rails/generators/alchemy/scaffold/files/elements.yml +16 -0
  364. data/lib/rails/generators/alchemy/scaffold/scaffold_generator.rb +16 -7
  365. data/lib/rails/generators/alchemy/scaffold/templates/page_layouts.yml.tt +3 -2
  366. data/lib/rails/templates/alchemy.rb +3 -6
  367. data/lib/tasks/alchemy/install.rake +29 -38
  368. data/lib/tasks/alchemy/tidy.rake +1 -1
  369. data/spec/controllers/admin/attachments_controller_spec.rb +101 -35
  370. data/spec/controllers/admin/clipboard_controller_spec.rb +16 -18
  371. data/spec/controllers/admin/contents_controller_spec.rb +34 -27
  372. data/spec/controllers/admin/dashboard_controller_spec.rb +2 -4
  373. data/spec/controllers/admin/elements_controller_spec.rb +288 -160
  374. data/spec/controllers/admin/essence_files_controller_spec.rb +11 -18
  375. data/spec/controllers/admin/essence_pictures_controller_spec.rb +15 -24
  376. data/spec/controllers/admin/languages_controller_spec.rb +11 -4
  377. data/spec/controllers/admin/layoutpages_controller_spec.rb +1 -2
  378. data/spec/controllers/admin/pages_controller_spec.rb +137 -167
  379. data/spec/controllers/admin/pictures_controller_spec.rb +286 -14
  380. data/spec/controllers/admin/resources_controller_spec.rb +4 -1
  381. data/spec/controllers/alchemy/admin/tags_controller_spec.rb +63 -0
  382. data/spec/controllers/attachments_controller_spec.rb +3 -3
  383. data/spec/controllers/base_controller_spec.rb +12 -104
  384. data/spec/controllers/elements_controller_spec.rb +2 -5
  385. data/spec/controllers/messages_controller_spec.rb +49 -51
  386. data/spec/controllers/pages_controller_spec.rb +91 -111
  387. data/spec/controllers/pictures_controller_spec.rb +126 -72
  388. data/spec/dummy/Rakefile +0 -1
  389. data/spec/dummy/app/assets/javascripts/application.js +11 -7
  390. data/spec/dummy/app/assets/stylesheets/application.css +11 -5
  391. data/spec/dummy/app/models/ability.rb +9 -0
  392. data/spec/dummy/app/models/dummy_user.rb +7 -0
  393. data/spec/dummy/app/models/event.rb +7 -2
  394. data/spec/dummy/app/models/location.rb +0 -1
  395. data/spec/dummy/app/views/alchemy/elements/_article_editor.html.erb +0 -1
  396. data/spec/dummy/app/views/alchemy/elements/_headline_editor.html.erb +1 -0
  397. data/spec/dummy/app/views/layouts/application.html.erb +3 -1
  398. data/spec/dummy/bin/bundle +3 -0
  399. data/spec/dummy/bin/rails +4 -0
  400. data/spec/dummy/bin/rake +4 -0
  401. data/spec/dummy/config.ru +2 -2
  402. data/spec/dummy/config/alchemy/elements.yml +0 -3
  403. data/spec/dummy/config/alchemy/page_layouts.yml +0 -6
  404. data/spec/dummy/config/application.rb +5 -57
  405. data/spec/dummy/config/boot.rb +4 -9
  406. data/spec/dummy/config/environment.rb +2 -2
  407. data/spec/dummy/config/environments/development.rb +11 -19
  408. data/spec/dummy/config/environments/production.rb +40 -27
  409. data/spec/dummy/config/environments/test.rb +15 -14
  410. data/spec/dummy/config/initializers/alchemy.rb +2 -0
  411. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  412. data/spec/dummy/config/initializers/inflections.rb +9 -3
  413. data/spec/dummy/config/initializers/secret_token.rb +7 -2
  414. data/spec/dummy/config/initializers/session_store.rb +1 -6
  415. data/spec/dummy/config/initializers/wrap_parameters.rb +6 -6
  416. data/spec/dummy/config/routes.rb +3 -1
  417. data/spec/dummy/db/migrate/20130827094554_alchemy_two_point_six.rb +261 -251
  418. data/spec/dummy/db/migrate/20130828121054_remove_do_not_index_from_alchemy_essence_texts.rb +5 -0
  419. data/spec/dummy/db/migrate/20130828121120_remove_do_not_index_from_alchemy_essence_richtexts.rb +5 -0
  420. data/spec/dummy/db/migrate/20130918201742_add_published_at_to_alchemy_pages.rb +5 -0
  421. data/spec/dummy/db/migrate/20131209225243_create_dummy_users.rb +9 -0
  422. data/spec/dummy/db/migrate/20140107192720_add_missing_unique_indices_to_tags_and_taggings.rb +21 -0
  423. data/spec/dummy/db/schema.rb +112 -105
  424. data/spec/dummy/public/404.html +46 -26
  425. data/spec/dummy/public/422.html +46 -26
  426. data/spec/dummy/public/500.html +45 -26
  427. data/spec/features/admin/language_tree_feature_spec.rb +2 -2
  428. data/spec/features/admin/modules_integration_spec.rb +7 -13
  429. data/spec/features/admin/page_creation_feature_spec.rb +50 -0
  430. data/spec/features/admin/page_editing_feature_spec.rb +16 -0
  431. data/spec/features/admin/picture_library_integration_spec.rb +4 -4
  432. data/spec/features/admin/resources_integration_spec.rb +11 -11
  433. data/spec/features/page_feature_spec.rb +225 -0
  434. data/spec/features/translation_integration_spec.rb +7 -7
  435. data/spec/fixtures/500x500.png +0 -0
  436. data/spec/helpers/admin/attachments_helper_spec.rb +15 -0
  437. data/spec/helpers/admin/base_helper_spec.rb +88 -13
  438. data/spec/helpers/admin/contents_helper_spec.rb +53 -12
  439. data/spec/helpers/admin/elements_helper_spec.rb +24 -36
  440. data/spec/helpers/admin/essences_helper_spec.rb +48 -10
  441. data/spec/helpers/admin/navigation_helper_spec.rb +64 -29
  442. data/spec/helpers/admin/pages_helper_spec.rb +22 -1
  443. data/spec/helpers/admin/pictures_helper_spec.rb +29 -0
  444. data/spec/helpers/admin/tags_helper_spec.rb +1 -1
  445. data/spec/helpers/base_helper_spec.rb +6 -13
  446. data/spec/helpers/elements_block_helper_spec.rb +3 -3
  447. data/spec/helpers/elements_helper_spec.rb +203 -167
  448. data/spec/helpers/essences_helper_spec.rb +69 -15
  449. data/spec/helpers/pages_helper_spec.rb +28 -66
  450. data/spec/helpers/url_helper_spec.rb +41 -73
  451. data/spec/javascripts/alchemy/dialog_spec.coffee +82 -0
  452. data/spec/javascripts/alchemy/link_overlay_spec.coffee +25 -0
  453. data/spec/javascripts/alchemy_integration_spec.coffee +3 -12
  454. data/spec/javascripts/helpers/mock-ajax.js +52 -60
  455. data/spec/javascripts/support/jasmine.yml +29 -0
  456. data/spec/libraries/auth_accessors_spec.rb +24 -0
  457. data/spec/libraries/config_spec.rb +3 -3
  458. data/spec/libraries/controller_actions_spec.rb +133 -0
  459. data/spec/libraries/kaminari/scoped_pagination_url_helper_spec.rb +30 -0
  460. data/spec/libraries/modules_spec.rb +17 -0
  461. data/spec/libraries/mount_point_spec.rb +7 -7
  462. data/spec/libraries/page_layout_spec.rb +1 -1
  463. data/spec/libraries/permissions_spec.rb +219 -0
  464. data/spec/libraries/resource_spec.rb +61 -68
  465. data/spec/libraries/resources_helper_spec.rb +51 -51
  466. data/spec/libraries/shell_spec.rb +7 -8
  467. data/spec/libraries/template_tracker_spec.rb +94 -0
  468. data/spec/libraries/tinymce_spec.rb +0 -12
  469. data/spec/libraries/userstamp_spec.rb +10 -0
  470. data/spec/models/attachment_spec.rb +51 -18
  471. data/spec/models/cell_spec.rb +5 -5
  472. data/spec/models/content_spec.rb +103 -15
  473. data/spec/models/element_spec.rb +82 -18
  474. data/spec/models/essence_boolean_spec.rb +3 -8
  475. data/spec/models/essence_date_spec.rb +11 -7
  476. data/spec/models/essence_file_spec.rb +24 -4
  477. data/spec/models/essence_html_spec.rb +8 -3
  478. data/spec/models/essence_link_spec.rb +10 -0
  479. data/spec/models/essence_picture_spec.rb +109 -0
  480. data/spec/models/essence_richtext_spec.rb +6 -35
  481. data/spec/models/essence_select_spec.rb +3 -8
  482. data/spec/models/essence_text_spec.rb +83 -39
  483. data/spec/models/language_spec.rb +20 -54
  484. data/spec/models/message_spec.rb +12 -7
  485. data/spec/models/page_spec.rb +192 -185
  486. data/spec/models/picture_spec.rb +200 -45
  487. data/spec/models/resource_spec.rb +4 -24
  488. data/spec/models/site_spec.rb +69 -3
  489. data/spec/models/tag_spec.rb +6 -6
  490. data/spec/routing/routing_spec.rb +0 -32
  491. data/spec/spec_helper.rb +29 -38
  492. data/spec/support/hint_examples.rb +30 -0
  493. data/spec/support/phantomjs_mavericks_fix.rb +32 -0
  494. data/spec/support/test_tweaks.rb +31 -0
  495. data/spec/views/essences/essence_boolean_view_spec.rb +25 -0
  496. data/spec/views/essences/essence_date_view_spec.rb +39 -0
  497. data/spec/views/essences/essence_file_view_spec.rb +24 -0
  498. data/spec/views/essences/essence_html_view_spec.rb +22 -0
  499. data/spec/views/essences/essence_link_view_spec.rb +30 -0
  500. data/spec/views/essences/essence_picture_view_spec.rb +1 -1
  501. data/spec/views/essences/essence_richtext_view_spec.rb +20 -0
  502. data/spec/views/essences/essence_select_view_spec.rb +12 -0
  503. data/spec/views/essences/essence_text_view_spec.rb +40 -0
  504. data/vendor/assets/javascripts/fileupload/jquery.fileupload-process.js +172 -0
  505. data/vendor/assets/javascripts/fileupload/jquery.fileupload-validate.js +120 -0
  506. data/vendor/assets/javascripts/fileupload/jquery.fileupload.js +1416 -0
  507. data/vendor/assets/javascripts/fileupload/jquery.iframe-transport.js +210 -0
  508. data/vendor/assets/javascripts/jquery_plugins/jquery.ui.nestedSortable.js +381 -352
  509. data/vendor/assets/javascripts/jquery_plugins/jquery.ui.tabspaging.js +1 -52
  510. data/vendor/assets/javascripts/keymaster.js +296 -0
  511. data/vendor/assets/javascripts/requestAnimationFrame.js +31 -0
  512. data/vendor/assets/javascripts/tinymce/langs/de.js +179 -0
  513. data/vendor/assets/javascripts/tinymce/langs/nl.js +179 -0
  514. data/vendor/assets/javascripts/{tiny_mce → tinymce}/license.txt +504 -504
  515. data/vendor/assets/javascripts/tinymce/plugins/autoresize/plugin.min.js +1 -0
  516. data/vendor/assets/javascripts/tinymce/plugins/charmap/plugin.min.js +1 -0
  517. data/vendor/assets/javascripts/tinymce/plugins/code/plugin.min.js +1 -0
  518. data/vendor/assets/javascripts/tinymce/plugins/directionality/plugin.min.js +1 -0
  519. data/vendor/assets/javascripts/tinymce/plugins/fullscreen/plugin.min.js +1 -0
  520. data/vendor/assets/javascripts/tinymce/plugins/link/plugin.min.js +1 -0
  521. data/vendor/assets/javascripts/tinymce/plugins/paste/plugin.min.js +1 -0
  522. data/vendor/assets/javascripts/tinymce/plugins/tabfocus/plugin.min.js +1 -0
  523. data/vendor/assets/javascripts/tinymce/plugins/table/plugin.min.js +1 -0
  524. data/vendor/assets/javascripts/tinymce/themes/modern/theme.min.js +1 -0
  525. data/vendor/assets/javascripts/tinymce/tinymce.min.js +10 -0
  526. metadata +351 -332
  527. data/.simplecov +0 -14
  528. data/app/assets/images/alchemy/alchemy-logo.png +0 -0
  529. data/app/assets/images/alchemy/swfupload/browse_button.png +0 -0
  530. data/app/assets/javascripts/alchemy/alchemy.file_progress.js +0 -102
  531. data/app/assets/javascripts/alchemy/alchemy.link_overlay.js.coffee +0 -227
  532. data/app/assets/javascripts/alchemy/alchemy.menubar.js +0 -62
  533. data/app/assets/javascripts/alchemy/alchemy.swf_upload.js +0 -212
  534. data/app/assets/javascripts/alchemy/alchemy.uploader.js +0 -274
  535. data/app/assets/javascripts/alchemy/menubar.js +0 -2
  536. data/app/assets/javascripts/tiny_mce/plugins/alchemy_link/editor_plugin.js +0 -42
  537. data/app/assets/javascripts/tiny_mce/plugins/alchemy_link/langs/de.js +0 -4
  538. data/app/assets/javascripts/tiny_mce/plugins/alchemy_link/langs/en.js +0 -4
  539. data/app/assets/stylesheets/alchemy/form_elements.scss +0 -538
  540. data/app/assets/stylesheets/alchemy/login.scss +0 -55
  541. data/app/assets/stylesheets/alchemy/tinymce_content.css.scss +0 -98
  542. data/app/assets/stylesheets/alchemy/tinymce_dialog.css.scss +0 -420
  543. data/app/assets/stylesheets/tiny_mce/plugins/inlinepopups/skins/alchemy-tinymce-dialog/window.css.scss +0 -434
  544. data/app/controllers/alchemy/admin/users_controller.rb +0 -76
  545. data/app/models/alchemy/tree_node.rb +0 -4
  546. data/app/sweepers/alchemy/content_sweeper.rb +0 -41
  547. data/app/sweepers/alchemy/pages_sweeper.rb +0 -44
  548. data/app/sweepers/alchemy/pictures_sweeper.rb +0 -21
  549. data/app/views/alchemy/admin/elements/_elements_select.html.erb +0 -9
  550. data/app/views/alchemy/admin/elements/list.js.erb +0 -22
  551. data/app/views/alchemy/admin/essence_pictures/assign.js.coffee +0 -15
  552. data/app/views/alchemy/admin/pages/_contactform_links.html.erb +0 -62
  553. data/app/views/alchemy/admin/partials/_flash_upload.html.erb +0 -37
  554. data/app/views/alchemy/admin/partials/_pagination_links.html.erb +0 -1
  555. data/app/views/alchemy/admin/pictures/create.js.erb +0 -3
  556. data/app/views/alchemy/admin/resources/_boolean.html.erb +0 -5
  557. data/app/views/alchemy/admin/resources/_date.html.erb +0 -8
  558. data/app/views/alchemy/admin/resources/_datetime.html.erb +0 -1
  559. data/app/views/alchemy/admin/resources/_string.html.erb +0 -5
  560. data/app/views/alchemy/admin/resources/_text.html.erb +0 -5
  561. data/app/views/alchemy/admin/resources/destroy.js.erb +0 -1
  562. data/app/views/alchemy/base/remote_errors.js.erb +0 -6
  563. data/app/views/alchemy/search/_form.html.erb +0 -11
  564. data/app/views/alchemy/search/_result.html.erb +0 -7
  565. data/app/views/alchemy/search/_results.html.erb +0 -27
  566. data/config/authorization_rules.rb +0 -110
  567. data/config/initializers/cache_storage.rb +0 -1
  568. data/lib/alchemy/auth/engine.rb +0 -9
  569. data/lib/alchemy/ferret/search.rb +0 -86
  570. data/lib/alchemy/language_helpers.rb +0 -55
  571. data/lib/alchemy/upgrader/two_point_five.rb +0 -86
  572. data/lib/alchemy/upgrader/two_point_four.rb +0 -25
  573. data/lib/alchemy/upgrader/two_point_nine.rb +0 -33
  574. data/lib/alchemy/upgrader/two_point_one.rb +0 -95
  575. data/lib/alchemy/upgrader/two_point_six.rb +0 -32
  576. data/lib/alchemy/upgrader/two_point_three.rb +0 -25
  577. data/lib/alchemy/upgrader/two_point_two.rb +0 -114
  578. data/lib/alchemy/upgrader/two_point_zero.rb +0 -13
  579. data/lib/middleware/flash_session_cookie.rb +0 -22
  580. data/lib/rails/generators/alchemy/gallery_pictures_migration/gallery_pictures_migration_generator.rb +0 -40
  581. data/lib/tasks/ferret.rake +0 -10
  582. data/script/rails +0 -6
  583. data/spec/dummy/app/models/user.rb +0 -14
  584. data/spec/dummy/app/views/alchemy/elements/_searchresult_view.html.erb +0 -4
  585. data/spec/dummy/config/authorization_rules.rb +0 -7
  586. data/spec/dummy/public/stylesheets/.gitkeep +0 -0
  587. data/spec/dummy/script/rails +0 -6
  588. data/spec/fast_specs.rb +0 -15
  589. data/spec/features/admin/element_create_feature_spec.rb +0 -18
  590. data/spec/features/admin/element_trash_feature_spec.rb +0 -21
  591. data/spec/features/admin/pages_controller_spec.rb +0 -59
  592. data/spec/features/pages_controller_spec.rb +0 -262
  593. data/spec/javascripts/alchemy/link_overlay_spec.js.coffee +0 -42
  594. data/spec/javascripts/helpers/.gitkeep +0 -0
  595. data/spec/javascripts/helpers/jasmine-jquery-1.3.1.js +0 -289
  596. data/spec/javascripts/spec.css +0 -3
  597. data/spec/javascripts/spec.js +0 -2
  598. data/spec/libraries/essence_spec.rb +0 -76
  599. data/spec/support/alchemy/controller_hacks.rb +0 -41
  600. data/vendor/assets/javascripts/jquery_plugins/jquery.dialogextend.js +0 -684
  601. data/vendor/assets/javascripts/jquery_plugins/jquery.html5uploader.js +0 -271
  602. data/vendor/assets/javascripts/jquery_plugins/jquery.selectboxit.min.js +0 -11
  603. data/vendor/assets/javascripts/jquery_plugins/preloadCssImages.jQuery_v5.js +0 -152
  604. data/vendor/assets/javascripts/keymage.min.js +0 -6
  605. data/vendor/assets/javascripts/swfupload/SWFObject License.txt +0 -4
  606. data/vendor/assets/javascripts/swfupload/swfupload.cookies.js +0 -53
  607. data/vendor/assets/javascripts/swfupload/swfupload.js +0 -980
  608. data/vendor/assets/javascripts/swfupload/swfupload.queue.js +0 -98
  609. data/vendor/assets/javascripts/swfupload/swfupload.speed.js +0 -342
  610. data/vendor/assets/javascripts/swfupload/swfupload.swf +0 -0
  611. data/vendor/assets/javascripts/swfupload/swfupload.swfobject.js +0 -715
  612. data/vendor/assets/javascripts/tiny_mce/langs/de.js +0 -1
  613. data/vendor/assets/javascripts/tiny_mce/langs/en.js +0 -1
  614. data/vendor/assets/javascripts/tiny_mce/plugins/autoresize/editor_plugin.js +0 -1
  615. data/vendor/assets/javascripts/tiny_mce/plugins/fullscreen/editor_plugin.js +0 -1
  616. data/vendor/assets/javascripts/tiny_mce/plugins/fullscreen/fullscreen.htm +0 -110
  617. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/editor_plugin.js +0 -1
  618. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/template.htm +0 -387
  619. data/vendor/assets/javascripts/tiny_mce/plugins/paste/editor_plugin.js +0 -1
  620. data/vendor/assets/javascripts/tiny_mce/plugins/paste/js/pastetext.js +0 -36
  621. data/vendor/assets/javascripts/tiny_mce/plugins/paste/js/pasteword.js +0 -51
  622. data/vendor/assets/javascripts/tiny_mce/plugins/paste/langs/de_dlg.js +0 -1
  623. data/vendor/assets/javascripts/tiny_mce/plugins/paste/langs/en_dlg.js +0 -1
  624. data/vendor/assets/javascripts/tiny_mce/plugins/paste/pastetext.htm +0 -27
  625. data/vendor/assets/javascripts/tiny_mce/plugins/paste/pasteword.htm +0 -21
  626. data/vendor/assets/javascripts/tiny_mce/plugins/table/cell.htm +0 -180
  627. data/vendor/assets/javascripts/tiny_mce/plugins/table/css/cell.css +0 -17
  628. data/vendor/assets/javascripts/tiny_mce/plugins/table/css/row.css +0 -25
  629. data/vendor/assets/javascripts/tiny_mce/plugins/table/css/table.css +0 -13
  630. data/vendor/assets/javascripts/tiny_mce/plugins/table/editor_plugin.js +0 -1
  631. data/vendor/assets/javascripts/tiny_mce/plugins/table/js/cell.js +0 -319
  632. data/vendor/assets/javascripts/tiny_mce/plugins/table/js/merge_cells.js +0 -27
  633. data/vendor/assets/javascripts/tiny_mce/plugins/table/js/row.js +0 -254
  634. data/vendor/assets/javascripts/tiny_mce/plugins/table/js/table.js +0 -501
  635. data/vendor/assets/javascripts/tiny_mce/plugins/table/langs/de_dlg.js +0 -1
  636. data/vendor/assets/javascripts/tiny_mce/plugins/table/langs/en_dlg.js +0 -1
  637. data/vendor/assets/javascripts/tiny_mce/plugins/table/merge_cells.htm +0 -32
  638. data/vendor/assets/javascripts/tiny_mce/plugins/table/row.htm +0 -158
  639. data/vendor/assets/javascripts/tiny_mce/plugins/table/table.htm +0 -188
  640. data/vendor/assets/javascripts/tiny_mce/themes/advanced/about.htm +0 -52
  641. data/vendor/assets/javascripts/tiny_mce/themes/advanced/anchor.htm +0 -26
  642. data/vendor/assets/javascripts/tiny_mce/themes/advanced/charmap.htm +0 -55
  643. data/vendor/assets/javascripts/tiny_mce/themes/advanced/color_picker.htm +0 -70
  644. data/vendor/assets/javascripts/tiny_mce/themes/advanced/editor_template.js +0 -1
  645. data/vendor/assets/javascripts/tiny_mce/themes/advanced/image.htm +0 -80
  646. data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/colorpicker.jpg +0 -0
  647. data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/flash.gif +0 -0
  648. data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/icons.gif +0 -0
  649. data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/iframe.gif +0 -0
  650. data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/pagebreak.gif +0 -0
  651. data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/quicktime.gif +0 -0
  652. data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/realmedia.gif +0 -0
  653. data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/shockwave.gif +0 -0
  654. data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/video.gif +0 -0
  655. data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/windowsmedia.gif +0 -0
  656. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/about.js +0 -73
  657. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/anchor.js +0 -56
  658. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/charmap.js +0 -363
  659. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/color_picker.js +0 -345
  660. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/image.js +0 -253
  661. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/link.js +0 -159
  662. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/source_editor.js +0 -78
  663. data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/de.js +0 -1
  664. data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/de_dlg.js +0 -1
  665. data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/en.js +0 -1
  666. data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/en_dlg.js +0 -1
  667. data/vendor/assets/javascripts/tiny_mce/themes/advanced/link.htm +0 -57
  668. data/vendor/assets/javascripts/tiny_mce/themes/advanced/shortcuts.htm +0 -47
  669. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/content.css +0 -50
  670. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/dialog.css +0 -118
  671. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/buttons.png +0 -0
  672. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/items.gif +0 -0
  673. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif +0 -0
  674. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif +0 -0
  675. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/progress.gif +0 -0
  676. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif +0 -0
  677. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/ui.css +0 -219
  678. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/content.css +0 -24
  679. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css +0 -106
  680. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css +0 -106
  681. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/content.css +0 -48
  682. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css +0 -118
  683. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png +0 -0
  684. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png +0 -0
  685. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png +0 -0
  686. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui.css +0 -222
  687. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +0 -8
  688. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +0 -5
  689. data/vendor/assets/javascripts/tiny_mce/themes/advanced/source_editor.htm +0 -25
  690. data/vendor/assets/javascripts/tiny_mce/tiny_mce.js +0 -1
  691. data/vendor/assets/javascripts/tiny_mce/tiny_mce_popup.js +0 -5
  692. data/vendor/assets/javascripts/tiny_mce/utils/editable_selects.js +0 -70
  693. data/vendor/assets/javascripts/tiny_mce/utils/form_utils.js +0 -210
  694. data/vendor/assets/javascripts/tiny_mce/utils/mctabs.js +0 -162
  695. data/vendor/assets/javascripts/tiny_mce/utils/validate.js +0 -252
@@ -1,27 +0,0 @@
1
- tinyMCEPopup.requireLangPack();
2
-
3
- var MergeCellsDialog = {
4
- init : function() {
5
- var f = document.forms[0];
6
-
7
- f.numcols.value = tinyMCEPopup.getWindowArg('cols', 1);
8
- f.numrows.value = tinyMCEPopup.getWindowArg('rows', 1);
9
- },
10
-
11
- merge : function() {
12
- var func, f = document.forms[0];
13
-
14
- tinyMCEPopup.restoreSelection();
15
-
16
- func = tinyMCEPopup.getWindowArg('onaction');
17
-
18
- func({
19
- cols : f.numcols.value,
20
- rows : f.numrows.value
21
- });
22
-
23
- tinyMCEPopup.close();
24
- }
25
- };
26
-
27
- tinyMCEPopup.onInit.add(MergeCellsDialog.init, MergeCellsDialog);
@@ -1,254 +0,0 @@
1
- tinyMCEPopup.requireLangPack();
2
-
3
- function init() {
4
- tinyMCEPopup.resizeToInnerSize();
5
-
6
- document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
7
- document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
8
-
9
- var inst = tinyMCEPopup.editor;
10
- var dom = inst.dom;
11
- var trElm = dom.getParent(inst.selection.getStart(), "tr");
12
- var formObj = document.forms[0];
13
- var st = dom.parseStyle(dom.getAttrib(trElm, "style"));
14
-
15
- // Get table row data
16
- var rowtype = trElm.parentNode.nodeName.toLowerCase();
17
- var align = dom.getAttrib(trElm, 'align');
18
- var valign = dom.getAttrib(trElm, 'valign');
19
- var height = trimSize(getStyle(trElm, 'height', 'height'));
20
- var className = dom.getAttrib(trElm, 'class');
21
- var bgcolor = convertRGBToHex(getStyle(trElm, 'bgcolor', 'backgroundColor'));
22
- var backgroundimage = getStyle(trElm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
23
- var id = dom.getAttrib(trElm, 'id');
24
- var lang = dom.getAttrib(trElm, 'lang');
25
- var dir = dom.getAttrib(trElm, 'dir');
26
-
27
- selectByValue(formObj, 'rowtype', rowtype);
28
- setActionforRowType(formObj, rowtype);
29
-
30
- // Any cells selected
31
- if (dom.select('td.mceSelected,th.mceSelected', trElm).length == 0) {
32
- // Setup form
33
- addClassesToList('class', 'table_row_styles');
34
- TinyMCE_EditableSelects.init();
35
-
36
- formObj.bgcolor.value = bgcolor;
37
- formObj.backgroundimage.value = backgroundimage;
38
- formObj.height.value = height;
39
- formObj.id.value = id;
40
- formObj.lang.value = lang;
41
- formObj.style.value = dom.serializeStyle(st);
42
- selectByValue(formObj, 'align', align);
43
- selectByValue(formObj, 'valign', valign);
44
- selectByValue(formObj, 'class', className, true, true);
45
- selectByValue(formObj, 'dir', dir);
46
-
47
- // Resize some elements
48
- if (isVisible('backgroundimagebrowser'))
49
- document.getElementById('backgroundimage').style.width = '180px';
50
-
51
- updateColor('bgcolor_pick', 'bgcolor');
52
- } else
53
- tinyMCEPopup.dom.hide('action');
54
- }
55
-
56
- function updateAction() {
57
- var inst = tinyMCEPopup.editor, dom = inst.dom, trElm, tableElm, formObj = document.forms[0];
58
- var action = getSelectValue(formObj, 'action');
59
-
60
- if (!AutoValidator.validate(formObj)) {
61
- tinyMCEPopup.alert(AutoValidator.getErrorMessages(formObj).join('. ') + '.');
62
- return false;
63
- }
64
-
65
- tinyMCEPopup.restoreSelection();
66
- trElm = dom.getParent(inst.selection.getStart(), "tr");
67
- tableElm = dom.getParent(inst.selection.getStart(), "table");
68
-
69
- // Update all selected rows
70
- if (dom.select('td.mceSelected,th.mceSelected', trElm).length > 0) {
71
- tinymce.each(tableElm.rows, function(tr) {
72
- var i;
73
-
74
- for (i = 0; i < tr.cells.length; i++) {
75
- if (dom.hasClass(tr.cells[i], 'mceSelected')) {
76
- updateRow(tr, true);
77
- return;
78
- }
79
- }
80
- });
81
-
82
- inst.addVisual();
83
- inst.nodeChanged();
84
- inst.execCommand('mceEndUndoLevel');
85
- tinyMCEPopup.close();
86
- return;
87
- }
88
-
89
- switch (action) {
90
- case "row":
91
- updateRow(trElm);
92
- break;
93
-
94
- case "all":
95
- var rows = tableElm.getElementsByTagName("tr");
96
-
97
- for (var i=0; i<rows.length; i++)
98
- updateRow(rows[i], true);
99
-
100
- break;
101
-
102
- case "odd":
103
- case "even":
104
- var rows = tableElm.getElementsByTagName("tr");
105
-
106
- for (var i=0; i<rows.length; i++) {
107
- if ((i % 2 == 0 && action == "odd") || (i % 2 != 0 && action == "even"))
108
- updateRow(rows[i], true, true);
109
- }
110
-
111
- break;
112
- }
113
-
114
- inst.addVisual();
115
- inst.nodeChanged();
116
- inst.execCommand('mceEndUndoLevel');
117
- tinyMCEPopup.close();
118
- }
119
-
120
- function updateRow(tr_elm, skip_id, skip_parent) {
121
- var inst = tinyMCEPopup.editor;
122
- var formObj = document.forms[0];
123
- var dom = inst.dom;
124
- var curRowType = tr_elm.parentNode.nodeName.toLowerCase();
125
- var rowtype = getSelectValue(formObj, 'rowtype');
126
- var doc = inst.getDoc();
127
-
128
- // Update row element
129
- if (!skip_id)
130
- dom.setAttrib(tr_elm, 'id', formObj.id.value);
131
-
132
- dom.setAttrib(tr_elm, 'align', getSelectValue(formObj, 'align'));
133
- dom.setAttrib(tr_elm, 'vAlign', getSelectValue(formObj, 'valign'));
134
- dom.setAttrib(tr_elm, 'lang', formObj.lang.value);
135
- dom.setAttrib(tr_elm, 'dir', getSelectValue(formObj, 'dir'));
136
- dom.setAttrib(tr_elm, 'style', dom.serializeStyle(dom.parseStyle(formObj.style.value)));
137
- dom.setAttrib(tr_elm, 'class', getSelectValue(formObj, 'class'));
138
-
139
- // Clear deprecated attributes
140
- dom.setAttrib(tr_elm, 'background', '');
141
- dom.setAttrib(tr_elm, 'bgColor', '');
142
- dom.setAttrib(tr_elm, 'height', '');
143
-
144
- // Set styles
145
- tr_elm.style.height = getCSSSize(formObj.height.value);
146
- tr_elm.style.backgroundColor = formObj.bgcolor.value;
147
-
148
- if (formObj.backgroundimage.value != "")
149
- tr_elm.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
150
- else
151
- tr_elm.style.backgroundImage = '';
152
-
153
- // Setup new rowtype
154
- if (curRowType != rowtype && !skip_parent) {
155
- // first, clone the node we are working on
156
- var newRow = tr_elm.cloneNode(1);
157
-
158
- // next, find the parent of its new destination (creating it if necessary)
159
- var theTable = dom.getParent(tr_elm, "table");
160
- var dest = rowtype;
161
- var newParent = null;
162
- for (var i = 0; i < theTable.childNodes.length; i++) {
163
- if (theTable.childNodes[i].nodeName.toLowerCase() == dest)
164
- newParent = theTable.childNodes[i];
165
- }
166
-
167
- if (newParent == null) {
168
- newParent = doc.createElement(dest);
169
-
170
- if (theTable.firstChild.nodeName == 'CAPTION')
171
- inst.dom.insertAfter(newParent, theTable.firstChild);
172
- else
173
- theTable.insertBefore(newParent, theTable.firstChild);
174
- }
175
-
176
- // append the row to the new parent
177
- newParent.appendChild(newRow);
178
-
179
- // remove the original
180
- tr_elm.parentNode.removeChild(tr_elm);
181
-
182
- // set tr_elm to the new node
183
- tr_elm = newRow;
184
- }
185
-
186
- dom.setAttrib(tr_elm, 'style', dom.serializeStyle(dom.parseStyle(tr_elm.style.cssText)));
187
- }
188
-
189
- function changedBackgroundImage() {
190
- var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
191
- var st = dom.parseStyle(formObj.style.value);
192
-
193
- st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
194
-
195
- formObj.style.value = dom.serializeStyle(st);
196
- }
197
-
198
- function changedStyle() {
199
- var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
200
- var st = dom.parseStyle(formObj.style.value);
201
-
202
- if (st['background-image'])
203
- formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
204
- else
205
- formObj.backgroundimage.value = '';
206
-
207
- if (st['height'])
208
- formObj.height.value = trimSize(st['height']);
209
-
210
- if (st['background-color']) {
211
- formObj.bgcolor.value = st['background-color'];
212
- updateColor('bgcolor_pick','bgcolor');
213
- }
214
- }
215
-
216
- function changedSize() {
217
- var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
218
- var st = dom.parseStyle(formObj.style.value);
219
-
220
- var height = formObj.height.value;
221
- if (height != "")
222
- st['height'] = getCSSSize(height);
223
- else
224
- st['height'] = "";
225
-
226
- formObj.style.value = dom.serializeStyle(st);
227
- }
228
-
229
- function changedColor() {
230
- var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
231
- var st = dom.parseStyle(formObj.style.value);
232
-
233
- st['background-color'] = formObj.bgcolor.value;
234
-
235
- formObj.style.value = dom.serializeStyle(st);
236
- }
237
-
238
- function changedRowType() {
239
- var formObj = document.forms[0];
240
- var rowtype = getSelectValue(formObj, 'rowtype');
241
-
242
- setActionforRowType(formObj, rowtype);
243
-
244
- }
245
-
246
- function setActionforRowType(formObj, rowtype) {
247
- if (rowtype === "tbody") {
248
- formObj.action.disabled = false;
249
- } else {
250
- selectByValue(formObj, 'action', "row");
251
- formObj.action.disabled = true;
252
- }
253
- }
254
- tinyMCEPopup.onInit.add(init);
@@ -1,501 +0,0 @@
1
- tinyMCEPopup.requireLangPack();
2
-
3
- var action, orgTableWidth, orgTableHeight, dom = tinyMCEPopup.editor.dom;
4
-
5
- function insertTable() {
6
- var formObj = document.forms[0];
7
- var inst = tinyMCEPopup.editor, dom = inst.dom;
8
- var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width, height, className, caption, frame, rules;
9
- var html = '', capEl, elm;
10
- var cellLimit, rowLimit, colLimit;
11
-
12
- tinyMCEPopup.restoreSelection();
13
-
14
- if (!AutoValidator.validate(formObj)) {
15
- tinyMCEPopup.alert(AutoValidator.getErrorMessages(formObj).join('. ') + '.');
16
- return false;
17
- }
18
-
19
- elm = dom.getParent(inst.selection.getNode(), 'table');
20
-
21
- // Get form data
22
- cols = formObj.elements['cols'].value;
23
- rows = formObj.elements['rows'].value;
24
- border = formObj.elements['border'].value != "" ? formObj.elements['border'].value : 0;
25
- cellpadding = formObj.elements['cellpadding'].value != "" ? formObj.elements['cellpadding'].value : "";
26
- cellspacing = formObj.elements['cellspacing'].value != "" ? formObj.elements['cellspacing'].value : "";
27
- align = getSelectValue(formObj, "align");
28
- frame = getSelectValue(formObj, "tframe");
29
- rules = getSelectValue(formObj, "rules");
30
- width = formObj.elements['width'].value;
31
- height = formObj.elements['height'].value;
32
- bordercolor = formObj.elements['bordercolor'].value;
33
- bgcolor = formObj.elements['bgcolor'].value;
34
- className = getSelectValue(formObj, "class");
35
- id = formObj.elements['id'].value;
36
- summary = formObj.elements['summary'].value;
37
- style = formObj.elements['style'].value;
38
- dir = formObj.elements['dir'].value;
39
- lang = formObj.elements['lang'].value;
40
- background = formObj.elements['backgroundimage'].value;
41
- caption = formObj.elements['caption'].checked;
42
-
43
- cellLimit = tinyMCEPopup.getParam('table_cell_limit', false);
44
- rowLimit = tinyMCEPopup.getParam('table_row_limit', false);
45
- colLimit = tinyMCEPopup.getParam('table_col_limit', false);
46
-
47
- // Validate table size
48
- if (colLimit && cols > colLimit) {
49
- tinyMCEPopup.alert(inst.getLang('table_dlg.col_limit').replace(/\{\$cols\}/g, colLimit));
50
- return false;
51
- } else if (rowLimit && rows > rowLimit) {
52
- tinyMCEPopup.alert(inst.getLang('table_dlg.row_limit').replace(/\{\$rows\}/g, rowLimit));
53
- return false;
54
- } else if (cellLimit && cols * rows > cellLimit) {
55
- tinyMCEPopup.alert(inst.getLang('table_dlg.cell_limit').replace(/\{\$cells\}/g, cellLimit));
56
- return false;
57
- }
58
-
59
- // Update table
60
- if (action == "update") {
61
- dom.setAttrib(elm, 'cellPadding', cellpadding, true);
62
- dom.setAttrib(elm, 'cellSpacing', cellspacing, true);
63
-
64
- if (!isCssSize(border)) {
65
- dom.setAttrib(elm, 'border', border);
66
- } else {
67
- dom.setAttrib(elm, 'border', '');
68
- }
69
-
70
- if (border == '') {
71
- dom.setStyle(elm, 'border-width', '');
72
- dom.setStyle(elm, 'border', '');
73
- dom.setAttrib(elm, 'border', '');
74
- }
75
-
76
- dom.setAttrib(elm, 'align', align);
77
- dom.setAttrib(elm, 'frame', frame);
78
- dom.setAttrib(elm, 'rules', rules);
79
- dom.setAttrib(elm, 'class', className);
80
- dom.setAttrib(elm, 'style', style);
81
- dom.setAttrib(elm, 'id', id);
82
- dom.setAttrib(elm, 'summary', summary);
83
- dom.setAttrib(elm, 'dir', dir);
84
- dom.setAttrib(elm, 'lang', lang);
85
-
86
- capEl = inst.dom.select('caption', elm)[0];
87
-
88
- if (capEl && !caption)
89
- capEl.parentNode.removeChild(capEl);
90
-
91
- if (!capEl && caption) {
92
- capEl = elm.ownerDocument.createElement('caption');
93
-
94
- if (!tinymce.isIE)
95
- capEl.innerHTML = '<br data-mce-bogus="1"/>';
96
-
97
- elm.insertBefore(capEl, elm.firstChild);
98
- }
99
-
100
- if (width && inst.settings.inline_styles) {
101
- dom.setStyle(elm, 'width', width);
102
- dom.setAttrib(elm, 'width', '');
103
- } else {
104
- dom.setAttrib(elm, 'width', width, true);
105
- dom.setStyle(elm, 'width', '');
106
- }
107
-
108
- // Remove these since they are not valid XHTML
109
- dom.setAttrib(elm, 'borderColor', '');
110
- dom.setAttrib(elm, 'bgColor', '');
111
- dom.setAttrib(elm, 'background', '');
112
-
113
- if (height && inst.settings.inline_styles) {
114
- dom.setStyle(elm, 'height', height);
115
- dom.setAttrib(elm, 'height', '');
116
- } else {
117
- dom.setAttrib(elm, 'height', height, true);
118
- dom.setStyle(elm, 'height', '');
119
- }
120
-
121
- if (background != '')
122
- elm.style.backgroundImage = "url('" + background + "')";
123
- else
124
- elm.style.backgroundImage = '';
125
-
126
- /* if (tinyMCEPopup.getParam("inline_styles")) {
127
- if (width != '')
128
- elm.style.width = getCSSSize(width);
129
- }*/
130
-
131
- if (bordercolor != "") {
132
- elm.style.borderColor = bordercolor;
133
- elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle;
134
- elm.style.borderWidth = cssSize(border);
135
- } else
136
- elm.style.borderColor = '';
137
-
138
- elm.style.backgroundColor = bgcolor;
139
- elm.style.height = getCSSSize(height);
140
-
141
- inst.addVisual();
142
-
143
- // Fix for stange MSIE align bug
144
- //elm.outerHTML = elm.outerHTML;
145
-
146
- inst.nodeChanged();
147
- inst.execCommand('mceEndUndoLevel', false, {}, {skip_undo: true});
148
-
149
- // Repaint if dimensions changed
150
- if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight)
151
- inst.execCommand('mceRepaint');
152
-
153
- tinyMCEPopup.close();
154
- return true;
155
- }
156
-
157
- // Create new table
158
- html += '<table';
159
-
160
- html += makeAttrib('id', id);
161
- if (!isCssSize(border)) {
162
- html += makeAttrib('border', border);
163
- }
164
-
165
- html += makeAttrib('cellpadding', cellpadding);
166
- html += makeAttrib('cellspacing', cellspacing);
167
- html += makeAttrib('data-mce-new', '1');
168
-
169
- if (width && inst.settings.inline_styles) {
170
- if (style)
171
- style += '; ';
172
-
173
- // Force px
174
- if (/^[0-9\.]+$/.test(width))
175
- width += 'px';
176
-
177
- style += 'width: ' + width;
178
- } else
179
- html += makeAttrib('width', width);
180
-
181
- /* if (height) {
182
- if (style)
183
- style += '; ';
184
-
185
- style += 'height: ' + height;
186
- }*/
187
-
188
- //html += makeAttrib('height', height);
189
- //html += makeAttrib('bordercolor', bordercolor);
190
- //html += makeAttrib('bgcolor', bgcolor);
191
- html += makeAttrib('align', align);
192
- html += makeAttrib('frame', frame);
193
- html += makeAttrib('rules', rules);
194
- html += makeAttrib('class', className);
195
- html += makeAttrib('style', style);
196
- html += makeAttrib('summary', summary);
197
- html += makeAttrib('dir', dir);
198
- html += makeAttrib('lang', lang);
199
- html += '>';
200
-
201
- if (caption) {
202
- if (!tinymce.isIE)
203
- html += '<caption><br data-mce-bogus="1"/></caption>';
204
- else
205
- html += '<caption></caption>';
206
- }
207
-
208
- for (var y=0; y<rows; y++) {
209
- html += "<tr>";
210
-
211
- for (var x=0; x<cols; x++) {
212
- if (!tinymce.isIE)
213
- html += '<td><br data-mce-bogus="1"/></td>';
214
- else
215
- html += '<td></td>';
216
- }
217
-
218
- html += "</tr>";
219
- }
220
-
221
- html += "</table>";
222
-
223
- // Move table
224
- if (inst.settings.fix_table_elements) {
225
- var patt = '';
226
-
227
- inst.focus();
228
- inst.selection.setContent('<br class="_mce_marker" />');
229
-
230
- tinymce.each('h1,h2,h3,h4,h5,h6,p'.split(','), function(n) {
231
- if (patt)
232
- patt += ',';
233
-
234
- patt += n + ' ._mce_marker';
235
- });
236
-
237
- tinymce.each(inst.dom.select(patt), function(n) {
238
- inst.dom.split(inst.dom.getParent(n, 'h1,h2,h3,h4,h5,h6,p'), n);
239
- });
240
-
241
- dom.setOuterHTML(dom.select('br._mce_marker')[0], html);
242
- } else
243
- inst.execCommand('mceInsertContent', false, html);
244
-
245
- tinymce.each(dom.select('table[data-mce-new]'), function(node) {
246
- var tdorth = dom.select('td,th', node);
247
-
248
- // Fixes a bug in IE where the caret cannot be placed after the table if the table is at the end of the document
249
- if (tinymce.isIE && node.nextSibling == null) {
250
- if (inst.settings.forced_root_block)
251
- dom.insertAfter(dom.create(inst.settings.forced_root_block), node);
252
- else
253
- dom.insertAfter(dom.create('br', {'data-mce-bogus': '1'}), node);
254
- }
255
-
256
- try {
257
- // IE9 might fail to do this selection
258
- inst.selection.setCursorLocation(tdorth[0], 0);
259
- } catch (ex) {
260
- // Ignore
261
- }
262
-
263
- dom.setAttrib(node, 'data-mce-new', '');
264
- });
265
-
266
- inst.addVisual();
267
- inst.execCommand('mceEndUndoLevel', false, {}, {skip_undo: true});
268
-
269
- tinyMCEPopup.close();
270
- }
271
-
272
- function makeAttrib(attrib, value) {
273
- var formObj = document.forms[0];
274
- var valueElm = formObj.elements[attrib];
275
-
276
- if (typeof(value) == "undefined" || value == null) {
277
- value = "";
278
-
279
- if (valueElm)
280
- value = valueElm.value;
281
- }
282
-
283
- if (value == "")
284
- return "";
285
-
286
- // XML encode it
287
- value = value.replace(/&/g, '&amp;');
288
- value = value.replace(/\"/g, '&quot;');
289
- value = value.replace(/</g, '&lt;');
290
- value = value.replace(/>/g, '&gt;');
291
-
292
- return ' ' + attrib + '="' + value + '"';
293
- }
294
-
295
- function init() {
296
- tinyMCEPopup.resizeToInnerSize();
297
-
298
- document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
299
- document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
300
- document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
301
- document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
302
-
303
- var cols = 2, rows = 2, border = tinyMCEPopup.getParam('table_default_border', '0'), cellpadding = tinyMCEPopup.getParam('table_default_cellpadding', ''), cellspacing = tinyMCEPopup.getParam('table_default_cellspacing', '');
304
- var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = "";
305
- var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "", rules = "", frame = "";
306
- var inst = tinyMCEPopup.editor, dom = inst.dom;
307
- var formObj = document.forms[0];
308
- var elm = dom.getParent(inst.selection.getNode(), "table");
309
-
310
- // Hide advanced fields that isn't available in the schema
311
- tinymce.each("summary id rules dir style frame".split(" "), function(name) {
312
- var tr = tinyMCEPopup.dom.getParent(name, "tr") || tinyMCEPopup.dom.getParent("t" + name, "tr");
313
-
314
- if (tr && !tinyMCEPopup.editor.schema.isValid("table", name)) {
315
- tr.style.display = 'none';
316
- }
317
- });
318
-
319
- action = tinyMCEPopup.getWindowArg('action');
320
-
321
- if (!action)
322
- action = elm ? "update" : "insert";
323
-
324
- if (elm && action != "insert") {
325
- var rowsAr = elm.rows;
326
- var cols = 0;
327
- for (var i=0; i<rowsAr.length; i++)
328
- if (rowsAr[i].cells.length > cols)
329
- cols = rowsAr[i].cells.length;
330
-
331
- cols = cols;
332
- rows = rowsAr.length;
333
-
334
- st = dom.parseStyle(dom.getAttrib(elm, "style"));
335
- border = trimSize(getStyle(elm, 'border', 'borderWidth'));
336
- cellpadding = dom.getAttrib(elm, 'cellpadding', "");
337
- cellspacing = dom.getAttrib(elm, 'cellspacing', "");
338
- width = trimSize(getStyle(elm, 'width', 'width'));
339
- height = trimSize(getStyle(elm, 'height', 'height'));
340
- bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor'));
341
- bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor'));
342
- align = dom.getAttrib(elm, 'align', align);
343
- frame = dom.getAttrib(elm, 'frame');
344
- rules = dom.getAttrib(elm, 'rules');
345
- className = tinymce.trim(dom.getAttrib(elm, 'class').replace(/mceItem.+/g, ''));
346
- id = dom.getAttrib(elm, 'id');
347
- summary = dom.getAttrib(elm, 'summary');
348
- style = dom.serializeStyle(st);
349
- dir = dom.getAttrib(elm, 'dir');
350
- lang = dom.getAttrib(elm, 'lang');
351
- background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
352
- formObj.caption.checked = elm.getElementsByTagName('caption').length > 0;
353
-
354
- orgTableWidth = width;
355
- orgTableHeight = height;
356
-
357
- action = "update";
358
- formObj.insert.value = inst.getLang('update');
359
- }
360
-
361
- addClassesToList('class', "table_styles");
362
- TinyMCE_EditableSelects.init();
363
-
364
- // Update form
365
- selectByValue(formObj, 'align', align);
366
- selectByValue(formObj, 'tframe', frame);
367
- selectByValue(formObj, 'rules', rules);
368
- selectByValue(formObj, 'class', className, true, true);
369
- formObj.cols.value = cols;
370
- formObj.rows.value = rows;
371
- formObj.border.value = border;
372
- formObj.cellpadding.value = cellpadding;
373
- formObj.cellspacing.value = cellspacing;
374
- formObj.width.value = width;
375
- formObj.height.value = height;
376
- formObj.bordercolor.value = bordercolor;
377
- formObj.bgcolor.value = bgcolor;
378
- formObj.id.value = id;
379
- formObj.summary.value = summary;
380
- formObj.style.value = style;
381
- formObj.dir.value = dir;
382
- formObj.lang.value = lang;
383
- formObj.backgroundimage.value = background;
384
-
385
- updateColor('bordercolor_pick', 'bordercolor');
386
- updateColor('bgcolor_pick', 'bgcolor');
387
-
388
- // Resize some elements
389
- if (isVisible('backgroundimagebrowser'))
390
- document.getElementById('backgroundimage').style.width = '180px';
391
-
392
- // Disable some fields in update mode
393
- if (action == "update") {
394
- formObj.cols.disabled = true;
395
- formObj.rows.disabled = true;
396
- }
397
- }
398
-
399
- function changedSize() {
400
- var formObj = document.forms[0];
401
- var st = dom.parseStyle(formObj.style.value);
402
-
403
- /* var width = formObj.width.value;
404
- if (width != "")
405
- st['width'] = tinyMCEPopup.getParam("inline_styles") ? getCSSSize(width) : "";
406
- else
407
- st['width'] = "";*/
408
-
409
- var height = formObj.height.value;
410
- if (height != "")
411
- st['height'] = getCSSSize(height);
412
- else
413
- st['height'] = "";
414
-
415
- formObj.style.value = dom.serializeStyle(st);
416
- }
417
-
418
- function isCssSize(value) {
419
- return /^[0-9.]+(%|in|cm|mm|em|ex|pt|pc|px)$/.test(value);
420
- }
421
-
422
- function cssSize(value, def) {
423
- value = tinymce.trim(value || def);
424
-
425
- if (!isCssSize(value)) {
426
- return parseInt(value, 10) + 'px';
427
- }
428
-
429
- return value;
430
- }
431
-
432
- function changedBackgroundImage() {
433
- var formObj = document.forms[0];
434
- var st = dom.parseStyle(formObj.style.value);
435
-
436
- st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
437
-
438
- formObj.style.value = dom.serializeStyle(st);
439
- }
440
-
441
- function changedBorder() {
442
- var formObj = document.forms[0];
443
- var st = dom.parseStyle(formObj.style.value);
444
-
445
- // Update border width if the element has a color
446
- if (formObj.border.value != "" && (isCssSize(formObj.border.value) || formObj.bordercolor.value != ""))
447
- st['border-width'] = cssSize(formObj.border.value);
448
- else {
449
- if (!formObj.border.value) {
450
- st['border'] = '';
451
- st['border-width'] = '';
452
- }
453
- }
454
-
455
- formObj.style.value = dom.serializeStyle(st);
456
- }
457
-
458
- function changedColor() {
459
- var formObj = document.forms[0];
460
- var st = dom.parseStyle(formObj.style.value);
461
-
462
- st['background-color'] = formObj.bgcolor.value;
463
-
464
- if (formObj.bordercolor.value != "") {
465
- st['border-color'] = formObj.bordercolor.value;
466
-
467
- // Add border-width if it's missing
468
- if (!st['border-width'])
469
- st['border-width'] = cssSize(formObj.border.value, 1);
470
- }
471
-
472
- formObj.style.value = dom.serializeStyle(st);
473
- }
474
-
475
- function changedStyle() {
476
- var formObj = document.forms[0];
477
- var st = dom.parseStyle(formObj.style.value);
478
-
479
- if (st['background-image'])
480
- formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
481
- else
482
- formObj.backgroundimage.value = '';
483
-
484
- if (st['width'])
485
- formObj.width.value = trimSize(st['width']);
486
-
487
- if (st['height'])
488
- formObj.height.value = trimSize(st['height']);
489
-
490
- if (st['background-color']) {
491
- formObj.bgcolor.value = st['background-color'];
492
- updateColor('bgcolor_pick','bgcolor');
493
- }
494
-
495
- if (st['border-color']) {
496
- formObj.bordercolor.value = st['border-color'];
497
- updateColor('bordercolor_pick','bordercolor');
498
- }
499
- }
500
-
501
- tinyMCEPopup.onInit.add(init);