kuhsaft 2.5.2 → 2.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/app/assets/javascripts/kuhsaft/cms/application.js.coffee.erb +6 -0
- data/app/assets/stylesheets/kuhsaft/cms/application.css.sass +37 -0
- data/app/controllers/kuhsaft/cms/bricks_controller.rb +1 -2
- data/app/controllers/kuhsaft/cms/pages_controller.rb +14 -0
- data/app/models/kuhsaft/brick.rb +4 -2
- data/app/models/kuhsaft/page.rb +42 -0
- data/app/views/kuhsaft/cms/admin/_brick_clone_menu.html.haml +16 -0
- data/app/views/kuhsaft/cms/admin/_brick_type_dropdown.html.haml +14 -13
- data/app/views/kuhsaft/cms/admin/_main_navigation.html.haml +10 -4
- data/app/views/kuhsaft/cms/bricks/_brick_item.html.haml +1 -1
- data/app/views/kuhsaft/cms/pages/_form.html.haml +10 -3
- data/app/views/kuhsaft/cms/pages/_mirror_modal.html.haml +52 -0
- data/app/views/kuhsaft/cms/pages/mirror.js.haml +5 -0
- data/app/views/layouts/kuhsaft/cms/application.html.haml +0 -1
- data/config/locales/models/kuhsaft/page/en.yml +1 -0
- data/config/locales/views/kuhsaft/cms/admin/de.yml +23 -0
- data/config/locales/views/kuhsaft/cms/pages/de.yml +13 -0
- data/config/routes.rb +1 -0
- data/lib/kuhsaft/engine.rb +1 -0
- data/lib/kuhsaft/version.rb +1 -1
- data/spec/controllers/kuhsaft/cms/pages_controller_spec.rb +48 -0
- data/spec/factories.rb +5 -0
- data/spec/features/cms_pages_spec.rb +1 -1
- data/spec/models/page_spec.rb +33 -0
- metadata +72 -66
- data/app/views/kuhsaft/cms/admin/_content_language_switch.html.haml +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f6610c85076199dc2cffcb24437ede0ef6e6d07
|
4
|
+
data.tar.gz: 56d5e2ed22b7ec384a1fa15731888bfd85699d5c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dd6ac9bd19452a2d1e117619c9ead75d8721f108606764ad3f2acc24aba98e5fc08347bc1f9377ab246672f4e4e11d8a15c2a7496b271730e4d0d697d522511b
|
7
|
+
data.tar.gz: 1570c92b8e110fe146f381fba81142a452e64d84e34ae4b6c3a9d14d074a14f59e6e1a6b0baec201fa6206d00f30d9f04c10b274b81018840ce61085ca51aa79
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
|
2
|
-
[
|
3
|
-
|
1
|
+
Kuhsaft has been replaced by
|
2
|
+
[qBrick](http://github.com/screenconcept/qbrick). Please switch as soon
|
3
|
+
as possible.
|
4
4
|
|
5
5
|
# Kuhsaft. A CMS as simple as it could be
|
6
6
|
|
@@ -103,6 +103,9 @@ window.stopPropagationOfDisplayStyles = (selector) ->
|
|
103
103
|
$(document).ajaxSuccess ->
|
104
104
|
sortableBrick()
|
105
105
|
|
106
|
+
$('a.has-spinner').click ->
|
107
|
+
$(this).toggleClass('active')
|
108
|
+
|
106
109
|
$(document).ready ->
|
107
110
|
loadTextEditor()
|
108
111
|
checkPageType()
|
@@ -136,3 +139,6 @@ $(document).ready ->
|
|
136
139
|
$(elem).collapse('hide')
|
137
140
|
$('.resize-toggler').each (index, elem) ->
|
138
141
|
$(elem).addClass('collapsed')
|
142
|
+
|
143
|
+
$("[data-toggle=tooltip]").tooltip(placement: 'top')
|
144
|
+
$("[data-toggle=popover]").popover(placement: 'left', html: true, container: 'body')
|
@@ -9,6 +9,7 @@ $baseBorderRadius: 0px
|
|
9
9
|
$borderRadiusLarge: 0px
|
10
10
|
$borderRadiusSmall: 0px
|
11
11
|
|
12
|
+
@import bourbon
|
12
13
|
@import bootstrap
|
13
14
|
// base styles
|
14
15
|
|
@@ -79,6 +80,9 @@ form
|
|
79
80
|
.brick-list
|
80
81
|
padding-left: 2em
|
81
82
|
|
83
|
+
.popover
|
84
|
+
max-width: none
|
85
|
+
|
82
86
|
// The single column brick and the page-content (the "root") needs no level indentation
|
83
87
|
// It usually acts as a helper container and is therefore not relevant
|
84
88
|
// for the visual hierarchy
|
@@ -93,6 +97,14 @@ form
|
|
93
97
|
> .brick-list
|
94
98
|
padding-left: 0
|
95
99
|
|
100
|
+
.nav-tabs
|
101
|
+
a.not-translated:after
|
102
|
+
content: '*'
|
103
|
+
color: #d33
|
104
|
+
a
|
105
|
+
color: black
|
106
|
+
|
107
|
+
|
96
108
|
.tab-content
|
97
109
|
display: table
|
98
110
|
width: 100%
|
@@ -163,6 +175,7 @@ form
|
|
163
175
|
font-weight: bold
|
164
176
|
|
165
177
|
.modal
|
178
|
+
text-align: left
|
166
179
|
width: 900px
|
167
180
|
margin-left: -450px
|
168
181
|
|
@@ -174,6 +187,24 @@ form
|
|
174
187
|
top: -10px
|
175
188
|
padding-left: 10px
|
176
189
|
|
190
|
+
|
191
|
+
.spinner
|
192
|
+
display: inline-block
|
193
|
+
opacity: 0
|
194
|
+
max-width: 0
|
195
|
+
@include animation-name(spinIt)
|
196
|
+
@include animation-duration(2s)
|
197
|
+
@include animation-timing-function(linear)
|
198
|
+
@include animation-iteration-count(infinite)
|
199
|
+
|
200
|
+
@include transition(opacity, 0.25s)
|
201
|
+
@include transition(max-width, 0.45s)
|
202
|
+
|
203
|
+
.has-spinner.active
|
204
|
+
.spinner
|
205
|
+
opacity: 1
|
206
|
+
max-width: 50px
|
207
|
+
|
177
208
|
.control-group.text
|
178
209
|
min-height: 310px
|
179
210
|
|
@@ -202,3 +233,9 @@ form
|
|
202
233
|
@import nestable
|
203
234
|
@import bootstrap-responsive
|
204
235
|
@import bootstrap_modal
|
236
|
+
|
237
|
+
@include keyframes(spinIt)
|
238
|
+
from
|
239
|
+
@include transform(rotate(0deg))
|
240
|
+
to
|
241
|
+
@include transform(rotate(360deg))
|
@@ -23,9 +23,8 @@ module Kuhsaft
|
|
23
23
|
|
24
24
|
def update
|
25
25
|
@brick = Kuhsaft::Brick.find(params[:id])
|
26
|
-
@brick.image_size ||= ImageSize.all.first.name.to_s
|
27
|
-
params['brick'].delete('image_cache') if params['brick']['image']
|
28
26
|
@brick.update_attributes(brick_params)
|
27
|
+
|
29
28
|
#
|
30
29
|
# rails will fall back to html if ajax can't be used
|
31
30
|
# this is the case with the image brick, because ajax does not
|
@@ -57,6 +57,20 @@ module Kuhsaft
|
|
57
57
|
Kuhsaft::PageTree.update(params[:page_tree])
|
58
58
|
end
|
59
59
|
|
60
|
+
def mirror
|
61
|
+
@page = Kuhsaft::Page.find(params[:page_id])
|
62
|
+
|
63
|
+
unless @page.bricks.empty?
|
64
|
+
if params[:rutheless] == 'true' || @page.bricks.unscoped.where(locale: params[:target_locale]).empty?
|
65
|
+
@page.clear_bricks_for_locale(params[:target_locale])
|
66
|
+
params[:failed_bricks] = @page.clone_bricks_to(params[:target_locale])
|
67
|
+
params[:rutheless] = 'true'
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
respond_to :js, :html
|
72
|
+
end
|
73
|
+
|
60
74
|
private
|
61
75
|
|
62
76
|
def page_params
|
data/app/models/kuhsaft/brick.rb
CHANGED
@@ -37,8 +37,10 @@ module Kuhsaft
|
|
37
37
|
after_save do
|
38
38
|
# TODO: replace callback with fulltext row on each
|
39
39
|
# searchable model
|
40
|
-
brick_list
|
41
|
-
|
40
|
+
if brick_list
|
41
|
+
brick_list.update_fulltext
|
42
|
+
brick_list.save!
|
43
|
+
end
|
42
44
|
end
|
43
45
|
|
44
46
|
# TODO: yes. temporary workaround. see above
|
data/app/models/kuhsaft/page.rb
CHANGED
@@ -89,6 +89,10 @@ module Kuhsaft
|
|
89
89
|
url.present? && title.present? && slug.present?
|
90
90
|
end
|
91
91
|
|
92
|
+
def translated_to?(locale)
|
93
|
+
send("url_#{locale}").present? && send("title_#{locale}").present? && send("slug_#{locale}").present?
|
94
|
+
end
|
95
|
+
|
92
96
|
def link
|
93
97
|
if bricks.count == 0 && children.count > 0
|
94
98
|
children.first.link
|
@@ -161,5 +165,43 @@ module Kuhsaft
|
|
161
165
|
json['url'] = "/pages/#{id}"
|
162
166
|
end
|
163
167
|
end
|
168
|
+
|
169
|
+
def clear_bricks_for_locale(locale)
|
170
|
+
bricks.unscoped.where(locale: locale).destroy_all
|
171
|
+
end
|
172
|
+
|
173
|
+
def copy_assets_to_cloned_brick(brick, new_brick)
|
174
|
+
brick.class.uploaders.keys.each do |key|
|
175
|
+
new_brick.update_attribute(key.to_s, File.open(brick.send(key.to_s).path))
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
def clone_child_bricks(brick, to_locale, new_brick_list_id)
|
180
|
+
brick.bricks.each do |nested_brick|
|
181
|
+
clone_brick_to(nested_brick, to_locale, new_brick_list_id)
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
def clone_bricks_to(locale)
|
186
|
+
failed_to_clone = []
|
187
|
+
|
188
|
+
bricks.each do |brick|
|
189
|
+
failed_to_clone << brick unless clone_brick_to(brick, locale, id)
|
190
|
+
end
|
191
|
+
failed_to_clone
|
192
|
+
end
|
193
|
+
|
194
|
+
def clone_brick_to(brick, to_locale, new_brick_list_id)
|
195
|
+
new_brick = brick.dup
|
196
|
+
|
197
|
+
copy_assets_to_cloned_brick(brick, new_brick) if brick.uploader?
|
198
|
+
|
199
|
+
new_brick.update_attribute(:locale, to_locale)
|
200
|
+
new_brick.update_attribute(:brick_list_id, new_brick_list_id)
|
201
|
+
|
202
|
+
clone_child_bricks(brick, to_locale, new_brick.id) if brick.respond_to?(:bricks)
|
203
|
+
|
204
|
+
new_brick.save
|
205
|
+
end
|
164
206
|
end
|
165
207
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
- unless @page.bricks.empty?
|
2
|
+
.btn-group
|
3
|
+
.btn.btn-small{ 'data-toggle' => 'popover', 'data-content' => t('.brick_clone_info'), 'data-original-title' => t('.brick_clone_info_title')}
|
4
|
+
%i.icon-info-sign
|
5
|
+
%a.btn.btn-small.dropdown-toggle{ 'data-toggle' => 'dropdown', 'href' => '#' }
|
6
|
+
= t('.clone_bricks')
|
7
|
+
%span.caret
|
8
|
+
%ul.dropdown-menu.pull-right
|
9
|
+
- I18n.available_locales.each do |locale|
|
10
|
+
- unless I18n.locale == locale
|
11
|
+
- if @page.translated_to?(locale)
|
12
|
+
%li= link_to t('.to_locale', :locale_name => locale.upcase), cms_page_mirror_path(@page, :target_locale => locale, :rutheless => false), :remote => true
|
13
|
+
|
14
|
+
- else
|
15
|
+
%li.disabled{ 'data-toggle' => 'tooltip', 'title' => t('.not_translated') }
|
16
|
+
= link_to t('.to_locale', :locale_name => locale.upcase), '#'
|
@@ -1,14 +1,15 @@
|
|
1
1
|
- unless brick_list.brick_types.empty?
|
2
|
-
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
-
|
8
|
-
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
-
|
14
|
-
|
2
|
+
.btn-group
|
3
|
+
- if brick_list.brick_types.allowed.count > 1
|
4
|
+
%a.btn.btn-small.btn-primary.dropdown-toggle{ 'data-toggle' => 'dropdown', 'href' => '#' }
|
5
|
+
= t('.add_element')
|
6
|
+
%span.caret
|
7
|
+
%ul.dropdown-menu.pull-right
|
8
|
+
- brick_list.brick_types.allowed.group_by(&:group).each do |group, types|
|
9
|
+
- types.map { |type| cms_brick_item brick_list, type }.compact.each do |brick_type_item|
|
10
|
+
%li
|
11
|
+
= brick_type_item
|
12
|
+
.divider
|
13
|
+
- else
|
14
|
+
- brick_list.brick_types.allowed.each do |type|
|
15
|
+
= link_to t('.add_specific_element', :name => type.class_name.constantize.model_name.human), kuhsaft.new_cms_brick_path(:brick => { :type => type.class_name, :brick_list_id => brick_list.id, :brick_list_type => brick_list.brick_list_type }), :remote => true, :class => 'btn btn-small btn-primary'
|
@@ -1,6 +1,12 @@
|
|
1
1
|
= link_to 'Kuhsaft CMS', cms_root_path, :class => 'brand'
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
|
3
|
+
%ul.nav.pull-right.language-navigation
|
4
|
+
- if render_language_switch?
|
5
|
+
- I18n.available_locales.each do |locale|
|
6
|
+
%li{ :class => (:active if I18n.locale.to_s == locale.to_s) }
|
7
|
+
= link_to_content_locale(locale)
|
5
8
|
%li
|
6
|
-
= link_to
|
9
|
+
= link_to t('.logout'), '', :method => :delete
|
10
|
+
|
11
|
+
%ul.nav
|
12
|
+
%li= link_to Kuhsaft::Page.model_name.human(:count => 2), kuhsaft.cms_pages_path
|
@@ -1,5 +1,5 @@
|
|
1
1
|
.brick-item{ id: brick.to_brick_item_id, class: brick.to_style_class, 'data-id' => brick.id }
|
2
|
-
= simple_form_for brick, as: :brick, url: kuhsaft.cms_brick_path(brick), remote:
|
2
|
+
= simple_form_for brick, as: :brick, url: kuhsaft.cms_brick_path(brick), remote: !brick.uploader?, html: { id: nil }, wrapper: :bootstrap do |form|
|
3
3
|
= form.hidden_field :position, class: 'position-field'
|
4
4
|
- brick_content = render(brick.to_edit_partial_path, brick: brick, form: form)
|
5
5
|
|
@@ -5,6 +5,13 @@
|
|
5
5
|
%li{ class: content_tab_active(@page) }
|
6
6
|
= link_to t('.tab_content'), '#page-content', 'data-toggle' => :tab
|
7
7
|
|
8
|
+
- I18n.available_locales.reverse.each do |locale|
|
9
|
+
%li.pull-right{ :class => (:active if I18n.locale.to_s == locale.to_s) }
|
10
|
+
- if @page.translated_to?(locale)
|
11
|
+
= link_to_content_locale(locale)
|
12
|
+
- else
|
13
|
+
= link_to locale.to_s.upcase, url_for(:action => params[:action], :content_locale => locale), 'data-toggle' => 'tooltip', 'title' => t('.not_translated'), :class => 'not-translated'
|
14
|
+
|
8
15
|
.tab-content
|
9
16
|
#page-metadata.tab-pane{ class: metadata_tab_active(@page) }
|
10
17
|
= simple_form_for @page, url: url, html: { class: 'form-horizontal' }, wrapper: :bootstrap do |form|
|
@@ -39,9 +46,9 @@
|
|
39
46
|
%i.icon-resize-small
|
40
47
|
= t('.collapse_all')
|
41
48
|
|
42
|
-
|
43
|
-
|
49
|
+
= render 'brick_clone_menu'
|
50
|
+
= render 'brick_type_dropdown', :brick_list => @page
|
44
51
|
|
45
|
-
= render 'kuhsaft/cms/bricks/brick_list', brick_list
|
52
|
+
= render 'kuhsaft/cms/bricks/brick_list', :brick_list => @page
|
46
53
|
|
47
54
|
= render 'kuhsaft/cms/bricks/sort_form'
|
@@ -0,0 +1,52 @@
|
|
1
|
+
.modal-header
|
2
|
+
%button.close{ 'data-dismiss' => 'modal' }
|
3
|
+
×
|
4
|
+
%h3 header
|
5
|
+
|
6
|
+
- if page.bricks.empty?
|
7
|
+
.modal-body
|
8
|
+
.alert.alert-info
|
9
|
+
= t('.no_bricks_to_clone')
|
10
|
+
|
11
|
+
.modal-footer
|
12
|
+
.clearfix
|
13
|
+
.pull-right
|
14
|
+
.btn.btn-success{ 'data-dismiss' => 'modal'}
|
15
|
+
= t('.okay')
|
16
|
+
|
17
|
+
- elsif page.bricks.unscoped.where(:locale => params[:target_locale], :brick_list_id => page.id).any? && params[:rutheless] != 'true'
|
18
|
+
.modal-body
|
19
|
+
.alert.alert-error
|
20
|
+
= t('.target_page_contains_bricks', :brick_count => page.bricks.unscoped.where(:locale => params[:target_locale]).count ).html_safe
|
21
|
+
|
22
|
+
.modal-footer
|
23
|
+
.clearfix
|
24
|
+
.pull-right
|
25
|
+
.btn{ 'data-dismiss' => 'modal'}
|
26
|
+
= t('.abort')
|
27
|
+
= link_to cms_page_mirror_path(@page, :target_locale => params[:target_locale], :rutheless => true), :class => 'btn btn-warning has-spinner', :remote => true do
|
28
|
+
%span.spinner
|
29
|
+
%i.icon-refresh.icon-white
|
30
|
+
= t('.proceed_replace')
|
31
|
+
|
32
|
+
- else
|
33
|
+
.modal-body
|
34
|
+
.alert.alert-info
|
35
|
+
= t('.bricks_cloned', :brick_count => (page.bricks.unscoped.where(:locale => params[:target_locale]).count - params[:failed_bricks].count))
|
36
|
+
- if params[:failed_bricks].any?
|
37
|
+
.alert.alert-error
|
38
|
+
= t('.failed_to_clone_folowwing_bricks')
|
39
|
+
%ul
|
40
|
+
- params[:failed_bricks].each do |failed_brick|
|
41
|
+
%li
|
42
|
+
= failed_brick.caption
|
43
|
+
= failed_brick.type
|
44
|
+
= "(Position: #{failed_brick.position})"
|
45
|
+
|
46
|
+
.modal-footer
|
47
|
+
.clearfix
|
48
|
+
.pull-right
|
49
|
+
= link_to edit_cms_page_path(page, :content_locale => params[:target_locale]), :class => 'btn' do
|
50
|
+
= t('.edit_language', :language => params[:target_locale].upcase)
|
51
|
+
.btn.btn-success{ 'data-dismiss' => 'modal'}
|
52
|
+
= t('.okay')
|
@@ -6,6 +6,29 @@ de:
|
|
6
6
|
brick_type_dropdown:
|
7
7
|
add_element: 'Element hinzufügen'
|
8
8
|
add_specific_element: '%{name} hinzufügen'
|
9
|
+
brick_clone_menu:
|
10
|
+
clone_bricks: Bricks kopieren
|
11
|
+
to_locale: 'in die Sprachversion %{locale_name}'
|
12
|
+
not_translated: 'Noch nicht übersetzt'
|
13
|
+
brick_clone_info_title: Kopieren von Bricks
|
14
|
+
brick_clone_info: |
|
15
|
+
Bricks werden mit gesamten Inhalt in eine andere Sprachversion der Seite kopiert.
|
16
|
+
</br>
|
17
|
+
Texte werden nicht übersetzt und müssen angepasst werden.
|
18
|
+
</br>
|
19
|
+
</br>
|
20
|
+
Kopieren ist nicht möglich, falls:
|
21
|
+
<ul>
|
22
|
+
<li>Die gewünschte Sprachversion der Seite nicht Übersetzt ist</li>
|
23
|
+
<li>Die Seite keine Bricks enthält</li>
|
24
|
+
</ul>
|
25
|
+
<span class="label label-warning">Achtung:</span>
|
26
|
+
</br>
|
27
|
+
Diese Funktion dient zum initialen Setup der Seiten.
|
28
|
+
</br>
|
29
|
+
Eventuell vorhandene Bricks auf der Zielseite werden überschrieben!
|
30
|
+
modal_header: Bricks kopieren
|
31
|
+
modal_body: 'Kopiere %{brick_count} Brick(s) von %{from_locale} nach %{to_locale}'
|
9
32
|
empty_state:
|
10
33
|
empty: 'Hier ist bisher noch nichts...'
|
11
34
|
main_navigation:
|
@@ -7,6 +7,7 @@ de:
|
|
7
7
|
form:
|
8
8
|
tab_metadata: 'Einstellungen'
|
9
9
|
tab_content: 'Inhalt'
|
10
|
+
not_translated: 'Übersetzungen fehlen'
|
10
11
|
hint_keywords: |
|
11
12
|
Geben Sie hier 2 - 6 zentrale Begriffe, welche für diese Seite gelten, als Stichwörter an.
|
12
13
|
</br>
|
@@ -29,3 +30,15 @@ de:
|
|
29
30
|
expand_all: Alle aufklappen
|
30
31
|
collapse_all: Alle zuklappen
|
31
32
|
none: Keine
|
33
|
+
|
34
|
+
mirror_modal:
|
35
|
+
no_bricks_to_clone: 'Die Seite enthält keine Bricks zum kopieren.'
|
36
|
+
bricks_cloned: '%{brick_count} Brick(s) erfolgreich kopiert.'
|
37
|
+
target_page_contains_bricks: |
|
38
|
+
<strong>Achtung:</strong>
|
39
|
+
Die Zielseite enthält %{brick_count} Brick(s). Diese werden überschrieben.
|
40
|
+
abort: Abbrechen
|
41
|
+
proceed_replace: 'Kopieren & Ersetzen'
|
42
|
+
okay: OK
|
43
|
+
edit_language: '%{language} Bricks bearbeiten'
|
44
|
+
failed_to_clone_folowwing_bricks: 'Folgende Bricks konnten nicht kopiert werden:'
|
data/config/routes.rb
CHANGED
data/lib/kuhsaft/engine.rb
CHANGED
data/lib/kuhsaft/version.rb
CHANGED
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Kuhsaft::Cms::PagesController do
|
4
|
+
subject { described_class }
|
5
|
+
|
6
|
+
describe 'mirroring' do
|
7
|
+
around(:each) do |example|
|
8
|
+
I18n.with_locale :de do
|
9
|
+
example.run
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
before do
|
14
|
+
@page = FactoryGirl.create(:page, url_de: 'de')
|
15
|
+
@brick = FactoryGirl.create(:text_brick,
|
16
|
+
brick_list_id: @page.id,
|
17
|
+
brick_list_type: 'Kuhsaft::Page',
|
18
|
+
text: 'DEUTSCH')
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'with no bricks on target locale' do
|
22
|
+
it 'clones the existing bricks' do
|
23
|
+
xhr :get, :mirror, use_route: :kuhsaft, target_locale: :en, page_id: @page.id
|
24
|
+
expect(@page.bricks.unscoped.count).to eq(2)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'with bricks on target locale' do
|
29
|
+
before do
|
30
|
+
@brick_en = FactoryGirl.create(:text_brick,
|
31
|
+
brick_list_id: @page.id,
|
32
|
+
brick_list_type: 'Kuhsaft::Page',
|
33
|
+
locale: :en,
|
34
|
+
text: 'ENGLISH')
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'does not clone anything without the required parameter' do
|
38
|
+
xhr :get, :mirror, use_route: :kuhsaft, target_locale: :en, page_id: @page.id
|
39
|
+
expect(@page.bricks.unscoped.where(locale: :en).first.text).to eq('ENGLISH')
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'clones the bricks when required parameter is set' do
|
43
|
+
xhr :get, :mirror, use_route: :kuhsaft, target_locale: :en, page_id: @page.id, rutheless: 'true'
|
44
|
+
expect(@page.bricks.unscoped.where(locale: :en).first.text).to eq('DEUTSCH')
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/spec/factories.rb
CHANGED
@@ -20,6 +20,11 @@ FactoryGirl.define do
|
|
20
20
|
tb.template_name 'foo'
|
21
21
|
end
|
22
22
|
|
23
|
+
factory :image_brick, class: 'Kuhsaft::ImageBrick' do |ib|
|
24
|
+
ib.image File.open("#{Kuhsaft::Engine.root}/spec/dummy/app/assets/images/spec-image.png")
|
25
|
+
ib.image_size 'gallery'
|
26
|
+
end
|
27
|
+
|
23
28
|
factory :asset, class: Kuhsaft::Asset do |a|
|
24
29
|
a.file File.open("#{Kuhsaft::Engine.root}/spec/dummy/app/assets/images/spec-image.png")
|
25
30
|
end
|
@@ -29,7 +29,7 @@ describe 'Cms/Pages', type: :feature do
|
|
29
29
|
visit kuhsaft.edit_cms_page_path(@page)
|
30
30
|
fill_in 'page_title', with: ''
|
31
31
|
click_on 'Update Page'
|
32
|
-
within '.
|
32
|
+
within '.language-navigation' do
|
33
33
|
click_on 'EN'
|
34
34
|
end
|
35
35
|
expect(page).to have_content(@page.title_en)
|
data/spec/models/page_spec.rb
CHANGED
@@ -469,4 +469,37 @@ describe Kuhsaft::Page, type: :model do
|
|
469
469
|
expect(Kuhsaft::Page.by_identifier(cat_page.identifier)).to eq(cat_page)
|
470
470
|
end
|
471
471
|
end
|
472
|
+
|
473
|
+
describe '#cloning' do
|
474
|
+
around(:each) do |example|
|
475
|
+
I18n.with_locale :de do
|
476
|
+
example.run
|
477
|
+
end
|
478
|
+
end
|
479
|
+
|
480
|
+
before do
|
481
|
+
@page = create(:page)
|
482
|
+
end
|
483
|
+
|
484
|
+
it 'should copy the asset to the cloned brick' do
|
485
|
+
FactoryGirl.create(:image_brick, brick_list_type: 'Kuhsaft::Page', brick_list_id: @page.id)
|
486
|
+
|
487
|
+
@page.clone_bricks_to(:en)
|
488
|
+
expect(@page.bricks.unscoped.where(locale: :en).first).to be_valid
|
489
|
+
end
|
490
|
+
|
491
|
+
it 'should copy all child bricks' do
|
492
|
+
accordion = Kuhsaft::Brick.create(type: 'Kuhsaft::AccordionBrick',
|
493
|
+
brick_list_type: 'Kuhsaft::Page',
|
494
|
+
brick_list_id: @page.id)
|
495
|
+
section = Kuhsaft::Brick.create(type: 'Kuhsaft::AccordionItemBrick',
|
496
|
+
caption: 'section',
|
497
|
+
brick_list_type: 'Kuhsaft::Brick',
|
498
|
+
brick_list_id: accordion.id)
|
499
|
+
FactoryGirl.create(:text_brick, brick_list_type: 'Kuhsaft::Brick', brick_list_id: section.id)
|
500
|
+
|
501
|
+
@page.clone_bricks_to(:en)
|
502
|
+
expect(@page.bricks.unscoped.where(locale: :en).count).to eq(3)
|
503
|
+
end
|
504
|
+
end
|
472
505
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kuhsaft
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Immanuel Häussermann
|
@@ -12,216 +12,216 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2014-
|
15
|
+
date: 2014-09-28 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rspec-rails
|
19
19
|
requirement: !ruby/object:Gem::Requirement
|
20
20
|
requirements:
|
21
|
-
- - ~>
|
21
|
+
- - "~>"
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: 3.0.1
|
24
24
|
type: :development
|
25
25
|
prerelease: false
|
26
26
|
version_requirements: !ruby/object:Gem::Requirement
|
27
27
|
requirements:
|
28
|
-
- - ~>
|
28
|
+
- - "~>"
|
29
29
|
- !ruby/object:Gem::Version
|
30
30
|
version: 3.0.1
|
31
31
|
- !ruby/object:Gem::Dependency
|
32
32
|
name: rspec-activemodel-mocks
|
33
33
|
requirement: !ruby/object:Gem::Requirement
|
34
34
|
requirements:
|
35
|
-
- -
|
35
|
+
- - ">="
|
36
36
|
- !ruby/object:Gem::Version
|
37
37
|
version: '0'
|
38
38
|
type: :development
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
requirements:
|
42
|
-
- -
|
42
|
+
- - ">="
|
43
43
|
- !ruby/object:Gem::Version
|
44
44
|
version: '0'
|
45
45
|
- !ruby/object:Gem::Dependency
|
46
46
|
name: factory_girl_rails
|
47
47
|
requirement: !ruby/object:Gem::Requirement
|
48
48
|
requirements:
|
49
|
-
- -
|
49
|
+
- - ">="
|
50
50
|
- !ruby/object:Gem::Version
|
51
51
|
version: '0'
|
52
52
|
type: :development
|
53
53
|
prerelease: false
|
54
54
|
version_requirements: !ruby/object:Gem::Requirement
|
55
55
|
requirements:
|
56
|
-
- -
|
56
|
+
- - ">="
|
57
57
|
- !ruby/object:Gem::Version
|
58
58
|
version: '0'
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: capybara
|
61
61
|
requirement: !ruby/object:Gem::Requirement
|
62
62
|
requirements:
|
63
|
-
- -
|
63
|
+
- - ">="
|
64
64
|
- !ruby/object:Gem::Version
|
65
65
|
version: '2.0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
68
|
version_requirements: !ruby/object:Gem::Requirement
|
69
69
|
requirements:
|
70
|
-
- -
|
70
|
+
- - ">="
|
71
71
|
- !ruby/object:Gem::Version
|
72
72
|
version: '2.0'
|
73
73
|
- !ruby/object:Gem::Dependency
|
74
74
|
name: pg
|
75
75
|
requirement: !ruby/object:Gem::Requirement
|
76
76
|
requirements:
|
77
|
-
- -
|
77
|
+
- - ">="
|
78
78
|
- !ruby/object:Gem::Version
|
79
79
|
version: '0'
|
80
80
|
type: :development
|
81
81
|
prerelease: false
|
82
82
|
version_requirements: !ruby/object:Gem::Requirement
|
83
83
|
requirements:
|
84
|
-
- -
|
84
|
+
- - ">="
|
85
85
|
- !ruby/object:Gem::Version
|
86
86
|
version: '0'
|
87
87
|
- !ruby/object:Gem::Dependency
|
88
88
|
name: launchy
|
89
89
|
requirement: !ruby/object:Gem::Requirement
|
90
90
|
requirements:
|
91
|
-
- -
|
91
|
+
- - ">="
|
92
92
|
- !ruby/object:Gem::Version
|
93
93
|
version: '0'
|
94
94
|
type: :development
|
95
95
|
prerelease: false
|
96
96
|
version_requirements: !ruby/object:Gem::Requirement
|
97
97
|
requirements:
|
98
|
-
- -
|
98
|
+
- - ">="
|
99
99
|
- !ruby/object:Gem::Version
|
100
100
|
version: '0'
|
101
101
|
- !ruby/object:Gem::Dependency
|
102
102
|
name: i18n-tasks
|
103
103
|
requirement: !ruby/object:Gem::Requirement
|
104
104
|
requirements:
|
105
|
-
- -
|
105
|
+
- - ">="
|
106
106
|
- !ruby/object:Gem::Version
|
107
107
|
version: '0'
|
108
108
|
type: :development
|
109
109
|
prerelease: false
|
110
110
|
version_requirements: !ruby/object:Gem::Requirement
|
111
111
|
requirements:
|
112
|
-
- -
|
112
|
+
- - ">="
|
113
113
|
- !ruby/object:Gem::Version
|
114
114
|
version: '0'
|
115
115
|
- !ruby/object:Gem::Dependency
|
116
116
|
name: rake
|
117
117
|
requirement: !ruby/object:Gem::Requirement
|
118
118
|
requirements:
|
119
|
-
- -
|
119
|
+
- - ">="
|
120
120
|
- !ruby/object:Gem::Version
|
121
121
|
version: '0'
|
122
122
|
type: :development
|
123
123
|
prerelease: false
|
124
124
|
version_requirements: !ruby/object:Gem::Requirement
|
125
125
|
requirements:
|
126
|
-
- -
|
126
|
+
- - ">="
|
127
127
|
- !ruby/object:Gem::Version
|
128
128
|
version: '0'
|
129
129
|
- !ruby/object:Gem::Dependency
|
130
130
|
name: coffee-rails
|
131
131
|
requirement: !ruby/object:Gem::Requirement
|
132
132
|
requirements:
|
133
|
-
- -
|
133
|
+
- - ">="
|
134
134
|
- !ruby/object:Gem::Version
|
135
135
|
version: '0'
|
136
136
|
type: :runtime
|
137
137
|
prerelease: false
|
138
138
|
version_requirements: !ruby/object:Gem::Requirement
|
139
139
|
requirements:
|
140
|
-
- -
|
140
|
+
- - ">="
|
141
141
|
- !ruby/object:Gem::Version
|
142
142
|
version: '0'
|
143
143
|
- !ruby/object:Gem::Dependency
|
144
144
|
name: remotipart
|
145
145
|
requirement: !ruby/object:Gem::Requirement
|
146
146
|
requirements:
|
147
|
-
- -
|
147
|
+
- - ">="
|
148
148
|
- !ruby/object:Gem::Version
|
149
149
|
version: '0'
|
150
150
|
type: :runtime
|
151
151
|
prerelease: false
|
152
152
|
version_requirements: !ruby/object:Gem::Requirement
|
153
153
|
requirements:
|
154
|
-
- -
|
154
|
+
- - ">="
|
155
155
|
- !ruby/object:Gem::Version
|
156
156
|
version: '0'
|
157
157
|
- !ruby/object:Gem::Dependency
|
158
158
|
name: haml
|
159
159
|
requirement: !ruby/object:Gem::Requirement
|
160
160
|
requirements:
|
161
|
-
- -
|
161
|
+
- - ">="
|
162
162
|
- !ruby/object:Gem::Version
|
163
163
|
version: 4.0.3
|
164
164
|
type: :runtime
|
165
165
|
prerelease: false
|
166
166
|
version_requirements: !ruby/object:Gem::Requirement
|
167
167
|
requirements:
|
168
|
-
- -
|
168
|
+
- - ">="
|
169
169
|
- !ruby/object:Gem::Version
|
170
170
|
version: 4.0.3
|
171
171
|
- !ruby/object:Gem::Dependency
|
172
172
|
name: carrierwave
|
173
173
|
requirement: !ruby/object:Gem::Requirement
|
174
174
|
requirements:
|
175
|
-
- -
|
175
|
+
- - ">="
|
176
176
|
- !ruby/object:Gem::Version
|
177
177
|
version: '0'
|
178
178
|
type: :runtime
|
179
179
|
prerelease: false
|
180
180
|
version_requirements: !ruby/object:Gem::Requirement
|
181
181
|
requirements:
|
182
|
-
- -
|
182
|
+
- - ">="
|
183
183
|
- !ruby/object:Gem::Version
|
184
184
|
version: '0'
|
185
185
|
- !ruby/object:Gem::Dependency
|
186
186
|
name: mini_magick
|
187
187
|
requirement: !ruby/object:Gem::Requirement
|
188
188
|
requirements:
|
189
|
-
- -
|
189
|
+
- - ">="
|
190
190
|
- !ruby/object:Gem::Version
|
191
191
|
version: '0'
|
192
192
|
type: :runtime
|
193
193
|
prerelease: false
|
194
194
|
version_requirements: !ruby/object:Gem::Requirement
|
195
195
|
requirements:
|
196
|
-
- -
|
196
|
+
- - ">="
|
197
197
|
- !ruby/object:Gem::Version
|
198
198
|
version: '0'
|
199
199
|
- !ruby/object:Gem::Dependency
|
200
200
|
name: rdiscount
|
201
201
|
requirement: !ruby/object:Gem::Requirement
|
202
202
|
requirements:
|
203
|
-
- -
|
203
|
+
- - ">="
|
204
204
|
- !ruby/object:Gem::Version
|
205
205
|
version: '0'
|
206
206
|
type: :runtime
|
207
207
|
prerelease: false
|
208
208
|
version_requirements: !ruby/object:Gem::Requirement
|
209
209
|
requirements:
|
210
|
-
- -
|
210
|
+
- - ">="
|
211
211
|
- !ruby/object:Gem::Version
|
212
212
|
version: '0'
|
213
213
|
- !ruby/object:Gem::Dependency
|
214
214
|
name: ancestry
|
215
215
|
requirement: !ruby/object:Gem::Requirement
|
216
216
|
requirements:
|
217
|
-
- -
|
217
|
+
- - ">="
|
218
218
|
- !ruby/object:Gem::Version
|
219
219
|
version: '0'
|
220
220
|
type: :runtime
|
221
221
|
prerelease: false
|
222
222
|
version_requirements: !ruby/object:Gem::Requirement
|
223
223
|
requirements:
|
224
|
-
- -
|
224
|
+
- - ">="
|
225
225
|
- !ruby/object:Gem::Version
|
226
226
|
version: '0'
|
227
227
|
- !ruby/object:Gem::Dependency
|
@@ -256,196 +256,196 @@ dependencies:
|
|
256
256
|
name: pg_search
|
257
257
|
requirement: !ruby/object:Gem::Requirement
|
258
258
|
requirements:
|
259
|
-
- -
|
259
|
+
- - ">="
|
260
260
|
- !ruby/object:Gem::Version
|
261
261
|
version: '0'
|
262
262
|
type: :runtime
|
263
263
|
prerelease: false
|
264
264
|
version_requirements: !ruby/object:Gem::Requirement
|
265
265
|
requirements:
|
266
|
-
- -
|
266
|
+
- - ">="
|
267
267
|
- !ruby/object:Gem::Version
|
268
268
|
version: '0'
|
269
269
|
- !ruby/object:Gem::Dependency
|
270
270
|
name: htmlentities
|
271
271
|
requirement: !ruby/object:Gem::Requirement
|
272
272
|
requirements:
|
273
|
-
- -
|
273
|
+
- - ">="
|
274
274
|
- !ruby/object:Gem::Version
|
275
275
|
version: '0'
|
276
276
|
type: :runtime
|
277
277
|
prerelease: false
|
278
278
|
version_requirements: !ruby/object:Gem::Requirement
|
279
279
|
requirements:
|
280
|
-
- -
|
280
|
+
- - ">="
|
281
281
|
- !ruby/object:Gem::Version
|
282
282
|
version: '0'
|
283
283
|
- !ruby/object:Gem::Dependency
|
284
284
|
name: jquery-rails
|
285
285
|
requirement: !ruby/object:Gem::Requirement
|
286
286
|
requirements:
|
287
|
-
- -
|
287
|
+
- - ">="
|
288
288
|
- !ruby/object:Gem::Version
|
289
289
|
version: '0'
|
290
290
|
type: :runtime
|
291
291
|
prerelease: false
|
292
292
|
version_requirements: !ruby/object:Gem::Requirement
|
293
293
|
requirements:
|
294
|
-
- -
|
294
|
+
- - ">="
|
295
295
|
- !ruby/object:Gem::Version
|
296
296
|
version: '0'
|
297
297
|
- !ruby/object:Gem::Dependency
|
298
298
|
name: database_cleaner
|
299
299
|
requirement: !ruby/object:Gem::Requirement
|
300
300
|
requirements:
|
301
|
-
- -
|
301
|
+
- - ">="
|
302
302
|
- !ruby/object:Gem::Version
|
303
303
|
version: '0'
|
304
304
|
type: :development
|
305
305
|
prerelease: false
|
306
306
|
version_requirements: !ruby/object:Gem::Requirement
|
307
307
|
requirements:
|
308
|
-
- -
|
308
|
+
- - ">="
|
309
309
|
- !ruby/object:Gem::Version
|
310
310
|
version: '0'
|
311
311
|
- !ruby/object:Gem::Dependency
|
312
312
|
name: pry-rails
|
313
313
|
requirement: !ruby/object:Gem::Requirement
|
314
314
|
requirements:
|
315
|
-
- -
|
315
|
+
- - ">="
|
316
316
|
- !ruby/object:Gem::Version
|
317
317
|
version: '0'
|
318
318
|
type: :development
|
319
319
|
prerelease: false
|
320
320
|
version_requirements: !ruby/object:Gem::Requirement
|
321
321
|
requirements:
|
322
|
-
- -
|
322
|
+
- - ">="
|
323
323
|
- !ruby/object:Gem::Version
|
324
324
|
version: '0'
|
325
325
|
- !ruby/object:Gem::Dependency
|
326
326
|
name: pry-debugger
|
327
327
|
requirement: !ruby/object:Gem::Requirement
|
328
328
|
requirements:
|
329
|
-
- -
|
329
|
+
- - ">="
|
330
330
|
- !ruby/object:Gem::Version
|
331
331
|
version: '0'
|
332
332
|
type: :development
|
333
333
|
prerelease: false
|
334
334
|
version_requirements: !ruby/object:Gem::Requirement
|
335
335
|
requirements:
|
336
|
-
- -
|
336
|
+
- - ">="
|
337
337
|
- !ruby/object:Gem::Version
|
338
338
|
version: '0'
|
339
339
|
- !ruby/object:Gem::Dependency
|
340
340
|
name: better_errors
|
341
341
|
requirement: !ruby/object:Gem::Requirement
|
342
342
|
requirements:
|
343
|
-
- -
|
343
|
+
- - ">="
|
344
344
|
- !ruby/object:Gem::Version
|
345
345
|
version: '0'
|
346
346
|
type: :development
|
347
347
|
prerelease: false
|
348
348
|
version_requirements: !ruby/object:Gem::Requirement
|
349
349
|
requirements:
|
350
|
-
- -
|
350
|
+
- - ">="
|
351
351
|
- !ruby/object:Gem::Version
|
352
352
|
version: '0'
|
353
353
|
- !ruby/object:Gem::Dependency
|
354
354
|
name: binding_of_caller
|
355
355
|
requirement: !ruby/object:Gem::Requirement
|
356
356
|
requirements:
|
357
|
-
- -
|
357
|
+
- - ">="
|
358
358
|
- !ruby/object:Gem::Version
|
359
359
|
version: '0'
|
360
360
|
type: :development
|
361
361
|
prerelease: false
|
362
362
|
version_requirements: !ruby/object:Gem::Requirement
|
363
363
|
requirements:
|
364
|
-
- -
|
364
|
+
- - ">="
|
365
365
|
- !ruby/object:Gem::Version
|
366
366
|
version: '0'
|
367
367
|
- !ruby/object:Gem::Dependency
|
368
368
|
name: rubocop
|
369
369
|
requirement: !ruby/object:Gem::Requirement
|
370
370
|
requirements:
|
371
|
-
- -
|
371
|
+
- - ">="
|
372
372
|
- !ruby/object:Gem::Version
|
373
373
|
version: '0'
|
374
374
|
type: :development
|
375
375
|
prerelease: false
|
376
376
|
version_requirements: !ruby/object:Gem::Requirement
|
377
377
|
requirements:
|
378
|
-
- -
|
378
|
+
- - ">="
|
379
379
|
- !ruby/object:Gem::Version
|
380
380
|
version: '0'
|
381
381
|
- !ruby/object:Gem::Dependency
|
382
382
|
name: sass-rails
|
383
383
|
requirement: !ruby/object:Gem::Requirement
|
384
384
|
requirements:
|
385
|
-
- - ~>
|
385
|
+
- - "~>"
|
386
386
|
- !ruby/object:Gem::Version
|
387
387
|
version: 4.0.2
|
388
388
|
type: :runtime
|
389
389
|
prerelease: false
|
390
390
|
version_requirements: !ruby/object:Gem::Requirement
|
391
391
|
requirements:
|
392
|
-
- - ~>
|
392
|
+
- - "~>"
|
393
393
|
- !ruby/object:Gem::Version
|
394
394
|
version: 4.0.2
|
395
395
|
- !ruby/object:Gem::Dependency
|
396
396
|
name: rails
|
397
397
|
requirement: !ruby/object:Gem::Requirement
|
398
398
|
requirements:
|
399
|
-
- - ~>
|
399
|
+
- - "~>"
|
400
400
|
- !ruby/object:Gem::Version
|
401
401
|
version: 4.0.2
|
402
402
|
type: :runtime
|
403
403
|
prerelease: false
|
404
404
|
version_requirements: !ruby/object:Gem::Requirement
|
405
405
|
requirements:
|
406
|
-
- - ~>
|
406
|
+
- - "~>"
|
407
407
|
- !ruby/object:Gem::Version
|
408
408
|
version: 4.0.2
|
409
409
|
- !ruby/object:Gem::Dependency
|
410
410
|
name: simple_form
|
411
411
|
requirement: !ruby/object:Gem::Requirement
|
412
412
|
requirements:
|
413
|
-
- - ~>
|
413
|
+
- - "~>"
|
414
414
|
- !ruby/object:Gem::Version
|
415
415
|
version: 3.0.1
|
416
416
|
type: :runtime
|
417
417
|
prerelease: false
|
418
418
|
version_requirements: !ruby/object:Gem::Requirement
|
419
419
|
requirements:
|
420
|
-
- - ~>
|
420
|
+
- - "~>"
|
421
421
|
- !ruby/object:Gem::Version
|
422
422
|
version: 3.0.1
|
423
423
|
- !ruby/object:Gem::Dependency
|
424
424
|
name: jquery-ui-rails
|
425
425
|
requirement: !ruby/object:Gem::Requirement
|
426
426
|
requirements:
|
427
|
-
- -
|
427
|
+
- - ">="
|
428
428
|
- !ruby/object:Gem::Version
|
429
429
|
version: '0'
|
430
430
|
type: :runtime
|
431
431
|
prerelease: false
|
432
432
|
version_requirements: !ruby/object:Gem::Requirement
|
433
433
|
requirements:
|
434
|
-
- -
|
434
|
+
- - ">="
|
435
435
|
- !ruby/object:Gem::Version
|
436
436
|
version: '0'
|
437
437
|
- !ruby/object:Gem::Dependency
|
438
438
|
name: bourbon
|
439
439
|
requirement: !ruby/object:Gem::Requirement
|
440
440
|
requirements:
|
441
|
-
- -
|
441
|
+
- - ">="
|
442
442
|
- !ruby/object:Gem::Version
|
443
443
|
version: '0'
|
444
444
|
type: :runtime
|
445
445
|
prerelease: false
|
446
446
|
version_requirements: !ruby/object:Gem::Requirement
|
447
447
|
requirements:
|
448
|
-
- -
|
448
|
+
- - ">="
|
449
449
|
- !ruby/object:Gem::Version
|
450
450
|
version: '0'
|
451
451
|
description: Kuhsaft is a Rails engine that offers a simple CMS.
|
@@ -518,8 +518,8 @@ files:
|
|
518
518
|
- app/views/kuhsaft/anchor_bricks/anchor_brick/_edit.html.haml
|
519
519
|
- app/views/kuhsaft/asset_bricks/_asset_brick.html.haml
|
520
520
|
- app/views/kuhsaft/asset_bricks/asset_brick/_edit.html.haml
|
521
|
+
- app/views/kuhsaft/cms/admin/_brick_clone_menu.html.haml
|
521
522
|
- app/views/kuhsaft/cms/admin/_brick_type_dropdown.html.haml
|
522
|
-
- app/views/kuhsaft/cms/admin/_content_language_switch.html.haml
|
523
523
|
- app/views/kuhsaft/cms/admin/_empty_state.html.haml
|
524
524
|
- app/views/kuhsaft/cms/admin/_flash.html.haml
|
525
525
|
- app/views/kuhsaft/cms/admin/_main_navigation.html.haml
|
@@ -542,8 +542,10 @@ files:
|
|
542
542
|
- app/views/kuhsaft/cms/ckimages/index.html.haml
|
543
543
|
- app/views/kuhsaft/cms/pages/_branch.html.haml
|
544
544
|
- app/views/kuhsaft/cms/pages/_form.html.haml
|
545
|
+
- app/views/kuhsaft/cms/pages/_mirror_modal.html.haml
|
545
546
|
- app/views/kuhsaft/cms/pages/edit.html.haml
|
546
547
|
- app/views/kuhsaft/cms/pages/index.html.haml
|
548
|
+
- app/views/kuhsaft/cms/pages/mirror.js.haml
|
547
549
|
- app/views/kuhsaft/cms/pages/new.html.haml
|
548
550
|
- app/views/kuhsaft/cms/pages/show.html.haml
|
549
551
|
- app/views/kuhsaft/cms/pages/sort.js.erb
|
@@ -672,6 +674,7 @@ files:
|
|
672
674
|
- Rakefile
|
673
675
|
- README.md
|
674
676
|
- spec/controllers/kuhsaft/api/pages_controller_spec.rb
|
677
|
+
- spec/controllers/kuhsaft/cms/pages_controller_spec.rb
|
675
678
|
- spec/controllers/kuhsaft/pages_controller_spec.rb
|
676
679
|
- spec/controllers/kuhsaft/sitemaps_controller_spec.rb
|
677
680
|
- spec/dummy/Rakefile
|
@@ -755,28 +758,32 @@ homepage: http://github.com/screenconcept/kuhsaft
|
|
755
758
|
licenses:
|
756
759
|
- MIT
|
757
760
|
metadata: {}
|
758
|
-
post_install_message:
|
761
|
+
post_install_message: |2
|
762
|
+
! The kuhsaft gem has been deprecated and has been replaced by qBrick.
|
763
|
+
! See: https://rubygems.org/gems/qbrick
|
764
|
+
! And: https://github.com/screenconcept/kuhsaft
|
759
765
|
rdoc_options: []
|
760
766
|
require_paths:
|
761
767
|
- lib
|
762
768
|
required_ruby_version: !ruby/object:Gem::Requirement
|
763
769
|
requirements:
|
764
|
-
- -
|
770
|
+
- - ">="
|
765
771
|
- !ruby/object:Gem::Version
|
766
772
|
version: '0'
|
767
773
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
768
774
|
requirements:
|
769
|
-
- -
|
775
|
+
- - ">="
|
770
776
|
- !ruby/object:Gem::Version
|
771
777
|
version: '0'
|
772
778
|
requirements: []
|
773
779
|
rubyforge_project: kuhsaft
|
774
|
-
rubygems_version: 2.
|
780
|
+
rubygems_version: 2.1.10
|
775
781
|
signing_key:
|
776
782
|
specification_version: 4
|
777
783
|
summary: A tool that helps you to manage your content within your app.
|
778
784
|
test_files:
|
779
785
|
- spec/controllers/kuhsaft/api/pages_controller_spec.rb
|
786
|
+
- spec/controllers/kuhsaft/cms/pages_controller_spec.rb
|
780
787
|
- spec/controllers/kuhsaft/pages_controller_spec.rb
|
781
788
|
- spec/controllers/kuhsaft/sitemaps_controller_spec.rb
|
782
789
|
- spec/dummy/Rakefile
|
@@ -856,4 +863,3 @@ test_files:
|
|
856
863
|
- spec/support/kuhsaft_spec_helper.rb
|
857
864
|
- spec/support/write_expectation.rb
|
858
865
|
- spec/views/kuhsaft/sitemaps/index.xml.haml_spec.rb
|
859
|
-
has_rdoc:
|