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.

Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/app/assets/javascripts/camaleon_cms/admin/_custom_fields.js +19 -5
  4. data/app/assets/javascripts/camaleon_cms/admin/_translator.js +12 -2
  5. data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/de.js +20 -0
  6. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/de.js +219 -0
  7. data/app/assets/javascripts/camaleon_cms/admin/uploader/_media_manager.js.coffee +2 -0
  8. data/app/controllers/camaleon_cms/admin/users_controller.rb +1 -1
  9. data/app/helpers/camaleon_cms/admin/category_helper.rb +11 -4
  10. data/app/helpers/camaleon_cms/admin/custom_fields_helper.rb +22 -1
  11. data/app/helpers/camaleon_cms/frontend/seo_helper.rb +2 -0
  12. data/app/helpers/camaleon_cms/frontend/site_helper.rb +5 -0
  13. data/app/helpers/camaleon_cms/short_code_helper.rb +10 -13
  14. data/app/models/camaleon_cms/post_type.rb +1 -2
  15. data/app/models/camaleon_cms/site.rb +1 -1
  16. data/app/models/concerns/camaleon_cms/custom_fields_read.rb +1 -1
  17. data/app/views/camaleon_cms/admin/categories/_form.html.erb +1 -1
  18. data/app/views/camaleon_cms/admin/posts/index.html.erb +1 -1
  19. data/app/views/camaleon_cms/admin/settings/custom_fields/_render.html.erb +2 -2
  20. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_categories.html.erb +11 -0
  21. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_post_types.html.erb +7 -0
  22. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_select.html.erb +3 -3
  23. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_url.html.erb +2 -2
  24. data/app/views/camaleon_cms/admin/users/index.html.erb +1 -1
  25. data/config/initializers/assets.rb +8 -6
  26. data/config/initializers/model_alias.rb +1 -1
  27. data/config/locales/camaleon_cms/admin/de.yml +681 -0
  28. data/config/locales/camaleon_cms/admin/en.yml +3 -3
  29. data/config/locales/camaleon_cms/admin/js.yml +51 -0
  30. data/config/locales/camaleon_cms/common.yml +67 -0
  31. data/config/locales/camaleon_cms/languages.yml +13 -0
  32. data/config/locales/camaleon_cms/routes.yml +8 -0
  33. data/config/system.json +1 -1
  34. data/lib/camaleon_cms/version.rb +1 -1
  35. metadata +8 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 205446e9210d677532d7361988a9383be938b8cb
4
- data.tar.gz: 79bd3290fcc54bc2fe42c2d624c78f6b76287420
3
+ metadata.gz: fdad92687ff9876d42095bdf25e09dd71df9bc23
4
+ data.tar.gz: f8069ba9e8bc54c08b3ef796590651587dcdc1fd
5
5
  SHA512:
6
- metadata.gz: dd2007e5c789b1fbd6470ef61ec9af7bd04b7e976d5bc8b790ea1814d20d51988bd40f2e9ef5259f2739bca67f602730c0a86272642b8afa8beb6f81ce7ad160
7
- data.tar.gz: 9ec35495f3dda62745d76822a2857842ad18c11e94b0f2e103615a0124fea1be0b183962c32e8d60a13c17800d09a70ac6fd31af5d1b5fb851efdc8a37c14f79
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.2' # Stable versions 2.3.6, 2.2.1, 2.1.1, 2.1.0
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
- } else if (value) {
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) eval(callback + "(field, value);");
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 || !text){ // not translated string
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).decorate
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
- def cama_category_get_options_html(categories, level = 0)
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
- options << [("—"*level) + category.the_title, category.id] unless @category.id == category.id
11
- children = category.children
12
- options += cama_category_get_options_html(children, level + 1) if children.size > 0
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: false,
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