mercury-rails 0.2.0 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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", ->