mercury-rails 0.2.0 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. data/POST_INSTALL +15 -0
  2. data/README.md +27 -6
  3. data/VERSION +1 -1
  4. data/app/controllers/mercury_controller.rb +4 -4
  5. data/app/views/layouts/mercury.html.erb +14 -3
  6. data/app/views/mercury/panels/snippets.html +1 -1
  7. data/app/views/mercury/snippets/{example_options.html.erb → example/options.html.erb} +0 -0
  8. data/app/views/mercury/snippets/{example.html.erb → example/preview.html.erb} +0 -0
  9. data/config/routes.rb +2 -2
  10. data/features/loading/loading.feature +22 -0
  11. data/features/loading/navigating.feature +77 -0
  12. data/features/loading/user_interface.feature +67 -0
  13. data/features/regions/editable/advanced_editing.feature +0 -0
  14. data/features/regions/editable/basic_editing.feature +195 -0
  15. data/features/regions/editable/inserting_links.feature +98 -0
  16. data/features/regions/editable/inserting_media.feature +110 -0
  17. data/features/regions/editable/inserting_snippets.feature +103 -0
  18. data/features/regions/editable/inserting_special_characters.feature +24 -0
  19. data/features/regions/editable/inserting_tables.feature +109 -0
  20. data/features/regions/editable/pasting.feature +0 -0
  21. data/features/regions/editable/uploading_images.feature +0 -0
  22. data/features/regions/markupable/advanced_editing.feature +0 -0
  23. data/features/regions/markupable/basic_editing.feature +0 -0
  24. data/features/regions/markupable/inserting_links.feature +0 -0
  25. data/features/regions/markupable/inserting_media.feature +0 -0
  26. data/features/regions/markupable/inserting_snippets.feature +0 -0
  27. data/features/regions/markupable/inserting_special_characters.feature +0 -0
  28. data/features/regions/markupable/inserting_tables.feature +0 -0
  29. data/features/regions/markupable/uploading_images.feature +0 -0
  30. data/features/regions/snippetable/advanced_editing.feature +0 -0
  31. data/features/regions/snippetable/basic_editing.feature +0 -0
  32. data/features/regions/snippetable/inserting_snippets.feature +0 -0
  33. data/features/saving/saving.feature +33 -0
  34. data/features/step_definitions/debug_steps.rb +2 -2
  35. data/features/step_definitions/mercury_steps.rb +441 -0
  36. data/features/support/env.rb +3 -3
  37. data/features/support/mercury_contents.rb +25 -0
  38. data/features/support/mercury_selectors.rb +147 -0
  39. data/features/support/paths.rb +20 -18
  40. data/features/support/selectors.rb +5 -3
  41. data/lib/generators/mercury/install/install_generator.rb +14 -0
  42. data/mercury-rails.gemspec +50 -20
  43. data/spec/javascripts/mercury/lightview_spec.js.coffee +55 -27
  44. data/spec/javascripts/mercury/mercury_spec.js.coffee +3 -3
  45. data/spec/javascripts/mercury/modal_spec.js.coffee +2 -2
  46. data/spec/javascripts/mercury/native_extensions_spec.js.coffee +0 -24
  47. data/spec/javascripts/mercury/page_editor_spec.js.coffee +148 -67
  48. data/spec/javascripts/mercury/panel_spec.js.coffee +2 -2
  49. data/spec/javascripts/mercury/region_spec.js.coffee +10 -7
  50. data/spec/javascripts/mercury/regions/editable_spec.js.coffee +0 -20
  51. data/spec/javascripts/mercury/snippet_toolbar_spec.js.coffee +2 -2
  52. data/spec/javascripts/mercury/toolbar.button_group_spec.js.coffee +1 -1
  53. data/spec/javascripts/mercury/toolbar.expander_spec.js.coffee +1 -1
  54. data/spec/javascripts/templates/mercury/page_editor.html +3 -3
  55. data/vendor/assets/images/mercury/close.png +0 -0
  56. data/vendor/assets/javascripts/mercury.js +140 -73
  57. data/vendor/assets/javascripts/{mercury_dependencies → mercury/dependencies}/jquery-1.6.js +0 -0
  58. data/vendor/assets/javascripts/{mercury_dependencies → mercury/dependencies}/jquery-ui-1.8.13.custom.js +0 -0
  59. data/vendor/assets/javascripts/{mercury_dependencies → mercury/dependencies}/jquery.additions.js +0 -0
  60. data/vendor/assets/javascripts/mercury/dependencies/jquery.htmlClean.js +527 -0
  61. data/vendor/assets/javascripts/{mercury_dependencies → mercury/dependencies}/liquidmetal.js +0 -0
  62. data/vendor/assets/javascripts/{mercury_dependencies → mercury/dependencies}/showdown.js +0 -0
  63. data/vendor/assets/javascripts/mercury/lightview.js.coffee +5 -2
  64. data/vendor/assets/javascripts/mercury/mercury.js.coffee +9 -8
  65. data/vendor/assets/javascripts/mercury/modals/htmleditor.js.coffee +3 -1
  66. data/vendor/assets/javascripts/mercury/modals/inserttable.js.coffee +2 -2
  67. data/vendor/assets/javascripts/mercury/native_extensions.js.coffee +6 -17
  68. data/vendor/assets/javascripts/mercury/page_editor.js.coffee +29 -8
  69. data/vendor/assets/javascripts/mercury/plugins/save_as_xml/mercury/page_editor.js.coffee +27 -0
  70. data/vendor/assets/javascripts/mercury/plugins/save_as_xml/plugin.js +9 -0
  71. data/vendor/assets/javascripts/mercury/region.js.coffee +2 -2
  72. data/vendor/assets/javascripts/mercury/regions/editable.js.coffee +89 -93
  73. data/vendor/assets/javascripts/mercury/regions/markupable.js.coffee +1 -1
  74. data/vendor/assets/javascripts/mercury/support/history.js +1 -0
  75. data/vendor/assets/javascripts/mercury/uploader.js.coffee +0 -1
  76. data/vendor/assets/javascripts/mercury_loader.js +4 -4
  77. data/vendor/assets/stylesheets/mercury/lightview.css +8 -0
  78. data/vendor/assets/stylesheets/mercury/mercury.css +12 -0
  79. data/vendor/assets/stylesheets/mercury/modal.css +0 -12
  80. data/vendor/assets/stylesheets/mercury/toolbar.css +1 -0
  81. data/vendor/assets/stylesheets/mercury_overrides.css +17 -0
  82. metadata +73 -45
  83. data/app/views/mercury/lightviews/imageprocessor.html +0 -3
  84. data/app/views/mercury/modals/sanitizer.html +0 -9
  85. data/features/editing/basic.feature +0 -11
  86. data/vendor/assets/images/mercury/clippy.png +0 -0
@@ -9,15 +9,16 @@ require 'capybara/firebug'
9
9
 
10
10
  # You can enable firebug in your tests by tagging them @firebug.
11
11
  # To change the version of firebug use the FIREBUG_VERSION environment variable.
12
- # For firefox 4 use 1.7.0
12
+ # For firefox 4+ use 1.7.0
13
13
  # For firefox 3 use 1.6.2
14
- Selenium::WebDriver::Firefox::Profile.firebug_version = ENV['FIREBUG_VERSION'] || '1.7.0'
14
+ Selenium::WebDriver::Firefox::Profile.firebug_version = ENV['FIREBUG_VERSION'] || '1.8.3'
15
15
 
16
16
  # Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In
17
17
  # order to ease the transition to Capybara we set the default here. If you'd
18
18
  # prefer to use XPath just remove this line and adjust any selectors in your
19
19
  # steps to use the XPath syntax.
20
20
  Capybara.default_selector = :css
21
+ Capybara.ignore_hidden_elements = true
21
22
 
22
23
  # By default, any exception happening in your Rails application will bubble up
23
24
  # to Cucumber so that your scenario will fail. This is a different from how
@@ -43,4 +44,3 @@ begin
43
44
  rescue NameError
44
45
  raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
45
46
  end
46
-
@@ -0,0 +1,25 @@
1
+ module MercuryContentsHelpers
2
+ def contents_for(name)
3
+ case name
4
+ when 'simple content' then "this is <span>simple</span> <b>content</b>"
5
+ when 'justifiable content' then "<div>first line</div><br/>this is <span>justifiable</span> <b>content</b>"
6
+ when 'wrapped content' then "<span>this <a href='http://google.com'>is</a> <i>wrapped</i> <b>content</b></span>"
7
+ when 'an image' then "this is <img src='/assets/mercury/temp-logo.png'> <b>content</b>"
8
+ when 'a table' then "this is a <table><tr><td><span>1</span></td><td><span>2</span></td></tr><tr><td><span>3</span></td><td><span>4</span></td></tr></table> <b>content</b>"
9
+ when 'the snippet', 'that snippet' then "<div class='mercury-snippet' data-snippet='#{@snippet_id || 'snippet_42'}'>#{@snippet_id || 'snippet_42'}</div> <b>content</b>"
10
+
11
+ else name
12
+ end
13
+ end
14
+
15
+ def parse_snippet_options_from(options_string)
16
+ json = []
17
+ options_string.scan(/(?:,\s)?([^:]*): ("[^"]*")/).each do |pair|
18
+ json << %Q{'options[#{pair[0]}]': #{pair[1]}}
19
+ end
20
+
21
+ "{#{json.join(', ')}}"
22
+ end
23
+ end
24
+
25
+ World(MercuryContentsHelpers)
@@ -0,0 +1,147 @@
1
+ module MercurySelectorsHelpers
2
+
3
+ def mercury_selector_for(locator)
4
+ case locator
5
+
6
+ # toolbar selectors
7
+ when 'the toolbar' then '.mercury-toolbar-container'
8
+
9
+ when /^the "(.*?)" button$/
10
+ ".mercury-primary-toolbar .mercury-#{mercury_button_mapping_for($1)}-button"
11
+
12
+ when /^the (.*?) editor (button|dropdown|palette)$/
13
+ ".mercury-editable-toolbar .mercury-#{mercury_button_mapping_for($1)}-button"
14
+
15
+ when /^the (.*?) toolbar button$/
16
+ ".mercury-snippet-toolbar .mercury-#{mercury_button_mapping_for($1)}-button"
17
+
18
+ when /^the (.*?) select$/
19
+ ".mercury-#{mercury_button_mapping_for($1)}-select"
20
+
21
+ when /^the (.*?) palette$/
22
+ ".mercury-#{mercury_button_mapping_for($1)}-palette"
23
+
24
+ # palette / select dropdown
25
+ when 'the color red' then '.mercury-palette .picker:nth-child(22n)'
26
+
27
+ when 'the red style' then '.mercury-select-options .red'
28
+ when 'the heading 2 block' then '.mercury-select-options h2'
29
+
30
+ # statusbar selectors
31
+ when 'the statusbar' then '.mercury-statusbar'
32
+ when 'the about the editor link' then 'a.mercury-statusbar-about'
33
+
34
+ # panel selectors
35
+ when 'the panel', /^the (.*?) panel$/ then '.mercury-panel'
36
+
37
+ # modal window selectors
38
+ when 'the modal', 'the modal window', /^the (.*?) modal$/ then '.mercury-modal'
39
+ when 'the modal overlay' then '.mercury-modal-overlay'
40
+ when 'the modal title' then '.mercury-modal h1.mercury-modal-title'
41
+ when 'the modal close button' then '.mercury-modal h1.mercury-modal-title a'
42
+
43
+ when 'the sweet snowman' then '.mercury-modal .character:nth-child(247n)'
44
+
45
+ when 'the first cell in the first row' then '.mercury-modal tr:nth-child(1n) td:nth-child(1n)'
46
+ when 'the third cell in the first row' then '.mercury-modal tr:nth-child(1n) td:nth-child(3n)'
47
+ when 'the forth cell in the first row' then '.mercury-modal tr:nth-child(1n) td:nth-child(4n)'
48
+ when 'the second cell in the second row' then '.mercury-modal tr:nth-child(2n) td:nth-child(2n)'
49
+ when 'the forth cell in the second row' then '.mercury-modal tr:nth-child(2n) td:nth-child(4n)'
50
+
51
+ when 'a selected cell' then '.mercury-modal td.selected'
52
+
53
+ # lightview selectors
54
+ when 'the lightview', 'the lightview window', /^the (.*?) lightview$/ then '.mercury-lightview'
55
+ when 'the lightview overlay' then '.mercury-lightview-overlay'
56
+ when 'the lightview title' then '.mercury-lightview h1.mercury-lightview-title'
57
+
58
+ # snippet selectors
59
+ when 'the snippet toolbar' then '.mercury-snippet-toolbar'
60
+ when 'the snippet', 'that snippet' then "div[data-snippet=#{@snippet_id || 'snippet_42'}]"
61
+
62
+ # other selectors
63
+ when 'the first image' then 'img:nth-child(1n)'
64
+
65
+ end
66
+ end
67
+
68
+ def mercury_button_mapping_for(locator)
69
+ case locator.downcase
70
+
71
+ # primary toolbar
72
+ when 'save' then 'save'
73
+ when 'preview' then 'preview'
74
+ when 'undo' then 'undo'
75
+ when 'redo' then 'redo'
76
+ when 'link', 'insert link' then 'insertLink'
77
+ when 'media', 'insert media' then 'insertMedia'
78
+ when 'table', 'insert table' then 'insertTable'
79
+ when 'character', 'insert character' then 'insertCharacter'
80
+ when 'snippet', 'insert snippet' then 'snippetPanel'
81
+ when 'history', 'view history' then 'historyPanel'
82
+ when 'notes', 'view notes' then 'notesPanel'
83
+
84
+ # editor toolbar
85
+ when 'predefined styles' then 'style'
86
+ when 'block format' then 'formatblock'
87
+ when 'backcolor', 'background color' then 'backColor'
88
+ when 'forecolor', 'foreground color' then 'foreColor'
89
+ when 'italicize' then 'italic'
90
+ when 'overline' then 'overline'
91
+ when 'strike through' then 'strikethrough'
92
+ when 'underline' then 'underline'
93
+ when 'subscript' then 'subscript'
94
+ when 'superscript' then 'superscript'
95
+ when 'justify left', 'left justify' then 'justifyLeft'
96
+ when 'justify center', 'center justify' then 'justifyCenter'
97
+ when 'justify right', 'right justify' then 'justifyRight'
98
+ when 'justify full', 'full justification' then 'justifyFull'
99
+ when 'unordered list', 'insert unordered list' then 'insertUnorderedList'
100
+ when 'ordered list', 'insert ordered list' then 'insertOrderedList'
101
+ when 'hr', 'insert hr', 'horizontal rule', 'insert horizontal rule' then 'horizontalRule'
102
+ when 'clean formatting', 'remove formatting' then 'removeFormatting'
103
+ when 'html editor' then 'htmlEditor'
104
+
105
+ # table context buttons
106
+ when 'add row before', 'insert row before' then 'insertRowBefore'
107
+ when 'add row after', 'insert row after' then 'insertRowAfter'
108
+ when 'delete row' then 'deleteRow'
109
+ when 'add column before', 'insert column before' then 'insertColumnBefore'
110
+ when 'add column after', 'insert column after' then 'insertColumnAfter'
111
+ when 'delete column' then 'deleteColumn'
112
+ when 'increase colspan' then 'increaseColspan'
113
+ when 'decrease colspan' then 'decreaseColspan'
114
+ when 'increase rowspan' then 'increaseRowspan'
115
+ when 'decrease rowspan' then 'decreaseRowspan'
116
+
117
+ # snippet toolbar
118
+ when 'edit snippet settings', 'edit snippet' then 'editSnippet'
119
+ when 'remove snippet' then 'removeSnippet'
120
+
121
+ else locator
122
+ end
123
+ end
124
+
125
+ def region_selector_for(locator)
126
+ case locator.downcase
127
+
128
+ when 'the first editable region', 'the editable region' then '#editable1'
129
+ when 'the first markupable region', 'the markupable region', 'the markdown region' then '#markupable1'
130
+ when 'the first snippetable region', 'the first snippet region', 'the snippetable region', 'the snippet region' then '#snippetable1'
131
+
132
+ else locator
133
+ end
134
+ end
135
+
136
+ def snippet_name_for(locator)
137
+ case locator.downcase
138
+
139
+ when 'the example snippet' then 'example'
140
+
141
+ else locator
142
+ end
143
+ end
144
+
145
+ end
146
+
147
+ World(MercurySelectorsHelpers)
@@ -8,27 +8,29 @@ module NavigationHelpers
8
8
  def path_to(page_name)
9
9
  case page_name
10
10
 
11
- when 'an edit page' then '/edit'
11
+ when 'an editable page', 'the editable page' then '/editor'
12
+ when 'the test page' then '/mercury/test_page'
12
13
 
13
- when /the root( page)?/ then '/'
14
- when /the home\s?page/ then '/'
15
- when /the url: "(.*)"/ then url_for($1)
16
14
 
17
- # Add more mappings here.
18
- # Here is an example that pulls values out of the Regexp:
19
- #
20
- # when /^(.*)'s profile page$/i
21
- # user_profile_path(User.find_by_login($1))
15
+ when /the root( page)?/ then '/'
16
+ when /the home\s?page/ then '/'
17
+ when /the url: "(.*)"/ then url_for($1)
22
18
 
23
- else
24
- begin
25
- page_name =~ /the (.*) page/
26
- path_components = $1.split(/\s+/)
27
- self.send(path_components.push('path').join('_').to_sym)
28
- rescue Object => e
29
- raise "Can't find mapping from \"#{page_name}\" to a path.\n" +
30
- "Now, go and add a mapping in #{__FILE__}"
31
- end
19
+ # Add more mappings here.
20
+ # Here is an example that pulls values out of the Regexp:
21
+ #
22
+ # when /^(.*)'s profile page$/i
23
+ # user_profile_path(User.find_by_login($1))
24
+
25
+ else
26
+ begin
27
+ page_name =~ /the (.*) page/
28
+ path_components = $1.split(/\s+/)
29
+ self.send(path_components.push('path').join('_').to_sym)
30
+ rescue Object => e
31
+ raise "Can't find mapping from \"#{page_name}\" to a path.\n" +
32
+ "Now, go and add a mapping in #{__FILE__}"
33
+ end
32
34
  end
33
35
  end
34
36
  end
@@ -6,10 +6,12 @@ module HtmlSelectorsHelpers
6
6
  # step definitions in web_steps.rb
7
7
  #
8
8
  def selector_for(locator)
9
- case locator
10
9
 
11
- when 'the toolbar'
12
- '.mercury-toolbar-container'
10
+ # add in for mercury support
11
+ result = mercury_selector_for(locator)
12
+ return result if result.present?
13
+
14
+ case locator
13
15
 
14
16
  when /the page/
15
17
  "html > body"
@@ -5,10 +5,24 @@ module Mercury
5
5
 
6
6
  desc "Installs Mercury into your application by copying the configuration file."
7
7
 
8
+ class_option :full, :type => :boolean, :aliases => "-f",
9
+ :desc => 'Full installation will install the layout and css overrides for easier customization.'
10
+
8
11
  def copy_config
9
12
  copy_file 'vendor/assets/javascripts/mercury.js', 'app/assets/javascripts/mercury.js'
10
13
  end
11
14
 
15
+ def copy_layout_and_css_overrides
16
+ if options[:full] || yes?("Install the layout and CSS overrides files? [yN]")
17
+ copy_file 'app/views/layouts/mercury.html.erb', 'app/views/layouts/mercury.html.erb'
18
+ copy_file 'vendor/assets/stylesheets/mercury_overrides.css', 'app/assets/stylesheets/mercury_overrides.css'
19
+ end
20
+ end
21
+
22
+ def display_readme
23
+ readme 'POST_INSTALL'
24
+ end
25
+
12
26
  end
13
27
  end
14
28
  end
@@ -4,20 +4,21 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{mercury-rails}
8
- s.version = "0.2.0"
7
+ s.name = "mercury-rails"
8
+ s.version = "0.2.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jeremy Jackson"]
12
- s.date = %q{2011-09-25}
13
- s.description = %q{A fully featured and advanced HTML5 WYSIWYG editor written in CoffeeScript on top of Rails 3.1}
14
- s.email = %q{jejacks0n@gmail.com}
12
+ s.date = "2011-10-24"
13
+ s.description = "A fully featured and advanced HTML5 WYSIWYG editor written in CoffeeScript on top of Rails 3.1"
14
+ s.email = "jejacks0n@gmail.com"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
17
  "README.md"
18
18
  ]
19
19
  s.files = [
20
20
  "LICENSE",
21
+ "POST_INSTALL",
21
22
  "README.md",
22
23
  "VERSION",
23
24
  "annotated_source.template",
@@ -26,12 +27,10 @@ Gem::Specification.new do |s|
26
27
  "app/models/image.rb",
27
28
  "app/views/layouts/mercury.html.erb",
28
29
  "app/views/mercury/lightviews/about.html",
29
- "app/views/mercury/lightviews/imageprocessor.html",
30
30
  "app/views/mercury/modals/character.html",
31
31
  "app/views/mercury/modals/htmleditor.html",
32
32
  "app/views/mercury/modals/link.html",
33
33
  "app/views/mercury/modals/media.html",
34
- "app/views/mercury/modals/sanitizer.html",
35
34
  "app/views/mercury/modals/table.html",
36
35
  "app/views/mercury/palettes/backcolor.html",
37
36
  "app/views/mercury/palettes/forecolor.html",
@@ -40,15 +39,41 @@ Gem::Specification.new do |s|
40
39
  "app/views/mercury/panels/snippets.html",
41
40
  "app/views/mercury/selects/formatblock.html",
42
41
  "app/views/mercury/selects/style.html",
43
- "app/views/mercury/snippets/example.html.erb",
44
- "app/views/mercury/snippets/example_options.html.erb",
42
+ "app/views/mercury/snippets/example/options.html.erb",
43
+ "app/views/mercury/snippets/example/preview.html.erb",
45
44
  "config/engine.rb",
46
45
  "config/routes.rb",
47
46
  "db/migrate/20110526035601_create_images.rb",
48
- "features/editing/basic.feature",
47
+ "features/loading/loading.feature",
48
+ "features/loading/navigating.feature",
49
+ "features/loading/user_interface.feature",
50
+ "features/regions/editable/advanced_editing.feature",
51
+ "features/regions/editable/basic_editing.feature",
52
+ "features/regions/editable/inserting_links.feature",
53
+ "features/regions/editable/inserting_media.feature",
54
+ "features/regions/editable/inserting_snippets.feature",
55
+ "features/regions/editable/inserting_special_characters.feature",
56
+ "features/regions/editable/inserting_tables.feature",
57
+ "features/regions/editable/pasting.feature",
58
+ "features/regions/editable/uploading_images.feature",
59
+ "features/regions/markupable/advanced_editing.feature",
60
+ "features/regions/markupable/basic_editing.feature",
61
+ "features/regions/markupable/inserting_links.feature",
62
+ "features/regions/markupable/inserting_media.feature",
63
+ "features/regions/markupable/inserting_snippets.feature",
64
+ "features/regions/markupable/inserting_special_characters.feature",
65
+ "features/regions/markupable/inserting_tables.feature",
66
+ "features/regions/markupable/uploading_images.feature",
67
+ "features/regions/snippetable/advanced_editing.feature",
68
+ "features/regions/snippetable/basic_editing.feature",
69
+ "features/regions/snippetable/inserting_snippets.feature",
70
+ "features/saving/saving.feature",
49
71
  "features/step_definitions/debug_steps.rb",
72
+ "features/step_definitions/mercury_steps.rb",
50
73
  "features/step_definitions/web_steps.rb",
51
74
  "features/support/env.rb",
75
+ "features/support/mercury_contents.rb",
76
+ "features/support/mercury_selectors.rb",
52
77
  "features/support/paths.rb",
53
78
  "features/support/selectors.rb",
54
79
  "lib/generators/mercury/install/install_generator.rb",
@@ -123,7 +148,7 @@ Gem::Specification.new do |s|
123
148
  "spec/javascripts/templates/mercury/tooltip.html",
124
149
  "spec/javascripts/templates/mercury/uploader.html",
125
150
  "vendor/assets/images/mercury/button.png",
126
- "vendor/assets/images/mercury/clippy.png",
151
+ "vendor/assets/images/mercury/close.png",
127
152
  "vendor/assets/images/mercury/default-snippet.png",
128
153
  "vendor/assets/images/mercury/loading-dark.gif",
129
154
  "vendor/assets/images/mercury/loading-light.gif",
@@ -146,6 +171,12 @@ Gem::Specification.new do |s|
146
171
  "vendor/assets/images/mercury/toolbar/primary/undo.png",
147
172
  "vendor/assets/images/mercury/toolbar/snippetable/buttons.png",
148
173
  "vendor/assets/javascripts/mercury.js",
174
+ "vendor/assets/javascripts/mercury/dependencies/jquery-1.6.js",
175
+ "vendor/assets/javascripts/mercury/dependencies/jquery-ui-1.8.13.custom.js",
176
+ "vendor/assets/javascripts/mercury/dependencies/jquery.additions.js",
177
+ "vendor/assets/javascripts/mercury/dependencies/jquery.htmlClean.js",
178
+ "vendor/assets/javascripts/mercury/dependencies/liquidmetal.js",
179
+ "vendor/assets/javascripts/mercury/dependencies/showdown.js",
149
180
  "vendor/assets/javascripts/mercury/dialog.js.coffee",
150
181
  "vendor/assets/javascripts/mercury/dialogs/backcolor.js.coffee",
151
182
  "vendor/assets/javascripts/mercury/dialogs/forecolor.js.coffee",
@@ -167,6 +198,8 @@ Gem::Specification.new do |s|
167
198
  "vendor/assets/javascripts/mercury/page_editor.js.coffee",
168
199
  "vendor/assets/javascripts/mercury/palette.js.coffee",
169
200
  "vendor/assets/javascripts/mercury/panel.js.coffee",
201
+ "vendor/assets/javascripts/mercury/plugins/save_as_xml/mercury/page_editor.js.coffee",
202
+ "vendor/assets/javascripts/mercury/plugins/save_as_xml/plugin.js",
170
203
  "vendor/assets/javascripts/mercury/region.js.coffee",
171
204
  "vendor/assets/javascripts/mercury/regions/editable.js.coffee",
172
205
  "vendor/assets/javascripts/mercury/regions/markupable.js.coffee",
@@ -175,6 +208,7 @@ Gem::Specification.new do |s|
175
208
  "vendor/assets/javascripts/mercury/snippet.js.coffee",
176
209
  "vendor/assets/javascripts/mercury/snippet_toolbar.js.coffee",
177
210
  "vendor/assets/javascripts/mercury/statusbar.js.coffee",
211
+ "vendor/assets/javascripts/mercury/support/history.js",
178
212
  "vendor/assets/javascripts/mercury/table_editor.js.coffee",
179
213
  "vendor/assets/javascripts/mercury/toolbar.button.js.coffee",
180
214
  "vendor/assets/javascripts/mercury/toolbar.button_group.js.coffee",
@@ -182,11 +216,6 @@ Gem::Specification.new do |s|
182
216
  "vendor/assets/javascripts/mercury/toolbar.js.coffee",
183
217
  "vendor/assets/javascripts/mercury/tooltip.js.coffee",
184
218
  "vendor/assets/javascripts/mercury/uploader.js.coffee",
185
- "vendor/assets/javascripts/mercury_dependencies/jquery-1.6.js",
186
- "vendor/assets/javascripts/mercury_dependencies/jquery-ui-1.8.13.custom.js",
187
- "vendor/assets/javascripts/mercury_dependencies/jquery.additions.js",
188
- "vendor/assets/javascripts/mercury_dependencies/liquidmetal.js",
189
- "vendor/assets/javascripts/mercury_dependencies/showdown.js",
190
219
  "vendor/assets/javascripts/mercury_loader.js",
191
220
  "vendor/assets/stylesheets/mercury.css",
192
221
  "vendor/assets/stylesheets/mercury/dialog.css",
@@ -196,13 +225,14 @@ Gem::Specification.new do |s|
196
225
  "vendor/assets/stylesheets/mercury/statusbar.css",
197
226
  "vendor/assets/stylesheets/mercury/toolbar.css",
198
227
  "vendor/assets/stylesheets/mercury/tooltip.css",
199
- "vendor/assets/stylesheets/mercury/uploader.css"
228
+ "vendor/assets/stylesheets/mercury/uploader.css",
229
+ "vendor/assets/stylesheets/mercury_overrides.css"
200
230
  ]
201
- s.homepage = %q{http://github.com/jejacks0n/mercury}
231
+ s.homepage = "http://github.com/jejacks0n/mercury"
202
232
  s.licenses = ["MIT"]
203
233
  s.require_paths = ["lib"]
204
- s.rubygems_version = %q{1.6.2}
205
- s.summary = %q{A fully featured and advanced HTML5 WYSIWYG editor written in CoffeeScript on top of Rails 3.1}
234
+ s.rubygems_version = "1.8.10"
235
+ s.summary = "A fully featured and advanced HTML5 WYSIWYG editor written in CoffeeScript on top of Rails 3.1"
206
236
 
207
237
  if s.respond_to? :specification_version then
208
238
  s.specification_version = 3
@@ -11,8 +11,8 @@ describe "Mercury.lightview", ->
11
11
  afterEach ->
12
12
  Mercury.lightview.initialized = false
13
13
  Mercury.lightview.visible = false
14
- $(document).unbind('mercury:refresh')
15
- $(document).unbind('mercury:resize')
14
+ $(window).unbind('mercury:refresh')
15
+ $(window).unbind('mercury:resize')
16
16
  $(document).unbind('keydown')
17
17
 
18
18
  describe "singleton method", ->
@@ -119,47 +119,75 @@ describe "Mercury.lightview", ->
119
119
  Mercury.lightview.build()
120
120
  expect($('#test .mercury-lightview-title span').html()).toEqual('title')
121
121
 
122
+ it "creates a close button if asked to in the options", ->
123
+ Mercury.lightview.options.closeButton = true
124
+ Mercury.lightview.build()
125
+ expect($('#test .mercury-lightview-close').length).toEqual(1)
126
+
122
127
 
123
128
  describe "observed events", ->
124
129
 
125
130
  beforeEach ->
126
131
  spyOn(Mercury.lightview, 'appear').andCallFake(=>)
127
- Mercury.lightview('/foo', {appendTo: $('#test')})
128
132
 
129
- describe "custom event: refresh", ->
133
+ describe "without a close button", ->
130
134
 
131
- it "calls resize telling it stay visible", ->
132
- spy = spyOn(Mercury.lightview, 'resize').andCallFake(=>)
133
- Mercury.trigger('refresh')
134
- expect(spy.callCount).toEqual(1)
135
- expect(spy.argsForCall[0]).toEqual([true])
135
+ beforeEach ->
136
+ Mercury.lightview('/foo', {appendTo: $('#test')})
136
137
 
137
- describe "custom event: resize", ->
138
+ describe "custom event: refresh", ->
138
139
 
139
- beforeEach ->
140
- Mercury.lightview.visible = true
140
+ it "calls resize telling it stay visible", ->
141
+ spy = spyOn(Mercury.lightview, 'resize').andCallFake(=>)
142
+ Mercury.trigger('refresh')
143
+ expect(spy.callCount).toEqual(1)
144
+ expect(spy.argsForCall[0]).toEqual([true])
141
145
 
142
- it "calls position", ->
143
- spy = spyOn(Mercury.lightview, 'position').andCallFake(=>)
144
- Mercury.trigger('resize')
145
- expect(spy.callCount).toEqual(1)
146
+ describe "custom event: resize", ->
146
147
 
147
- describe "clicking on the overlay", ->
148
+ beforeEach ->
149
+ Mercury.lightview.visible = true
148
150
 
149
- it "calls hide", ->
150
- spy = spyOn(Mercury.lightview, 'hide').andCallFake(=>)
151
- jasmine.simulate.click($('.mercury-lightview-overlay').get(0))
152
- expect(spy.callCount).toEqual(1)
151
+ it "calls position", ->
152
+ spy = spyOn(Mercury.lightview, 'position').andCallFake(=>)
153
+ Mercury.trigger('resize')
154
+ expect(spy.callCount).toEqual(1)
155
+
156
+ describe "clicking on the overlay", ->
157
+
158
+ it "calls hide", ->
159
+ spy = spyOn(Mercury.lightview, 'hide').andCallFake(=>)
160
+ jasmine.simulate.click($('.mercury-lightview-overlay').get(0))
161
+ expect(spy.callCount).toEqual(1)
153
162
 
154
- describe "pressing esc on document", ->
163
+ describe "pressing esc on document", ->
164
+
165
+ beforeEach ->
166
+ Mercury.lightview.visible = true
167
+
168
+ it "calls hide", ->
169
+ spy = spyOn(Mercury.lightview, 'hide').andCallFake(=>)
170
+ jasmine.simulate.keydown(document, {keyCode: 27})
171
+ expect(spy.callCount).toEqual(1)
172
+
173
+ describe "with a close button", ->
155
174
 
156
175
  beforeEach ->
157
- Mercury.lightview.visible = true
176
+ Mercury.lightview('/foo', {appendTo: $('#test'), closeButton: true})
158
177
 
159
- it "calls hide", ->
160
- spy = spyOn(Mercury.lightview, 'hide').andCallFake(=>)
161
- jasmine.simulate.keydown(document, {keyCode: 27})
162
- expect(spy.callCount).toEqual(1)
178
+ describe "clicking on the close button", ->
179
+
180
+ it "calls hide", ->
181
+ spy = spyOn(Mercury.lightview, 'hide').andCallFake(=>)
182
+ jasmine.simulate.click($('.mercury-lightview-close').get(0))
183
+ expect(spy.callCount).toEqual(1)
184
+
185
+ describe "clicking on the overlay", ->
186
+
187
+ it "doesn't call hide", ->
188
+ spy = spyOn(Mercury.lightview, 'hide').andCallFake(=>)
189
+ jasmine.simulate.click($('.mercury-lightview-overlay').get(0))
190
+ expect(spy.callCount).toEqual(0)
163
191
 
164
192
 
165
193
  describe "#appear", ->