noodall-ui 0.3.20 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +8 -3
- data/Rakefile +2 -2
- data/app/controllers/noodall/admin/nodes_controller.rb +31 -14
- data/app/controllers/noodall/admin/versions_controller.rb +13 -0
- data/app/controllers/noodall/nodes_controller.rb +11 -1
- data/app/views/noodall/admin/nodes/index.html.erb +28 -13
- data/app/views/noodall/admin/nodes/show.html.erb +34 -23
- data/app/views/noodall/admin/versions/index.html.erb +17 -0
- data/config/application.rb +1 -1
- data/config/environments/development.rb +2 -5
- data/config/environments/test.rb +29 -0
- data/demo/initializers/zdragonfly.rb +5 -0
- data/demo/models/page_a.rb +1 -1
- data/features/choose_node_title.feature +24 -0
- data/features/node_filtering.feature +20 -0
- data/features/publish_content.feature +1 -1
- data/features/save_draft.feature +34 -0
- data/features/step_definitions/choose_node_title_steps.rb +7 -0
- data/features/step_definitions/cms_node_steps.rb +1 -1
- data/features/step_definitions/content_steps.rb +8 -0
- data/features/step_definitions/draft_steps.rb +39 -0
- data/features/step_definitions/node_steps.rb +4 -1
- data/features/step_definitions/pubish_content_steps.rb +3 -3
- data/features/step_definitions/web_steps.rb +4 -0
- data/features/support/env.rb +3 -1
- data/features/support/paths.rb +6 -3
- data/lib/noodall/routes.rb +4 -1
- data/lib/noodall/ui/version.rb +1 -1
- data/noodall-ui.gemspec +2 -2
- data/public/images/admin/{draft.png → hidden.png} +0 -0
- data/public/images/admin/hide.gif +0 -0
- data/public/images/admin/versions.gif +0 -0
- data/public/javascripts/admin/application.js +2 -0
- data/public/stylesheets/admin/forms.css +32 -2
- data/public/stylesheets/admin/layout.css +41 -9
- data/public/stylesheets/admin/skin.css +32 -23
- data/public/stylesheets/admin/typography.css +3 -0
- metadata +112 -76
- data/demo/initializers/dragonfly.rb +0 -1
- data/lib/noodall/dragonfly.rb +0 -23
- data/public/javascripts/tiny_mce/plugins/addvideo/dialog.htm +0 -19
- data/public/javascripts/tiny_mce/plugins/addvideo/js/dialog.js +0 -34
- data/public/javascripts/tiny_mce/plugins/example/dialog.htm +0 -22
- data/public/javascripts/tiny_mce/plugins/example/editor_plugin.js +0 -1
- data/public/javascripts/tiny_mce/plugins/example/editor_plugin_src.js +0 -84
- data/public/javascripts/tiny_mce/plugins/example/img/example.gif +0 -0
- data/public/javascripts/tiny_mce/plugins/example/js/dialog.js +0 -19
- data/public/javascripts/tiny_mce/plugins/example/langs/en.js +0 -3
- data/public/javascripts/tiny_mce/plugins/example/langs/en_dlg.js +0 -3
- data/public/stylesheets/sass/forms.scss +0 -7
- data/public/stylesheets/sass/ie.scss +0 -12
- data/public/stylesheets/sass/ie8.scss +0 -8
- data/public/stylesheets/sass/layout.scss +0 -45
- data/public/stylesheets/sass/skin.scss +0 -35
- data/public/stylesheets/sass/typography.scss +0 -162
data/Gemfile
CHANGED
@@ -3,10 +3,13 @@ source 'http://gems.github.com'
|
|
3
3
|
|
4
4
|
gemspec
|
5
5
|
|
6
|
+
#temp
|
7
|
+
gem 'noodall-core', '~> 0.7.3'
|
8
|
+
|
6
9
|
# Required for running as demo rails app
|
7
10
|
gem 'rails', '~> 3.0.1'
|
8
11
|
gem 'rmagick', :require => 'RMagick'
|
9
|
-
gem 'dragonfly', '~> 0.
|
12
|
+
gem 'dragonfly', '~> 0.9.4'
|
10
13
|
|
11
14
|
# Bundle gems for the local environment. Make sure to
|
12
15
|
# put test-only gems in this group so their generators
|
@@ -16,11 +19,13 @@ group :development, :test do
|
|
16
19
|
gem 'database_cleaner'
|
17
20
|
gem 'cucumber-rails'
|
18
21
|
gem 'cucumber'
|
19
|
-
gem 'rspec-rails', "~> 2.0.0
|
22
|
+
gem 'rspec-rails', "~> 2.0.0"
|
20
23
|
gem 'spork'
|
21
24
|
gem 'launchy' # So you can do Then show me the page
|
22
25
|
gem 'jeweler', '~> 1.4.0'
|
23
26
|
gem 'factory_girl_rails'
|
24
27
|
gem "faker", "~> 0.3.1"
|
25
|
-
gem "
|
28
|
+
gem "SystemTimer", ">= 1.2.0"
|
29
|
+
gem "bson_ext", "~> 1.3.0"
|
30
|
+
gem "ruby-debug"
|
26
31
|
end
|
data/Rakefile
CHANGED
@@ -7,12 +7,16 @@ module Noodall
|
|
7
7
|
sortable_attributes :position, :admin_title, :title, :type, :updated_at
|
8
8
|
|
9
9
|
def index
|
10
|
+
|
10
11
|
if params[:node_id].nil?
|
11
|
-
|
12
|
+
nodes = Node.roots
|
12
13
|
else
|
13
14
|
@parent = Node.find(params[:node_id])
|
14
|
-
|
15
|
+
nodes = @parent.children
|
15
16
|
end
|
17
|
+
|
18
|
+
per_page = 15
|
19
|
+
@nodes = nodes.where( :title => /#{params[:f]}/i ).paginate(:per_page => (params[:limit] || per_page), :page => params[:page], :order => sort_order(:default => "ascending") )
|
16
20
|
|
17
21
|
respond_to do |format|
|
18
22
|
format.html # index.html.erb
|
@@ -41,6 +45,14 @@ module Noodall
|
|
41
45
|
enforce_update_permission(@node)
|
42
46
|
enforce_publish_permission(@node) if @node.published?
|
43
47
|
|
48
|
+
if !params[:version_number].blank?
|
49
|
+
@node.rollback(params[:version_number].to_i)
|
50
|
+
flash[:alert] = "You are viewing draft version '#{@node.version_number}' of this page"
|
51
|
+
elsif @node.has_draft?
|
52
|
+
@node.rollback(:latest)
|
53
|
+
flash[:alert] = "You are editing a draft version of this page"
|
54
|
+
end
|
55
|
+
|
44
56
|
respond_to do |format|
|
45
57
|
format.html
|
46
58
|
format.xml { render :xml => @node }
|
@@ -91,20 +103,25 @@ module Noodall
|
|
91
103
|
# Set user stamp
|
92
104
|
@node.updater = current_user
|
93
105
|
|
94
|
-
|
106
|
+
if params[:draft].blank?
|
95
107
|
if @node.update_attributes(params[:node])
|
96
|
-
flash[:notice] = "#{@node.class.name.titleize} '#{@node.title}' was successfully
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
end
|
103
|
-
}
|
104
|
-
format.xml { head :ok }
|
108
|
+
flash[:notice] = "#{@node.class.name.titleize} '#{@node.title}' was successfully published."
|
109
|
+
if @node.parent.nil?
|
110
|
+
redirect_to noodall_admin_nodes_path
|
111
|
+
else
|
112
|
+
redirect_to noodall_admin_node_nodes_path(@node.parent.id)
|
113
|
+
end
|
105
114
|
else
|
106
|
-
|
107
|
-
|
115
|
+
render :action => "show"
|
116
|
+
end
|
117
|
+
else
|
118
|
+
@node.attributes = params[:node]
|
119
|
+
@node.save_version(current_user.id)
|
120
|
+
flash[:notice] = "#{@node.class.name.titleize} '#{@node.title}' was successfully saved as version #{@node.version_number} (draft)."
|
121
|
+
if @node.parent.nil?
|
122
|
+
redirect_to noodall_admin_nodes_path
|
123
|
+
else
|
124
|
+
redirect_to noodall_admin_node_nodes_path(@node.parent.id)
|
108
125
|
end
|
109
126
|
end
|
110
127
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Noodall
|
2
|
+
module Admin
|
3
|
+
class VersionsController < BaseController
|
4
|
+
|
5
|
+
def index
|
6
|
+
@node = Node.find(params[:node_id])
|
7
|
+
@versions = @node.all_versions.order('pos DESC').paginate(:page => params[:page], :per_page => 10)
|
8
|
+
render :index, :layout => false
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -12,7 +12,7 @@ module Noodall
|
|
12
12
|
#Check view permissions
|
13
13
|
enforce_view_permission(@node)
|
14
14
|
|
15
|
-
@page_title = @node.title
|
15
|
+
@page_title = @node.browser_title.blank? ? @node.title : @node.browser_title
|
16
16
|
@page_description = @node.description
|
17
17
|
@page_keywords = @node.keywords
|
18
18
|
|
@@ -24,6 +24,16 @@ module Noodall
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
+
def version
|
28
|
+
@node = Node.find!(params[:node_id])
|
29
|
+
version = @node.all_versions.find!(params[:id])
|
30
|
+
@node.rollback(version.pos)
|
31
|
+
@page_title = @node.browser_title.blank? ? @node.title : @node.browser_title
|
32
|
+
@page_description = @node.description
|
33
|
+
@page_keywords = @node.keywords
|
34
|
+
render "nodes/#{@node.class.name.underscore}"
|
35
|
+
end
|
36
|
+
|
27
37
|
def sitemap
|
28
38
|
if stale?(:last_modified => GlobalUpdateTime::Stamp.read, :public => true)
|
29
39
|
@page_title = 'Sitemap'
|
@@ -19,21 +19,35 @@
|
|
19
19
|
<% end %>
|
20
20
|
|
21
21
|
</ul>
|
22
|
-
|
22
|
+
|
23
23
|
<div id="content-table">
|
24
|
+
|
25
|
+
<div id="form-filter">
|
26
|
+
<%= form_tag '', :method => :get, :id => 'filter' do %>
|
27
|
+
<%= label_tag :f, 'Filter by Title' %>
|
28
|
+
<%= text_field_tag :f %>
|
29
|
+
<%= submit_tag "Filter" %>
|
30
|
+
<% end %>
|
31
|
+
|
32
|
+
<% if params[:f] %>
|
33
|
+
<%= link_to "reset", url_for(:only_path => false, :f => nil), :class => 'button' %>
|
34
|
+
<% end %>
|
35
|
+
</div>
|
36
|
+
|
37
|
+
<%= will_paginate(@nodes) %>
|
24
38
|
<table border="0" cellspacing="0" cellpadding="0" class="content">
|
25
39
|
<thead>
|
26
40
|
<tr>
|
27
41
|
<%= sortable_table_header :name => "Title", :sort => "admin_title", :class => 'sort' %>
|
28
42
|
<%= sortable_table_header :name => "Type", :sort => "_type", :class => 'sort' %>
|
29
|
-
|
43
|
+
|
30
44
|
<%# Change 'position' header if we are sorting by position %>
|
31
45
|
<% if(params[:sort] && params[:sort] != "position" || params[:order] == "descending") %>
|
32
46
|
<%= sortable_table_header :name => "Position", :sort => "position", :class => 'sort' %>
|
33
47
|
<% else %>
|
34
48
|
<%= sortable_table_header :name => "Position", :sort => "position", :class => 'sort', :colspan => 2 %>
|
35
49
|
<% end %>
|
36
|
-
|
50
|
+
|
37
51
|
<th width="120">Sub Section</th>
|
38
52
|
<%= sortable_table_header :name => "Updated", :sort => "updated_at", :class => 'sort' %>
|
39
53
|
<th width="45">Show</th>
|
@@ -43,20 +57,20 @@
|
|
43
57
|
</thead>
|
44
58
|
<tbody>
|
45
59
|
<% @nodes.each do |node| %>
|
46
|
-
<tr id="node-<%= node.id %>" class="<%=cycle('odd', 'even')%>">
|
47
|
-
<td class="edit"><%= link_to
|
60
|
+
<tr id="node-<%= node.id %>" class="node <%=cycle('odd', 'even')%>">
|
61
|
+
<td class="edit"><%= link_to "#{ node.admin_title } #{ '(draft)' if node.has_draft? }", noodall_admin_node_path(node), :class => 'edit', :title => "Edit #{node.title}" %></td>
|
48
62
|
<td><%= node.class.name.titleize %></td>
|
49
|
-
|
63
|
+
|
50
64
|
<%# Change 'position' content if we are sorting by position %>
|
51
65
|
<% if(params[:sort] && params[:sort] != "position" || params[:order] == "descending") %>
|
52
66
|
<td width="55"><%= node.position %></td>
|
53
67
|
<% else %>
|
54
|
-
|
68
|
+
|
55
69
|
<td width="25"><%= link_to 'up', move_up_noodall_admin_node_path(node), { :class => "page_up", :title => 'Move this content higher in the navigation' } unless node.first? %></td>
|
56
70
|
<td width="30" class="down"><%= link_to 'down', move_down_noodall_admin_node_path(node), { :class => 'page_down', :title => 'Move this content lower in the navigation' } unless node.last? %></td>
|
57
71
|
<% end %>
|
58
|
-
|
59
|
-
|
72
|
+
|
73
|
+
|
60
74
|
<td class="child">
|
61
75
|
<% unless node.class.template_classes.blank? -%>
|
62
76
|
<%= link_to pluralize(node.children.size, "Child"), noodall_admin_node_nodes_path(node), :title => "View content under #{h(node.title)}", :class => 'child-no' %>
|
@@ -65,7 +79,7 @@
|
|
65
79
|
</td>
|
66
80
|
<td class="date" title="by <%= node.updater.full_name if node.updater %>"><%=h node.updated_at.to_formatted_s(:short_ordinal) %></td>
|
67
81
|
<td class=""><%= link_to 'Show', node_path(node), :class => 'show', :title => 'View this content' if node.published? %></td>
|
68
|
-
<td class="date" title="<%= node.published? ? 'Published ':'
|
82
|
+
<td class="date" title="<%= node.published? ? 'Published ':'Hidden' %><%= node.published_at.to_formatted_s(:short_ordinal) unless node.published_at.nil? %><%= " - #{node.published_to.to_formatted_s(:short_ordinal)}" unless node.published_to.nil? %>"><%= (node.published? ? '<span class="check">Published</span>' : '<span class="hidden">Hidden</span>').html_safe %></td>
|
69
83
|
<td><%= link_to 'Delete', noodall_admin_node_path(node), :confirm => 'Are you sure?', :method => :delete, :class => 'delete', :title => 'Delete this content' unless node.in_site_map? %></td>
|
70
84
|
</tr>
|
71
85
|
<% end %>
|
@@ -74,14 +88,14 @@
|
|
74
88
|
<tr>
|
75
89
|
<%= sortable_table_header :name => "Title", :sort => "admin_title", :class => 'sort' %>
|
76
90
|
<%= sortable_table_header :name => "Type", :sort => "_type", :class => 'sort' %>
|
77
|
-
|
91
|
+
|
78
92
|
<%# Change 'position' header if we are sorting by position %>
|
79
93
|
<% if(params[:sort] && params[:sort] != "position" || params[:order] == "descending") %>
|
80
94
|
<%= sortable_table_header :name => "Position", :sort => "position", :class => 'sort' %>
|
81
95
|
<% else %>
|
82
96
|
<%= sortable_table_header :name => "Position", :sort => "position", :class => 'sort', :colspan => 2 %>
|
83
97
|
<% end %>
|
84
|
-
|
98
|
+
|
85
99
|
<th width="120">Sub Section</th>
|
86
100
|
<%= sortable_table_header :name => "Updated", :sort => "updated_at", :class => 'sort' %>
|
87
101
|
<th width="45">Show</th>
|
@@ -90,5 +104,6 @@
|
|
90
104
|
</tr>
|
91
105
|
</tfoot>
|
92
106
|
</table>
|
93
|
-
</div>
|
94
107
|
<%= will_paginate(@nodes, :previous_label => 'Previous', :next_label => 'Next') %>
|
108
|
+
|
109
|
+
</div>
|
@@ -39,7 +39,9 @@
|
|
39
39
|
<div class="fixed-form">
|
40
40
|
<div id="buttons">
|
41
41
|
<%= f.submit 'Publish', :class => 'publish', :name => 'node[publish]' if can_publish?(@node) %>
|
42
|
-
<%= f.submit 'Draft', :name =>
|
42
|
+
<%= f.submit 'Draft', :name => "draft", :class => 'draft' %>
|
43
|
+
<%= link_to 'Versions', noodall_admin_node_versions_path(@node), :id => "versions-button" %>
|
44
|
+
<%= f.submit 'Hide', :name => 'node[hide]', :id => 'hide' %>
|
43
45
|
<%= link_to 'Cancel', @node.root? ? noodall_admin_nodes_path : noodall_admin_node_nodes_path(@node.parent), :class => 'cancel' %>
|
44
46
|
</div>
|
45
47
|
|
@@ -49,7 +51,7 @@
|
|
49
51
|
<fieldset>
|
50
52
|
<legend class="advanced">Advanced</legend>
|
51
53
|
<div id="advanced">
|
52
|
-
|
54
|
+
|
53
55
|
<div class="published-section">
|
54
56
|
<p class="published">
|
55
57
|
<%= f.label :published_at, "Publish at" %><br/>
|
@@ -103,27 +105,36 @@
|
|
103
105
|
</div>
|
104
106
|
<% end -%>
|
105
107
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
</
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
<div class="position-section">
|
112
|
+
<% unless @node.in_site_map? %>
|
113
|
+
<p>
|
114
|
+
<span class="node-mover">Parent Content</span>
|
115
|
+
<span class="input-wrap" id="parent-title">
|
116
|
+
<%= @node.root? ? "Root" : @node.parent.title %>
|
117
|
+
<a href="#" class="edit-item">Edit</a>
|
118
|
+
</span>
|
119
|
+
<%= f.hidden_field :parent, :value => @node.parent_id %>
|
120
|
+
<%= hidden_field_tag :parent_types, @node.class.parent_classes.join(','), :disabled => true %>
|
121
|
+
</p>
|
122
|
+
|
123
|
+
<!-- PAGE URL -->
|
124
|
+
<p>
|
125
|
+
<span class="tooltip" title="Enter a custom url or leave it as the default value shown."> </span>
|
126
|
+
<%= f.label :permalink, 'Page Url' %><br/>
|
127
|
+
<span class="input-wrap"><%= f.text_field :permalink %></span>
|
128
|
+
</p>
|
129
|
+
|
130
|
+
<!-- BROWSER TITLE -->
|
131
|
+
<p>
|
132
|
+
<span class="tooltip" title="This is normally the title shown at the very top of your browser window."> </span>
|
133
|
+
<%= f.label :browser_title, 'Browser Title' %><br/>
|
134
|
+
<span class="input-wrap"><%= f.text_field :browser_title %></span>
|
135
|
+
</p>
|
136
|
+
<% end %>
|
137
|
+
</div>
|
127
138
|
</div>
|
128
139
|
</fieldset>
|
129
140
|
</div>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<table id="versions-list" class="content">
|
2
|
+
<thead>
|
3
|
+
<th> Version </th>
|
4
|
+
<th> Date </th>
|
5
|
+
<th colspan="2"> Actions </th>
|
6
|
+
</thead>
|
7
|
+
<tbody>
|
8
|
+
<% for version in @versions %>
|
9
|
+
<tr class="<%= "active" if version.pos == @node.version_number %>">
|
10
|
+
<td> Version <%= version.pos %> </td>
|
11
|
+
<td> <%= l version.date %> </td>
|
12
|
+
<td> <%= link_to "View", noodall_version_path(@node, version) %> </td>
|
13
|
+
<td> <%= link_to "Use", noodall_admin_node_path(@node, :version_number => version.pos) %> </td>
|
14
|
+
</tr>
|
15
|
+
<% end %>
|
16
|
+
</tbody>
|
17
|
+
</table>
|
data/config/application.rb
CHANGED
@@ -26,6 +26,6 @@ module Noodall
|
|
26
26
|
paths.config.routes 'demo/routes.rb'
|
27
27
|
paths.config.initializers << "demo/initializers"
|
28
28
|
|
29
|
-
config.middleware.
|
29
|
+
config.middleware.insert 0, 'Dragonfly::Middleware', :noodall_assets
|
30
30
|
end
|
31
31
|
end
|
@@ -4,7 +4,7 @@ Noodall::Application.configure do
|
|
4
4
|
# In the development environment your application's code is reloaded on
|
5
5
|
# every request. This slows down response time but is perfect for development
|
6
6
|
# since you don't have to restart the webserver when you make code changes.
|
7
|
-
config.cache_classes =
|
7
|
+
config.cache_classes = false
|
8
8
|
|
9
9
|
# Log error messages when you accidentally call methods on nil.
|
10
10
|
config.whiny_nils = true
|
@@ -22,9 +22,6 @@ Noodall::Application.configure do
|
|
22
22
|
|
23
23
|
# Only use best-standards-support built into browsers
|
24
24
|
config.action_dispatch.best_standards_support = :builtin
|
25
|
-
|
26
|
-
# Set up SASS for development with firebug plugin
|
27
|
-
Sass::Plugin.options[:debug_info] = true
|
28
|
-
|
25
|
+
|
29
26
|
end
|
30
27
|
|
data/config/environments/test.rb
CHANGED
@@ -33,3 +33,32 @@ Noodall::Application.configure do
|
|
33
33
|
# Print deprecation notices to the stderr
|
34
34
|
config.active_support.deprecation = :stderr
|
35
35
|
end
|
36
|
+
|
37
|
+
require 'dragonfly'
|
38
|
+
require 'stringio'
|
39
|
+
require 'tempfile'
|
40
|
+
module Dragonfly
|
41
|
+
class TempObject
|
42
|
+
private
|
43
|
+
def initialize_from_object!(obj)
|
44
|
+
case obj
|
45
|
+
when TempObject
|
46
|
+
@initialized_data = obj.initialized_data
|
47
|
+
@initialized_tempfile = copy_to_tempfile(obj.initialized_tempfile.path) if obj.initialized_tempfile
|
48
|
+
@initialized_file = obj.initialized_file
|
49
|
+
when String
|
50
|
+
@initialized_data = obj
|
51
|
+
when Tempfile
|
52
|
+
@initialized_tempfile = obj
|
53
|
+
when File
|
54
|
+
@initialized_file = obj
|
55
|
+
self.name = File.basename(obj.path)
|
56
|
+
when ::ActionDispatch::Http::UploadedFile
|
57
|
+
@initialized_tempfile = obj.tempfile
|
58
|
+
else
|
59
|
+
raise ArgumentError, "#{self.class.name} must be initialized with a String, a File, a Tempfile, an ActionDispatch::Http::UploadedFile or another TempObject"
|
60
|
+
end
|
61
|
+
self.name = obj.original_filename if obj.respond_to?(:original_filename)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/demo/models/page_a.rb
CHANGED
@@ -0,0 +1,24 @@
|
|
1
|
+
@javascript
|
2
|
+
Feature: Preview Content
|
3
|
+
In order to have a succinct page title, with a more descriptive browser title
|
4
|
+
A website editor
|
5
|
+
Will be able to set a separate browser title
|
6
|
+
|
7
|
+
Scenario: Don't set a browser title
|
8
|
+
Given I am editing content
|
9
|
+
And I fill in "Title" with "Bacon Ipsum"
|
10
|
+
When I press "Publish"
|
11
|
+
Then the content should be visible on the website
|
12
|
+
And the title should be "Bacon Ipsum"
|
13
|
+
And the browser title should be "Bacon Ipsum"
|
14
|
+
|
15
|
+
|
16
|
+
Scenario: Set a browser title
|
17
|
+
Given I am editing content
|
18
|
+
When I fill in "Title" with "Bacon Ipsum"
|
19
|
+
And I follow "Advanced"
|
20
|
+
And I fill in "Browser Title" with "Ice Cream"
|
21
|
+
And I press "Publish"
|
22
|
+
And I follow "Show"
|
23
|
+
Then the title should be "Bacon Ipsum"
|
24
|
+
And the browser title should be "Ice Cream"
|