kiteditor 1.0.11 → 1.0.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (289) hide show
  1. data/POST_INSTALL +21 -0
  2. data/{vendor → app}/assets/images/mercury/button.png +0 -0
  3. data/{vendor → app}/assets/images/mercury/close.png +0 -0
  4. data/app/assets/images/mercury/default-snippet.png +0 -0
  5. data/{vendor → app}/assets/images/mercury/loading-dark.gif +0 -0
  6. data/{vendor → app}/assets/images/mercury/loading-light.gif +0 -0
  7. data/{vendor → app}/assets/images/mercury/missing-image.png +0 -0
  8. data/{vendor → app}/assets/images/mercury/search-icon.png +0 -0
  9. data/{vendor → app}/assets/images/mercury/temp-logo.png +0 -0
  10. data/app/assets/images/mercury/toolbar/editable/buttons.png +0 -0
  11. data/app/assets/images/mercury/toolbar/primary/_expander.png +0 -0
  12. data/app/assets/images/mercury/toolbar/primary/_pressed.png +0 -0
  13. data/app/assets/images/mercury/toolbar/primary/action.png +0 -0
  14. data/app/assets/images/mercury/toolbar/primary/historypanel.png +0 -0
  15. data/app/assets/images/mercury/toolbar/primary/insertcharacter.png +0 -0
  16. data/app/assets/images/mercury/toolbar/primary/insertlink.png +0 -0
  17. data/app/assets/images/mercury/toolbar/primary/insertmedia.png +0 -0
  18. data/app/assets/images/mercury/toolbar/primary/inserttable.png +0 -0
  19. data/app/assets/images/mercury/toolbar/primary/inspectorpanel.png +0 -0
  20. data/app/assets/images/mercury/toolbar/primary/notespanel.png +0 -0
  21. data/app/assets/images/mercury/toolbar/primary/preview.png +0 -0
  22. data/app/assets/images/mercury/toolbar/primary/redo.png +0 -0
  23. data/app/assets/images/mercury/toolbar/primary/save.png +0 -0
  24. data/app/assets/images/mercury/toolbar/primary/snippetpanel.png +0 -0
  25. data/app/assets/images/mercury/toolbar/primary/tools.png +0 -0
  26. data/app/assets/images/mercury/toolbar/primary/undo.png +0 -0
  27. data/app/assets/images/mercury/toolbar/primary/user.png +0 -0
  28. data/app/assets/images/mercury/toolbar/snippets/buttons.png +0 -0
  29. data/{vendor/assets/javascripts/mercury/dependencies → app/assets/javascripts}/jquery-1.7.js +0 -0
  30. data/{vendor → app}/assets/javascripts/mercury.js +60 -87
  31. data/{vendor → app}/assets/javascripts/mercury/dependencies/jquery-ui-1.8.13.custom.js +0 -0
  32. data/{vendor → app}/assets/javascripts/mercury/dependencies/jquery.additions.js +103 -13
  33. data/{vendor → app}/assets/javascripts/mercury/dependencies/jquery.htmlClean.js +0 -0
  34. data/{vendor → app}/assets/javascripts/mercury/dependencies/liquidmetal.js +0 -0
  35. data/{vendor → app}/assets/javascripts/mercury/dependencies/showdown.js +0 -0
  36. data/{vendor → app}/assets/javascripts/mercury/dialog.js.coffee +0 -0
  37. data/{vendor → app}/assets/javascripts/mercury/dialogs/backcolor.js.coffee +0 -0
  38. data/{vendor → app}/assets/javascripts/mercury/dialogs/forecolor.js.coffee +1 -1
  39. data/{vendor → app}/assets/javascripts/mercury/dialogs/formatblock.js.coffee +0 -0
  40. data/{vendor → app}/assets/javascripts/mercury/dialogs/snippetpanel.js.coffee +1 -1
  41. data/{vendor → app}/assets/javascripts/mercury/dialogs/style.js.coffee +0 -0
  42. data/{vendor → app}/assets/javascripts/mercury/finalize.js.coffee +0 -0
  43. data/{vendor → app}/assets/javascripts/mercury/history_buffer.js.coffee +0 -0
  44. data/{vendor → app}/assets/javascripts/mercury/lightview.js.coffee +38 -17
  45. data/app/assets/javascripts/mercury/locales/ar.locale.js.coffee +201 -0
  46. data/app/assets/javascripts/mercury/locales/da.locale.js.coffee +208 -0
  47. data/{vendor → app}/assets/javascripts/mercury/locales/de.locale.js.coffee +4 -10
  48. data/{vendor → app}/assets/javascripts/mercury/locales/es.locale.js.coffee +3 -9
  49. data/{vendor → app}/assets/javascripts/mercury/locales/example.local.js.coffee +3 -5
  50. data/{vendor → app}/assets/javascripts/mercury/locales/fr.locale.js.coffee +3 -9
  51. data/app/assets/javascripts/mercury/locales/hu.locale.js.coffee +209 -0
  52. data/{vendor → app}/assets/javascripts/mercury/locales/it.locale.js.coffee +3 -9
  53. data/{vendor → app}/assets/javascripts/mercury/locales/ko.local.js.coffee +4 -10
  54. data/{vendor → app}/assets/javascripts/mercury/locales/nl.locale.js.coffee +3 -9
  55. data/app/assets/javascripts/mercury/locales/pl.locale.js.coffee +213 -0
  56. data/{vendor → app}/assets/javascripts/mercury/locales/pt.locale.js.coffee +3 -9
  57. data/app/assets/javascripts/mercury/locales/ru.locale.js.coffee +200 -0
  58. data/{vendor → app}/assets/javascripts/mercury/locales/sv.local.js.coffee +3 -9
  59. data/{vendor → app}/assets/javascripts/mercury/locales/swedish_chef.locale.js.coffee +3 -9
  60. data/app/assets/javascripts/mercury/locales/uk.locale.js.coffee +200 -0
  61. data/app/assets/javascripts/mercury/locales/zh.local.js.coffee +203 -0
  62. data/app/assets/javascripts/mercury/mercury-compiled.js +10720 -0
  63. data/{vendor → app}/assets/javascripts/mercury/mercury.js.coffee +10 -1
  64. data/{vendor → app}/assets/javascripts/mercury/modal.js.coffee +62 -40
  65. data/{vendor → app}/assets/javascripts/mercury/modals/htmleditor.js.coffee +1 -0
  66. data/{vendor → app}/assets/javascripts/mercury/modals/insertcharacter.js.coffee +1 -0
  67. data/app/assets/javascripts/mercury/modals/insertlink.js.coffee +152 -0
  68. data/app/assets/javascripts/mercury/modals/insertmedia.js.coffee +132 -0
  69. data/{vendor → app}/assets/javascripts/mercury/modals/insertsnippet.js.coffee +2 -0
  70. data/app/assets/javascripts/mercury/modals/inserttable.js.coffee +68 -0
  71. data/{vendor → app}/assets/javascripts/mercury/native_extensions.js.coffee +0 -6
  72. data/{vendor → app}/assets/javascripts/mercury/page_editor.js.coffee +84 -50
  73. data/{vendor → app}/assets/javascripts/mercury/palette.js.coffee +1 -1
  74. data/{vendor → app}/assets/javascripts/mercury/panel.js.coffee +3 -2
  75. data/{vendor → app}/assets/javascripts/mercury/plugins/save_as_xml/mercury/page_editor.js.coffee +2 -2
  76. data/{vendor → app}/assets/javascripts/mercury/plugins/save_as_xml/plugin.js +0 -0
  77. data/{vendor → app}/assets/javascripts/mercury/region.js.coffee +18 -17
  78. data/{vendor/assets/javascripts/mercury/regions/editable.js.coffee → app/assets/javascripts/mercury/regions/full.js.coffee} +41 -31
  79. data/app/assets/javascripts/mercury/regions/image.js.coffee +93 -0
  80. data/{vendor/assets/javascripts/mercury/regions/markupable.js.coffee → app/assets/javascripts/mercury/regions/markdown.js.coffee} +29 -24
  81. data/{vendor → app}/assets/javascripts/mercury/regions/simple.js.coffee +11 -54
  82. data/{vendor/assets/javascripts/mercury/regions/snippetable.js.coffee → app/assets/javascripts/mercury/regions/snippets.js.coffee} +10 -9
  83. data/{vendor → app}/assets/javascripts/mercury/select.js.coffee +1 -1
  84. data/app/assets/javascripts/mercury/snippet.js.coffee +136 -0
  85. data/{vendor → app}/assets/javascripts/mercury/snippet_toolbar.js.coffee +19 -6
  86. data/{vendor → app}/assets/javascripts/mercury/statusbar.js.coffee +0 -0
  87. data/{vendor → app}/assets/javascripts/mercury/support/history.js +0 -0
  88. data/{vendor → app}/assets/javascripts/mercury/table_editor.js.coffee +16 -0
  89. data/{vendor → app}/assets/javascripts/mercury/toolbar.button.js.coffee +45 -30
  90. data/{vendor → app}/assets/javascripts/mercury/toolbar.button_group.js.coffee +2 -2
  91. data/{vendor → app}/assets/javascripts/mercury/toolbar.expander.js.coffee +4 -4
  92. data/{vendor → app}/assets/javascripts/mercury/toolbar.js.coffee +10 -6
  93. data/{vendor → app}/assets/javascripts/mercury/tooltip.js.coffee +0 -0
  94. data/{vendor → app}/assets/javascripts/mercury/uploader.js.coffee +37 -19
  95. data/app/assets/stylesheets/_mercury-bootstrap-overrides.scss +61 -0
  96. data/app/assets/stylesheets/_mercury-sass.scss +33 -0
  97. data/{vendor → app}/assets/stylesheets/mercury.css +1 -5
  98. data/{vendor → app}/assets/stylesheets/mercury/all_images.css.erb +6 -2
  99. data/app/assets/stylesheets/mercury/bootstrap-ish.css +1367 -0
  100. data/app/assets/stylesheets/mercury/bootstrap-overrides.css +61 -0
  101. data/{vendor → app}/assets/stylesheets/mercury/dialog.css +21 -8
  102. data/{vendor → app}/assets/stylesheets/mercury/lightview.css +6 -56
  103. data/app/assets/stylesheets/mercury/mercury.css +43 -0
  104. data/{vendor → app}/assets/stylesheets/mercury/modal.css +15 -32
  105. data/{vendor → app}/assets/stylesheets/mercury/statusbar.css +0 -0
  106. data/{vendor → app}/assets/stylesheets/mercury/toolbar.css +4 -1
  107. data/{vendor → app}/assets/stylesheets/mercury/tooltip.css +0 -0
  108. data/{vendor → app}/assets/stylesheets/mercury/uploader.css +4 -4
  109. data/app/helpers/mercury_helper.rb +7 -0
  110. data/app/views/layouts/mercury.html.erb +10 -20
  111. data/app/views/layouts/mercury.html.haml +19 -0
  112. data/app/views/layouts/mercury.html.slim +19 -0
  113. data/app/views/mercury/modals/character.html +1 -1
  114. data/app/views/mercury/modals/htmleditor.html +3 -7
  115. data/app/views/mercury/modals/link.html +37 -51
  116. data/app/views/mercury/modals/media.html +102 -0
  117. data/app/views/mercury/modals/table.html +79 -73
  118. data/app/views/mercury/panels/snippets.html +6 -1
  119. data/app/views/mercury/snippets/example/options.html.erb +23 -27
  120. data/app/views/mercury/snippets/no_options/preview.html.erb +1 -0
  121. data/config/routes.rb +9 -0
  122. data/features/generators/authentication.feature +10 -0
  123. data/features/generators/images.feature +41 -0
  124. data/features/generators/install.feature +21 -0
  125. data/features/loading/loading.feature +5 -2
  126. data/features/loading/user_interface.feature +9 -7
  127. data/features/regions/{editable → full}/advanced_editing.feature +0 -0
  128. data/features/regions/full/basic_editing.feature +198 -0
  129. data/features/regions/{editable → full}/inserting_links.feature +20 -19
  130. data/features/regions/{editable → full}/inserting_media.feature +36 -18
  131. data/features/regions/{editable → full}/inserting_snippets.feature +28 -18
  132. data/features/regions/{editable → full}/inserting_special_characters.feature +2 -2
  133. data/features/regions/full/inserting_tables.feature +109 -0
  134. data/features/regions/{editable → full}/pasting.feature +0 -0
  135. data/features/regions/{editable → full}/uploading_images.feature +0 -0
  136. data/features/regions/{markupable → image}/uploading_images.feature +0 -0
  137. data/features/regions/{markupable → markdown}/advanced_editing.feature +0 -0
  138. data/features/regions/{markupable → markdown}/basic_editing.feature +0 -0
  139. data/features/regions/{markupable → markdown}/inserting_links.feature +0 -0
  140. data/features/regions/{markupable → markdown}/inserting_media.feature +0 -0
  141. data/features/regions/{markupable → markdown}/inserting_snippets.feature +0 -0
  142. data/features/regions/{markupable → markdown}/inserting_special_characters.feature +0 -0
  143. data/features/regions/{markupable → markdown}/inserting_tables.feature +0 -0
  144. data/features/regions/{snippetable/advanced_editing.feature → markdown/uploading_images.feature} +0 -0
  145. data/features/regions/simple/basic_editing.feature +5 -0
  146. data/features/regions/{snippetable/basic_editing.feature → snippets/advanced_editing.feature} +0 -0
  147. data/features/regions/{snippetable/inserting_snippets.feature → snippets/basic_editing.feature} +0 -0
  148. data/{vendor/assets/javascripts/mercury/locales/da.locale.js.coffee → features/regions/snippets/inserting_snippets.feature} +0 -0
  149. data/features/saving/saving.feature +8 -8
  150. data/features/step_definitions/custom_web_steps.rb +22 -0
  151. data/features/step_definitions/generator_steps.rb +23 -0
  152. data/features/step_definitions/mercury_steps.rb +1 -438
  153. data/features/support/aruba.rb +28 -0
  154. data/features/support/env.rb +11 -1
  155. data/features/support/selectors.rb +23 -0
  156. data/lib/generators/mercury/install/authentication/authentication_generator.rb +17 -0
  157. data/lib/generators/mercury/install/images/images_generator.rb +47 -0
  158. data/{app/models/mercury/image.rb → lib/generators/mercury/install/images/templates/ar_paperclip_image.rb} +7 -0
  159. data/{db/migrate/20110526035601_create_mercury_images.rb → lib/generators/mercury/install/images/templates/ar_paperclip_image_migration.rb} +0 -0
  160. data/{app/controllers/mercury → lib/generators/mercury/install/images/templates}/images_controller.rb +0 -0
  161. data/lib/generators/mercury/install/{templates → images/templates}/mongoid_paperclip_image.rb +0 -0
  162. data/lib/generators/mercury/install/install_generator.rb +12 -23
  163. data/lib/mercury-rails.rb +1 -2
  164. data/lib/mercury/authentication.rb +1 -0
  165. data/lib/mercury/cucumber/step_definitions.rb +13 -0
  166. data/lib/mercury/cucumber/step_definitions/mercury_steps.rb +408 -0
  167. data/{features → lib/mercury/cucumber}/support/mercury_contents.rb +3 -3
  168. data/{features → lib/mercury/cucumber}/support/mercury_selectors.rb +0 -20
  169. data/lib/mercury/engine.rb +19 -0
  170. data/lib/mercury/rails.rb +5 -0
  171. data/lib/mercury/version.rb +3 -0
  172. data/spec/dummy/Rakefile +7 -0
  173. data/spec/dummy/app/assets/javascripts/application.js +0 -0
  174. data/spec/dummy/app/assets/javascripts/prototype.js +6082 -0
  175. data/spec/dummy/app/assets/stylesheets/application.css.scss +110 -0
  176. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  177. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  178. data/spec/dummy/app/views/layouts/mercury.html.erb +28 -0
  179. data/spec/dummy/config.ru +4 -0
  180. data/spec/dummy/config/application.rb +58 -0
  181. data/spec/dummy/config/boot.rb +10 -0
  182. data/spec/dummy/config/database.yml +10 -0
  183. data/spec/dummy/config/environment.rb +5 -0
  184. data/spec/dummy/config/environments/development.rb +37 -0
  185. data/spec/dummy/config/environments/production.rb +67 -0
  186. data/spec/dummy/config/environments/test.rb +37 -0
  187. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  188. data/spec/dummy/config/initializers/inflections.rb +15 -0
  189. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  190. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  191. data/spec/dummy/config/initializers/session_store.rb +8 -0
  192. data/spec/dummy/config/initializers/teabag.rb +9 -0
  193. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  194. data/spec/dummy/config/locales/en.yml +5 -0
  195. data/spec/dummy/config/routes.rb +5 -0
  196. data/spec/dummy/db/.gitkeep +0 -0
  197. data/spec/dummy/public/500.html +25 -0
  198. data/spec/dummy/public/blank.html +1 -0
  199. data/spec/dummy/public/favicon.ico +0 -0
  200. data/spec/dummy/public/images/bunny.gif +0 -0
  201. data/spec/dummy/public/images/bunny2.jpg +0 -0
  202. data/spec/dummy/public/index.html +279 -0
  203. data/spec/dummy/script/rails +6 -0
  204. data/spec/javascripts/{templates → fixtures}/mercury/dialog.html +0 -0
  205. data/spec/javascripts/{templates → fixtures}/mercury/dialogs/backcolor.html +0 -0
  206. data/spec/javascripts/{templates → fixtures}/mercury/dialogs/forecolor.html +0 -0
  207. data/spec/javascripts/{templates → fixtures}/mercury/dialogs/formatblock.html +0 -0
  208. data/spec/javascripts/{templates → fixtures}/mercury/dialogs/snippetpanel.html +0 -0
  209. data/spec/javascripts/{templates → fixtures}/mercury/dialogs/style.html +0 -0
  210. data/spec/javascripts/{templates → fixtures}/mercury/lightview.html +0 -0
  211. data/spec/javascripts/{templates → fixtures}/mercury/modal.html +0 -0
  212. data/spec/javascripts/{templates → fixtures}/mercury/modals/htmleditor.html +0 -0
  213. data/spec/javascripts/{templates → fixtures}/mercury/modals/insertcharacter.html +0 -0
  214. data/spec/javascripts/fixtures/mercury/modals/insertlink.html +67 -0
  215. data/spec/javascripts/fixtures/mercury/modals/insertmedia.html +87 -0
  216. data/spec/javascripts/{templates → fixtures}/mercury/modals/insertsnippet.html +0 -0
  217. data/spec/javascripts/fixtures/mercury/modals/inserttable.html +73 -0
  218. data/spec/javascripts/{templates → fixtures}/mercury/page_editor.html +4 -4
  219. data/spec/javascripts/{templates → fixtures}/mercury/palette.html +0 -0
  220. data/spec/javascripts/{templates → fixtures}/mercury/panel.html +0 -0
  221. data/spec/javascripts/fixtures/mercury/region.html +6 -0
  222. data/spec/javascripts/fixtures/mercury/regions/full.html +1 -0
  223. data/spec/javascripts/fixtures/mercury/regions/image.html +1 -0
  224. data/spec/javascripts/fixtures/mercury/regions/markdown.html +1 -0
  225. data/spec/javascripts/fixtures/mercury/regions/simple.html +1 -0
  226. data/spec/javascripts/fixtures/mercury/regions/snippets.html +4 -0
  227. data/spec/javascripts/{templates → fixtures}/mercury/select.html +0 -0
  228. data/spec/javascripts/{templates → fixtures}/mercury/snippet.html +0 -0
  229. data/spec/javascripts/{templates → fixtures}/mercury/snippet_toolbar.html +0 -0
  230. data/spec/javascripts/{templates → fixtures}/mercury/statusbar.html +0 -0
  231. data/spec/javascripts/{templates → fixtures}/mercury/table_editor.html +0 -0
  232. data/spec/javascripts/{templates → fixtures}/mercury/toolbar.button.html +0 -0
  233. data/spec/javascripts/{templates → fixtures}/mercury/toolbar.button_group.html +0 -0
  234. data/spec/javascripts/{templates → fixtures}/mercury/toolbar.expander.html +0 -0
  235. data/spec/javascripts/{templates → fixtures}/mercury/toolbar.html +0 -0
  236. data/spec/javascripts/{templates → fixtures}/mercury/tooltip.html +0 -0
  237. data/spec/javascripts/{templates → fixtures}/mercury/uploader.html +0 -0
  238. data/spec/javascripts/mercury/{dialog_spec.js.coffee → dialog_spec.coffee} +11 -12
  239. data/spec/javascripts/mercury/dialogs/backcolor_spec.js.coffee +2 -3
  240. data/spec/javascripts/mercury/dialogs/forecolor_spec.js.coffee +3 -4
  241. data/spec/javascripts/mercury/dialogs/formatblock_spec.js.coffee +2 -3
  242. data/spec/javascripts/mercury/dialogs/snippetpanel_spec.js.coffee +2 -3
  243. data/spec/javascripts/mercury/dialogs/style_spec.js.coffee +2 -3
  244. data/spec/javascripts/mercury/lightview_spec.js.coffee +180 -142
  245. data/spec/javascripts/mercury/mercury_spec.js.coffee +19 -13
  246. data/spec/javascripts/mercury/modal_spec.js.coffee +192 -148
  247. data/spec/javascripts/mercury/modals/htmleditor_spec.js.coffee +4 -5
  248. data/spec/javascripts/mercury/modals/insertcharacter_spec.js.coffee +2 -3
  249. data/spec/javascripts/mercury/modals/insertlink_spec.js.coffee +107 -34
  250. data/spec/javascripts/mercury/modals/insertmedia_spec.js.coffee +106 -26
  251. data/spec/javascripts/mercury/modals/insertsnippet_spec.js.coffee +2 -3
  252. data/spec/javascripts/mercury/modals/inserttable_spec.js.coffee +50 -40
  253. data/spec/javascripts/mercury/page_editor_spec.js.coffee +124 -80
  254. data/spec/javascripts/mercury/palette_spec.js.coffee +4 -5
  255. data/spec/javascripts/mercury/panel_spec.js.coffee +9 -12
  256. data/spec/javascripts/mercury/region_spec.js.coffee +22 -17
  257. data/spec/javascripts/mercury/regions/{editable_spec.js.coffee → full_spec.js.coffee} +26 -28
  258. data/spec/javascripts/mercury/regions/image_spec.js.coffee +33 -0
  259. data/spec/javascripts/mercury/regions/{markupable_spec.js.coffee → markdown_spec.js.coffee} +32 -34
  260. data/spec/javascripts/mercury/regions/simple_spec.js.coffee +32 -0
  261. data/spec/javascripts/mercury/regions/{snippetable_spec.js.coffee → snippets_spec.js.coffee} +54 -55
  262. data/spec/javascripts/mercury/select_spec.js.coffee +4 -5
  263. data/spec/javascripts/mercury/snippet_spec.js.coffee +92 -16
  264. data/spec/javascripts/mercury/snippet_toolbar_spec.js.coffee +31 -16
  265. data/spec/javascripts/mercury/statusbar_spec.js.coffee +9 -10
  266. data/spec/javascripts/mercury/table_editor_spec.js.coffee +1 -2
  267. data/spec/javascripts/mercury/toolbar.button_group_spec.js.coffee +7 -9
  268. data/spec/javascripts/mercury/toolbar.button_spec.js.coffee +55 -26
  269. data/spec/javascripts/mercury/toolbar.expander_spec.js.coffee +13 -13
  270. data/spec/javascripts/mercury/toolbar_spec.js.coffee +43 -14
  271. data/spec/javascripts/mercury/tooltip_spec.js.coffee +1 -2
  272. data/spec/javascripts/mercury/uploader_spec.js.coffee +47 -33
  273. data/spec/javascripts/spec_helper.coffee +4 -0
  274. data/spec/javascripts/{spec_helper.js → support/event_simulation.js} +0 -2
  275. data/spec/teabag_env.rb +32 -0
  276. metadata +366 -196
  277. data/features/regions/editable/basic_editing.feature +0 -195
  278. data/features/regions/editable/inserting_tables.feature +0 -109
  279. data/spec/javascripts/templates/mercury/modals/insertlink.html +0 -30
  280. data/spec/javascripts/templates/mercury/modals/insertmedia.html +0 -35
  281. data/spec/javascripts/templates/mercury/modals/inserttable.html +0 -27
  282. data/spec/javascripts/templates/mercury/region.html +0 -2
  283. data/spec/javascripts/templates/mercury/regions/editable.html +0 -3
  284. data/spec/javascripts/templates/mercury/regions/snippetable.html +0 -4
  285. data/vendor/assets/javascripts/mercury/modals/inserttable.js.coffee +0 -54
  286. data/vendor/assets/javascripts/mercury_loader.js +0 -193
  287. data/vendor/assets/javascripts/mercury_overrides.js +0 -6
  288. data/vendor/assets/stylesheets/mercury/mercury.css +0 -151
  289. data/vendor/assets/stylesheets/mercury_overrides.css +0 -17
@@ -0,0 +1,23 @@
1
+ When /^I add Mercury as a gem dependency$/ do
2
+ append_to_file('Gemfile', %{\ngem "mercury-rails", :path => "#{File.expand_path('../../../', __FILE__)}"\n})
3
+ end
4
+
5
+ When "I have created a new rails application" do
6
+ step %{I reset Bundler environment variable}
7
+ step %{I successfully run `bundle exec rails new testapp --skip-bundle`}
8
+ step %{I cd to "testapp"}
9
+ step %{I add Mercury as a gem dependency}
10
+ step %{I run `bundle install --local`}
11
+ end
12
+
13
+ Then /^should have the migration "([^"]*)"$/ do |migration|
14
+ in_current_dir do
15
+ Dir["db/migrate/*_#{migration}"].length.should == 1
16
+ end
17
+ end
18
+
19
+ Then /^should not have the migration "([^"]*)"$/ do |migration|
20
+ in_current_dir do
21
+ Dir["db/migrate/*_#{migration}"].length.should == 0
22
+ end
23
+ end
@@ -1,438 +1 @@
1
- ## Generic web steps
2
- #------------------------------------------------------------------------------
3
- When /^(?:|I )click on (.+)$/ do |locator|
4
- selector = selector_for(locator)
5
- find(selector, :message => "Unable to locate the element '#{selector}' to click on").click
6
- end
7
-
8
- Then /^(.+) should (not )?be visible$/ do |locator, boolean|
9
- selector = selector_for(locator)
10
- if boolean == 'not '
11
- page.has_no_css?("#{selector}")
12
- else
13
- page.has_css?("#{selector}", :visible => true)
14
- end
15
- end
16
-
17
- # scoping step for different windows
18
- When /^(.*) in the "([^"]*)" window$/ do |s, window|
19
- page.driver.within_window(window) do
20
- step(s)
21
- end
22
- end
23
-
24
-
25
- ## Mercury general steps
26
- #------------------------------------------------------------------------------
27
- Given /^(?:|I )adjust the configuration to have: \{([^\}]*)\}$/ do |javascript|
28
- Rails.application.config.mercury_config = JSON.parse("{#{javascript}}")
29
- end
30
-
31
- # scoping step for the mercury content frame
32
- When /^(.*) in the content frame$/ do |s|
33
- page.driver.within_frame('mercury_iframe') do
34
- step(s)
35
- end
36
- end
37
-
38
- # silence mercury's onbeforeunload confirmation
39
- Given /^the editor won't prompt when leaving the page$/ do
40
- page.driver.execute_script('Mercury.silent = true;')
41
- end
42
-
43
-
44
- ## Toolbar specific steps
45
- #------------------------------------------------------------------------------
46
- # for the select dropdowns
47
- When /^(?:|I )select (.*?) from the dropdown$/ do |locator|
48
- selector = selector_for(locator)
49
- find(selector, :message => "Unable to locate the element '#{selector}' to click on").click
50
- end
51
-
52
-
53
- ## Panel specific steps
54
- #------------------------------------------------------------------------------
55
- When /^(?:I )(?:open|close|toggle) the (.*?) panel$/ do |panel_locator|
56
- step(%Q{I click on the "#{panel_locator}" button})
57
- end
58
-
59
-
60
- ## Modal specific steps
61
- #------------------------------------------------------------------------------
62
- When /^(?:I )close the modal(?: window)?$/ do
63
- step(%Q{I click on the modal close button})
64
- end
65
-
66
-
67
- ## Region specific steps
68
- #------------------------------------------------------------------------------
69
- # setting content
70
- Given /^the content of (.*?) (?:is|are|has|includes) (.*?)$/ do |region_locator, contents|
71
- step(%Q{I set the contents of #{region_locator} to #{contents}})
72
- end
73
-
74
- When /^(?:|I )(?:change|set) the contents? of (.*?) to (.*?)$/ do |region_locator, contents|
75
- region_id = region_selector_for(region_locator).gsub('#', '')
76
- content = contents[0] == '"' ? contents : "\"#{contents_for(contents)}\""
77
- page.driver.within_frame('mercury_iframe') do
78
- find("##{region_id}", :message => "Unable to locate a region matching '##{region_id}'")
79
- page.driver.execute_script <<-JAVASCRIPT
80
- var element = top.jQuery(document).find('##{region_id}');
81
- if (element.data('type') == 'markupable') {
82
- element.find('textarea').val(#{content});
83
- } else {
84
- var region = top.mercuryInstance.getRegionByName('#{region_id}');
85
- region.content(#{content});
86
- }
87
- JAVASCRIPT
88
- end
89
- end
90
-
91
- # setting/making selections
92
- When /^(?:|I )(?:make|have) a selection$/ do
93
- step(%Q{I have a selection for "span"})
94
- end
95
-
96
- When /^(?:|I )(?:make|have) a selection (?:in (.*?) )?for "([^"]*)"$/ do |region_locator, selector|
97
- step(%Q{I can simulate complex javascript events})
98
- # assume the first editable region if one wasn't provided'
99
- region_selector = region_selector_for(region_locator || 'the editable region')
100
- page.driver.within_frame('mercury_iframe') do
101
- find("#{region_selector}", :message => "Unable to locate a region matching '#{region_selector}'")
102
- find("#{region_selector} #{selector}", :message => "Unable to locate a match for '#{selector}' inside '#{region_locator}'")
103
- page.driver.execute_script <<-JAVASCRIPT
104
- var element = top.jQuery(document).find('#{region_selector}');
105
- if (element.data('type') == 'markupable') {
106
- alert('unimplemented');
107
- throw('unimplemented');
108
- } else {
109
- var selectedElement = element.find('#{selector}');
110
- var selection = new top.Mercury.Regions.Editable.Selection(window.getSelection(), document);
111
- selection.selectNode(selectedElement.get(0));
112
- selectedElement.simulate('mouseup');
113
- }
114
- JAVASCRIPT
115
- end
116
- end
117
-
118
- # other events
119
- When /^(?:|I )double click on (.*?) in (.*?)$/ do |locator, region_locator|
120
- step(%Q{I can simulate complex javascript events})
121
- selector = selector_for(locator)
122
- # assume the first editable region if one wasn't provided'
123
- region_selector = region_selector_for(region_locator || 'the editable region')
124
- page.driver.within_frame('mercury_iframe') do
125
- find("#{region_selector}", :message => "Unable to locate a region matching '#{region_selector}'")
126
- find("#{region_selector} #{selector}", :message => "Unable to locate a match for '#{selector}' inside '#{region_locator}'")
127
- page.driver.execute_script <<-JAVASCRIPT
128
- top.jQuery(document).find('#{region_selector} #{selector}').simulate('dblclick');
129
- JAVASCRIPT
130
- end
131
- end
132
-
133
- # getting contents
134
- Then /^the contents? of (.*?) should be "([^"]*)"$/ do |region_locator, content|
135
- region_selector = region_selector_for(region_locator)
136
- page.driver.within_frame('mercury_iframe') do
137
- find("#{region_selector}", :message => "Unable to locate a region matching '#{region_selector}'")
138
- results = page.driver.execute_script <<-JAVASCRIPT
139
- var element = top.jQuery(document).find('#{region_selector}');
140
- if (element.data('type') == 'markupable') {
141
- return element.find('textarea').val();
142
- } else {
143
- return element.html();
144
- }
145
- JAVASCRIPT
146
- assert_equal content, results.gsub('"', "'").gsub("\n", '')
147
- end
148
- end
149
-
150
-
151
- ## Saving specific steps
152
- #------------------------------------------------------------------------------
153
- # caching for the last save -- a request will still be made
154
- Given /^save results will be cached$/ do
155
- page.driver.execute_script <<-JAVASCRIPT
156
- Mercury.PageEditor.prototype.save = function() {
157
- window.cachedResults = this.serialize();
158
- }
159
- JAVASCRIPT
160
- end
161
-
162
- # check for the last save cached results
163
- Then /^the save should have (.*?) for (.*?)$/ do |contents, region_locator|
164
- region_id = region_selector_for(region_locator).gsub('#', '')
165
- content = contents[0] == '"' ? contents : "\"#{contents_for(contents)}\""
166
- results = page.driver.execute_script <<-JAVASCRIPT
167
- return (window.cachedResults['#{region_id}']) ?
168
- window.cachedResults['#{region_id}']['value'] : null;
169
- JAVASCRIPT
170
- assert_equal content, "\"#{results}\""
171
- end
172
-
173
-
174
- ## Table editing specific steps
175
- #------------------------------------------------------------------------------
176
- # in the modal window
177
- When /^(?:|I )(?:add|insert) a (row|column) (before|after)(?: it)?$/ do |row_or_column, before_or_after|
178
- name = "insert_#{row_or_column}_#{before_or_after}".camelcase(:lower)
179
- step(%Q{I click on ".mercury-modal-content input[name=#{name}]"})
180
- end
181
-
182
- When /^(?:|I )delete the(?: current)? (row|column)$/ do |row_or_column|
183
- name = "delete_#{row_or_column}".camelcase(:lower)
184
- step(%Q{I click on ".mercury-modal-content input[name=#{name}]"})
185
- end
186
-
187
- When /^(?:|I )(increase|decrease) the (rowspan|colspan)$/ do |increase_or_decrease, rowspan_or_colspan|
188
- name = "#{increase_or_decrease}_#{rowspan_or_colspan}".camelcase(:lower)
189
- step(%Q{I click on ".mercury-modal-content input[name=#{name}]"})
190
- end
191
-
192
- Then /^the selected cell should be (.*?)$/ do |locator|
193
- selector = selector_for(locator).gsub('td:', 'td.selected:')
194
- find("#{selector}", :message => "Unable to locate the selected cell for '#{selector}'")
195
- end
196
-
197
- # in general
198
- Then /^the(?: table)? (row|column) count should be (\d+)$/ do |row_or_column, expected_count|
199
- method = "get_#{row_or_column}_count".camelcase(:lower)
200
- actual_count = page.driver.execute_script("return Mercury.tableEditor.#{method}()")
201
- assert_equal expected_count.to_i, actual_count.to_i
202
- end
203
-
204
-
205
- ## Snippet specific steps
206
- #------------------------------------------------------------------------------
207
- # setting snippet options
208
- Given /^the options for the (.*?) snippet "([^"]*)" are (.*?)$/ do |snippet_name, snippet_id, options|
209
- @snippet_id = snippet_id
210
- options_json = parse_snippet_options_from(options)
211
- page.driver.execute_script <<-JAVASCRIPT
212
- Mercury.Snippet.load({#{snippet_id}: {name: '#{snippet_name}', options: #{options_json}}});
213
- JAVASCRIPT
214
- end
215
-
216
- # dragging/dropping
217
- When /^(?:|I )(?:drag|drop) (.*?) (?:into|on) (.*?)$/ do |snippet_locator, region_locator|
218
- snippet_name = snippet_name_for(snippet_locator)
219
- region_id = region_selector_for(region_locator).gsub('#', '')
220
- page.driver.within_frame('mercury_iframe') do
221
- find("##{region_id}", :message => "Unable to locate a region matching '##{region_id}'")
222
- page.driver.execute_script <<-JAVASCRIPT
223
- var element = top.jQuery(document).find('##{region_id}');
224
- if (element.data('type') == 'markupable') {
225
- alert('unimplemented');
226
- throw('unimplemented');
227
- } else {
228
- var region = top.mercuryInstance.getRegionByName('#{region_id}');
229
- region.selection().range.collapse(true);
230
- document.execCommand('insertHTML', false, '<img data-snippet="#{snippet_name}" src="/assets/mercury/default-snippet.png">');
231
- element.trigger('possible:drop');
232
- }
233
- JAVASCRIPT
234
- end
235
- end
236
-
237
- When /^(?:|I )hover over (.*?)(?: in (.*?))?$/ do |locator, region_locator|
238
- step(%Q{I can simulate complex javascript events})
239
- selector = selector_for(locator)
240
- region_selector = region_selector_for(region_locator || 'the editable region')
241
- page.driver.within_frame('mercury_iframe') do
242
- find("#{region_selector}", :message => "Unable to locate a region matching '#{region_selector}'")
243
- page.driver.execute_script <<-JAVASCRIPT
244
- var element = top.jQuery(document).find('#{region_selector}');
245
- if (element.data('type') == 'markupable') {
246
- alert('unimplemented');
247
- throw('unimplemented');
248
- } else {
249
- element.find('#{selector}').simulate('mousemove');
250
- }
251
- JAVASCRIPT
252
- end
253
- end
254
-
255
- When /^(?:|I )edit the snippet$/ do
256
- step(%{I hover over the snippet})
257
- step(%{click on the edit snippet settings toolbar button})
258
- end
259
-
260
-
261
- ## Dropping image specific steps
262
- #------------------------------------------------------------------------------
263
- #When /^(?:|I )drop an image into (.*?) from a different browser/ do |region_locator|
264
- # Given(%Q{I can simulate complex javascript events})
265
- # region_selector = region_selector_for(region_locator || 'the editable region')
266
- # page.driver.within_frame('mercury_iframe') do
267
- # find("#{region_selector}", :message => "Unable to locate a region matching '#{region_selector}'")
268
- # page.driver.execute_script <<-JAVASCRIPT
269
- # var element = top.jQuery(document).find('#{region_selector}');
270
- # if (element.data('type') == 'markupable') {
271
- # alert('unimplemented');
272
- # throw('unimplemented');
273
- # } else {
274
- # element.find('#{region_selector}').simulate('drop', {'text/html': '<img src="testing.gif"/>'});
275
- # }
276
- # JAVASCRIPT
277
- # end
278
- #end
279
-
280
-
281
- ## Javascript event simulation steps
282
- #------------------------------------------------------------------------------
283
- Given /^(?:|I )can simulate complex javascript events$/ do
284
- page.driver.execute_script(EVENT_SIMULATION_JAVASCRIPT)
285
- end
286
-
287
- #------------------------------------------------------------------------------
288
-
289
- EVENT_SIMULATION_JAVASCRIPT = <<-JAVASCRIPT
290
- /*
291
- * jquery.simulate - simulate browser mouse and keyboard events
292
- *
293
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
294
- * Dual licensed under the MIT or GPL Version 2 licenses.
295
- * http://jquery.org/license
296
- *
297
- */
298
- ;(function($) {
299
-
300
- $.fn.extend({
301
- simulate: function(type, options) {
302
- return this.each(function() {
303
- var opt = $.extend({}, $.simulate.defaults, options || {});
304
- new $.simulate(this, type, opt);
305
- });
306
- }
307
- });
308
-
309
- $.simulate = function(el, type, options) {
310
- this.target = el;
311
- this.options = options;
312
-
313
- if (/^drag$/.test(type)) {
314
- this[type].apply(this, [this.target, options]);
315
- } else {
316
- this.simulateEvent(el, type, options);
317
- }
318
- }
319
-
320
- $.extend($.simulate.prototype, {
321
- simulateEvent: function(el, type, options) {
322
- var evt = this.createEvent(type, options);
323
- this.dispatchEvent(el, type, evt, options);
324
- return evt;
325
- },
326
- createEvent: function(type, options) {
327
- if (/^mouse(over|out|down|up|move)|(dbl)?click$/.test(type)) {
328
- return this.mouseEvent(type, options);
329
- } else if (/^key(up|down|press)$/.test(type)) {
330
- return this.keyboardEvent(type, options);
331
- }
332
- },
333
- mouseEvent: function(type, options) {
334
- var evt;
335
- var e = $.extend({
336
- bubbles: true, cancelable: (type != "mousemove"), view: window, detail: 0,
337
- screenX: 0, screenY: 0, clientX: 0, clientY: 0,
338
- ctrlKey: false, altKey: false, shiftKey: false, metaKey: false,
339
- button: 0, relatedTarget: undefined
340
- }, options);
341
-
342
- var relatedTarget = $(e.relatedTarget)[0];
343
-
344
- if ($.isFunction(document.createEvent)) {
345
- evt = document.createEvent("MouseEvents");
346
- evt.initMouseEvent(type, e.bubbles, e.cancelable, e.view, e.detail,
347
- e.screenX, e.screenY, e.clientX, e.clientY,
348
- e.ctrlKey, e.altKey, e.shiftKey, e.metaKey,
349
- e.button, e.relatedTarget || document.body.parentNode);
350
- } else if (document.createEventObject) {
351
- evt = document.createEventObject();
352
- $.extend(evt, e);
353
- evt.button = { 0:1, 1:4, 2:2 }[evt.button] || evt.button;
354
- }
355
- return evt;
356
- },
357
- keyboardEvent: function(type, options) {
358
- var evt;
359
-
360
- var e = $.extend({ bubbles: true, cancelable: true, view: window,
361
- ctrlKey: false, altKey: false, shiftKey: false, metaKey: false,
362
- keyCode: 0, charCode: 0
363
- }, options);
364
-
365
- if ($.isFunction(document.createEvent)) {
366
- try {
367
- evt = document.createEvent("KeyEvents");
368
- evt.initKeyEvent(type, e.bubbles, e.cancelable, e.view,
369
- e.ctrlKey, e.altKey, e.shiftKey, e.metaKey,
370
- e.keyCode, e.charCode);
371
- } catch(err) {
372
- evt = document.createEvent("Events");
373
- evt.initEvent(type, e.bubbles, e.cancelable);
374
- $.extend(evt, { view: e.view,
375
- ctrlKey: e.ctrlKey, altKey: e.altKey, shiftKey: e.shiftKey, metaKey: e.metaKey,
376
- keyCode: e.keyCode, charCode: e.charCode
377
- });
378
- }
379
- } else if (document.createEventObject) {
380
- evt = document.createEventObject();
381
- $.extend(evt, e);
382
- }
383
- if ($.browser.msie || $.browser.opera) {
384
- evt.keyCode = (e.charCode > 0) ? e.charCode : e.keyCode;
385
- evt.charCode = undefined;
386
- }
387
- return evt;
388
- },
389
- dispatchEvent: function(el, type, evt) {
390
- if (el.dispatchEvent) {
391
- el.dispatchEvent(evt);
392
- } else if (el.fireEvent) {
393
- el.fireEvent('on' + type, evt);
394
- }
395
- return evt;
396
- },
397
- drag: function(el) {
398
- var self = this, center = this.findCenter(this.target),
399
- options = this.options, x = Math.floor(center.x), y = Math.floor(center.y),
400
- dx = options.dx || 0, dy = options.dy || 0, target = this.target;
401
- var coord = { clientX: x, clientY: y };
402
- this.simulateEvent(target, "mousedown", coord);
403
- coord = { clientX: x + 1, clientY: y + 1 };
404
- this.simulateEvent(document, "mousemove", coord);
405
- coord = { clientX: x + dx, clientY: y + dy };
406
- this.simulateEvent(document, "mousemove", coord);
407
- this.simulateEvent(document, "mousemove", coord);
408
- this.simulateEvent(target, "mouseup", coord);
409
- this.simulateEvent(target, "click", coord);
410
- },
411
- findCenter: function(el) {
412
- var el = $(this.target), o = el.offset(), d = $(document);
413
- return {
414
- x: o.left + el.outerWidth() / 2 - d.scrollLeft(),
415
- y: o.top + el.outerHeight() / 2 - d.scrollTop()
416
- };
417
- }
418
- });
419
-
420
- $.extend($.simulate, {
421
- defaults: {
422
- speed: 'sync'
423
- },
424
- VK_TAB: 9,
425
- VK_ENTER: 13,
426
- VK_ESC: 27,
427
- VK_PGUP: 33,
428
- VK_PGDN: 34,
429
- VK_END: 35,
430
- VK_HOME: 36,
431
- VK_LEFT: 37,
432
- VK_UP: 38,
433
- VK_RIGHT: 39,
434
- VK_DOWN: 40
435
- });
436
-
437
- })(jQuery);
438
- JAVASCRIPT
1
+ require 'mercury/cucumber/step_definitions'