locomotive_cms 2.1.4 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -5
- data/app/assets/images/locomotive/icons/flags/zh-CN.png +0 -0
- data/app/assets/javascripts/aloha/plugins/custom/inputcontrol/css/inputcontrol.css +3 -0
- data/app/assets/javascripts/aloha/plugins/custom/inputcontrol/lib/inputcontrol-plugin.js +94 -0
- data/app/assets/javascripts/aloha/plugins/custom/inputcontrol/package.json +1 -0
- data/app/assets/javascripts/locomotive.js +2 -1
- data/app/assets/javascripts/locomotive/models/content_type.js.coffee +6 -2
- data/app/assets/javascripts/locomotive/models/page.js.coffee +1 -1
- data/app/assets/javascripts/locomotive/models/site.js.coffee +1 -1
- data/app/assets/javascripts/locomotive/utils/aloha_settings.js.coffee +17 -7
- data/app/assets/javascripts/locomotive/utils/tinymce_settings.js.coffee +6 -0
- data/app/assets/javascripts/locomotive/views/application_view.js.coffee +13 -2
- data/app/assets/javascripts/locomotive/views/content_entries/_form_view.js.coffee +19 -2
- data/app/assets/javascripts/locomotive/views/content_entries/_popup_form_view.js.coffee +1 -1
- data/app/assets/javascripts/locomotive/views/content_entries/index_view.js.coffee +2 -2
- data/app/assets/javascripts/locomotive/views/content_types/_form_view.js.coffee +2 -1
- data/app/assets/javascripts/locomotive/views/content_types/custom_field_entry_view.js.coffee +3 -0
- data/app/assets/javascripts/locomotive/views/current_site/edit_view.js.coffee +2 -1
- data/app/assets/javascripts/locomotive/views/editable_elements/edit_all_view.js.coffee +3 -6
- data/app/assets/javascripts/locomotive/views/editable_elements/text_view.js.coffee +47 -0
- data/app/assets/javascripts/locomotive/views/inline_editor/toolbar_view.js.coffee +1 -1
- data/app/assets/javascripts/locomotive/views/pages/_form_view.js.coffee +2 -1
- data/app/assets/javascripts/locomotive/views/pages/list_view.js.coffee +2 -2
- data/app/assets/javascripts/locomotive/views/shared/fields/belongs_to_view.js.coffee +32 -0
- data/app/assets/javascripts/locomotive/views/shared/fields/has_many_view.js.coffee +2 -2
- data/app/assets/javascripts/locomotive/views/shared/fields/many_to_many_view.js.coffee +2 -2
- data/app/assets/javascripts/locomotive/views/shared/form_view.js.coffee +2 -0
- data/app/assets/javascripts/locomotive/views/snippets/_form_view.js.coffee +2 -1
- data/app/assets/javascripts/locomotive/views/theme_assets/_form_view.js.coffee +2 -1
- data/app/assets/javascripts/locomotive/views/theme_assets/index_view.js.coffee +0 -1
- data/app/assets/javascripts/tinymce/plugins/locomotive_media/langs/es.js +1 -0
- data/app/assets/javascripts/tinymce/plugins/locomotive_media/langs/et.js +1 -0
- data/app/assets/javascripts/tinymce/plugins/locomotive_media/langs/it.js +1 -0
- data/app/assets/javascripts/tinymce/plugins/locomotive_media/langs/ja.js +1 -0
- data/app/assets/javascripts/tinymce/plugins/locomotive_media/langs/nb.js +1 -0
- data/app/assets/javascripts/tinymce/plugins/locomotive_media/langs/nl.js +1 -0
- data/app/assets/javascripts/tinymce/plugins/locomotive_media/langs/no.js +1 -0
- data/app/assets/javascripts/tinymce/plugins/locomotive_media/langs/pl.js +1 -0
- data/app/assets/javascripts/tinymce/plugins/locomotive_media/langs/pt.js +1 -0
- data/app/assets/javascripts/tinymce/plugins/locomotive_media/langs/zh-cn.js +1 -0
- data/app/assets/stylesheets/locomotive.css +1 -0
- data/app/assets/stylesheets/locomotive/backoffice/codemirror_changes.css.scss +2 -0
- data/app/assets/stylesheets/locomotive/backoffice/formtastic_changes.css.scss +17 -3
- data/app/controllers/locomotive/content_entries_controller.rb +6 -2
- data/app/controllers/locomotive/public/content_entries_controller.rb +6 -0
- data/app/helpers/locomotive/base_helper.rb +8 -0
- data/app/helpers/locomotive/sites_helper.rb +6 -0
- data/app/models/locomotive/content_entry.rb +35 -5
- data/app/models/locomotive/content_type.rb +26 -8
- data/app/models/locomotive/editable_element.rb +15 -1
- data/app/models/locomotive/editable_file.rb +0 -2
- data/app/models/locomotive/editable_long_text.rb +3 -3
- data/app/models/locomotive/editable_short_text.rb +3 -64
- data/app/models/locomotive/editable_text.rb +84 -0
- data/app/models/locomotive/extensions/content_entry/csv.rb +7 -3
- data/app/models/locomotive/extensions/page/editable_elements.rb +3 -5
- data/app/models/locomotive/extensions/site/locales.rb +20 -0
- data/app/models/locomotive/extensions/site/timezone.rb +35 -0
- data/app/models/locomotive/site.rb +20 -16
- data/app/models/locomotive/theme_asset.rb +1 -1
- data/app/presenters/locomotive/content_entry_presenter.rb +1 -1
- data/app/presenters/locomotive/{editable_short_text_presenter.rb → editable_text_presenter.rb} +14 -2
- data/app/views/locomotive/current_site/_form.html.haml +1 -0
- data/app/views/locomotive/custom_fields/types/_belongs_to.html.haml +6 -5
- data/app/views/locomotive/pages/_editable_elements.html.haml +1 -1
- data/app/views/locomotive/shared/_head.html.haml +2 -0
- data/app/views/locomotive/shared/_main_app_head_before_backbone.html.haml +1 -0
- data/config/locales/admin_ui.de.yml +1 -0
- data/config/locales/admin_ui.en.yml +1 -0
- data/config/locales/admin_ui.et.yml +1 -0
- data/config/locales/admin_ui.fr.yml +1 -0
- data/config/locales/admin_ui.ja.yml +1 -0
- data/config/locales/admin_ui.nb.yml +2 -0
- data/config/locales/admin_ui.pl.yml +1 -0
- data/config/locales/admin_ui.pt-BR.yml +2 -1
- data/config/locales/admin_ui.ru.yml +24 -4
- data/config/locales/admin_ui.zh-CN.yml +347 -0
- data/config/locales/carrierwave.zh-CN.yml +4 -0
- data/config/locales/default.zh-CN.yml +116 -0
- data/config/locales/devise.nb.yml +1 -0
- data/config/locales/devise.zh-CN.yml +64 -0
- data/config/locales/flash.zh-CN.yml +115 -0
- data/config/locales/formtastic.en.yml +1 -0
- data/config/locales/formtastic.ru.yml +4 -1
- data/config/locales/formtastic.zh-CN.yml +112 -0
- data/features/backoffice/content_types/localized.feature +63 -0
- data/features/backoffice/pages.feature +3 -1
- data/features/backoffice/site.feature +7 -0
- data/features/public/contact_form.feature +11 -0
- data/features/public/content_entries.feature +13 -0
- data/features/public/pages.feature +24 -0
- data/features/step_definitions/page_steps.rb +6 -0
- data/features/step_definitions/web_steps.rb +24 -7
- data/lib/generators/locomotive/install/templates/locomotive.rb +2 -2
- data/lib/generators/locomotive/install/templates/mongoid.yml +23 -29
- data/lib/locomotive.rb +1 -4
- data/lib/locomotive/configuration.rb +3 -3
- data/lib/locomotive/dependencies.rb +1 -0
- data/lib/locomotive/engine.rb +2 -1
- data/lib/locomotive/liquid/drops/page.rb +1 -1
- data/lib/locomotive/liquid/filters/date.rb +3 -1
- data/lib/locomotive/liquid/filters/misc.rb +4 -0
- data/lib/locomotive/liquid/filters/text.rb +4 -0
- data/lib/locomotive/liquid/tags/editable.rb +1 -2
- data/lib/locomotive/liquid/tags/editable/text.rb +79 -0
- data/lib/locomotive/liquid/tags/inline_editor.rb +1 -1
- data/lib/locomotive/liquid/tags/link_to.rb +72 -13
- data/lib/locomotive/liquid/tags/with_scope.rb +3 -3
- data/lib/locomotive/middlewares.rb +0 -1
- data/lib/locomotive/mongoid/patches.rb +0 -16
- data/lib/locomotive/render.rb +1 -1
- data/lib/locomotive/version.rb +1 -1
- data/lib/tasks/locomotive.rake +15 -9
- data/mongodb/migrate/20130326201349_rename_entry_to_content_entry.rb +1 -1
- data/mongodb/migrate/20130621135025_create_editable_texts.rb +42 -0
- data/mongodb/migrate/20130627101548_localize_slugs_of_content_entries.rb +43 -0
- data/spec/dummy/config/initializers/locomotive.rb +1 -1
- data/spec/dummy/config/initializers/session_store.rb +1 -1
- data/spec/lib/locomotive/liquid/drops/page_spec.rb +1 -1
- data/spec/lib/locomotive/liquid/filters/misc_spec.rb +26 -0
- data/spec/lib/locomotive/liquid/tags/editable/text_spec.rb +85 -0
- data/spec/lib/locomotive/liquid/tags/link_to_spec.rb +111 -0
- data/spec/lib/locomotive/liquid/tags/with_scope_spec.rb +6 -0
- data/spec/models/locomotive/content_entry_spec.rb +27 -7
- data/spec/models/locomotive/{editable_short_text_spec.rb → editable_text_spec.rb} +53 -8
- data/spec/models/locomotive/extensions/page/editable_elements_spec.rb +6 -6
- data/spec/models/locomotive/site_spec.rb +52 -32
- data/vendor/assets/images/select2-spinner.gif +0 -0
- data/vendor/assets/images/select2.png +0 -0
- data/vendor/assets/images/select2x2.png +0 -0
- data/vendor/assets/javascripts/locomotive/liquid_mode.js +1 -1
- data/vendor/assets/javascripts/select2/select2.js +3054 -0
- data/vendor/assets/stylesheets/select2/select2.css.scss +652 -0
- metadata +77 -33
- data/app/assets/javascripts/locomotive/views/editable_elements/long_text_view.js.coffee +0 -36
- data/app/assets/javascripts/locomotive/views/editable_elements/short_text_view.js.coffee +0 -22
- data/app/presenters/locomotive/editable_long_text_presenter.rb +0 -5
- data/lib/locomotive/liquid/tags/editable/long_text.rb +0 -33
- data/lib/locomotive/liquid/tags/editable/short_text.rb +0 -41
- data/lib/locomotive/middlewares/fonts.rb +0 -42
- data/lib/locomotive/session_store.rb +0 -64
- data/spec/lib/locomotive/liquid/tags/editable/short_text_spec.rb +0 -46
- data/spec/models/locomotive/editable_long_text_spec.rb +0 -50
data/Gemfile
CHANGED
@@ -45,16 +45,13 @@ group :test do
|
|
45
45
|
# gem 'autotest', platforms: :mri
|
46
46
|
# gem 'ZenTest', platforms: :mri
|
47
47
|
|
48
|
-
# gem 'growl-glue'
|
49
48
|
gem 'poltergeist', '~> 1.1.0'
|
50
49
|
gem 'shoulda-matchers', '~> 1.5.2'
|
51
50
|
|
52
51
|
gem 'factory_girl_rails', '~> 4.2.1'
|
53
52
|
gem 'pickle'
|
54
53
|
|
55
|
-
gem 'capybara', '~> 2.0.2'
|
56
|
-
|
57
|
-
# gem 'xpath', '~> 0.1.4'
|
54
|
+
gem 'capybara', '~> 2.0.2'
|
58
55
|
|
59
56
|
gem 'json_spec'
|
60
57
|
|
@@ -62,6 +59,5 @@ group :test do
|
|
62
59
|
|
63
60
|
gem 'mocha', '~> 0.13.0', require: false
|
64
61
|
|
65
|
-
|
66
62
|
# gem 'debugger', git: 'git://github.com/cldwalker/debugger.git'
|
67
63
|
end
|
Binary file
|
@@ -0,0 +1,94 @@
|
|
1
|
+
/*!
|
2
|
+
* Aloha Editor
|
3
|
+
* Copyright (c) 2010 Gentics Software GmbH
|
4
|
+
* aloha-sales@gentics.com
|
5
|
+
* Author Nicolas Karageuzian
|
6
|
+
* Licensed unter the terms of http://www.aloha-editor.com/license.html
|
7
|
+
# https://github.com/temistokles/Aloha-Plugin-InputControl
|
8
|
+
*/
|
9
|
+
|
10
|
+
define(
|
11
|
+
['aloha/plugin', 'aloha'],
|
12
|
+
function (plugin, Aloha) {
|
13
|
+
"use strict";
|
14
|
+
|
15
|
+
/**
|
16
|
+
* register the plugin with unique name
|
17
|
+
*/
|
18
|
+
return plugin.create('inputcontrol', {
|
19
|
+
_constructor: function(){
|
20
|
+
this._super('inputcontrol');
|
21
|
+
},
|
22
|
+
/**
|
23
|
+
* Initialize the plugin and set initialize flag on true
|
24
|
+
*/
|
25
|
+
init: function () {
|
26
|
+
var inputmask = this;
|
27
|
+
inputmask.bindEvents();
|
28
|
+
},
|
29
|
+
|
30
|
+
config: {
|
31
|
+
"enableFilter": false,
|
32
|
+
"allowchars": new RegExp('.'), // allows any character (default)
|
33
|
+
"enableMask": false
|
34
|
+
},
|
35
|
+
bindEvents: function() {
|
36
|
+
var inputmask = this;
|
37
|
+
Aloha.bind('aloha-editable-created', function(event, editable){
|
38
|
+
var edConfig = inputmask.getEditableConfig(editable.obj);
|
39
|
+
if (edConfig.enableFilter) {
|
40
|
+
//filtering is enabled, watching keypress (to get the unicode charcode)
|
41
|
+
editable.obj.keypress(function(event){ // listen for keypress (then get the unicode char)
|
42
|
+
var
|
43
|
+
k = event.which, chr,
|
44
|
+
result = true;
|
45
|
+
chr = String.fromCharCode(k);
|
46
|
+
if (edConfig.allowchars instanceof RegExp){
|
47
|
+
Aloha.Log.debug(Aloha, "Keycode : [" + k + "] char : '" + chr + "'");
|
48
|
+
result = result && edConfig.allowchars.test(chr);
|
49
|
+
}
|
50
|
+
return result;
|
51
|
+
});
|
52
|
+
}
|
53
|
+
if (edConfig.disableEnter) {
|
54
|
+
editable.obj.unbind('keydown'); // unbinding aloha preprocess
|
55
|
+
editable.obj.keydown(function(event) {
|
56
|
+
if (event.keyCode === 13) {
|
57
|
+
return false;
|
58
|
+
}
|
59
|
+
return true; //Aloha.Markup.preProcessKeyStrokes();
|
60
|
+
});
|
61
|
+
}
|
62
|
+
if (edConfig.enableMask) { // TODO: debug in here
|
63
|
+
editable.obj.blur(function (event){
|
64
|
+
var $this = $(this);
|
65
|
+
if (edConfig.type === Number) {
|
66
|
+
if (new Number($this.text()).toString() === "NaN") {
|
67
|
+
$this.addClass('aloha-input-invalid');
|
68
|
+
} else {
|
69
|
+
$this.removeClass('aloha-input-invalid');
|
70
|
+
}
|
71
|
+
}
|
72
|
+
if (typeof edConfig.maxlength === "number") {
|
73
|
+
if (edConfig.striphtml) {
|
74
|
+
if ($this.text().length >= edConfig.maxlength) {
|
75
|
+
$this.addClass('aloha-input-invalid');
|
76
|
+
} else {
|
77
|
+
$this.removeClass('aloha-input-invalid');
|
78
|
+
}
|
79
|
+
} else {
|
80
|
+
if ($this.html().length >= edConfig.maxlength) {
|
81
|
+
$this.addClass('aloha-input-invalid');
|
82
|
+
} else {
|
83
|
+
$this.removeClass('aloha-input-invalid');
|
84
|
+
}
|
85
|
+
}
|
86
|
+
}
|
87
|
+
return true;
|
88
|
+
});
|
89
|
+
}
|
90
|
+
});
|
91
|
+
}
|
92
|
+
|
93
|
+
});
|
94
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
{}
|
@@ -11,7 +11,8 @@
|
|
11
11
|
//= require backbone
|
12
12
|
//= require codemirror
|
13
13
|
//= require tinymce-jquery
|
14
|
-
//= require
|
14
|
+
//= require select2/select2
|
15
|
+
//= require codemirror/addons/mode/overlay
|
15
16
|
//= require codemirror/modes/css
|
16
17
|
//= require codemirror/modes/javascript
|
17
18
|
//= require codemirror/modes/xml
|
@@ -8,8 +8,12 @@ class Locomotive.Models.ContentType extends Backbone.Model
|
|
8
8
|
@_normalize()
|
9
9
|
|
10
10
|
_normalize: ->
|
11
|
-
@
|
12
|
-
|
11
|
+
fields = @get('entries_custom_fields')
|
12
|
+
fields = [] if !fields?
|
13
|
+
|
14
|
+
if _.isArray(fields)
|
15
|
+
@set
|
16
|
+
entries_custom_fields: new Locomotive.Models.CustomFieldsCollection(fields)
|
13
17
|
|
14
18
|
find_entries_custom_field: (name) ->
|
15
19
|
@get('entries_custom_fields').find((field) => field.get('name') == name)
|
@@ -16,7 +16,7 @@ class Locomotive.Models.Page extends Backbone.Model
|
|
16
16
|
|
17
17
|
toJSON: ->
|
18
18
|
_.tap super, (hash) =>
|
19
|
-
_.each ['fullpath', 'localized_fullpaths', 'templatized_from_parent', 'target_klass_name_text', 'content_type_id_text', 'edit_url', 'parent_id_text', 'response_type_text', 'translated_in'], (key) => delete hash[key]
|
19
|
+
_.each ['fullpath', 'localized_fullpaths', 'templatized_from_parent', 'template_changed', 'escaped_raw_template', 'target_klass_name_text', 'content_type_id_text', 'edit_url', 'parent_id_text', 'response_type_text', 'translated_in'], (key) => delete hash[key]
|
20
20
|
|
21
21
|
delete hash['editable_elements']
|
22
22
|
hash.editable_elements = @get('editable_elements').toJSONForSave() if @get('editable_elements')? && @get('editable_elements').length > 0
|
@@ -20,7 +20,7 @@ class Locomotive.Models.Site extends Backbone.Model
|
|
20
20
|
|
21
21
|
toJSON: ->
|
22
22
|
_.tap super, (hash) =>
|
23
|
-
_.each ['locales_text'], (key) => delete hash[key]
|
23
|
+
_.each ['locales_text', 'timezone_name_text'], (key) => delete hash[key]
|
24
24
|
delete hash.memberships
|
25
25
|
hash.memberships_attributes = @get('memberships').toJSONForSave() if @get('memberships')? && @get('memberships').length > 0
|
26
26
|
delete hash.domains
|
@@ -9,19 +9,29 @@ window.Aloha.settings =
|
|
9
9
|
plugins:
|
10
10
|
|
11
11
|
format:
|
12
|
-
config: [
|
12
|
+
config: ['b', 'i', 'u', 'del', 'sub', 'sup', 'p', 'title', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'pre', 'removeFormat']
|
13
13
|
editables:
|
14
|
-
'.editable-
|
14
|
+
'.editable-single-text': ['b', 'i', 'u', 'del', 'sub', 'sup']
|
15
15
|
|
16
|
-
|
17
|
-
config: [ 'a' ]
|
16
|
+
inputcontrol:
|
18
17
|
editables:
|
19
|
-
'.editable-
|
18
|
+
'.editable-single-text':
|
19
|
+
disableEnter: true
|
20
|
+
|
21
|
+
link:
|
22
|
+
config: ['a']
|
20
23
|
|
21
24
|
list:
|
22
|
-
config: [
|
25
|
+
config: ['ul']
|
26
|
+
editables:
|
27
|
+
'.editable-single-text': []
|
28
|
+
|
29
|
+
align:
|
30
|
+
config:
|
31
|
+
alignment: ['right','left','center','justify']
|
23
32
|
editables:
|
24
|
-
'.editable-
|
33
|
+
'.editable-single-text':
|
34
|
+
alignment: []
|
25
35
|
|
26
36
|
image:
|
27
37
|
ui:
|
@@ -26,9 +26,15 @@ window.Locomotive.tinyMCE =
|
|
26
26
|
theme_advanced_buttons3: ''
|
27
27
|
theme_advanced_toolbar_location: 'top'
|
28
28
|
theme_advanced_toolbar_align: 'left'
|
29
|
+
theme_advanced_resizing_min_height: 20
|
30
|
+
theme_advanced_path: false
|
31
|
+
theme_advanced_statusbar_location: false
|
29
32
|
height: '20'
|
30
33
|
width: '709'
|
31
34
|
convert_urls: false
|
35
|
+
forced_root_block: false
|
36
|
+
force_br_newlines: true
|
37
|
+
force_p_newlines: false
|
32
38
|
|
33
39
|
popupSettings:
|
34
40
|
theme: 'advanced'
|
@@ -13,8 +13,7 @@ class Locomotive.Views.ApplicationView extends Backbone.View
|
|
13
13
|
|
14
14
|
@enable_content_locale_picker()
|
15
15
|
|
16
|
-
|
17
|
-
window.Locomotive.tinyMCE.minimalSettings.language = window.locale
|
16
|
+
@set_locale_for_tinymce_widgets()
|
18
17
|
|
19
18
|
# render page view
|
20
19
|
if @options.view?
|
@@ -83,6 +82,18 @@ class Locomotive.Views.ApplicationView extends Backbone.View
|
|
83
82
|
locale = $(@).data('locale')
|
84
83
|
window.addParameterToURL 'content_locale', locale
|
85
84
|
|
85
|
+
set_locale_for_tinymce_widgets: ->
|
86
|
+
# tinyMCE likes only lowercase locales
|
87
|
+
tinymce_locale = window.locale.toLowerCase()
|
88
|
+
|
89
|
+
# pt-BR does not exist, pt does though
|
90
|
+
tinymce_locale = 'pt' if tinymce_locale == 'pt-br'
|
91
|
+
|
92
|
+
# set the default tinyMCE language
|
93
|
+
window.Locomotive.tinyMCE.defaultSettings.language = tinymce_locale
|
94
|
+
window.Locomotive.tinyMCE.minimalSettings.language = tinymce_locale
|
95
|
+
window.Locomotive.tinyMCE.popupSettings.language = tinymce_locale
|
96
|
+
|
86
97
|
unique_dialog_zindex: ->
|
87
98
|
# returns the number of jQuery UI modals created in order to set a valid zIndex for each of them.
|
88
99
|
# Each modal window should have a different zIndex, otherwise there will be conflicts between them.
|
@@ -10,6 +10,8 @@ class Locomotive.Views.ContentEntries.FormView extends Locomotive.Views.Shared.F
|
|
10
10
|
|
11
11
|
_file_field_views: []
|
12
12
|
|
13
|
+
_belongs_to_field_views: []
|
14
|
+
|
13
15
|
_has_many_field_views: []
|
14
16
|
|
15
17
|
_many_to_many_field_views: []
|
@@ -39,6 +41,8 @@ class Locomotive.Views.ContentEntries.FormView extends Locomotive.Views.Shared.F
|
|
39
41
|
|
40
42
|
@enable_select_fields()
|
41
43
|
|
44
|
+
@enable_belongs_to_fields()
|
45
|
+
|
42
46
|
@enable_file_fields()
|
43
47
|
|
44
48
|
@enable_has_many_fields()
|
@@ -93,14 +97,27 @@ class Locomotive.Views.ContentEntries.FormView extends Locomotive.Views.Shared.F
|
|
93
97
|
unless option.destroyed()
|
94
98
|
$select.append(new Option(option.get('name'), option.get('id'), false, option.get('id') == @model.get("#{name}_id")))
|
95
99
|
|
100
|
+
enable_belongs_to_fields: ->
|
101
|
+
prefix = if @namespace? then "#{@namespace}_" else ''
|
102
|
+
|
103
|
+
_.each @model.get('belongs_to_custom_fields'), (name) =>
|
104
|
+
$el = @$("##{prefix}#{@model.paramRoot}_#{name}_id")
|
105
|
+
|
106
|
+
if $el.length > 0
|
107
|
+
view = new Locomotive.Views.Shared.Fields.BelongsToView model: @model, name: name, el: $el
|
108
|
+
|
109
|
+
@_belongs_to_field_views.push(view)
|
110
|
+
|
111
|
+
view.render()
|
112
|
+
|
96
113
|
enable_file_fields: ->
|
114
|
+
prefix = if @namespace? then "#{@namespace}_" else ''
|
115
|
+
|
97
116
|
_.each @model.get('file_custom_fields'), (name) =>
|
98
117
|
view = new Locomotive.Views.Shared.Fields.FileView model: @model, name: name, namespace: @namespace
|
99
118
|
|
100
119
|
@_file_field_views.push(view)
|
101
120
|
|
102
|
-
prefix = if @namespace? then "#{@namespace}_" else ''
|
103
|
-
|
104
121
|
@$("##{prefix}#{@model.paramRoot}_#{name}_input label").after(view.render().el)
|
105
122
|
|
106
123
|
enable_has_many_fields: ->
|
@@ -30,7 +30,7 @@ class Locomotive.Views.ContentEntries.IndexView extends Backbone.View
|
|
30
30
|
error: @.on_failed_sort
|
31
31
|
|
32
32
|
on_successful_sort: (data, status, xhr) ->
|
33
|
-
$.growl('success', xhr.getResponseHeader('X-Message'))
|
33
|
+
$.growl('success', decodeURIComponent $.parseJSON xhr.getResponseHeader('X-Message'))
|
34
34
|
|
35
35
|
on_failed_sort: (data, status, xhr) ->
|
36
|
-
$.growl('error', xhr.getResponseHeader('X-Message'))
|
36
|
+
$.growl('error', decodeURIComponent $.parseJSON xhr.getResponseHeader('X-Message'))
|
@@ -49,7 +49,8 @@ class Locomotive.Views.ContentTypes.FormView extends Locomotive.Views.Shared.For
|
|
49
49
|
passDelay: 50
|
50
50
|
tabMode: 'shift'
|
51
51
|
theme: 'default'
|
52
|
-
|
52
|
+
|
53
|
+
@editor.on 'change', (editor, change) => @model.set(raw_item_template: editor.getValue())
|
53
54
|
|
54
55
|
after_inputs_fold: ->
|
55
56
|
@editor.refresh()
|
data/app/assets/javascripts/locomotive/views/content_types/custom_field_entry_view.js.coffee
CHANGED
@@ -49,7 +49,10 @@ class Locomotive.Views.ContentTypes.CustomFieldEntryView extends Backbone.View
|
|
49
49
|
when 'belongs_to'
|
50
50
|
@$('li.input.localized').hide()
|
51
51
|
@$('li.input.class-name').show()
|
52
|
+
when 'image'
|
53
|
+
@$('li.input.unique').hide()
|
52
54
|
when 'has_many', 'many_to_many'
|
55
|
+
@$('li.input.unique').hide()
|
53
56
|
@$('li.input.localized').hide()
|
54
57
|
@$('li.input.class-name').show()
|
55
58
|
@$('li.input.inverse-of').show()
|
@@ -64,7 +64,8 @@ class Locomotive.Views.CurrentSite.EditView extends Locomotive.Views.Shared.Form
|
|
64
64
|
passDelay: 50
|
65
65
|
tabMode: 'shift'
|
66
66
|
theme: 'default'
|
67
|
-
|
67
|
+
|
68
|
+
@editor.on 'change', (editor, change) => @model.set(robots_txt: editor.getValue())
|
68
69
|
|
69
70
|
save: (event) ->
|
70
71
|
# if @model.includes_domain(window.location.host)
|
@@ -9,8 +9,6 @@ class Locomotive.Views.EditableElements.EditAllView extends Backbone.View
|
|
9
9
|
_editable_elements_views: []
|
10
10
|
|
11
11
|
render: ->
|
12
|
-
window.bar = @
|
13
|
-
|
14
12
|
if @collection.isEmpty()
|
15
13
|
$(@el).hide()
|
16
14
|
else
|
@@ -45,10 +43,9 @@ class Locomotive.Views.EditableElements.EditAllView extends Backbone.View
|
|
45
43
|
element.set(index: index)
|
46
44
|
|
47
45
|
view_class = switch element.get('type')
|
48
|
-
when '
|
49
|
-
when '
|
50
|
-
when '
|
51
|
-
when 'EditableControl' then Locomotive.Views.EditableElements.ControlView
|
46
|
+
when 'EditableText' then Locomotive.Views.EditableElements.TextView
|
47
|
+
when 'EditableFile' then Locomotive.Views.EditableElements.FileView
|
48
|
+
when 'EditableControl' then Locomotive.Views.EditableElements.ControlView
|
52
49
|
|
53
50
|
view = new view_class(model: element)
|
54
51
|
@$("#block-#{block.index} > fieldset > ol").append(view.render().el)
|
@@ -0,0 +1,47 @@
|
|
1
|
+
Locomotive.Views.EditableElements ||= {}
|
2
|
+
|
3
|
+
class Locomotive.Views.EditableElements.TextView extends Backbone.View
|
4
|
+
|
5
|
+
tagName: 'li'
|
6
|
+
|
7
|
+
className: 'text input html'
|
8
|
+
|
9
|
+
default_line_height: 20
|
10
|
+
|
11
|
+
render: ->
|
12
|
+
$(@el).html(ich.editable_text_input(@model.toJSON()))
|
13
|
+
|
14
|
+
return @
|
15
|
+
|
16
|
+
after_render: ->
|
17
|
+
if @model.get('format') == 'html'
|
18
|
+
@$('textarea').tinymce(@tinymce_settings())
|
19
|
+
else
|
20
|
+
@$('textarea').bind 'keyup', (event) =>
|
21
|
+
input = $(event.target)
|
22
|
+
@model.set(content: input.val())
|
23
|
+
|
24
|
+
tinymce_settings: ->
|
25
|
+
base_settings = window.Locomotive.tinyMCE.defaultSettings
|
26
|
+
|
27
|
+
if @model.get('line_break') == false
|
28
|
+
base_settings = window.Locomotive.tinyMCE.minimalSettings
|
29
|
+
|
30
|
+
_.extend {}, base_settings,
|
31
|
+
height: @model.get('rows') * @default_line_height
|
32
|
+
oninit: ((editor) =>
|
33
|
+
$.cmd 'S', (() =>
|
34
|
+
@model.set(content: editor.getBody().innerHTML)
|
35
|
+
$(@el).parents('form').trigger('submit')
|
36
|
+
), [], ignoreCase: true, document: editor.dom.doc),
|
37
|
+
onchange_callback: (editor) =>
|
38
|
+
@model.set(content: editor.getBody().innerHTML)
|
39
|
+
|
40
|
+
refresh: ->
|
41
|
+
# do nothing
|
42
|
+
|
43
|
+
remove: ->
|
44
|
+
if @model.get('format') == 'html'
|
45
|
+
@$('textarea').tinymce().remove()
|
46
|
+
|
47
|
+
super
|
@@ -78,7 +78,7 @@ class Locomotive.Views.InlineEditor.ToolbarView extends Backbone.View
|
|
78
78
|
|
79
79
|
editable_elements: ->
|
80
80
|
if @options.target[0].contentWindow.Aloha
|
81
|
-
@options.target[0].contentWindow.Aloha.jQuery('.editable-
|
81
|
+
@options.target[0].contentWindow.Aloha.jQuery('.editable-text')
|
82
82
|
else
|
83
83
|
null
|
84
84
|
|
@@ -89,7 +89,8 @@ class Locomotive.Views.Pages.FormView extends Locomotive.Views.Shared.FormView
|
|
89
89
|
passDelay: 50
|
90
90
|
tabMode: 'shift'
|
91
91
|
theme: 'default'
|
92
|
-
|
92
|
+
|
93
|
+
@editor.on 'change', (editor, change) => @model.set(raw_template: editor.getValue())
|
93
94
|
|
94
95
|
after_inputs_fold: ->
|
95
96
|
@editor.refresh()
|