trusty-cms 6.0.4 → 6.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -1
- data/Gemfile.lock +76 -77
- data/app/assets/javascripts/admin/assets.js +254 -237
- data/app/assets/stylesheets/admin/partials/_forms.scss +1 -1
- data/app/controllers/admin/assets_controller.rb +9 -8
- data/app/controllers/admin/pages_controller.rb +7 -0
- data/app/models/asset.rb +4 -0
- data/app/models/file_not_found_page.rb +4 -4
- data/app/models/user.rb +4 -0
- data/app/views/admin/assets/_search.html.haml +7 -6
- data/app/views/admin/assets/index.html.haml +2 -2
- data/app/views/admin/layouts/_site_chooser.html.haml +1 -1
- data/app/views/admin/pages/_asset_popups.html.haml +1 -1
- data/config/initializers/ransack.rb +5 -0
- data/lib/trusty_cms/engine.rb +1 -0
- data/lib/trusty_cms.rb +1 -1
- data/trusty_cms.gemspec +1 -0
- data/vendor/extensions/clipped-extension/clipped_extension.rb +10 -10
- data/vendor/extensions/clipped-extension/lib/asset_tags.rb +42 -41
- metadata +44 -29
@@ -3,11 +3,11 @@
|
|
3
3
|
- body_classes << 'reversed'
|
4
4
|
|
5
5
|
- content_for :toolbar do
|
6
|
-
= render 'search'
|
6
|
+
= render partial: 'search', locals: { term: @term, page: @page }
|
7
7
|
|
8
8
|
.outset
|
9
9
|
#assets_table.assets
|
10
|
-
= render :
|
10
|
+
= render partial: 'asset_table', locals: { assets: @assets, with_pagination: true }
|
11
11
|
%p{style: 'clear: both; height: 2em'}
|
12
12
|
|
13
13
|
- render_region :bottom do |bottom|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
- if current_user.admin? && defined?(Site) && defined?(controller) && controller.sited_model? && controller.template_name == 'index' && Site.several?
|
1
|
+
- if current_user.admin? && !current_user.scoped? && defined?(Site) && defined?(controller) && controller.sited_model? && controller.template_name == 'index' && Site.several?
|
2
2
|
.site_chooser
|
3
3
|
%ul.nav
|
4
4
|
%li
|
@@ -24,7 +24,7 @@
|
|
24
24
|
.popup_title= t('clipped_extension.find_assets')
|
25
25
|
|
26
26
|
.toolbar
|
27
|
-
= render :partial => 'admin/assets/search'
|
27
|
+
= render :partial => 'admin/assets/search', locals: { term: @term, page: @page }
|
28
28
|
|
29
29
|
#assets_table.assets.viewport
|
30
30
|
- assets = Asset.all.paginate(:per_page => 20, page: params[:p])
|
data/lib/trusty_cms/engine.rb
CHANGED
data/lib/trusty_cms.rb
CHANGED
data/trusty_cms.gemspec
CHANGED
@@ -43,6 +43,7 @@ a general purpose content management system--not merely a blogging engine.'
|
|
43
43
|
s.add_dependency 'radius', '~> 0.7'
|
44
44
|
s.add_dependency 'rails'
|
45
45
|
s.add_dependency 'rake', '< 14.0'
|
46
|
+
s.add_dependency 'ransack'
|
46
47
|
s.add_dependency 'rdoc', '>= 5.1', '< 7.0'
|
47
48
|
s.add_dependency 'RedCloth', '4.3.2'
|
48
49
|
s.add_dependency 'roadie-rails'
|
@@ -5,10 +5,10 @@ class ClippedExtension < TrustyCms::Extension
|
|
5
5
|
def activate
|
6
6
|
if database_exists?
|
7
7
|
if Asset.table_exists?
|
8
|
-
Page.send :include, PageAssetAssociations
|
9
|
-
TrustyCms::AdminUI.send :include, ClippedAdminUI unless defined? admin.asset
|
10
|
-
Admin::PagesController.send :helper, Admin::AssetsHelper
|
11
|
-
Page.send :include, AssetTags
|
8
|
+
Page.send :include, PageAssetAssociations # defines page-asset associations. likely to be generalised soon.
|
9
|
+
TrustyCms::AdminUI.send :include, ClippedAdminUI unless defined? admin.asset # defines shards for extension of the asset-admin interface
|
10
|
+
Admin::PagesController.send :helper, Admin::AssetsHelper # currently only provides a description of asset sizes
|
11
|
+
Page.send :include, AssetTags # radius tags for selecting sets of assets and presenting each one
|
12
12
|
AssetType.new :image, :icon => 'image', :default_radius_tag => 'image', :processors => [:thumbnail], :styles => :standard, :extensions => %w[jpg jpeg png gif], :mime_types => %w[image/png image/x-png image/jpeg image/pjpeg image/jpg image/gif]
|
13
13
|
AssetType.new :video, :icon => 'video', :processors => [:frame_grab], :styles => :standard, :mime_types => %w[application/x-mp4 video/mpeg video/quicktime video/x-la-asf video/x-ms-asf video/x-msvideo video/x-sgi-movie video/x-flv flv-application/octet-stream video/3gpp video/3gpp2 video/3gpp-tt video/BMPEG video/BT656 video/CelB video/DV video/H261 video/H263 video/H263-1998 video/H263-2000 video/H264 video/JPEG video/MJ2 video/MP1S video/MP2P video/MP2T video/mp4 video/MP4V-ES video/MPV video/mpeg4 video/mpeg4-generic video/nv video/parityfec video/pointer video/raw video/rtx video/ogg video/webm]
|
14
14
|
AssetType.new :audio, :icon => 'audio', :mime_types => %w[audio/mpeg audio/mpg audio/ogg application/ogg audio/x-ms-wma audio/vnd.rn-realaudio audio/x-wav]
|
@@ -16,19 +16,19 @@ class ClippedExtension < TrustyCms::Extension
|
|
16
16
|
AssetType.new :document, :icon => 'document', :mime_types => %w[application/msword application/rtf application/vnd.ms-excel application/vnd.ms-powerpoint application/vnd.ms-project application/vnd.ms-works text/plain text/html]
|
17
17
|
AssetType.new :other, :icon => 'unknown'
|
18
18
|
|
19
|
-
admin.asset ||= TrustyCms::AdminUI.load_default_asset_regions
|
20
|
-
admin.page.edit.add :form, 'assets', :after => :edit_page_parts
|
21
|
-
admin.page.edit.add :main, 'asset_popups', :after => :edit_popups
|
19
|
+
admin.asset ||= TrustyCms::AdminUI.load_default_asset_regions # loads the shards defined in AssetsAdminUI
|
20
|
+
admin.page.edit.add :form, 'assets', :after => :edit_page_parts # adds the asset-attachment picker to the page edit view
|
21
|
+
admin.page.edit.add :main, 'asset_popups', :after => :edit_popups # adds the asset-attachment picker to the page edit view
|
22
22
|
admin.page.edit.asset_popups.concat %w{upload_asset attach_asset}
|
23
23
|
admin.configuration.show.add :trusty_config, 'admin/configuration/clipped_show', :after => 'defaults'
|
24
|
-
admin.configuration.edit.add :form,
|
24
|
+
admin.configuration.edit.add :form, 'admin/configuration/clipped_edit', :after => 'edit_defaults'
|
25
25
|
|
26
|
-
if TrustyCms::Config.table_exists? && TrustyCms::config["paperclip.command_path"]
|
26
|
+
if TrustyCms::Config.table_exists? && TrustyCms::config["paperclip.command_path"] # This is needed for testing if you are using mod_rails
|
27
27
|
Paperclip.options[:command_path] = TrustyCms::config["paperclip.command_path"]
|
28
28
|
end
|
29
29
|
|
30
30
|
tab "Assets", :after => "Content" do
|
31
|
-
add_item "All", "/admin/assets
|
31
|
+
add_item "All", "/admin/assets"
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
@@ -2,34 +2,34 @@ module AssetTags
|
|
2
2
|
include TrustyCms::Taggable
|
3
3
|
include ActionView::Helpers::TagHelper
|
4
4
|
include ActionView::Helpers::AssetTagHelper
|
5
|
-
|
5
|
+
|
6
6
|
class TagError < StandardError; end
|
7
|
-
|
7
|
+
|
8
8
|
%w{top_padding width height caption asset_file_name asset_content_type asset_file_size id filename image flash thumbnail url link extension if_content_type page:title page:url}.each do |name|
|
9
9
|
deprecated_tag "assets:#{name}", :substitute => "asset:#{name}", :deadline => '2.0'
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
desc %{
|
13
13
|
The namespace for referencing images and assets.
|
14
14
|
|
15
15
|
*Usage:*
|
16
16
|
<pre><code><r:asset [name="asset name"]>...</r:asset></code></pre>
|
17
|
-
}
|
17
|
+
}
|
18
18
|
tag 'asset' do |tag|
|
19
19
|
tag.locals.asset = find_asset(tag, tag.attr) unless tag.attr.empty?
|
20
|
-
|
20
|
+
tag.expand
|
21
21
|
end
|
22
22
|
|
23
23
|
desc %{
|
24
24
|
Cycles through all assets attached to the current page.
|
25
|
-
This tag does not require the name
|
25
|
+
This tag does not require the name attribute, nor do any of its children.
|
26
26
|
Use the @limit@ and @offset@ attribute to render a specific number of assets.
|
27
27
|
Use @by@ and @order@ attributes to control the order of assets.
|
28
28
|
Use @extensions@ attribute to specify which assets to be rendered.
|
29
29
|
|
30
30
|
*Usage:*
|
31
31
|
<pre><code><r:assets:each [limit=0] [offset=0] [order="asc|desc"] [by="position|title|..."] [extensions="png|pdf|doc"]>...</r:assets:each></code></pre>
|
32
|
-
}
|
32
|
+
}
|
33
33
|
tag 'assets' do |tag|
|
34
34
|
tag.expand
|
35
35
|
end
|
@@ -58,7 +58,7 @@ module AssetTags
|
|
58
58
|
end
|
59
59
|
result
|
60
60
|
end
|
61
|
-
|
61
|
+
|
62
62
|
desc %{
|
63
63
|
References the first asset attached to the current page.
|
64
64
|
|
@@ -84,7 +84,7 @@ module AssetTags
|
|
84
84
|
assets = tag.locals.page.assets.count(:conditions => assets_find_options(tag)[:conditions])
|
85
85
|
tag.expand if assets >= count
|
86
86
|
end
|
87
|
-
|
87
|
+
|
88
88
|
desc %{
|
89
89
|
The opposite of @<r:if_assets/>@.
|
90
90
|
}
|
@@ -93,7 +93,7 @@ module AssetTags
|
|
93
93
|
assets = tag.locals.page.assets.count(:conditions => assets_find_options(tag)[:conditions])
|
94
94
|
tag.expand unless assets >= count
|
95
95
|
end
|
96
|
-
|
96
|
+
|
97
97
|
# Resets the page Url and title within the asset tag
|
98
98
|
[:title, :url].each do |method|
|
99
99
|
tag "asset:page:#{method.to_s}" do |tag|
|
@@ -127,10 +127,10 @@ module AssetTags
|
|
127
127
|
size = options['size'] ? options.delete('size') : 'icon'
|
128
128
|
raise TagError, "asset #{tag.locals.asset.title} has no '#{size}' thumbnail" unless tag.locals.asset.style?(size)
|
129
129
|
container = options.delete('container')
|
130
|
-
((container.to_i - asset.height(size).to_i)/2).to_s
|
130
|
+
((container.to_i - asset.height(size).to_i) / 2).to_s
|
131
131
|
end
|
132
|
-
|
133
|
-
['height','width'].each do |dimension|
|
132
|
+
|
133
|
+
['height', 'width'].each do |dimension|
|
134
134
|
desc %{
|
135
135
|
Renders the #{dimension} of the asset.
|
136
136
|
}
|
@@ -180,11 +180,11 @@ module AssetTags
|
|
180
180
|
tag 'asset:if_content_type' do |tag|
|
181
181
|
options = tag.attr.dup
|
182
182
|
# XXX build_regexp_for comes from StandardTags
|
183
|
-
regexp = build_regexp_for(tag,options)
|
183
|
+
regexp = build_regexp_for(tag, options)
|
184
184
|
asset_content_type = tag.locals.asset.asset_content_type
|
185
185
|
tag.expand unless asset_content_type.match(regexp).nil?
|
186
186
|
end
|
187
|
-
|
187
|
+
|
188
188
|
[:title, :caption, :asset_file_name, :extension, :asset_content_type, :asset_file_size, :id].each do |method|
|
189
189
|
desc %{
|
190
190
|
Renders the @#{method.to_s}@ attribute of the asset
|
@@ -194,16 +194,16 @@ module AssetTags
|
|
194
194
|
asset.send(method) rescue nil
|
195
195
|
end
|
196
196
|
end
|
197
|
-
|
197
|
+
|
198
198
|
tag 'asset:name' do |tag|
|
199
199
|
tag.render('asset:title', tag.attr.dup)
|
200
|
-
end
|
201
|
-
|
200
|
+
end
|
201
|
+
|
202
202
|
tag 'asset:filename' do |tag|
|
203
203
|
asset, options = asset_and_options(tag)
|
204
204
|
asset.asset_file_name rescue nil
|
205
205
|
end
|
206
|
-
|
206
|
+
|
207
207
|
desc %{
|
208
208
|
Renders an image tag for the asset.
|
209
209
|
|
@@ -213,7 +213,7 @@ module AssetTags
|
|
213
213
|
|
214
214
|
*Usage:*
|
215
215
|
<pre><code><r:asset:image [name="asset name" or id="asset id"] [size="icon|thumbnail|whatever"]></code></pre>
|
216
|
-
}
|
216
|
+
}
|
217
217
|
tag 'asset:image' do |tag|
|
218
218
|
tag.locals.asset, options = image_asset_and_options(tag)
|
219
219
|
return "Error: This image cannot be found" if tag.locals.asset == nil
|
@@ -223,20 +223,20 @@ module AssetTags
|
|
223
223
|
url = tag.locals.asset.thumbnail(size)
|
224
224
|
ActionController::Base.helpers.image_tag(url, options)
|
225
225
|
end
|
226
|
-
|
226
|
+
|
227
227
|
desc %{
|
228
228
|
Renders the url for the asset. If the asset is an image, the <code>size</code> attribute can be used to
|
229
229
|
generate the url for that size.
|
230
230
|
|
231
231
|
*Usage:*
|
232
232
|
<pre><code><r:url [name="asset name" or id="asset id"] [size="icon|thumbnail"]></code></pre>
|
233
|
-
}
|
233
|
+
}
|
234
234
|
tag 'asset:url' do |tag|
|
235
235
|
asset, options = asset_and_options(tag)
|
236
236
|
size = options['size'] ? options.delete('size') : 'original'
|
237
237
|
asset.thumbnail(size) rescue nil
|
238
238
|
end
|
239
|
-
|
239
|
+
|
240
240
|
desc %{
|
241
241
|
Renders a link to the asset. If the asset is an image, the <code>size</code> attribute can be used to
|
242
242
|
generate a link to that size.
|
@@ -255,8 +255,9 @@ module AssetTags
|
|
255
255
|
url = asset.thumbnail(size)
|
256
256
|
%{<a href="#{url }#{anchor}"#{attributes}>#{text}</a>} rescue nil
|
257
257
|
end
|
258
|
-
|
259
|
-
private
|
258
|
+
|
259
|
+
private
|
260
|
+
|
260
261
|
def asset_and_options(tag)
|
261
262
|
options = tag.attr.dup
|
262
263
|
[find_asset(tag, options), options]
|
@@ -269,19 +270,19 @@ private
|
|
269
270
|
|
270
271
|
def find_asset(tag, options)
|
271
272
|
tag.locals.asset ||= if title = (options.delete('name') || options.delete('title'))
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
273
|
+
Asset.find_by_title(title)
|
274
|
+
elsif id = options.delete('id')
|
275
|
+
Asset.find_by_id(id)
|
276
|
+
end
|
276
277
|
tag.locals.asset || raise(TagError, "Asset not found.")
|
277
278
|
end
|
278
279
|
|
279
280
|
def find_image_asset(tag, options)
|
280
281
|
tag.locals.asset ||= if title = (options.delete('name') || options.delete('title'))
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
282
|
+
Asset.find_by_title(title)
|
283
|
+
elsif id = options.delete('id')
|
284
|
+
Asset.find_by_id(id)
|
285
|
+
end
|
285
286
|
tag.locals.asset || nil
|
286
287
|
end
|
287
288
|
|
@@ -289,16 +290,16 @@ private
|
|
289
290
|
attr = tag.attr.symbolize_keys
|
290
291
|
extensions = attr[:extensions] && attr[:extensions].split('|') || []
|
291
292
|
conditions = unless extensions.blank?
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
293
|
+
# this is soon to be removed in favour of asset types
|
294
|
+
[extensions.map { |ext| "assets.asset_file_name LIKE ?" }.join(' OR '),
|
295
|
+
*extensions.map { |ext| "%.#{ext}" }]
|
296
|
+
else
|
297
|
+
nil
|
298
|
+
end
|
299
|
+
|
299
300
|
by = attr[:by] || 'page_attachments.position'
|
300
301
|
order = attr[:order] || 'asc'
|
301
|
-
|
302
|
+
|
302
303
|
options = {
|
303
304
|
:order => "#{by} #{order}",
|
304
305
|
:limit => attr[:limit] || nil,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trusty-cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- TrustyCms CMS dev team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-11-
|
11
|
+
date: 2023-11-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activestorage-validator
|
@@ -312,6 +312,20 @@ dependencies:
|
|
312
312
|
- - "<"
|
313
313
|
- !ruby/object:Gem::Version
|
314
314
|
version: '14.0'
|
315
|
+
- !ruby/object:Gem::Dependency
|
316
|
+
name: ransack
|
317
|
+
requirement: !ruby/object:Gem::Requirement
|
318
|
+
requirements:
|
319
|
+
- - ">="
|
320
|
+
- !ruby/object:Gem::Version
|
321
|
+
version: '0'
|
322
|
+
type: :runtime
|
323
|
+
prerelease: false
|
324
|
+
version_requirements: !ruby/object:Gem::Requirement
|
325
|
+
requirements:
|
326
|
+
- - ">="
|
327
|
+
- !ruby/object:Gem::Version
|
328
|
+
version: '0'
|
315
329
|
- !ruby/object:Gem::Dependency
|
316
330
|
name: rdoc
|
317
331
|
requirement: !ruby/object:Gem::Requirement
|
@@ -781,6 +795,7 @@ files:
|
|
781
795
|
- config/initializers/assets.rb
|
782
796
|
- config/initializers/devise.rb
|
783
797
|
- config/initializers/kraken.rb
|
798
|
+
- config/initializers/ransack.rb
|
784
799
|
- config/initializers/response_cache_timeout.rb
|
785
800
|
- config/initializers/secret_token.rb
|
786
801
|
- config/initializers/tmp.rb
|
@@ -1133,51 +1148,51 @@ specification_version: 4
|
|
1133
1148
|
summary: A no-fluff content management system designed for small teams.
|
1134
1149
|
test_files:
|
1135
1150
|
- spec/models/layout_spec.rb
|
1136
|
-
- spec/features/layouts_spec.rb
|
1137
|
-
- spec/features/config_spec.rb
|
1138
|
-
- spec/features/pages_spec.rb
|
1139
|
-
- spec/support/custom_actions.rb
|
1140
|
-
- spec/ci/database.mysql.yml
|
1141
|
-
- spec/controllers/users_controller_spec.rb
|
1142
|
-
- spec/controllers/application_controller_spec.rb
|
1143
1151
|
- spec/rails_helper.rb
|
1144
1152
|
- spec/spec_helper.rb
|
1153
|
+
- spec/controllers/users_controller_spec.rb
|
1154
|
+
- spec/controllers/application_controller_spec.rb
|
1155
|
+
- spec/support/custom_actions.rb
|
1156
|
+
- spec/dummy/db/schema.rb
|
1157
|
+
- spec/dummy/yarn.lock
|
1158
|
+
- spec/dummy/app/assets/config/manifest.js
|
1159
|
+
- spec/dummy/package.json
|
1145
1160
|
- spec/dummy/config.ru
|
1146
|
-
- spec/dummy/config/
|
1147
|
-
- spec/dummy/config/
|
1148
|
-
- spec/dummy/config/initializers/inflections.rb
|
1161
|
+
- spec/dummy/config/initializers/wrap_parameters.rb
|
1162
|
+
- spec/dummy/config/initializers/assets.rb
|
1149
1163
|
- spec/dummy/config/initializers/filter_parameter_logging.rb
|
1150
1164
|
- spec/dummy/config/initializers/mime_types.rb
|
1151
1165
|
- spec/dummy/config/initializers/cookies_serializer.rb
|
1152
|
-
- spec/dummy/config/initializers/wrap_parameters.rb
|
1153
|
-
- spec/dummy/config/initializers/trusty_cms_config.rb
|
1154
1166
|
- spec/dummy/config/initializers/session_store.rb
|
1167
|
+
- spec/dummy/config/initializers/trusty_cms_config.rb
|
1155
1168
|
- spec/dummy/config/initializers/backtrace_silencers.rb
|
1156
|
-
- spec/dummy/config/initializers/
|
1157
|
-
- spec/dummy/config/
|
1158
|
-
- spec/dummy/config/environment.rb
|
1159
|
-
- spec/dummy/config/secrets.yml
|
1160
|
-
- spec/dummy/config/environments/development.rb
|
1169
|
+
- spec/dummy/config/initializers/inflections.rb
|
1170
|
+
- spec/dummy/config/application.rb
|
1161
1171
|
- spec/dummy/config/environments/production.rb
|
1172
|
+
- spec/dummy/config/environments/development.rb
|
1162
1173
|
- spec/dummy/config/environments/test.rb
|
1174
|
+
- spec/dummy/config/locales/en.yml
|
1163
1175
|
- spec/dummy/config/database.yml
|
1164
1176
|
- spec/dummy/config/boot.rb
|
1165
|
-
- spec/dummy/
|
1166
|
-
- spec/dummy/
|
1177
|
+
- spec/dummy/config/routes.rb
|
1178
|
+
- spec/dummy/config/environment.rb
|
1179
|
+
- spec/dummy/config/secrets.yml
|
1167
1180
|
- spec/dummy/README.rdoc
|
1168
|
-
- spec/dummy/bin/bundle
|
1169
1181
|
- spec/dummy/bin/rails
|
1182
|
+
- spec/dummy/bin/bundle
|
1170
1183
|
- spec/dummy/bin/setup
|
1171
1184
|
- spec/dummy/bin/rake
|
1172
|
-
- spec/dummy/Rakefile
|
1173
|
-
- spec/dummy/app/assets/config/manifest.js
|
1174
|
-
- spec/dummy/package.json
|
1175
1185
|
- spec/dummy/public/favicon.ico
|
1176
|
-
- spec/dummy/public/500.html
|
1177
1186
|
- spec/dummy/public/404.html
|
1178
1187
|
- spec/dummy/public/422.html
|
1188
|
+
- spec/dummy/public/500.html
|
1189
|
+
- spec/dummy/Rakefile
|
1190
|
+
- spec/fixtures/users.yml
|
1179
1191
|
- spec/factories/page.rb
|
1180
|
-
- spec/factories/user.rb
|
1181
|
-
- spec/factories/layout.rb
|
1182
1192
|
- spec/factories/page_part.rb
|
1183
|
-
- spec/
|
1193
|
+
- spec/factories/layout.rb
|
1194
|
+
- spec/factories/user.rb
|
1195
|
+
- spec/features/pages_spec.rb
|
1196
|
+
- spec/features/config_spec.rb
|
1197
|
+
- spec/features/layouts_spec.rb
|
1198
|
+
- spec/ci/database.mysql.yml
|