alchemy_cms 3.0.0.rc7 → 3.0.0.rc8
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/README.md +1 -1
- data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.coffee +0 -2
- data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +26 -2
- data/app/assets/javascripts/alchemy/alchemy.preview_window.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.translations.js.coffee +22 -0
- data/app/assets/stylesheets/alchemy/base.scss +1 -5
- data/app/assets/stylesheets/alchemy/elements.scss +11 -61
- data/app/assets/stylesheets/alchemy/frame.scss +1 -1
- data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +1 -1
- data/app/controllers/alchemy/admin/attachments_controller.rb +1 -1
- data/app/controllers/alchemy/admin/base_controller.rb +7 -13
- data/app/controllers/alchemy/admin/clipboard_controller.rb +15 -10
- data/app/controllers/alchemy/admin/elements_controller.rb +15 -11
- data/app/controllers/alchemy/admin/essence_pictures_controller.rb +8 -1
- data/app/controllers/alchemy/admin/pages_controller.rb +95 -22
- data/app/controllers/alchemy/admin/tags_controller.rb +1 -1
- data/app/controllers/alchemy/pictures_controller.rb +33 -32
- data/app/helpers/alchemy/admin/base_helper.rb +3 -16
- data/app/models/alchemy/element.rb +1 -1
- data/app/models/alchemy/page/page_naming.rb +4 -2
- data/app/models/alchemy/page/page_natures.rb +1 -1
- data/app/models/alchemy/page.rb +20 -1
- data/app/models/alchemy/picture.rb +1 -0
- data/app/models/alchemy/tree_node.rb +4 -0
- data/app/views/alchemy/admin/contents/destroy.js.erb +4 -0
- data/app/views/alchemy/admin/dashboard/index.html.erb +1 -1
- data/app/views/alchemy/admin/elements/_element.html.erb +11 -12
- data/app/views/alchemy/admin/elements/_new_element_form.html.erb +0 -3
- data/app/views/alchemy/admin/elements/create.js.erb +3 -3
- data/app/views/alchemy/admin/elements/index.html.erb +4 -19
- data/app/views/alchemy/admin/elements/new.html.erb +0 -3
- data/app/views/alchemy/admin/elements/trash.js.erb +12 -16
- data/app/views/alchemy/admin/pages/_page.html.erb +1 -1
- data/app/views/alchemy/admin/pages/edit.html.erb +36 -30
- data/app/views/alchemy/admin/pictures/edit_multiple.html.erb +1 -1
- data/app/views/alchemy/admin/trash/clear.js.erb +4 -0
- data/config/locales/alchemy.de.yml +56 -84
- data/config/locales/alchemy.en.yml +326 -105
- data/config/locales/alchemy.fr.yml +942 -0
- data/config/locales/alchemy.nl.yml +111 -137
- data/config/locales/simple_form.fr.yml +26 -0
- data/lib/alchemy/engine.rb +7 -1
- data/lib/alchemy/i18n.rb +7 -1
- data/lib/alchemy/middleware/rescue_old_cookies.rb +27 -0
- data/lib/alchemy/permissions.rb +1 -1
- data/lib/alchemy/version.rb +1 -1
- data/spec/controllers/admin/clipboard_controller_spec.rb +16 -19
- data/spec/controllers/admin/elements_controller_spec.rb +20 -23
- data/spec/controllers/admin/essence_pictures_controller_spec.rb +22 -6
- data/spec/controllers/admin/pages_controller_spec.rb +94 -5
- data/spec/controllers/pictures_controller_spec.rb +44 -3
- data/spec/features/admin/link_overlay_spec.rb +1 -0
- data/spec/features/admin/locale_select_feature_spec.rb +22 -0
- data/spec/libraries/i18n_spec.rb +30 -0
- data/spec/libraries/permissions_spec.rb +1 -1
- data/spec/models/element_spec.rb +5 -4
- data/spec/models/page_spec.rb +137 -8
- data/spec/spec_helper.rb +23 -19
- data/vendor/assets/javascripts/jquery_plugins/jquery.ui.nestedSortable.js +9 -3
- metadata +12 -10
- data/app/models/alchemy/clipboard.rb +0 -74
- data/app/views/alchemy/admin/contents/destroy.js.coffee +0 -4
- data/app/views/alchemy/admin/elements/_add_element_button.html.erb +0 -18
- data/app/views/alchemy/admin/trash/clear.js.coffee +0 -4
- data/spec/models/clipboard_spec.rb +0 -111
- data/spec/support/phantomjs_mavericks_fix.rb +0 -32
@@ -164,10 +164,9 @@ module Alchemy
|
|
164
164
|
end
|
165
165
|
|
166
166
|
describe 'Picture processing' do
|
167
|
-
|
168
|
-
|
169
|
-
let(:big_picture) { Picture.create(image_file: fixture_file_upload(File.expand_path('../../fixtures/80x60.png', __FILE__), 'image/png')) }
|
167
|
+
let(:big_picture) { Picture.create(:image_file => fixture_file_upload(File.expand_path('../../fixtures/80x60.png', __FILE__), 'image/png')) }
|
170
168
|
|
169
|
+
context "with crop and size parameters" do
|
171
170
|
it "should return a cropped image." do
|
172
171
|
options = {
|
173
172
|
crop: 'crop',
|
@@ -178,6 +177,19 @@ module Alchemy
|
|
178
177
|
response.body[0x10..0x18].unpack('NN').should == [10,10]
|
179
178
|
end
|
180
179
|
|
180
|
+
context "without a full size specification" do
|
181
|
+
it "should raise an error" do
|
182
|
+
options = {
|
183
|
+
:crop => 'crop',
|
184
|
+
:size => '10',
|
185
|
+
:format => 'png'
|
186
|
+
}
|
187
|
+
expect do
|
188
|
+
get :show, options.merge(:id => big_picture.id, :sh => big_picture.security_token(options))
|
189
|
+
end.to raise_error ArgumentError
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
181
193
|
context "without upsample parameter" do
|
182
194
|
it "should not upsample the image." do
|
183
195
|
options = {
|
@@ -203,6 +215,35 @@ module Alchemy
|
|
203
215
|
end
|
204
216
|
end
|
205
217
|
end
|
218
|
+
|
219
|
+
context "without crop but with size parameter" do
|
220
|
+
it "should resize the image preserving aspect ratio" do
|
221
|
+
options = {
|
222
|
+
:size => '40x40',
|
223
|
+
:format => 'png'
|
224
|
+
}
|
225
|
+
get :show, options.merge(:id => big_picture.id, :sh => big_picture.security_token(options))
|
226
|
+
response.body[0x10..0x18].unpack('NN').should == [40,30]
|
227
|
+
end
|
228
|
+
|
229
|
+
it "should resize the image inferring the height if not given" do
|
230
|
+
options = {
|
231
|
+
:size => '40x',
|
232
|
+
:format => 'png'
|
233
|
+
}
|
234
|
+
get :show, options.merge(:id => big_picture.id, :sh => big_picture.security_token(options))
|
235
|
+
response.body[0x10..0x18].unpack('NN').should == [40,30]
|
236
|
+
end
|
237
|
+
|
238
|
+
it "should resize the image inferring the width if not given" do
|
239
|
+
options = {
|
240
|
+
:size => 'x30',
|
241
|
+
:format => 'png'
|
242
|
+
}
|
243
|
+
get :show, options.merge(:id => big_picture.id, :sh => big_picture.security_token(options))
|
244
|
+
response.body[0x10..0x18].unpack('NN').should == [40,30]
|
245
|
+
end
|
246
|
+
end
|
206
247
|
end
|
207
248
|
|
208
249
|
end
|
@@ -46,6 +46,7 @@ describe "Link overlay" do
|
|
46
46
|
Alchemy::Page.any_instance.stub(:definition).and_return({'redirects_to_external' => true})
|
47
47
|
visit link_admin_pages_path
|
48
48
|
page.should_not have_selector('ul#sitemap li div[name="/http-www-google-com"] a')
|
49
|
+
Alchemy::Page.any_instance.unstub(:definition)
|
49
50
|
end
|
50
51
|
|
51
52
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Locale select' do
|
4
|
+
let(:a_page) { FactoryGirl.create(:public_page) }
|
5
|
+
before do
|
6
|
+
Alchemy::I18n.stub(translation_files: ['alchemy.kl.yml', 'alchemy.jp.yml', 'alchemy.cz.yml'])
|
7
|
+
authorize_as_admin
|
8
|
+
end
|
9
|
+
|
10
|
+
it "contains all locales in a selectbox" do
|
11
|
+
visit admin_dashboard_path
|
12
|
+
expect(page).to have_select('change_locale', options: ['Kl', 'Jp', 'Cz'])
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'when having available_locales set for Alchemy::I18n' do
|
16
|
+
before { Alchemy::I18n.stub(available_locales: [:jp, :cz]) }
|
17
|
+
it "provides only that locales" do
|
18
|
+
visit admin_dashboard_path
|
19
|
+
expect(page).to have_select('change_locale', options: ['Jp', 'Cz'])
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Alchemy
|
4
|
+
describe I18n do
|
5
|
+
describe '.translation_files' do
|
6
|
+
subject { I18n.translation_files }
|
7
|
+
it { should be_a Array }
|
8
|
+
it { should be_any { |f| f =~ /alchemy.*.yml/ } }
|
9
|
+
end
|
10
|
+
|
11
|
+
describe '.available_locales' do
|
12
|
+
subject { I18n.available_locales }
|
13
|
+
before { I18n.stub(translation_files: ['alchemy.kl.yml']) }
|
14
|
+
it { should be_a Array }
|
15
|
+
it { should include :kl }
|
16
|
+
|
17
|
+
context 'when locales are already set in @@available_locales' do
|
18
|
+
before { I18n.class_variable_set(:@@available_locales, [:kl, :jp]) }
|
19
|
+
it { should eq([:kl, :jp]) }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '.available_locales=' do
|
24
|
+
it "assigns the given locales to @@available_locales" do
|
25
|
+
I18n.available_locales = [:kl, :nl, :cn]
|
26
|
+
expect(I18n.class_variable_get(:@@available_locales)).to eq([:kl, :nl, :cn])
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/spec/models/element_spec.rb
CHANGED
@@ -122,11 +122,12 @@ module Alchemy
|
|
122
122
|
describe '.all_from_clipboard_for_page' do
|
123
123
|
let(:element_1) { FactoryGirl.build_stubbed(:element) }
|
124
124
|
let(:element_2) { FactoryGirl.build_stubbed(:element, name: 'news') }
|
125
|
-
let(:page)
|
126
|
-
let(:clipboard) { [{id
|
127
|
-
|
125
|
+
let(:page) { FactoryGirl.build_stubbed(:public_page) }
|
126
|
+
let(:clipboard) { [{'id' => element_1.id.to_s}, {'id' => element_2.id.to_s}] }
|
127
|
+
|
128
|
+
before do
|
128
129
|
Element.stub(:all_from_clipboard).and_return([element_1, element_2])
|
129
|
-
|
130
|
+
end
|
130
131
|
|
131
132
|
it "return all elements from clipboard that could be placed on page" do
|
132
133
|
elements = Element.all_from_clipboard_for_page(clipboard, page)
|
data/spec/models/page_spec.rb
CHANGED
@@ -106,9 +106,20 @@ module Alchemy
|
|
106
106
|
expect(external_page).to be_valid
|
107
107
|
end
|
108
108
|
|
109
|
-
|
110
|
-
|
111
|
-
|
109
|
+
context 'on create' do
|
110
|
+
it "is valid without urlname given" do
|
111
|
+
external_page.urlname = ''
|
112
|
+
expect(external_page).to be_valid
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
context 'on update' do
|
117
|
+
before { external_page.save! }
|
118
|
+
|
119
|
+
it "is not valid without urlname given" do
|
120
|
+
external_page.urlname = ''
|
121
|
+
expect(external_page).to_not be_valid
|
122
|
+
end
|
112
123
|
end
|
113
124
|
end
|
114
125
|
end
|
@@ -313,8 +324,8 @@ module Alchemy
|
|
313
324
|
page_1 = FactoryGirl.create(:page, :language => language)
|
314
325
|
page_2 = FactoryGirl.create(:page, :language => language, :name => 'Another page')
|
315
326
|
clipboard = [
|
316
|
-
{
|
317
|
-
{
|
327
|
+
{'id' => page_1.id.to_s, 'action' => 'copy'},
|
328
|
+
{'id' => page_2.id.to_s, 'action' => 'copy'}
|
318
329
|
]
|
319
330
|
Page.all_from_clipboard_for_select(clipboard, language.id).should include(page_1, page_2)
|
320
331
|
end
|
@@ -324,7 +335,7 @@ module Alchemy
|
|
324
335
|
it "should not return any pages" do
|
325
336
|
page_1 = FactoryGirl.create(:page, :language => language, :page_layout => 'contact')
|
326
337
|
clipboard = [
|
327
|
-
{
|
338
|
+
{'id' => page_1.id.to_s, 'action' => 'copy'}
|
328
339
|
]
|
329
340
|
Page.all_from_clipboard_for_select(clipboard, language.id).should == []
|
330
341
|
end
|
@@ -335,8 +346,8 @@ module Alchemy
|
|
335
346
|
page_1 = FactoryGirl.create(:page, :language => language, :page_layout => 'standard')
|
336
347
|
page_2 = FactoryGirl.create(:page, :name => 'Another page', :language => language, :page_layout => 'contact')
|
337
348
|
clipboard = [
|
338
|
-
{
|
339
|
-
{
|
349
|
+
{'id' => page_1.id.to_s, 'action' => 'copy'},
|
350
|
+
{'id' => page_2.id.to_s, 'action' => 'copy'}
|
340
351
|
]
|
341
352
|
Page.all_from_clipboard_for_select(clipboard, language.id).should == [page_1]
|
342
353
|
end
|
@@ -1265,6 +1276,124 @@ module Alchemy
|
|
1265
1276
|
end
|
1266
1277
|
end
|
1267
1278
|
|
1279
|
+
describe "#update_node!" do
|
1280
|
+
|
1281
|
+
let(:original_url) { "sample-url" }
|
1282
|
+
let(:page) { FactoryGirl.create(:page, :language => language, :parent_id => language_root.id, :urlname => original_url, restricted: false) }
|
1283
|
+
let(:node) { TreeNode.new(10, 11, 12, 13, "another-url", true) }
|
1284
|
+
|
1285
|
+
context "when nesting is enabled" do
|
1286
|
+
before { Alchemy::Config.stub(:get).with(:url_nesting) { true } }
|
1287
|
+
|
1288
|
+
context "when page is not external" do
|
1289
|
+
|
1290
|
+
before { page.stub(redirects_to_external?: false)}
|
1291
|
+
|
1292
|
+
it "should update all attributes" do
|
1293
|
+
page.update_node!(node)
|
1294
|
+
page.reload
|
1295
|
+
expect(page.lft).to eq(node.left)
|
1296
|
+
expect(page.rgt).to eq(node.right)
|
1297
|
+
expect(page.parent_id).to eq(node.parent)
|
1298
|
+
expect(page.depth).to eq(node.depth)
|
1299
|
+
expect(page.urlname).to eq(node.url)
|
1300
|
+
expect(page.restricted).to eq(node.restricted)
|
1301
|
+
end
|
1302
|
+
|
1303
|
+
context "when url is the same" do
|
1304
|
+
let(:node) { TreeNode.new(10, 11, 12, 13, original_url, true) }
|
1305
|
+
|
1306
|
+
it "should not create a legacy url" do
|
1307
|
+
page.update_node!(node)
|
1308
|
+
page.reload
|
1309
|
+
expect(page.legacy_urls.size).to eq(0)
|
1310
|
+
end
|
1311
|
+
end
|
1312
|
+
|
1313
|
+
context "when url is not the same" do
|
1314
|
+
it "should create a legacy url" do
|
1315
|
+
page.update_node!(node)
|
1316
|
+
page.reload
|
1317
|
+
expect(page.legacy_urls.size).to eq(1)
|
1318
|
+
end
|
1319
|
+
end
|
1320
|
+
end
|
1321
|
+
|
1322
|
+
context "when page is external" do
|
1323
|
+
|
1324
|
+
before { page.stub(redirects_to_external?: true) }
|
1325
|
+
|
1326
|
+
it "should update all attributes except url" do
|
1327
|
+
page.update_node!(node)
|
1328
|
+
page.reload
|
1329
|
+
expect(page.lft).to eq(node.left)
|
1330
|
+
expect(page.rgt).to eq(node.right)
|
1331
|
+
expect(page.parent_id).to eq(node.parent)
|
1332
|
+
expect(page.depth).to eq(node.depth)
|
1333
|
+
expect(page.urlname).to eq(original_url)
|
1334
|
+
expect(page.restricted).to eq(node.restricted)
|
1335
|
+
end
|
1336
|
+
|
1337
|
+
it "should not create a legacy url" do
|
1338
|
+
page.update_node!(node)
|
1339
|
+
page.reload
|
1340
|
+
expect(page.legacy_urls.size).to eq(0)
|
1341
|
+
end
|
1342
|
+
end
|
1343
|
+
end
|
1344
|
+
|
1345
|
+
context "when nesting is disabled" do
|
1346
|
+
before { Alchemy::Config.stub(:get).with(:url_nesting) { false } }
|
1347
|
+
|
1348
|
+
context "when page is not external" do
|
1349
|
+
|
1350
|
+
before { page.stub(redirects_to_external?: false)}
|
1351
|
+
|
1352
|
+
it "should update all attributes except url" do
|
1353
|
+
page.update_node!(node)
|
1354
|
+
page.reload
|
1355
|
+
expect(page.lft).to eq(node.left)
|
1356
|
+
expect(page.rgt).to eq(node.right)
|
1357
|
+
expect(page.parent_id).to eq(node.parent)
|
1358
|
+
expect(page.depth).to eq(node.depth)
|
1359
|
+
expect(page.urlname).to eq(original_url)
|
1360
|
+
expect(page.restricted).to eq(node.restricted)
|
1361
|
+
end
|
1362
|
+
|
1363
|
+
it "should not create a legacy url" do
|
1364
|
+
page.update_node!(node)
|
1365
|
+
page.reload
|
1366
|
+
expect(page.legacy_urls.size).to eq(0)
|
1367
|
+
end
|
1368
|
+
|
1369
|
+
end
|
1370
|
+
|
1371
|
+
context "when page is external" do
|
1372
|
+
|
1373
|
+
before { page.stub(redirects_to_external?: true) }
|
1374
|
+
|
1375
|
+
before { Alchemy::Config.stub(get: true) }
|
1376
|
+
|
1377
|
+
it "should update all attributes except url" do
|
1378
|
+
page.update_node!(node)
|
1379
|
+
page.reload
|
1380
|
+
expect(page.lft).to eq(node.left)
|
1381
|
+
expect(page.rgt).to eq(node.right)
|
1382
|
+
expect(page.parent_id).to eq(node.parent)
|
1383
|
+
expect(page.depth).to eq(node.depth)
|
1384
|
+
expect(page.urlname).to eq(original_url)
|
1385
|
+
expect(page.restricted).to eq(node.restricted)
|
1386
|
+
end
|
1387
|
+
|
1388
|
+
it "should not create a legacy url" do
|
1389
|
+
page.update_node!(node)
|
1390
|
+
page.reload
|
1391
|
+
expect(page.legacy_urls.size).to eq(0)
|
1392
|
+
end
|
1393
|
+
end
|
1394
|
+
end
|
1395
|
+
end
|
1396
|
+
|
1268
1397
|
describe '#slug' do
|
1269
1398
|
context "with parents path saved in urlname" do
|
1270
1399
|
let(:page) { FactoryGirl.build(:page, urlname: 'root/parent/my-name')}
|
data/spec/spec_helper.rb
CHANGED
@@ -33,27 +33,14 @@ require 'alchemy/test_support/controller_requests'
|
|
33
33
|
require 'alchemy/test_support/integration_helpers'
|
34
34
|
require 'alchemy/test_support/factories'
|
35
35
|
require 'alchemy/test_support/essence_shared_examples'
|
36
|
-
require_relative "support/test_tweaks.rb"
|
37
36
|
require_relative "support/hint_examples.rb"
|
38
37
|
|
39
|
-
# Temporay fix for mavericks phantomjs bug
|
40
|
-
if RUBY_PLATFORM =~ /darwin/
|
41
|
-
require_relative "support/phantomjs_mavericks_fix.rb"
|
42
|
-
Capybara.register_driver :poltergeist do |app|
|
43
|
-
Capybara::Poltergeist::Driver.new(app, {
|
44
|
-
phantomjs_logger: Alchemy::WarningSuppressor,
|
45
|
-
js_errors: false
|
46
|
-
})
|
47
|
-
end
|
48
|
-
else
|
49
|
-
Capybara.register_driver :poltergeist do |app|
|
50
|
-
Capybara::Poltergeist::Driver.new(app, js_errors: false)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
38
|
# Configure capybara for integration testing
|
55
39
|
Capybara.default_driver = :rack_test
|
56
40
|
Capybara.default_selector = :css
|
41
|
+
Capybara.register_driver :poltergeist do |app|
|
42
|
+
Capybara::Poltergeist::Driver.new(app, js_errors: false)
|
43
|
+
end
|
57
44
|
Capybara.register_driver(:rack_test_translated_header) do |app|
|
58
45
|
Capybara::RackTest::Driver.new(app, headers: { 'HTTP_ACCEPT_LANGUAGE' => 'de' })
|
59
46
|
end
|
@@ -70,15 +57,32 @@ RSpec.configure do |config|
|
|
70
57
|
config.include Alchemy::TestSupport::IntegrationHelpers, type: :feature
|
71
58
|
config.include FactoryGirl::Syntax::Methods
|
72
59
|
|
73
|
-
config.use_transactional_fixtures =
|
60
|
+
config.use_transactional_fixtures = false
|
74
61
|
# Make sure the database is clean and ready for test
|
75
62
|
config.before(:suite) do
|
76
|
-
|
63
|
+
DatabaseCleaner.clean_with(:truncation)
|
77
64
|
Alchemy::Seeder.seed!
|
78
65
|
end
|
79
|
-
|
66
|
+
|
67
|
+
# All specs are running in transactions, but feature specs not.
|
80
68
|
config.before(:each) do
|
81
69
|
Alchemy::Site.current = nil
|
82
70
|
::I18n.locale = :en
|
71
|
+
if example.metadata[:type] == :feature
|
72
|
+
DatabaseCleaner.strategy = :truncation
|
73
|
+
else
|
74
|
+
DatabaseCleaner.strategy = :transaction
|
75
|
+
end
|
76
|
+
DatabaseCleaner.start
|
77
|
+
end
|
78
|
+
|
79
|
+
# After each spec the database gets cleaned. (via rollback or truncate for feature specs)
|
80
|
+
# After every feature spec the database gets seeded so the next spec can rely on that data.
|
81
|
+
config.append_after(:each) do
|
82
|
+
DatabaseCleaner.clean
|
83
|
+
if example.metadata[:type] == :feature
|
84
|
+
Alchemy::Seeder.stub(:puts)
|
85
|
+
Alchemy::Seeder.seed!
|
86
|
+
end
|
83
87
|
end
|
84
88
|
end
|
@@ -168,7 +168,7 @@
|
|
168
168
|
var newList = document.createElement(o.listType);
|
169
169
|
|
170
170
|
this.beyondMaxLevels = 0;
|
171
|
-
|
171
|
+
|
172
172
|
// If the item is moved to the left, send it to its parent's level unless there are siblings below it.
|
173
173
|
if (parentItem != null && nextItem == null &&
|
174
174
|
(o.rtl && (this.positionAbs.left + this.helper.outerWidth() > parentItem.offset().left + parentItem.outerWidth()) ||
|
@@ -284,8 +284,14 @@
|
|
284
284
|
|
285
285
|
function _recursiveItems(item) {
|
286
286
|
var id = ($(item).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/));
|
287
|
+
|
288
|
+
var restricted = $(item).data("restricted");
|
289
|
+
var slug = $(item).data("slug");
|
290
|
+
var external = $(item).data("external");
|
291
|
+
var visible = $(item).data("visible");
|
292
|
+
|
287
293
|
if (id) {
|
288
|
-
var currentItem = {"id" : id[2]};
|
294
|
+
var currentItem = {"id" : id[2], "slug" : slug, "restricted" : restricted, "external" : external, "visible" : visible};
|
289
295
|
if ($(item).children(o.listType).children(o.items).length > 0) {
|
290
296
|
currentItem.children = [];
|
291
297
|
$(item).children(o.listType).children(o.items).each(function() {
|
@@ -372,7 +378,7 @@
|
|
372
378
|
|
373
379
|
if (this.options.listType) {
|
374
380
|
var list = item.closest(this.options.listType);
|
375
|
-
while (list && list.length > 0 &&
|
381
|
+
while (list && list.length > 0 &&
|
376
382
|
!list.is('.ui-sortable')) {
|
377
383
|
level++;
|
378
384
|
list = list.parent().closest(this.options.listType);
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alchemy_cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.0.
|
4
|
+
version: 3.0.0.rc8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas von Deyen
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2014-06-
|
15
|
+
date: 2014-06-18 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rails
|
@@ -543,7 +543,6 @@ files:
|
|
543
543
|
- app/models/alchemy.rb
|
544
544
|
- app/models/alchemy/attachment.rb
|
545
545
|
- app/models/alchemy/cell.rb
|
546
|
-
- app/models/alchemy/clipboard.rb
|
547
546
|
- app/models/alchemy/content.rb
|
548
547
|
- app/models/alchemy/content/factory.rb
|
549
548
|
- app/models/alchemy/element.rb
|
@@ -575,6 +574,7 @@ files:
|
|
575
574
|
- app/models/alchemy/site.rb
|
576
575
|
- app/models/alchemy/site/layout.rb
|
577
576
|
- app/models/alchemy/tag.rb
|
577
|
+
- app/models/alchemy/tree_node.rb
|
578
578
|
- app/serializers/alchemy/attachment_serializer.rb
|
579
579
|
- app/serializers/alchemy/cell_serializer.rb
|
580
580
|
- app/serializers/alchemy/content_serializer.rb
|
@@ -610,7 +610,7 @@ files:
|
|
610
610
|
- app/views/alchemy/admin/clipboard/remove.js.erb
|
611
611
|
- app/views/alchemy/admin/contents/_missing.html.erb
|
612
612
|
- app/views/alchemy/admin/contents/create.js.erb
|
613
|
-
- app/views/alchemy/admin/contents/destroy.js.
|
613
|
+
- app/views/alchemy/admin/contents/destroy.js.erb
|
614
614
|
- app/views/alchemy/admin/contents/new.html.erb
|
615
615
|
- app/views/alchemy/admin/contents/order.js.erb
|
616
616
|
- app/views/alchemy/admin/dashboard/_locked_pages.html.erb
|
@@ -620,7 +620,6 @@ files:
|
|
620
620
|
- app/views/alchemy/admin/dashboard/help.html.erb
|
621
621
|
- app/views/alchemy/admin/dashboard/index.html.erb
|
622
622
|
- app/views/alchemy/admin/dashboard/info.html.erb
|
623
|
-
- app/views/alchemy/admin/elements/_add_element_button.html.erb
|
624
623
|
- app/views/alchemy/admin/elements/_add_picture.html.erb
|
625
624
|
- app/views/alchemy/admin/elements/_element.html.erb
|
626
625
|
- app/views/alchemy/admin/elements/_element_foot.html.erb
|
@@ -727,7 +726,7 @@ files:
|
|
727
726
|
- app/views/alchemy/admin/tags/edit.html.erb
|
728
727
|
- app/views/alchemy/admin/tags/index.html.erb
|
729
728
|
- app/views/alchemy/admin/tags/new.html.erb
|
730
|
-
- app/views/alchemy/admin/trash/clear.js.
|
729
|
+
- app/views/alchemy/admin/trash/clear.js.erb
|
731
730
|
- app/views/alchemy/admin/trash/index.html.erb
|
732
731
|
- app/views/alchemy/attachments/show.html.erb
|
733
732
|
- app/views/alchemy/base/500.html.erb
|
@@ -792,9 +791,11 @@ files:
|
|
792
791
|
- config/initializers/simple_form.rb
|
793
792
|
- config/locales/alchemy.de.yml
|
794
793
|
- config/locales/alchemy.en.yml
|
794
|
+
- config/locales/alchemy.fr.yml
|
795
795
|
- config/locales/alchemy.nl.yml
|
796
796
|
- config/locales/simple_form.de.yml
|
797
797
|
- config/locales/simple_form.en.yml
|
798
|
+
- config/locales/simple_form.fr.yml
|
798
799
|
- config/locales/simple_form.nl.yml
|
799
800
|
- config/routes.rb
|
800
801
|
- db/migrate/20130827094554_alchemy_two_point_six.rb
|
@@ -817,6 +818,7 @@ files:
|
|
817
818
|
- lib/alchemy/kaminari/scoped_pagination_url_helper.rb
|
818
819
|
- lib/alchemy/locale.rb
|
819
820
|
- lib/alchemy/logger.rb
|
821
|
+
- lib/alchemy/middleware/rescue_old_cookies.rb
|
820
822
|
- lib/alchemy/modules.rb
|
821
823
|
- lib/alchemy/mount_point.rb
|
822
824
|
- lib/alchemy/name_conversions.rb
|
@@ -959,6 +961,7 @@ files:
|
|
959
961
|
- spec/features/admin/language_tree_feature_spec.rb
|
960
962
|
- spec/features/admin/legacy_page_url_management_spec.rb
|
961
963
|
- spec/features/admin/link_overlay_spec.rb
|
964
|
+
- spec/features/admin/locale_select_feature_spec.rb
|
962
965
|
- spec/features/admin/modules_integration_spec.rb
|
963
966
|
- spec/features/admin/page_creation_feature_spec.rb
|
964
967
|
- spec/features/admin/page_editing_feature_spec.rb
|
@@ -1001,6 +1004,7 @@ files:
|
|
1001
1004
|
- spec/libraries/auth_accessors_spec.rb
|
1002
1005
|
- spec/libraries/config_spec.rb
|
1003
1006
|
- spec/libraries/controller_actions_spec.rb
|
1007
|
+
- spec/libraries/i18n_spec.rb
|
1004
1008
|
- spec/libraries/kaminari/scoped_pagination_url_helper_spec.rb
|
1005
1009
|
- spec/libraries/modules_spec.rb
|
1006
1010
|
- spec/libraries/mount_point_spec.rb
|
@@ -1015,7 +1019,6 @@ files:
|
|
1015
1019
|
- spec/mailers/messages_spec.rb
|
1016
1020
|
- spec/models/attachment_spec.rb
|
1017
1021
|
- spec/models/cell_spec.rb
|
1018
|
-
- spec/models/clipboard_spec.rb
|
1019
1022
|
- spec/models/content_spec.rb
|
1020
1023
|
- spec/models/element_spec.rb
|
1021
1024
|
- spec/models/essence_boolean_spec.rb
|
@@ -1038,7 +1041,6 @@ files:
|
|
1038
1041
|
- spec/spec_helper.rb
|
1039
1042
|
- spec/support/ci/install_phantomjs
|
1040
1043
|
- spec/support/hint_examples.rb
|
1041
|
-
- spec/support/phantomjs_mavericks_fix.rb
|
1042
1044
|
- spec/support/test_tweaks.rb
|
1043
1045
|
- spec/tasks/helpers_spec.rb
|
1044
1046
|
- spec/views/essences/essence_boolean_view_spec.rb
|
@@ -1199,6 +1201,7 @@ test_files:
|
|
1199
1201
|
- spec/features/admin/language_tree_feature_spec.rb
|
1200
1202
|
- spec/features/admin/legacy_page_url_management_spec.rb
|
1201
1203
|
- spec/features/admin/link_overlay_spec.rb
|
1204
|
+
- spec/features/admin/locale_select_feature_spec.rb
|
1202
1205
|
- spec/features/admin/modules_integration_spec.rb
|
1203
1206
|
- spec/features/admin/page_creation_feature_spec.rb
|
1204
1207
|
- spec/features/admin/page_editing_feature_spec.rb
|
@@ -1241,6 +1244,7 @@ test_files:
|
|
1241
1244
|
- spec/libraries/auth_accessors_spec.rb
|
1242
1245
|
- spec/libraries/config_spec.rb
|
1243
1246
|
- spec/libraries/controller_actions_spec.rb
|
1247
|
+
- spec/libraries/i18n_spec.rb
|
1244
1248
|
- spec/libraries/kaminari/scoped_pagination_url_helper_spec.rb
|
1245
1249
|
- spec/libraries/modules_spec.rb
|
1246
1250
|
- spec/libraries/mount_point_spec.rb
|
@@ -1255,7 +1259,6 @@ test_files:
|
|
1255
1259
|
- spec/mailers/messages_spec.rb
|
1256
1260
|
- spec/models/attachment_spec.rb
|
1257
1261
|
- spec/models/cell_spec.rb
|
1258
|
-
- spec/models/clipboard_spec.rb
|
1259
1262
|
- spec/models/content_spec.rb
|
1260
1263
|
- spec/models/element_spec.rb
|
1261
1264
|
- spec/models/essence_boolean_spec.rb
|
@@ -1278,7 +1281,6 @@ test_files:
|
|
1278
1281
|
- spec/spec_helper.rb
|
1279
1282
|
- spec/support/ci/install_phantomjs
|
1280
1283
|
- spec/support/hint_examples.rb
|
1281
|
-
- spec/support/phantomjs_mavericks_fix.rb
|
1282
1284
|
- spec/support/test_tweaks.rb
|
1283
1285
|
- spec/tasks/helpers_spec.rb
|
1284
1286
|
- spec/views/essences/essence_boolean_view_spec.rb
|