camaleon_cms 2.4.3 → 2.4.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of camaleon_cms might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/app/assets/javascripts/camaleon_cms/admin/_custom_fields.js +19 -5
- data/app/assets/javascripts/camaleon_cms/admin/_translator.js +12 -2
- data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/de.js +20 -0
- data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/de.js +219 -0
- data/app/assets/javascripts/camaleon_cms/admin/uploader/_media_manager.js.coffee +2 -0
- data/app/controllers/camaleon_cms/admin/users_controller.rb +1 -1
- data/app/helpers/camaleon_cms/admin/category_helper.rb +11 -4
- data/app/helpers/camaleon_cms/admin/custom_fields_helper.rb +22 -1
- data/app/helpers/camaleon_cms/frontend/seo_helper.rb +2 -0
- data/app/helpers/camaleon_cms/frontend/site_helper.rb +5 -0
- data/app/helpers/camaleon_cms/short_code_helper.rb +10 -13
- data/app/models/camaleon_cms/post_type.rb +1 -2
- data/app/models/camaleon_cms/site.rb +1 -1
- data/app/models/concerns/camaleon_cms/custom_fields_read.rb +1 -1
- data/app/views/camaleon_cms/admin/categories/_form.html.erb +1 -1
- data/app/views/camaleon_cms/admin/posts/index.html.erb +1 -1
- data/app/views/camaleon_cms/admin/settings/custom_fields/_render.html.erb +2 -2
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_categories.html.erb +11 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_post_types.html.erb +7 -0
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_select.html.erb +3 -3
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_url.html.erb +2 -2
- data/app/views/camaleon_cms/admin/users/index.html.erb +1 -1
- data/config/initializers/assets.rb +8 -6
- data/config/initializers/model_alias.rb +1 -1
- data/config/locales/camaleon_cms/admin/de.yml +681 -0
- data/config/locales/camaleon_cms/admin/en.yml +3 -3
- data/config/locales/camaleon_cms/admin/js.yml +51 -0
- data/config/locales/camaleon_cms/common.yml +67 -0
- data/config/locales/camaleon_cms/languages.yml +13 -0
- data/config/locales/camaleon_cms/routes.yml +8 -0
- data/config/system.json +1 -1
- data/lib/camaleon_cms/version.rb +1 -1
- metadata +8 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fdad92687ff9876d42095bdf25e09dd71df9bc23
|
4
|
+
data.tar.gz: f8069ba9e8bc54c08b3ef796590651587dcdc1fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2879637c8c2cb01bc633c94d9e1b03971f2a85f8dcee0bf2af2a08a56165f1724e076bdd42eba7403d2037155e38413f1d08ddc77ccbe2b424ae9b25ff49770c
|
7
|
+
data.tar.gz: 9918e186699856f064f5392b67db467ac649f39db7cafec4006bec2db7d03c4961e40a575a00c7ce849b53a58044da6dbcd156d23140014d9a891608122a0521
|
data/README.md
CHANGED
@@ -39,7 +39,7 @@
|
|
39
39
|
* Add the gem in your Gemfile
|
40
40
|
|
41
41
|
```
|
42
|
-
gem "camaleon_cms", '>= 2.4.
|
42
|
+
gem "camaleon_cms", '>= 2.4.3.1' # Stable versions 2.3.6, 2.2.1, 2.1.1, 2.1.0
|
43
43
|
# gem "camaleon_cms", github: 'owen2345/camaleon-cms' # current development version
|
44
44
|
```
|
45
45
|
* Only Rails 5 support
|
@@ -69,13 +69,13 @@ function cama_build_custom_field(panel, field_data, values){
|
|
69
69
|
field.find('.btn').addClass('disabled').unbind().click(function(){ return false; });
|
70
70
|
}
|
71
71
|
|
72
|
-
if (field_data.kind == 'checkbox')
|
72
|
+
if (field_data.kind == 'checkbox'){
|
73
73
|
field.find('input')[0].checked = value;
|
74
|
-
}
|
75
|
-
field.find('.input-value').val(value).trigger('change', {field_rendered: true});
|
74
|
+
}else if(value){
|
75
|
+
field.find('.input-value').val(value).trigger('change', {field_rendered: true}).data('value', value);
|
76
76
|
}
|
77
77
|
$sortable.append(field);
|
78
|
-
if(callback)
|
78
|
+
if(callback) window[callback](field, value);
|
79
79
|
field_counter ++;
|
80
80
|
}
|
81
81
|
if(field_data.kind != 'checkbox' && values.length <= 0) {
|
@@ -117,7 +117,7 @@ function custom_field_colorpicker($field) {
|
|
117
117
|
}
|
118
118
|
function custom_field_colorpicker_val($field, value) {
|
119
119
|
if ($field) {
|
120
|
-
$field.find(".my-colorpicker").attr('data-color', value).colorpicker();
|
120
|
+
$field.find(".my-colorpicker").attr('data-color', value || '').colorpicker();
|
121
121
|
}
|
122
122
|
}
|
123
123
|
function custom_field_checkbox_val($field, values) {
|
@@ -196,6 +196,20 @@ function custom_field_text_box($field) {
|
|
196
196
|
}
|
197
197
|
}
|
198
198
|
}
|
199
|
+
function custom_field_url_callback($field) {
|
200
|
+
if ($field) {
|
201
|
+
if ($field.find('input').hasClass('is_translate')) {
|
202
|
+
$field.find('input').addClass('translatable').Translatable(ADMIN_TRANSLATIONS);
|
203
|
+
}
|
204
|
+
}
|
205
|
+
}
|
206
|
+
function custom_field_select_callback($field, val) {
|
207
|
+
if ($field) {
|
208
|
+
var sel = $field.find('select.input-value');
|
209
|
+
if (!val) sel.data('value', sel.val()); // fix for select translator
|
210
|
+
if(sel.hasClass('is_translate')) sel.addClass('translatable').Translatable(ADMIN_TRANSLATIONS);
|
211
|
+
}
|
212
|
+
}
|
199
213
|
|
200
214
|
function load_upload_audio_field(thiss) {
|
201
215
|
var $input = $(thiss).prev();
|
@@ -14,6 +14,7 @@ jQuery(function($){
|
|
14
14
|
* @param default_language => not important (deprecated)
|
15
15
|
* @returns {$.fn.Translatable}
|
16
16
|
* @constructor
|
17
|
+
* select tag fix: save translated value in data-value
|
17
18
|
*/
|
18
19
|
var TRANSLATOR_counter = 1;
|
19
20
|
$.fn.Translatable = function(languages, default_language){
|
@@ -28,7 +29,7 @@ jQuery(function($){
|
|
28
29
|
get_translations = function(text, language){
|
29
30
|
var translations_per_locale = {};
|
30
31
|
var res = "";
|
31
|
-
if(text.trim().search("<!--") != 0
|
32
|
+
if(!text || text.trim().search("<!--") != 0){ // not translated string
|
32
33
|
for(var i in languages){
|
33
34
|
translations_per_locale[languages[i]] = text;
|
34
35
|
}
|
@@ -63,7 +64,7 @@ jQuery(function($){
|
|
63
64
|
|
64
65
|
self.each(function(){
|
65
66
|
var ele = $(this);
|
66
|
-
var tabs_title = [], tabs_content = [], translations = get_translations(ele.val()), inputs = {};
|
67
|
+
var tabs_title = [], tabs_content = [], translations = get_translations(ele.is('select') ? ele.data('value') : ele.val()), inputs = {};
|
67
68
|
var class_group = ele.parent().hasClass("form-group") ? "" : "form-group";
|
68
69
|
// decoding languages
|
69
70
|
for(var ii in languages){
|
@@ -91,6 +92,15 @@ jQuery(function($){
|
|
91
92
|
var tabs = $('<div class="trans_panel" role="tabpanel"><ul class="nav nav-tabs" role="tablist"></ul><div class="tab-content"></div></div>');
|
92
93
|
tabs.find(".nav-tabs").append(tabs_title.reverse());
|
93
94
|
tabs.find(".tab-content").append(tabs_content);
|
95
|
+
|
96
|
+
// unknown fields (fix for select fields)
|
97
|
+
if(ele.is('select')){
|
98
|
+
var rep_field = $('<input type="hidden">').attr({class: ele.attr('class'), name: ele.attr('name')})
|
99
|
+
ele.replaceWith(rep_field);
|
100
|
+
ele = rep_field;
|
101
|
+
tabs_content[0].find('.translate-item').trigger('change');
|
102
|
+
}
|
103
|
+
|
94
104
|
ele.addClass("translated-item").hide().after(tabs);
|
95
105
|
//ele.data("tabs_content", tabs_content);
|
96
106
|
ele.data("translation_inputs", inputs);
|
@@ -0,0 +1,20 @@
|
|
1
|
+
/*
|
2
|
+
* Translated default messages for the jQuery validation plugin.
|
3
|
+
* Locale: DE (German, Deutsch)
|
4
|
+
*/
|
5
|
+
$.extend( $.validator.messages, {
|
6
|
+
required: "Dieses Feld ist ein Pflichtfeld.",
|
7
|
+
maxlength: $.validator.format( "Geben Sie bitte maximal {0} Zeichen ein." ),
|
8
|
+
minlength: $.validator.format( "Geben Sie bitte mindestens {0} Zeichen ein." ),
|
9
|
+
rangelength: $.validator.format( "Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein." ),
|
10
|
+
email: "Geben Sie bitte eine gültige E-Mail Adresse ein.",
|
11
|
+
url: "Geben Sie bitte eine gültige URL ein.",
|
12
|
+
date: "Bitte geben Sie ein gültiges Datum ein.",
|
13
|
+
number: "Geben Sie bitte eine Nummer ein.",
|
14
|
+
digits: "Geben Sie bitte nur Ziffern ein.",
|
15
|
+
equalTo: "Bitte denselben Wert wiederholen.",
|
16
|
+
range: $.validator.format( "Geben Sie bitte einen Wert zwischen {0} und {1} ein." ),
|
17
|
+
max: $.validator.format( "Geben Sie bitte einen Wert kleiner oder gleich {0} ein." ),
|
18
|
+
min: $.validator.format( "Geben Sie bitte einen Wert größer oder gleich {0} ein." ),
|
19
|
+
creditcard: "Geben Sie bitte eine gültige Kreditkarten-Nummer ein."
|
20
|
+
} );
|
@@ -0,0 +1,219 @@
|
|
1
|
+
tinymce.addI18n('de',{
|
2
|
+
"Cut": "Ausschneiden",
|
3
|
+
"Heading 5": "\u00dcberschrift 5",
|
4
|
+
"Header 2": "\u00dcberschrift 2",
|
5
|
+
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Ihr Browser unterst\u00fctzt leider keinen direkten Zugriff auf die Zwischenablage. Bitte benutzen Sie die Strg + X \/ C \/ V Tastenkombinationen.",
|
6
|
+
"Heading 4": "\u00dcberschrift 4",
|
7
|
+
"Div": "Textblock",
|
8
|
+
"Heading 2": "\u00dcberschrift 2",
|
9
|
+
"Paste": "Einf\u00fcgen",
|
10
|
+
"Close": "Schlie\u00dfen",
|
11
|
+
"Font Family": "Schriftart",
|
12
|
+
"Pre": "Vorformatierter Text",
|
13
|
+
"Align right": "Rechtsb\u00fcndig ausrichten",
|
14
|
+
"New document": "Neues Dokument",
|
15
|
+
"Blockquote": "Zitat",
|
16
|
+
"Numbered list": "Nummerierte Liste",
|
17
|
+
"Heading 1": "\u00dcberschrift 1",
|
18
|
+
"Headings": "\u00dcberschriften",
|
19
|
+
"Increase indent": "Einzug vergr\u00f6\u00dfern",
|
20
|
+
"Formats": "Formate",
|
21
|
+
"Headers": "\u00dcberschriften",
|
22
|
+
"Select all": "Alles ausw\u00e4hlen",
|
23
|
+
"Header 3": "\u00dcberschrift 3",
|
24
|
+
"Blocks": "Absatzformate",
|
25
|
+
"Undo": "R\u00fcckg\u00e4ngig",
|
26
|
+
"Strikethrough": "Durchgestrichen",
|
27
|
+
"Bullet list": "Aufz\u00e4hlung",
|
28
|
+
"Header 1": "\u00dcberschrift 1",
|
29
|
+
"Superscript": "Hochgestellt",
|
30
|
+
"Clear formatting": "Formatierung entfernen",
|
31
|
+
"Font Sizes": "Schriftgr\u00f6\u00dfe",
|
32
|
+
"Subscript": "Tiefgestellt",
|
33
|
+
"Header 6": "\u00dcberschrift 6",
|
34
|
+
"Redo": "Wiederholen",
|
35
|
+
"Paragraph": "Absatz",
|
36
|
+
"Ok": "Ok",
|
37
|
+
"Bold": "Fett",
|
38
|
+
"Code": "Quelltext",
|
39
|
+
"Italic": "Kursiv",
|
40
|
+
"Align center": "Zentriert ausrichten",
|
41
|
+
"Header 5": "\u00dcberschrift 5",
|
42
|
+
"Heading 6": "\u00dcberschrift 6",
|
43
|
+
"Heading 3": "\u00dcberschrift 3",
|
44
|
+
"Decrease indent": "Einzug verkleinern",
|
45
|
+
"Header 4": "\u00dcberschrift 4",
|
46
|
+
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Einf\u00fcgen ist nun im einfachen Textmodus. Inhalte werden ab jetzt als unformatierter Text eingef\u00fcgt, bis Sie diese Einstellung wieder ausschalten!",
|
47
|
+
"Underline": "Unterstrichen",
|
48
|
+
"Cancel": "Abbrechen",
|
49
|
+
"Justify": "Blocksatz",
|
50
|
+
"Inline": "Zeichenformate",
|
51
|
+
"Copy": "Kopieren",
|
52
|
+
"Align left": "Linksb\u00fcndig ausrichten",
|
53
|
+
"Visual aids": "Visuelle Hilfen",
|
54
|
+
"Lower Greek": "Griechische Kleinbuchstaben",
|
55
|
+
"Square": "Quadrat",
|
56
|
+
"Default": "Standard",
|
57
|
+
"Lower Alpha": "Kleinbuchstaben",
|
58
|
+
"Circle": "Kreis",
|
59
|
+
"Disc": "Punkt",
|
60
|
+
"Upper Alpha": "Gro\u00dfbuchstaben",
|
61
|
+
"Upper Roman": "R\u00f6mische Zahlen (Gro\u00dfbuchstaben)",
|
62
|
+
"Lower Roman": "R\u00f6mische Zahlen (Kleinbuchstaben)",
|
63
|
+
"Name": "Name",
|
64
|
+
"Anchor": "Textmarke",
|
65
|
+
"You have unsaved changes are you sure you want to navigate away?": "Die \u00c4nderungen wurden noch nicht gespeichert, sind Sie sicher, dass Sie diese Seite verlassen wollen?",
|
66
|
+
"Restore last draft": "Letzten Entwurf wiederherstellen",
|
67
|
+
"Special character": "Sonderzeichen",
|
68
|
+
"Source code": "Quelltext",
|
69
|
+
"B": "B",
|
70
|
+
"R": "R",
|
71
|
+
"G": "G",
|
72
|
+
"Color": "Farbe",
|
73
|
+
"Right to left": "Von rechts nach links",
|
74
|
+
"Left to right": "Von links nach rechts",
|
75
|
+
"Emoticons": "Emoticons",
|
76
|
+
"Robots": "Robots",
|
77
|
+
"Document properties": "Dokumenteigenschaften",
|
78
|
+
"Title": "Titel",
|
79
|
+
"Keywords": "Sch\u00fcsselw\u00f6rter",
|
80
|
+
"Encoding": "Zeichenkodierung",
|
81
|
+
"Description": "Beschreibung",
|
82
|
+
"Author": "Verfasser",
|
83
|
+
"Fullscreen": "Vollbild",
|
84
|
+
"Horizontal line": "Horizontale Linie",
|
85
|
+
"Horizontal space": "Horizontaler Abstand",
|
86
|
+
"Insert\/edit image": "Bild einf\u00fcgen\/bearbeiten",
|
87
|
+
"General": "Allgemein",
|
88
|
+
"Advanced": "Erweitert",
|
89
|
+
"Source": "Quelle",
|
90
|
+
"Border": "Rahmen",
|
91
|
+
"Constrain proportions": "Seitenverh\u00e4ltnis beibehalten",
|
92
|
+
"Vertical space": "Vertikaler Abstand",
|
93
|
+
"Image description": "Bildbeschreibung",
|
94
|
+
"Style": "Stil",
|
95
|
+
"Dimensions": "Abmessungen",
|
96
|
+
"Insert image": "Bild einf\u00fcgen",
|
97
|
+
"Zoom in": "Ansicht vergr\u00f6\u00dfern",
|
98
|
+
"Contrast": "Kontrast",
|
99
|
+
"Back": "Zur\u00fcck",
|
100
|
+
"Gamma": "Gamma",
|
101
|
+
"Flip horizontally": "Horizontal spiegeln",
|
102
|
+
"Resize": "Skalieren",
|
103
|
+
"Sharpen": "Sch\u00e4rfen",
|
104
|
+
"Zoom out": "Ansicht verkleinern",
|
105
|
+
"Image options": "Bildeigenschaften",
|
106
|
+
"Apply": "Anwenden",
|
107
|
+
"Brightness": "Helligkeit",
|
108
|
+
"Rotate clockwise": "Im Uhrzeigersinn drehen",
|
109
|
+
"Rotate counterclockwise": "Gegen den Uhrzeigersinn drehen",
|
110
|
+
"Edit image": "Bild bearbeiten",
|
111
|
+
"Color levels": "Farbwerte",
|
112
|
+
"Crop": "Bescheiden",
|
113
|
+
"Orientation": "Ausrichtung",
|
114
|
+
"Flip vertically": "Vertikal spiegeln",
|
115
|
+
"Invert": "Invertieren",
|
116
|
+
"Insert date\/time": "Datum\/Uhrzeit einf\u00fcgen ",
|
117
|
+
"Remove link": "Link entfernen",
|
118
|
+
"Url": "URL",
|
119
|
+
"Text to display": "Anzuzeigender Text",
|
120
|
+
"Anchors": "Textmarken",
|
121
|
+
"Insert link": "Link einf\u00fcgen",
|
122
|
+
"New window": "Neues Fenster",
|
123
|
+
"None": "Keine",
|
124
|
+
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Diese Adresse scheint ein externer Link zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"http:\/\/\" voranstellen?",
|
125
|
+
"Target": "Ziel",
|
126
|
+
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Diese Adresse scheint eine E-Mail-Adresse zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"mailto:\" voranstellen?",
|
127
|
+
"Insert\/edit link": "Link einf\u00fcgen\/bearbeiten",
|
128
|
+
"Insert\/edit video": "Video einf\u00fcgen\/bearbeiten",
|
129
|
+
"Poster": "Poster",
|
130
|
+
"Alternative source": "Alternative Quelle",
|
131
|
+
"Paste your embed code below:": "F\u00fcgen Sie Ihren Einbettungscode hier ein:",
|
132
|
+
"Insert video": "Video einf\u00fcgen",
|
133
|
+
"Embed": "Einbetten",
|
134
|
+
"Nonbreaking space": "Gesch\u00fctztes Leerzeichen",
|
135
|
+
"Page break": "Seitenumbruch",
|
136
|
+
"Paste as text": "Als Text einf\u00fcgen",
|
137
|
+
"Preview": "Vorschau",
|
138
|
+
"Print": "Drucken",
|
139
|
+
"Save": "Speichern",
|
140
|
+
"Could not find the specified string.": "Die Zeichenfolge wurde nicht gefunden.",
|
141
|
+
"Replace": "Ersetzen",
|
142
|
+
"Next": "Weiter",
|
143
|
+
"Whole words": "Nur ganze W\u00f6rter",
|
144
|
+
"Find and replace": "Suchen und ersetzen",
|
145
|
+
"Replace with": "Ersetzen durch",
|
146
|
+
"Find": "Suchen",
|
147
|
+
"Replace all": "Alles ersetzen",
|
148
|
+
"Match case": "Gro\u00df-\/Kleinschreibung beachten",
|
149
|
+
"Prev": "Zur\u00fcck",
|
150
|
+
"Spellcheck": "Rechtschreibpr\u00fcfung",
|
151
|
+
"Finish": "Ende",
|
152
|
+
"Ignore all": "Alles Ignorieren",
|
153
|
+
"Ignore": "Ignorieren",
|
154
|
+
"Add to Dictionary": "Zum W\u00f6rterbuch hinzuf\u00fcgen",
|
155
|
+
"Insert row before": "Neue Zeile davor einf\u00fcgen ",
|
156
|
+
"Rows": "Zeilen",
|
157
|
+
"Height": "H\u00f6he",
|
158
|
+
"Paste row after": "Zeile danach einf\u00fcgen",
|
159
|
+
"Alignment": "Ausrichtung",
|
160
|
+
"Border color": "Rahmenfarbe",
|
161
|
+
"Column group": "Spaltengruppe",
|
162
|
+
"Row": "Zeile",
|
163
|
+
"Insert column before": "Neue Spalte davor einf\u00fcgen",
|
164
|
+
"Split cell": "Zelle aufteilen",
|
165
|
+
"Cell padding": "Zelleninnenabstand",
|
166
|
+
"Cell spacing": "Zellenabstand",
|
167
|
+
"Row type": "Zeilentyp",
|
168
|
+
"Insert table": "Tabelle einf\u00fcgen",
|
169
|
+
"Body": "Inhalt",
|
170
|
+
"Caption": "Beschriftung",
|
171
|
+
"Footer": "Fu\u00dfzeile",
|
172
|
+
"Delete row": "Zeile l\u00f6schen",
|
173
|
+
"Paste row before": "Zeile davor einf\u00fcgen",
|
174
|
+
"Scope": "G\u00fcltigkeitsbereich",
|
175
|
+
"Delete table": "Tabelle l\u00f6schen",
|
176
|
+
"H Align": "Horizontale Ausrichtung",
|
177
|
+
"Top": "Oben",
|
178
|
+
"Header cell": "Kopfzelle",
|
179
|
+
"Column": "Spalte",
|
180
|
+
"Row group": "Zeilengruppe",
|
181
|
+
"Cell": "Zelle",
|
182
|
+
"Middle": "Mitte",
|
183
|
+
"Cell type": "Zellentyp",
|
184
|
+
"Copy row": "Zeile kopieren",
|
185
|
+
"Row properties": "Zeileneigenschaften",
|
186
|
+
"Table properties": "Tabelleneigenschaften",
|
187
|
+
"Bottom": "Unten",
|
188
|
+
"V Align": "Vertikale Ausrichtung",
|
189
|
+
"Header": "Kopfzeile",
|
190
|
+
"Right": "Rechtsb\u00fcndig",
|
191
|
+
"Insert column after": "Neue Spalte danach einf\u00fcgen",
|
192
|
+
"Cols": "Spalten",
|
193
|
+
"Insert row after": "Neue Zeile danach einf\u00fcgen",
|
194
|
+
"Width": "Breite",
|
195
|
+
"Cell properties": "Zelleneigenschaften",
|
196
|
+
"Left": "Linksb\u00fcndig",
|
197
|
+
"Cut row": "Zeile ausschneiden",
|
198
|
+
"Delete column": "Spalte l\u00f6schen",
|
199
|
+
"Center": "Zentriert",
|
200
|
+
"Merge cells": "Zellen verbinden",
|
201
|
+
"Insert template": "Vorlage einf\u00fcgen ",
|
202
|
+
"Templates": "Vorlagen",
|
203
|
+
"Background color": "Hintergrundfarbe",
|
204
|
+
"Custom...": "Benutzerdefiniert...",
|
205
|
+
"Custom color": "Benutzerdefinierte Farbe",
|
206
|
+
"No color": "Keine Farbe",
|
207
|
+
"Text color": "Textfarbe",
|
208
|
+
"Show blocks": " Bl\u00f6cke anzeigen",
|
209
|
+
"Show invisible characters": "Unsichtbare Zeichen anzeigen",
|
210
|
+
"Words: {0}": "W\u00f6rter: {0}",
|
211
|
+
"Insert": "Einf\u00fcgen",
|
212
|
+
"File": "Datei",
|
213
|
+
"Edit": "Bearbeiten",
|
214
|
+
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich-Text- Area. Dr\u00fccken Sie ALT-F9 f\u00fcr das Men\u00fc. Dr\u00fccken Sie ALT-F10 f\u00fcr Symbolleiste. Dr\u00fccken Sie ALT-0 f\u00fcr Hilfe",
|
215
|
+
"Tools": "Werkzeuge",
|
216
|
+
"View": "Ansicht",
|
217
|
+
"Table": "Tabelle",
|
218
|
+
"Format": "Format"
|
219
|
+
});
|
@@ -213,7 +213,9 @@ window["cama_init_media"] = (media_panel) ->
|
|
213
213
|
hideLoading()
|
214
214
|
modal.modal("hide")
|
215
215
|
if res.search("folder_item") >= 0 # success upload
|
216
|
+
res = $(res)
|
216
217
|
media_files_panel.append(res)
|
218
|
+
res.click()
|
217
219
|
else
|
218
220
|
$.fn.alert({type: 'error', content: res, title: "Error"})
|
219
221
|
)
|
@@ -5,7 +5,7 @@ class CamaleonCms::Admin::UsersController < CamaleonCms::AdminController
|
|
5
5
|
|
6
6
|
def index
|
7
7
|
add_breadcrumb I18n.t("camaleon_cms.admin.users.list_users")
|
8
|
-
@users = current_site.users.paginate(:page => params[:page], :per_page => current_site.admin_per_page)
|
8
|
+
@users = current_site.users.paginate(:page => params[:page], :per_page => current_site.admin_per_page)
|
9
9
|
end
|
10
10
|
|
11
11
|
def profile
|
@@ -4,12 +4,19 @@ module CamaleonCms::Admin::CategoryHelper
|
|
4
4
|
# build an array multiple with category items prefixed with - for each level
|
5
5
|
# categories: collection of categories
|
6
6
|
# level: internal iterator control
|
7
|
-
|
7
|
+
# attrs: (Hash) extra params
|
8
|
+
# max_level: (Integer) permit to stop iteration in certain level
|
9
|
+
# until_cats: (Array of cat ids) permit to stop iteration if current iteration is in this array
|
10
|
+
# exclude_cats: (Array of cat ids) exclude this categories from the list
|
11
|
+
def cama_category_get_options_html(categories, level = 0, attrs = {})
|
12
|
+
attrs = {max_level: 1000, until_cats:[], exclude_cats: []}.merge(attrs)
|
8
13
|
options = []
|
9
14
|
categories.all.decorate.each do |category|
|
10
|
-
|
11
|
-
|
12
|
-
|
15
|
+
next if attrs[:exclude_cats].include?(category.id)
|
16
|
+
options << [("—"*level) + category.the_title, category.id]
|
17
|
+
children = attrs[:max_level] < level ? [] : category.children
|
18
|
+
children = [] if attrs[:until_cats].include?(category.id)
|
19
|
+
options += cama_category_get_options_html(children, level + 1, attrs) if children.size > 0
|
13
20
|
end
|
14
21
|
options
|
15
22
|
end
|
@@ -31,7 +31,8 @@ module CamaleonCms::Admin::CustomFieldsHelper
|
|
31
31
|
label: t('camaleon_cms.admin.custom_field.fields.select'),
|
32
32
|
options: {
|
33
33
|
required: true,
|
34
|
-
multiple:
|
34
|
+
multiple: true,
|
35
|
+
translate: true,
|
35
36
|
multiple_options: {
|
36
37
|
label: t('camaleon_cms.admin.settings.options_select'),
|
37
38
|
default: 'radio'
|
@@ -232,6 +233,7 @@ module CamaleonCms::Admin::CustomFieldsHelper
|
|
232
233
|
options: {
|
233
234
|
required: true,
|
234
235
|
multiple: true,
|
236
|
+
translate: true,
|
235
237
|
default_value: '',
|
236
238
|
show_frontend: true
|
237
239
|
}
|
@@ -272,6 +274,25 @@ module CamaleonCms::Admin::CustomFieldsHelper
|
|
272
274
|
}
|
273
275
|
]
|
274
276
|
}
|
277
|
+
|
278
|
+
items[:post_types] = {
|
279
|
+
key: 'post_types',
|
280
|
+
label: t('camaleon_cms.admin.post_type.post_types'),
|
281
|
+
options: {
|
282
|
+
required: true,
|
283
|
+
multiple: true
|
284
|
+
}
|
285
|
+
}
|
286
|
+
|
287
|
+
items[:categories] = {
|
288
|
+
key: 'categories',
|
289
|
+
label: t('camaleon_cms.admin.table.categories'),
|
290
|
+
options: {
|
291
|
+
required: true,
|
292
|
+
multiple: true
|
293
|
+
}
|
294
|
+
}
|
295
|
+
|
275
296
|
# evaluate the content of command value on listing
|
276
297
|
# sample command: options_from_collection_for_select(current_site.the_posts("commerce").decorate, :id, :the_title)
|
277
298
|
items[:select_eval] = {
|
@@ -17,6 +17,8 @@ module CamaleonCms::Frontend::SeoHelper
|
|
17
17
|
data2 = {title: "#{current_site.the_title} | #{@cama_visited_tag.the_title}", description: @cama_visited_tag.the_excerpt, keywords: @cama_visited_tag.the_keywords, object: @cama_visited_tag }
|
18
18
|
elsif is_category?
|
19
19
|
data2 = {image: @cama_visited_category.the_thumb_url, title: "#{current_site.the_title} | #{@cama_visited_category.the_title}", description: @cama_visited_category.the_excerpt, keywords: @cama_visited_category.the_keywords, object: @cama_visited_category }
|
20
|
+
elsif is_profile?
|
21
|
+
data2 = {image: @user.the_avatar, title: "#{current_site.the_title} | #{@user.the_name}", description: @user.the_slogan, object: @user }
|
20
22
|
else
|
21
23
|
data2 = {}
|
22
24
|
end
|