alchemy_cms 2.1.beta5 → 2.1.beta6
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -1
- data/README.md +14 -0
- data/alchemy_cms.gemspec +1 -1
- data/app/assets/javascripts/alchemy/alchemy.base.js +8 -2
- data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.erb +1 -1
- data/app/assets/javascripts/alchemy/alchemy.link_overlay.js +1 -10
- data/app/assets/javascripts/alchemy/alchemy.routes.js.erb +9 -9
- data/app/assets/stylesheets/alchemy/base.css.scss +68 -66
- data/app/assets/stylesheets/alchemy/elements.css.scss +3 -2
- data/app/assets/stylesheets/alchemy/jquery-ui.alchemy.css.scss +1 -1
- data/app/assets/stylesheets/alchemy/jquery.Jcrop.css.scss +1 -1
- data/app/assets/stylesheets/alchemy/jquery.sb.css.scss +1 -1
- data/app/assets/stylesheets/alchemy/tinymce_content.css.scss +1 -1
- data/app/assets/stylesheets/alchemy/tinymce_dialog.css.scss +1 -1
- data/app/controllers/alchemy/admin/base_controller.rb +1 -1
- data/app/controllers/alchemy/admin/contents_controller.rb +1 -1
- data/app/controllers/alchemy/admin/elements_controller.rb +2 -1
- data/app/controllers/alchemy/admin/pages_controller.rb +18 -8
- data/app/controllers/alchemy/admin/resources_controller.rb +1 -1
- data/app/controllers/alchemy/pages_controller.rb +14 -2
- data/app/helpers/alchemy/admin/base_helper.rb +2 -2
- data/app/helpers/alchemy/admin/elements_helper.rb +1 -1
- data/app/helpers/alchemy/admin/essences_helper.rb +1 -1
- data/app/helpers/alchemy/base_helper.rb +0 -8
- data/app/helpers/alchemy/essences_helper.rb +1 -2
- data/app/helpers/alchemy/pages_helper.rb +3 -3
- data/app/models/alchemy/content.rb +27 -3
- data/app/models/alchemy/element.rb +2 -2
- data/app/models/alchemy/page.rb +4 -4
- data/app/models/alchemy/user.rb +5 -1
- data/app/views/alchemy/admin/clipboard/insert.js.erb +9 -9
- data/app/views/alchemy/admin/dashboard/index.html.erb +1 -1
- data/app/views/alchemy/admin/elements/create.js.erb +26 -19
- data/app/views/alchemy/admin/essence_pictures/assign.js.erb +1 -1
- data/app/views/alchemy/admin/essence_pictures/edit.html.erb +4 -4
- data/app/views/alchemy/admin/essence_pictures/update.js.erb +1 -1
- data/app/views/alchemy/admin/layoutpages/index.html.erb +1 -14
- data/app/views/alchemy/admin/pages/_external_link.html.erb +3 -13
- data/app/views/alchemy/admin/pages/index.html.erb +1 -14
- data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +22 -0
- data/app/views/alchemy/admin/partials/_pagination_links.html.erb +3 -1
- data/app/views/alchemy/admin/pictures/update.js.erb +2 -0
- data/app/views/alchemy/admin/trash/index.html.erb +1 -1
- data/app/views/alchemy/admin/users/_user.html.erb +1 -1
- data/config/locales/alchemy.de.yml +29 -17
- data/config/locales/alchemy.en.yml +5 -4
- data/lib/alchemy/capistrano.rb +5 -0
- data/lib/alchemy/i18n.rb +1 -1
- data/lib/alchemy/page_layout.rb +1 -1
- data/lib/alchemy/scoped_pagination_link_renderer.rb +27 -0
- data/lib/alchemy/version.rb +1 -1
- data/lib/alchemy_cms.rb +1 -1
- data/spec/controllers/admin/contents_controller_spec.rb +19 -0
- data/spec/controllers/admin/pages_controller_spec.rb +19 -0
- data/spec/controllers/base_controller_spec.rb +1 -1
- data/spec/controllers/pages_controller_spec.rb +62 -0
- data/spec/dummy/app/views/layouts/.gitkeep +0 -0
- data/spec/integration/admin/pages_controller_spec.rb +42 -13
- data/spec/integration/pages_controller_spec.rb +2 -2
- data/spec/models/content_spec.rb +40 -0
- data/spec/models/element_spec.rb +50 -0
- data/spec/models/page_spec.rb +45 -1
- data/spec/routing_spec.rb +27 -29
- data/spec/spec_helper.rb +2 -2
- metadata +40 -36
- data/spec/dummy/app/views/layouts/application.html.erb +0 -14
@@ -0,0 +1,22 @@
|
|
1
|
+
<div class="button_with_label">
|
2
|
+
<%= select_tag(
|
3
|
+
'language',
|
4
|
+
options_for_select(@languages.map { |l| [l.name, l.id] }, session[:language_id]),
|
5
|
+
:id => 'language_tree_select',
|
6
|
+
:class => 'short'
|
7
|
+
) %>
|
8
|
+
<label><%= t("Language tree") %></label>
|
9
|
+
</div>
|
10
|
+
|
11
|
+
<% content_for :javascripts do %>
|
12
|
+
<script type="text/javascript" charset="utf-8">
|
13
|
+
(function($) {
|
14
|
+
$('#language_tree_select').on('change', function() {
|
15
|
+
Alchemy.pleaseWaitOverlay();
|
16
|
+
$.get('<%= switch_language_admin_pages_path %>', {
|
17
|
+
language_id: this.value
|
18
|
+
});
|
19
|
+
});
|
20
|
+
})(jQuery);
|
21
|
+
</script>
|
22
|
+
<% end %>
|
@@ -1,5 +1,7 @@
|
|
1
1
|
<%= will_paginate(
|
2
2
|
items,
|
3
3
|
:previous_label => '« ' + t('pagination.previous_page'),
|
4
|
-
:next_label => t('pagination.next_page') + ' »'
|
4
|
+
:next_label => t('pagination.next_page') + ' »',
|
5
|
+
:renderer => 'Alchemy::ScopedPaginationLinkRenderer',
|
6
|
+
:params => defined?(scope) ? {:scope => scope} : nil
|
5
7
|
) %>
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<%- else -%>
|
7
7
|
<div class="info">
|
8
8
|
<%= render_icon('info') %>
|
9
|
-
<%= t('Drag an element over to the element window to restore it
|
9
|
+
<%= t('Drag an element over to the element window to restore it') %>
|
10
10
|
</div>
|
11
11
|
<div id="trash_items">
|
12
12
|
<%- @elements.each do |element| -%>
|
@@ -8,7 +8,7 @@
|
|
8
8
|
<td><%= user.lastname -%></td>
|
9
9
|
<td class="email"><%= user.email %></td>
|
10
10
|
<td><%= t(user.language, :scope => 'translations') %></td>
|
11
|
-
<td class="role"><%=
|
11
|
+
<td class="role"><%= user.human_role_name %></td>
|
12
12
|
<td class="tools">
|
13
13
|
<%- permitted_to?(:destroy, :alchemy_admin_users) do -%>
|
14
14
|
<%= link_to_confirmation_window(
|
@@ -2,9 +2,6 @@
|
|
2
2
|
|
3
3
|
de:
|
4
4
|
|
5
|
-
yes: "Ja"
|
6
|
-
no: "Nein"
|
7
|
-
|
8
5
|
# = Alchemy Translations
|
9
6
|
# All translations used in Alchemy CMS are inside this alchemy namespace.
|
10
7
|
alchemy:
|
@@ -193,7 +190,7 @@ de:
|
|
193
190
|
"Do you really want to clear the clipboard?": "Wollen Sie die Zwischenablage wirklich leeren?"
|
194
191
|
"Do you really want to clear the trash?": "Wollen Sie den Papierkorb wirklich leeren?"
|
195
192
|
"Do you really want to delete this content?": "Wollen Sie diesen Inhalt wirklich löschen?"
|
196
|
-
"Drag an element over to the element window to restore it
|
193
|
+
"Drag an element over to the element window to restore it": "Ziehen Sie ein Element mit der Maus in das Elemente Fenster, um es wieder herzustellen."
|
197
194
|
"Edit Picturemask": "Bildmaske bearbeiten"
|
198
195
|
"Element trashed": "Das Element wurde in den Papierkorb gelegt"
|
199
196
|
"Error with the Flash® Uploader!": "Fehler mit dem Flash® Uploader!"
|
@@ -210,6 +207,7 @@ de:
|
|
210
207
|
"If you have any problems using the Flash uploader you can switch to": "Sollten Sie Probleme mit dem Flash® Uploader haben, wechseln Sie einfach zur %{link}"
|
211
208
|
"Image missing": "Bild fehlt"
|
212
209
|
"Image size": "Bildgröße"
|
210
|
+
"Image updated successfully": "Bild wurde gespeichert"
|
213
211
|
"Index Error after saving Element. Please try again!": "Indizierungsfehler beim Speichern des Elements. Bitte erneut versuchen!"
|
214
212
|
"Language successfully created.": "Sprache wurde erfolgreich erstellt."
|
215
213
|
"Language successfully destroyed.": "Sprache wurde erfolgreich gelöscht."
|
@@ -231,12 +229,12 @@ de:
|
|
231
229
|
"Page saved": "%{name} wurde gespeichert"
|
232
230
|
"Page Preview": "Seitenvorschau"
|
233
231
|
"Page cache flushed": "Seitencache wurde geleert"
|
234
|
-
"Page not public": "Seite nicht
|
235
|
-
"Page not restricted": "Seite nicht geschützt"
|
236
|
-
"Page not visible": "Seite nicht in der Navigation sichtbar"
|
237
|
-
"Page public": "Seite
|
238
|
-
"Page restricted": "Seite geschützt"
|
239
|
-
"Page visible": "Seite in der Navigation sichtbar"
|
232
|
+
"Page not public": "Seite ist nicht veröffentlicht"
|
233
|
+
"Page not restricted": "Seite ist nicht Passwort geschützt"
|
234
|
+
"Page not visible": "Seite ist nicht in der Navigation sichtbar"
|
235
|
+
"Page public": "Seite ist veröffentlicht"
|
236
|
+
"Page restricted": "Seite ist Passwort geschützt"
|
237
|
+
"Page visible": "Seite ist in der Navigation sichtbar"
|
240
238
|
"Pages order saved": "Seitensortierung wurde gespeichert"
|
241
239
|
"Password": "Passwort"
|
242
240
|
"Paste from clipboard": "Aus Zwischenablage"
|
@@ -434,7 +432,7 @@ de:
|
|
434
432
|
no_search_results: "Keine Suchergebnisse."
|
435
433
|
"not a valid image": "Keine valide Bilddatei."
|
436
434
|
"other Elements": "sonst. Elemente"
|
437
|
-
"Page created
|
435
|
+
"Page created": "Seite '%{name}' wurde erstellt."
|
438
436
|
page_for_links:
|
439
437
|
choose_page: "%{name} wählen"
|
440
438
|
page_locked: "Die Seite ist gesperrt"
|
@@ -682,6 +680,20 @@ de:
|
|
682
680
|
name: "Name"
|
683
681
|
public: "sichtbar"
|
684
682
|
|
683
|
+
alchemy/essence_picture:
|
684
|
+
caption: "Untertitel"
|
685
|
+
title: "Titel"
|
686
|
+
alt_tag: "Alternativ-Text"
|
687
|
+
link: Link
|
688
|
+
link_class_name: "Link CSS-Klasse"
|
689
|
+
link_title: Link-Titel
|
690
|
+
css_class: CSS-Klasse
|
691
|
+
link_target: Link-Ziel
|
692
|
+
render_size: Darstellungsgröße
|
693
|
+
crop_from: Bildmaskenursprung
|
694
|
+
crop_size: Bildmaskenausmaß
|
695
|
+
picture_id: Bild
|
696
|
+
|
685
697
|
alchemy/language:
|
686
698
|
code: "Sprachkürzel"
|
687
699
|
default: "Standardsprache"
|
@@ -695,19 +707,19 @@ de:
|
|
695
707
|
language: "Sprache"
|
696
708
|
locked: "Die Seite ist gesperrt"
|
697
709
|
locked_by: "Gesperrt durch"
|
698
|
-
meta_description: "
|
699
|
-
meta_keywords: "
|
710
|
+
meta_description: "Seitenbeschreibung"
|
711
|
+
meta_keywords: "Suchbegriffe"
|
700
712
|
name: "Name"
|
701
713
|
page_layout: "Seitentyp"
|
702
|
-
public: "
|
703
|
-
|
714
|
+
public: "veröffentlicht"
|
715
|
+
restricted: "Passwort geschützt"
|
704
716
|
robot_follow: "den Robot Links folgen lassen"
|
705
717
|
robot_index: "durch Robot indizieren"
|
706
|
-
sitemap: "in der
|
718
|
+
sitemap: "in der Seitenübersicht sichtbar"
|
707
719
|
title: "Seitentitel"
|
708
720
|
updated_at: "Aktualisiert am"
|
709
721
|
urlname: "URL-Name"
|
710
|
-
visible: "in der Navigation
|
722
|
+
visible: "in der Navigation sichtbar"
|
711
723
|
|
712
724
|
alchemy/picture:
|
713
725
|
image_filename: "Dateiname"
|
@@ -208,6 +208,7 @@ en:
|
|
208
208
|
document: "File"
|
209
209
|
documents: "Files"
|
210
210
|
download_file: "Download file '%{filename}'"
|
211
|
+
"Drag an element over to the element window to restore it": "Drag an element over to the element window to restore it."
|
211
212
|
drag_to_sort: "Drag'n'Drop to sort images"
|
212
213
|
edit_file_properties: "Edit Fileproperties"
|
213
214
|
edit_image_properties: "Edit image properties."
|
@@ -278,7 +279,7 @@ en:
|
|
278
279
|
no_more_elements_to_add: "No more elements available."
|
279
280
|
no_search_results: "Your search did not return any results."
|
280
281
|
"not a valid image": "This is not an valid image."
|
281
|
-
"Page created
|
282
|
+
"Page created": "Page: '%{name}' created."
|
282
283
|
page_for_links.choose_page: "Choose %{name}"
|
283
284
|
page_locked: "This page is locked by another user."
|
284
285
|
page_properties: "page properties"
|
@@ -503,14 +504,14 @@ en:
|
|
503
504
|
name: "Name"
|
504
505
|
page_layout: "Pagetype"
|
505
506
|
public: "public"
|
506
|
-
|
507
|
+
restricted: "restricted"
|
507
508
|
robot_follow: "robot may follow links"
|
508
509
|
robot_index: "allow robot to index"
|
509
|
-
sitemap: "
|
510
|
+
sitemap: "visible in sitemap"
|
510
511
|
title: "Title"
|
511
512
|
updated_at: "Updated at"
|
512
513
|
urlname: "Urlname"
|
513
|
-
visible: "
|
514
|
+
visible: "visible in navigation"
|
514
515
|
|
515
516
|
alchemy/picture:
|
516
517
|
image_filename: "Filename"
|
data/lib/alchemy/capistrano.rb
CHANGED
@@ -49,6 +49,11 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
49
49
|
|
50
50
|
end
|
51
51
|
|
52
|
+
desc "Upgrades production database to current Alchemy CMS version"
|
53
|
+
task :upgrade do
|
54
|
+
run "cd #{current_path} && RAILS_ENV=production #{rake} alchemy:upgrade"
|
55
|
+
end
|
56
|
+
|
52
57
|
namespace :database_yml do
|
53
58
|
|
54
59
|
desc "Creates the database.yml file"
|
data/lib/alchemy/i18n.rb
CHANGED
@@ -22,7 +22,7 @@ module Alchemy
|
|
22
22
|
#
|
23
23
|
def self.t(msg, *args)
|
24
24
|
options = args.extract_options!
|
25
|
-
options[:default] = options[:default] ? options[:default] : msg.humanize
|
25
|
+
options[:default] = options[:default] ? options[:default] : msg.to_s.humanize
|
26
26
|
scope = ['alchemy']
|
27
27
|
case options[:scope].class.name
|
28
28
|
when "Array"
|
data/lib/alchemy/page_layout.rb
CHANGED
@@ -61,7 +61,7 @@ module Alchemy
|
|
61
61
|
def self.get_layouts_for_select(language_id, layoutpage = false)
|
62
62
|
layouts_for_select = [ [ Alchemy::I18n.t("Please choose"), "" ] ]
|
63
63
|
selectable_layouts(language_id, layoutpage).each do |layout|
|
64
|
-
display_name = Alchemy::I18n.t("
|
64
|
+
display_name = Alchemy::I18n.t("page_layout_names.#{layout['name']}", :default => layout['name'].camelize)
|
65
65
|
layouts_for_select << [display_name, layout["name"]]
|
66
66
|
end
|
67
67
|
layouts_for_select
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# A custom WillPaginate LinkRenderer Class for scoping the urls.
|
2
|
+
require 'will_paginate/view_helpers/action_view'
|
3
|
+
|
4
|
+
module Alchemy
|
5
|
+
class ScopedPaginationLinkRenderer < WillPaginate::ActionView::LinkRenderer
|
6
|
+
|
7
|
+
def url(page)
|
8
|
+
@base_url_params ||= begin
|
9
|
+
url_params = merge_get_params(default_url_params)
|
10
|
+
merge_optional_params(url_params)
|
11
|
+
end
|
12
|
+
|
13
|
+
url_params = @base_url_params.dup
|
14
|
+
add_current_page_param(url_params, page)
|
15
|
+
|
16
|
+
if url_params[:scope]
|
17
|
+
scope = url_params[:scope]
|
18
|
+
url_params.delete(:scope)
|
19
|
+
url_params.delete(:controller)
|
20
|
+
scope.url_for(url_params)
|
21
|
+
else
|
22
|
+
@template.url_for(url_params)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
data/lib/alchemy/version.rb
CHANGED
data/lib/alchemy_cms.rb
CHANGED
@@ -17,7 +17,7 @@ if defined?(Rails) && Rails::VERSION::MAJOR == 3
|
|
17
17
|
require 'alchemy/version'
|
18
18
|
require 'alchemy/auth_engine'
|
19
19
|
require 'alchemy/engine'
|
20
|
-
%w(config essence page_layout modules remote_pagination_link_renderer tinymce i18n).each do |class_name|
|
20
|
+
%w(config essence page_layout modules scoped_pagination_link_renderer remote_pagination_link_renderer tinymce i18n).each do |class_name|
|
21
21
|
require File.join(File.dirname(__FILE__), "alchemy", class_name)
|
22
22
|
end
|
23
23
|
require File.join(File.dirname(__FILE__), "alchemy", "seeder")
|
@@ -13,4 +13,23 @@ describe Alchemy::Admin::ContentsController do
|
|
13
13
|
@element.ingredient('intro').should == "Peters Petshop"
|
14
14
|
end
|
15
15
|
|
16
|
+
describe "#order" do
|
17
|
+
|
18
|
+
context "with content_ids in params" do
|
19
|
+
|
20
|
+
before(:each) do
|
21
|
+
@element = Factory(:element)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should reorder the contents" do
|
25
|
+
content_ids = @element.contents.essence_texts.collect(&:id)
|
26
|
+
post :order, {:content_ids => content_ids.reverse, :format => :js}
|
27
|
+
response.status.should == 200
|
28
|
+
@element.contents.essence_texts.collect(&:id).should == content_ids.reverse
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
16
35
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Alchemy::Admin::PagesController do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
activate_authlogic
|
7
|
+
Alchemy::UserSession.create Factory(:admin_user)
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "#flush", :focus => true do
|
11
|
+
|
12
|
+
it "should remove the cache of all pages" do
|
13
|
+
post :flush, {:format => :js}
|
14
|
+
response.status.should == 200
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -17,7 +17,7 @@ describe Alchemy::BaseController do
|
|
17
17
|
controller.session[:language_code].should == @language.code
|
18
18
|
end
|
19
19
|
|
20
|
-
it "should set the language from id as string"
|
20
|
+
it "should set the language from id as string" do
|
21
21
|
@language = Factory(:language)
|
22
22
|
controller.send :set_language_from, @language.id.to_s
|
23
23
|
controller.session[:language_id].should == @language.id
|
@@ -37,4 +37,66 @@ describe Alchemy::PagesController do
|
|
37
37
|
|
38
38
|
end
|
39
39
|
|
40
|
+
describe "Layout rendering" do
|
41
|
+
|
42
|
+
context "with param layout set to none" do
|
43
|
+
|
44
|
+
it "should not render a layout" do
|
45
|
+
get :show, :urlname => :home, :layout => false
|
46
|
+
response.body.should_not have_content('<head>')
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
context "with param layout set to a custom layout" do
|
52
|
+
|
53
|
+
before do
|
54
|
+
@custom_layout = Rails.root.join('app/views/layouts', 'custom.html.erb')
|
55
|
+
File.open(@custom_layout, 'w') do |custom_layout|
|
56
|
+
custom_layout.puts "<html>I am a custom layout</html>"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should render the custom layout" do
|
61
|
+
get :show, :urlname => :home, :layout => 'custom'
|
62
|
+
response.body.should have_content('I am a custom layout')
|
63
|
+
end
|
64
|
+
|
65
|
+
after do
|
66
|
+
FileUtils.rm(@custom_layout)
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
context "with application layout absent" do
|
72
|
+
|
73
|
+
it "should render pages layout" do
|
74
|
+
get :show, :urlname => :home
|
75
|
+
response.body.should_not have_content('I am the application layout')
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
context "with application layout present" do
|
81
|
+
|
82
|
+
before do
|
83
|
+
@app_layout = Rails.root.join('app/views/layouts', 'application.html.erb')
|
84
|
+
File.open(@app_layout, 'w') do |app_layout|
|
85
|
+
app_layout.puts "<html>I am the application layout</html>"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should render application layout" do
|
90
|
+
get :show, :urlname => :home
|
91
|
+
response.body.should have_content('I am the application layout')
|
92
|
+
end
|
93
|
+
|
94
|
+
after do
|
95
|
+
FileUtils.rm(@app_layout)
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
|
40
102
|
end
|
File without changes
|
@@ -1,46 +1,73 @@
|
|
1
|
+
# Skipping on Travis-CI, because capybara-webkit does not install on travis.
|
2
|
+
unless ENV["CI"]
|
3
|
+
|
1
4
|
require 'spec_helper'
|
2
5
|
|
3
|
-
describe Alchemy::Admin::PagesController do
|
6
|
+
describe Alchemy::Admin::PagesController, :js => true do
|
4
7
|
|
5
|
-
describe "language tree switching"
|
8
|
+
describe "language tree switching" do
|
6
9
|
|
7
10
|
context "in a multilangual environment" do
|
8
11
|
|
9
|
-
before(:
|
12
|
+
before(:all) do
|
10
13
|
Factory.build(:admin_user).save_without_session_maintenance
|
11
|
-
Factory(:language)
|
12
|
-
Factory(:language_root_page, :language => Alchemy::Language.get_default, :name => 'Deutsch')
|
13
|
-
Factory(:language_root_page, :name => 'Klingonian')
|
14
|
+
@language = Factory(:language)
|
15
|
+
@german_root = Factory(:language_root_page, :language => Alchemy::Language.get_default, :name => 'Deutsch')
|
16
|
+
@klingonian_root = Factory(:language_root_page, :name => 'Klingonian')
|
14
17
|
end
|
15
18
|
|
16
19
|
it "one should be able to switch the language tree" do
|
17
|
-
pending "This driver does not execute javascript as it should"
|
18
20
|
login_to_alchemy
|
19
21
|
visit('/alchemy/admin/pages')
|
20
22
|
page.select 'Klingonian', :from => 'language'
|
21
23
|
within('#sitemap') { page.should have_content('Klingonian') }
|
22
24
|
end
|
23
25
|
|
26
|
+
after(:all) {
|
27
|
+
@language.destroy
|
28
|
+
@klingonian_root.destroy
|
29
|
+
@german_root.destroy
|
30
|
+
}
|
31
|
+
|
24
32
|
end
|
25
33
|
|
26
34
|
context "with no language root page" do
|
27
35
|
|
28
|
-
before(:
|
36
|
+
before(:all) do
|
29
37
|
Factory.build(:admin_user).save_without_session_maintenance
|
38
|
+
@language = Factory(:language)
|
30
39
|
end
|
31
40
|
|
32
|
-
it "it should display the form for creating
|
33
|
-
pending "This driver does not work."
|
41
|
+
it "it should display the form for creating language root" do
|
34
42
|
login_to_alchemy
|
35
43
|
visit('/alchemy/admin/pages')
|
36
|
-
|
44
|
+
page.select 'Klingonian', :from => 'language'
|
37
45
|
within('#archive_all') do
|
38
46
|
page.should have_content('This language tree does not exist')
|
39
|
-
page.should have_content('Do you want to copy')
|
40
|
-
page.should have_content('do you want to create a new empty language tree')
|
41
47
|
end
|
42
48
|
end
|
43
49
|
|
50
|
+
after(:all) {
|
51
|
+
@language.destroy
|
52
|
+
}
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
describe "flush complete page cache" do
|
59
|
+
|
60
|
+
before(:all) do
|
61
|
+
Factory.build(:admin_user).save_without_session_maintenance
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should remove the cache of all pages" do
|
65
|
+
login_to_alchemy
|
66
|
+
visit '/alchemy/admin/pages'
|
67
|
+
click_link 'Flush page cache'
|
68
|
+
within('#flash_notices') do
|
69
|
+
page.should have_content('Page cache flushed')
|
70
|
+
end
|
44
71
|
end
|
45
72
|
|
46
73
|
end
|
@@ -54,3 +81,5 @@ def login_to_alchemy
|
|
54
81
|
fill_in('alchemy_user_session_password', :with => 's3cr3t')
|
55
82
|
click_on('Login')
|
56
83
|
end
|
84
|
+
|
85
|
+
end
|