camaleon_cms 2.4.3.5 → 2.4.3.6

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of camaleon_cms might be problematic. Click here for more details.

Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -5
  3. data/app/apps/themes/camaleon_first/views/layouts/{mailer.html.erb → camaleon_cms/mailer.html.erb} +0 -0
  4. data/app/apps/themes/camaleon_first/views/{html_mailer/mailer.html.erb → mailer.html.erb} +0 -0
  5. data/app/assets/javascripts/camaleon_cms/admin/jquery.validate.js +3 -3
  6. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/zh-CN.js +10 -1
  7. data/app/assets/stylesheets/camaleon_cms/admin/uploader/_uploadfile.css.scss +14 -2
  8. data/app/controllers/camaleon_cms/admin/appearances/nav_menus_controller.rb +4 -3
  9. data/app/controllers/camaleon_cms/admin/categories_controller.rb +3 -0
  10. data/app/controllers/camaleon_cms/admin/comments_controller.rb +1 -0
  11. data/app/controllers/camaleon_cms/admin/posts/drafts_controller.rb +1 -1
  12. data/app/controllers/camaleon_cms/admin/posts_controller.rb +21 -7
  13. data/app/controllers/camaleon_cms/admin/sessions_controller.rb +0 -2
  14. data/app/controllers/camaleon_cms/admin/settings_controller.rb +1 -1
  15. data/app/controllers/camaleon_cms/admin/users_controller.rb +14 -3
  16. data/app/controllers/camaleon_cms/frontend_controller.rb +1 -1
  17. data/app/controllers/concerns/camaleon_cms/frontend_concern.rb +4 -4
  18. data/app/decorators/camaleon_cms/application_decorator.rb +1 -1
  19. data/app/decorators/camaleon_cms/post_decorator.rb +2 -2
  20. data/app/decorators/camaleon_cms/post_type_decorator.rb +3 -1
  21. data/app/decorators/camaleon_cms/user_decorator.rb +4 -0
  22. data/app/helpers/camaleon_cms/admin/application_helper.rb +1 -1
  23. data/app/helpers/camaleon_cms/admin/custom_fields_helper.rb +8 -8
  24. data/app/helpers/camaleon_cms/admin/menus_helper.rb +1 -1
  25. data/app/helpers/camaleon_cms/camaleon_helper.rb +5 -0
  26. data/app/helpers/camaleon_cms/uploader_helper.rb +1 -1
  27. data/app/models/camaleon_cms/post.rb +13 -6
  28. data/app/models/camaleon_cms/post_type.rb +1 -1
  29. data/app/models/camaleon_cms/site.rb +1 -1
  30. data/app/models/camaleon_cms/user_role.rb +8 -0
  31. data/app/models/concerns/camaleon_cms/custom_fields_read.rb +9 -7
  32. data/app/models/concerns/camaleon_cms/user_methods.rb +11 -1
  33. data/app/uploaders/camaleon_cms_local_uploader.rb +4 -2
  34. data/app/uploaders/camaleon_cms_uploader.rb +1 -1
  35. data/app/views/camaleon_cms/admin/categories/index.html.erb +2 -2
  36. data/app/views/camaleon_cms/admin/post_tags/index.html.erb +2 -2
  37. data/app/views/camaleon_cms/admin/posts/_sidebar.html.erb +1 -1
  38. data/app/views/camaleon_cms/admin/posts/index.html.erb +3 -2
  39. data/app/views/camaleon_cms/admin/sessions/forgot.html.erb +2 -2
  40. data/app/views/camaleon_cms/admin/sessions/login.html.erb +3 -5
  41. data/app/views/camaleon_cms/admin/sessions/register.html.erb +1 -1
  42. data/app/views/camaleon_cms/admin/settings/_configuration_settings.html.erb +2 -2
  43. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_posts.html.erb +1 -1
  44. data/app/views/camaleon_cms/admin/user_roles/index.html.erb +8 -2
  45. data/app/views/camaleon_cms/admin/users/form.html.erb +2 -2
  46. data/app/views/camaleon_cms/admin/users/index.html.erb +8 -1
  47. data/app/views/layouts/camaleon_cms/admin.html.erb +2 -2
  48. data/config/initializers/active_record_extension.rb +9 -0
  49. data/config/initializers/assets.rb +1 -1
  50. data/config/locales/camaleon_cms/admin/en.yml +1 -1
  51. data/config/locales/camaleon_cms/admin/es.yml +2 -2
  52. data/config/locales/camaleon_cms/admin/fr.yml +1 -1
  53. data/config/locales/camaleon_cms/admin/it.yml +1 -1
  54. data/config/locales/camaleon_cms/admin/js.yml +40 -40
  55. data/config/locales/camaleon_cms/admin/nl.yml +1 -1
  56. data/config/locales/camaleon_cms/admin/pt-BR.yml +1 -1
  57. data/config/locales/camaleon_cms/admin/pt.yml +1 -1
  58. data/config/locales/camaleon_cms/admin/ru.yml +1 -1
  59. data/config/locales/camaleon_cms/admin/zh-CH.yml +56 -30
  60. data/config/routes/frontend.rb +53 -14
  61. data/lib/camaleon_cms/engine.rb +4 -2
  62. data/lib/camaleon_cms/version.rb +1 -1
  63. data/lib/ext/string.rb +10 -2
  64. data/lib/generators/camaleon_cms/gem_plugin_generator.rb +3 -2
  65. data/spec/dummy/db/schema.rb +11 -0
  66. data/spec/dummy/log/test.log +56824 -0
  67. data/spec/features/pages_spec.rb +2 -1
  68. data/spec/features/posts_spec.rb +3 -1
  69. data/spec/spec_helper.rb +2 -2
  70. data/spec/support/common.rb +2 -2
  71. metadata +6 -10
  72. data/app/assets/javascripts/camaleon_cms/admin/login.js.coffee +0 -7
  73. data/app/assets/javascripts/camaleon_cms/admin/login_manifest.js +0 -15
  74. data/app/assets/javascripts/camaleon_cms/gibberish-aes.js +0 -1017
  75. data/lib/ext/aes_crypt.rb +0 -246
  76. data/spec/dummy/db/test.sqlite3 +0 -0
@@ -224,7 +224,7 @@ fr:
224
224
  edit: 'Editer'
225
225
  add: 'Ajouter'
226
226
  list: 'Liste'
227
- list_of: 'Liste de'
227
+ list_of: 'Liste de %{post_type}'
228
228
  new_site: 'Nouveau site'
229
229
  edit_site: 'Editer site'
230
230
  update: 'Mettre à jour'
@@ -225,7 +225,7 @@ it:
225
225
  edit: 'Modifica'
226
226
  add: 'Aggiungi'
227
227
  list: 'Lista'
228
- list_of: 'Lista di'
228
+ list_of: 'Lista di %{post_type}'
229
229
  new_site: 'Nuovo sito'
230
230
  edit_site: 'Modifica sito'
231
231
  update: 'Aggiorna'
@@ -57,48 +57,48 @@ zh-CN:
57
57
  approved: '批准'
58
58
  draft: '保存草稿成功'
59
59
  updated_success: '已成功更新'
60
- edit_menu: '按照您喜歡的順序放置每個項目. 單擊鉛筆的圖標以編輯項目,然後單擊x形式的圖標以刪除項目'
61
- delete_item: '真的要刪除此項嗎?'
62
- remove_items_submenu: '真的刪除此項目及其子菜單項?'
63
- you_must_upload_image: '您必須上傳圖片'
64
- you_must_upload_video: '您必須上傳視頻'
65
- no_response_fields: '無響應字段 '
66
- you_must_upload_json_file: '您必須上傳一個json文件'
67
- no_templates_defined: '未定義模板'
68
- avatar_updated: '更新頭像'
69
- form_error: '表單錯誤'
70
- option_title: '選項標題'
71
- permalink: '固定鏈接'
72
- pending: '有待'
73
- preview: '預覽'
74
- spam: '無用'
75
- view_page: '見頁'
76
- view_draft: '查看草案'
77
- recover: '恢復...'
78
- processing: '處理...'
79
- type_contents: '類型內容'
80
- upload_image: '上傳圖片'
81
- confirm_del: "您確定要刪除此項目嗎?"
82
- media_title: '媒體上傳器'
83
- replace_image: '替換圖像'
84
- save_new_image: '保存新圖像'
60
+ edit_menu: '按照您喜欢的顺序放置每个项目。单击铅笔的图标以编辑项目,然后单击 x 形式的图标以删除项目。'
61
+ delete_item: '真的要删除此项吗?'
62
+ remove_items_submenu: '真的删除此项目及其子菜单项?'
63
+ you_must_upload_image: '您必须上传图片'
64
+ you_must_upload_video: '您必须上传视频'
65
+ no_response_fields: '无响应字段 '
66
+ you_must_upload_json_file: '您必须上传一个 JSON 文件'
67
+ no_templates_defined: '未定义模板'
68
+ avatar_updated: '更新头像'
69
+ form_error: '表单错误'
70
+ option_title: '选项标题'
71
+ permalink: '固定链接'
72
+ pending: '待定'
73
+ preview: '预览'
74
+ spam: '无用'
75
+ view_page: '查看页面'
76
+ view_draft: '查看草稿'
77
+ recover: '恢复...'
78
+ processing: '处理中...'
79
+ type_contents: '类型内容'
80
+ upload_image: '上传图片'
81
+ confirm_del: '您确定要删除此项目吗?'
82
+ media_title: '媒体上传器'
83
+ replace_image: '替换图片'
84
+ save_new_image: '保存新图片'
85
85
 
86
86
  button:
87
- edit: "編輯"
88
- accept: "接受"
89
- cancel: "取消"
90
- delete: "刪除"
91
- clone: "克隆"
92
- add_tag: '添加標籤'
93
- close: ''
94
- settings: '設置'
95
- save: "保存"
96
- submit: "提交"
97
- name: "名稱"
98
- size: "尺寸"
99
- insert: "插"
100
- url: "網址"
101
- root: ""
87
+ edit: '编辑'
88
+ accept: '接受'
89
+ cancel: '取消'
90
+ delete: '刪除'
91
+ clone: '克隆'
92
+ add_tag: '添加标签'
93
+ close: '关闭'
94
+ settings: '设置'
95
+ save: '保存'
96
+ submit: '提交'
97
+ name: '名称'
98
+ size: '尺寸'
99
+ insert: '插入'
100
+ url: '网址'
101
+ root: ''
102
102
 
103
103
  pt-BR:
104
104
  camaleon_cms:
@@ -221,7 +221,7 @@ nl:
221
221
  edit: 'Bewerk'
222
222
  add: 'Toevoegen'
223
223
  list: 'Lijst'
224
- list_of: 'Lijst van'
224
+ list_of: 'Lijst van %{post_type}'
225
225
  new_site: 'Nieuwe site'
226
226
  edit_site: 'Site sewerken'
227
227
  update: 'Bijwerken'
@@ -218,7 +218,7 @@ pt-BR:
218
218
  edit: 'Editar'
219
219
  add: 'Adicionar'
220
220
  list: 'Listar'
221
- list_of: 'Lista de'
221
+ list_of: 'Lista de %{post_type}'
222
222
  new_site: 'Novo Site'
223
223
  edit_site: 'Editar Site'
224
224
  update: 'Atualizar'
@@ -216,7 +216,7 @@ pt:
216
216
  edit: 'Editar'
217
217
  add: 'Adicionar'
218
218
  list: 'Listar'
219
- list_of: 'Lista de'
219
+ list_of: 'Lista de %{post_type}'
220
220
  new_site: 'Novo Site'
221
221
  edit_site: 'Editar Site'
222
222
  update: 'Atualizar'
@@ -221,7 +221,7 @@ ru:
221
221
  edit: 'Редактировать'
222
222
  add: 'Добавить'
223
223
  list: 'Список'
224
- list_of: 'Список '
224
+ list_of: 'Список %{post_type}'
225
225
  new_site: 'Новый сайт'
226
226
  edit_site: 'Редактировать сайт'
227
227
  update: 'Обновить'
@@ -5,7 +5,7 @@ zh-CN:
5
5
  page_not_exist: "<h1>此页面不存在 :(...</h1><h5>您访问的页面不存在.</h5>"
6
6
  page_error_500: "<h1>ooops...</h1><h5>内部服务器500错误。 请联系管理员。</h5>"
7
7
  admin:
8
- request_error_message: "发生错误,请联系管理员。"
8
+ request_error_message: "发生错误,请联系管理员。"
9
9
  authorization_error: "你没有授权。"
10
10
  header:
11
11
  member_since: "成员开始日期: %{time}"
@@ -77,9 +77,9 @@ zh-CN:
77
77
  approved: '批准'
78
78
  change_status: '该评论状态已经被修改 '
79
79
  created: '评论已经被创建.'
80
- destroy: '回复经被删除.'
80
+ destroy: '回复已经被删除.'
81
81
  destroy_comments: '评论已经被删除.'
82
- deleted: '回复经被删除.'
82
+ deleted: '回复已经被删除.'
83
83
  error: '没发现该评论'
84
84
  pending: '处理中'
85
85
  responses: '回复已经被创建.'
@@ -113,14 +113,23 @@ zh-CN:
113
113
  image_versions_descr: "创建上传图片的附加多个版本,示例:300x300,505x350 ==>将创建两个具有这些尺寸的额外图片"
114
114
  image_thumb: '缩略图'
115
115
  image_thumb_descr: "定义缩略图的尺寸,示例:100x100。 默认值:%{d}"
116
+ required_image_thumb: '必须有缩略图?'
116
117
  numeric: '数字'
117
118
  phone: '号码'
118
119
  users: '用户'
119
120
  posts: '文章'
121
+ video: '视频'
122
+ audio: '音频'
123
+ editor: '编辑器'
124
+ radio: '单选按钮'
125
+ checkbox: '复选框'
126
+ checkboxes: '多选复选框'
127
+ url: '链接'
128
+ private_file: '私有文件'
120
129
  select_eval: '选择评估'
121
130
  field_attrs: '字段属性'
122
131
  website: '网站'
123
- multiple_choice: '单选按钮'
132
+ multiple_choice: '多选按钮'
124
133
 
125
134
 
126
135
  login:
@@ -145,7 +154,7 @@ zh-CN:
145
154
  invalid_caption: '验证码错误'
146
155
  email_not_validated: '邮箱未被激活.'
147
156
  confirm_email_token_incorrect: '激活链接错误'
148
- confirm_email_token_expired: '激活链接已过去'
157
+ confirm_email_token_expired: '激活链接已失效'
149
158
  confirm_email_success: '账户成功激活!'
150
159
  personal_info: '个人信息'
151
160
  please_login: '请登录'
@@ -179,9 +188,10 @@ zh-CN:
179
188
  home: "主页"
180
189
  info: "信息"
181
190
  external: "上传从URL"
182
- folder_name: '文件夾名稱'
183
- reload: '重新加載'
184
- clear_cache: '清除緩存'
191
+ folder_name: '文件夹名称'
192
+ folder_file_name: '文件夹或文件名'
193
+ reload: '重新加载'
194
+ clear_cache: '清除缓存'
185
195
  menus:
186
196
  link_url: '链接网址'
187
197
  target: '目标'
@@ -205,12 +215,12 @@ zh-CN:
205
215
  data_found_list: '没有数据列表中找到'
206
216
  delete: '确定删除该记录?'
207
217
  delete_item: '真的要删除吗?'
208
- edit_menu: '选中您要操作的地方。点击铅笔的图标编辑条目,单击图标的形式x删除条目.'
218
+ edit_menu: '选中您要操作的地方。点击铅笔的图标编辑条目,单击图标的形式x删除条目。'
209
219
  add_menus: '从左列添加菜单项.'
210
- press_no_continue_work_press_yes_logout: '如果不需要继续操作,请按登出按钮.'
220
+ press_no_continue_work_press_yes_logout: '如果不需要继续操作,请按登出按钮。'
211
221
  updated_success: '更新成功'
212
222
  remove_items_submenu: '真的删除此项目及其子菜单项?'
213
- you_must_upload_image: '必须上传图片格式'
223
+ you_must_upload_image: '必须上传图片'
214
224
  you_must_upload_video: '必须上传视频'
215
225
  so_their_data_has_not_been_saved: '数据还未保存'
216
226
  no_response_fields: '无响应字段'
@@ -222,7 +232,7 @@ zh-CN:
222
232
  was_removed: '被移除.'
223
233
  processing: '处理中...'
224
234
  change_photo: '使用下面的形式上传文件。只允许图像文件。'
225
- change_password: '修改你的密码先输入旧密码,然后输入新密码和重复新密码.'
235
+ change_password: '修改你的密码先输入旧密码,然后输入新密码和重复新密码。'
226
236
  you_must_upload_json_file: '你必须上传一个json文件'
227
237
  import_process: '导入中'
228
238
  unauthorized: "拒绝访问"
@@ -237,7 +247,7 @@ zh-CN:
237
247
  edit: '编辑'
238
248
  add: '添加'
239
249
  list: '列表'
240
- list_of: '的列表'
250
+ list_of: '%{post_type}的列表'
241
251
  new_site: '新建站点'
242
252
  edit_site: '编辑站点'
243
253
  update: '更新'
@@ -247,6 +257,7 @@ zh-CN:
247
257
  clone_content: '复制内容'
248
258
  label_required: '必填标签'
249
259
  placeholder_required: '必填占位符'
260
+ is_featured: '推荐文章'
250
261
  message:
251
262
  created: '%{post_type} 已经被创建.'
252
263
  updated: '%{post_type} 已经被更新.'
@@ -265,7 +276,7 @@ zh-CN:
265
276
  add: '添加'
266
277
  add_category: '添加类别'
267
278
  add_post_type: '添加文章类型'
268
- add_new: '添加新闻'
279
+ add_new: '添加%{type_title}'
269
280
  add_post_tag: '添加文章标签'
270
281
  categories: '种类'
271
282
  category: '种类'
@@ -281,6 +292,7 @@ zh-CN:
281
292
  default_layout: '默认布局'
282
293
  default_template: '默认模板'
283
294
  icon: '图标'
295
+ icons_url_desc: '请输入这个网址里面的任意图标名称: '
284
296
  message:
285
297
  error: '错误类'
286
298
  error_term: '错误项'
@@ -303,11 +315,12 @@ zh-CN:
303
315
  layout: '布局'
304
316
  trash: '回收站'
305
317
  tooltip:
318
+ permission_to_support_parent_structure: '允许文章显示父页面'
306
319
  permission_asing_categories: '选择种类权限'
307
320
  permission_add_tags: '添加标签权限'
308
321
  permission_add_content: '允许添加内容'
309
322
  permission_add_content_summary: '允许添加内容总结'
310
- permission_reviews: '启用该选项以指示是否可以注释帖子内容'
323
+ permission_reviews: '启用该选项以指示是否可以评论帖子内容'
311
324
  permission_add_image_presentation: '允许编辑图片'
312
325
  permission_manage_template: '允许选择模板。 (template:将用于呈现内容的文件)'
313
326
  permission_manage_layout: '允许选择字段在内容中布局。 (布局:文件包装器将在其中呈现模板)'
@@ -325,6 +338,8 @@ zh-CN:
325
338
  type_contents: '种类内容'
326
339
  upgrade_to: "升级到"
327
340
  settings:
341
+ comment_anonymous: '允许匿名评论?'
342
+ custom_fields_show_shortcodes: '显示自定义字段的短代码?'
328
343
  activate_create_account: '激活该账户'
329
344
  activate_login_social_networks: '允许登录'
330
345
  add_field_group: '添加字段组'
@@ -363,12 +378,18 @@ zh-CN:
363
378
  seo_setting: "SEO 设置"
364
379
  email_settings: "邮件设置 (SMTP)"
365
380
  filesystem_type: "文件系统"
381
+ media_settings: "媒体设置"
382
+ filesystem_settings: "文件系统设置"
366
383
  filesystem_s3_access_key: "AWS S3 Access Key"
367
384
  filesystem_s3_secret_key: "AWS S3 Secret Key"
368
385
  filesystem_s3_bucket_name: "AWS S3 Bucket name"
369
386
  filesystem_s3_endpoint: "AWS S3 Bucket endpoint"
387
+ filesystem_max_file_size: "最大接受文件[MB]"
388
+ filesystem_thumb_size: "缩略图尺寸[100x100]"
389
+ file_actions_in_modals: "在 modal 里显示所有文件"
390
+ aws: '将文件保存到 AWS S3'
370
391
  send_test_email: '发送测试邮件'
371
- filesystem_region: "AWS S3 Region"
392
+ filesystem_region: "AWS S3 区域"
372
393
  filesystem_cdn: "CDN url"
373
394
  security:
374
395
  captcha_user_register: "支持用户注册验证码?"
@@ -448,6 +469,8 @@ zh-CN:
448
469
  basic: '基础'
449
470
  categories: '分类'
450
471
  updated_at: "更新于"
472
+ permit_is_featured: '允许推荐文章'
473
+ manage_parent_structure: '管理页面层级'
451
474
  comments: '评论'
452
475
  count: '统计'
453
476
  date_published: '发布日期'
@@ -563,21 +586,24 @@ zh-CN:
563
586
  edit_profile: '编辑 资料'
564
587
  list_users: '用户列表'
565
588
  list_user_roles: '用户角色'
589
+ post_types: '文章类型'
566
590
  message:
567
- error: '未发现用户.'
568
- error_captcha: 'Oh! 验证码错误!'
569
- created: '用户已经被创建.'
570
- updated: '用户已经被更新.'
571
- deleted: '用户已经被删除'
572
- incorrect_old_password: '旧密码不正确'
573
- rol_error: '未发现组用户.'
574
- rol_created: '用户r角色已经被创建.'
575
- rol_updated: '用户r角色已经被更新.'
576
- rol_deleted: '用户r角色已经被删除'
577
- requires_different_name: '需要不同的名字'
578
- requires_different_username: '需要不同的用户名'
579
- requires_different_email: '需要不同的邮箱'
580
- created_pending_validate_email: "用户已经被创建, 请进入邮箱确认"
591
+ error: '未发现用户.'
592
+ error_captcha: 'Oh! 验证码错误!'
593
+ created: '用户已经被创建.'
594
+ updated: '用户已经被更新.'
595
+ deleted: '用户已经被删除'
596
+ incorrect_old_password: '旧密码不正确'
597
+ rol_error: '未发现组用户.'
598
+ rol_created: '用户r角色已经被创建.'
599
+ rol_updated: '用户r角色已经被更新.'
600
+ rol_deleted: '用户r角色已经被删除'
601
+ requires_different_name: '需要不同的名字'
602
+ requires_different_username: '需要不同的用户名'
603
+ requires_different_email: '需要不同的邮箱'
604
+ created_pending_validate_email: "用户已经被创建, 请进入邮箱确认"
605
+ role_can_not_be_deleted: '无法删除此角色'
606
+ user_can_not_delete_own_account: '用户不能删除自己的帐户'
581
607
  new_photo: '新建照片'
582
608
  others_permissions: '其他权限'
583
609
  profile: '资料'
@@ -14,18 +14,51 @@ Rails.application.routes.draw do
14
14
 
15
15
  controller "camaleon_cms/frontend" do
16
16
  get :index
17
- get ":label/:post_type_id-:title" => :post_type, as: "post_type", constraints: {post_type_id: /[0-9]+/, label: /(#{PluginRoutes.all_translations('routes.group', default: 'group').join('|')})/}
18
- get ":label/:post_type_id-:title/:slug" => :post, as: "post_of_post_type", constraints: {post_type_id: /[0-9]+/, label: /(#{PluginRoutes.all_translations('routes.group', default: 'group').join('|')})/}
19
- get ":label/:category_id-:title" => :category, as: "category", constraints: {category_id: /[0-9]+/, label: /(#{PluginRoutes.all_translations('routes.category', default: 'category').join('|')})/}
20
- get ":label_cat/:category_id-:title/:slug" => :post, as: "post_of_category", constraints: {category_id: /[0-9]+/, label_cat: /(#{PluginRoutes.all_translations('routes.category', default: 'category').join('|')})/}
21
- get ":post_type_title/:label_cat/:category_id-:title/:slug" => :post, as: "post_of_category_post_type", constraints:{ post_type_title: /(?!(#{PluginRoutes.all_locales}))[\w\.\-]+/, category_id: /[0-9]+/, label_cat: /(#{PluginRoutes.all_translations('routes.category', default: 'category').join('|')})/ }
22
- get ":label/:post_tag_id-:title" => :post_tag, as: "post_tag", constraints: {post_tag_id: /[0-9]+/, label: /(#{PluginRoutes.all_translations('routes.tag', default: 'tag').join('|')})/}
23
- get ":label/:post_tag_id-:title/:slug" => :post, as: "post_of_tag", constraints: {post_tag_id: /[0-9]+/, label: /(#{PluginRoutes.all_translations('routes.tag', default: 'tag').join('|')})/}
24
- get ":label/:post_tag_slug" => :post_tag, as: "post_tag_simple", constraints: {post_tag_slug: /[a-zA-Z0-9_=\s\-\/]+/, label: /(#{PluginRoutes.all_translations('routes.tag', default: 'tag').join('|')})/}
25
- get ":label/:user_id-:user_name" => :profile, as: :profile, defaults:{label: 'profile'}, constraints: {user_id: /[0-9]+/, label: /(#{PluginRoutes.all_translations('routes.profile', default: 'profile').join('|')})/}
26
- get ":label" => :search, as: :search, defaults:{label: 'search'}, constraints: {label: /(#{PluginRoutes.all_translations('routes.search', default: 'search').join('|')})/}
27
-
28
- get ':post_type_title/:slug' => :post, as: :post_of_posttype, constraints:{ post_type_title: /(?!(#{PluginRoutes.all_locales}))[\w\.\-]+/ }
17
+ get ':label/:post_type_id-:title' => :post_type, as: 'post_type', constraints: ->(request) {
18
+ multilingual_segment = PluginRoutes.all_translations('routes.group', default: 'group')
19
+ request.params[:post_type_id].match(/[0-9]+/) && request.params[:label].in?(multilingual_segment)
20
+ }
21
+ get ':label/:post_type_id-:title/:slug' => :post, as: 'post_of_post_type', constraints: ->(request) {
22
+ multilingual_segment = PluginRoutes.all_translations('routes.group', default: 'group')
23
+ request.params[:post_type_id].match(/[0-9]+/) && request.params[:label].in?(multilingual_segment)
24
+ }
25
+ get ':label/:category_id-:title' => :category, as: 'category', constraints: ->(request) {
26
+ multilingual_segment = PluginRoutes.all_translations('routes.category', default: 'category')
27
+ request.params[:category_id].match(/[0-9]+/) && request.params[:label].in?(multilingual_segment)
28
+ }
29
+ get ':label_cat/:category_id-:title/:slug' => :post, as: 'post_of_category', constraints: ->(request) {
30
+ multilingual_segment = PluginRoutes.all_translations('routes.category', default: 'category')
31
+ request.params[:category_id].match(/[0-9]+/) && request.params[:label_cat].in?(multilingual_segment)
32
+ }
33
+ get ':post_type_title/:label_cat/:category_id-:title/:slug' => :post, as: 'post_of_category_post_type', constraints: ->(request) {
34
+ multilingual_segment = PluginRoutes.all_translations('routes.category', default: 'category')
35
+ request.params[:post_type_title].match(/^(?!(#{PluginRoutes.all_locales})$)[\w\.\-]+$/) &&
36
+ request.params[:category_id].match(/[0-9]+/) && request.params[:label_cat].in?(multilingual_segment)
37
+ }
38
+ get ':label/:post_tag_id-:title' => :post_tag, as: 'post_tag', constraints: ->(request) {
39
+ multilingual_segment = PluginRoutes.all_translations('routes.tag', default: 'tag')
40
+ request.params[:post_tag_id].match(/[0-9]+/) && request.params[:label].in?(multilingual_segment)
41
+ }
42
+ get ':label/:post_tag_id-:title/:slug' => :post, as: 'post_of_tag', constraints: ->(request) {
43
+ multilingual_segment = PluginRoutes.all_translations('routes.tag', default: 'tag')
44
+ request.params[:post_tag_id].match(/[0-9]+/) && request.params[:label].in?(multilingual_segment)
45
+ }
46
+ get ':label/:post_tag_slug' => :post_tag, as: 'post_tag_simple', constraints: ->(request) {
47
+ multilingual_segment = PluginRoutes.all_translations('routes.tag', default: 'tag')
48
+ request.params[:post_tag_slug].match(/[a-zA-Z0-9_=\s\-\/]+/) && request.params[:label].in?(multilingual_segment)
49
+ }
50
+ get ':label/:user_id-:user_name' => :profile, as: :profile, defaults:{label: 'profile'}, constraints: ->(request) {
51
+ multilingual_segment = PluginRoutes.all_translations('routes.profile', default: 'profile') | %w(profile)
52
+ request.params[:user_id].match(/[0-9]+/) && request.params[:label].in?(multilingual_segment)
53
+ }
54
+ get ':label' => :search, as: :search, defaults:{label: 'search'}, constraints: ->(request) {
55
+ multilingual_segment = PluginRoutes.all_translations('routes.search', default: 'search') | %w(search)
56
+ request.params[:label].in?(multilingual_segment)
57
+ }
58
+
59
+ get ':post_type_title/:slug' => :post, as: :post_of_posttype, constraints: ->(request) {
60
+ request.params[:post_type_title].match(/^(?!(#{PluginRoutes.all_locales})$)[\w\.\-]+$/)
61
+ }
29
62
 
30
63
  post 'save_comment/:post_id' => :save_comment, as: :save_comment
31
64
  post 'save_form' => :save_form, as: :save_form
@@ -40,14 +73,20 @@ Rails.application.routes.draw do
40
73
  controller "camaleon_cms/frontend" do
41
74
  PluginRoutes.get_sites.each do |s|
42
75
  s.post_types.pluck(:slug, :id).each do |pt_slug, pt_id|
43
- get ":post_type_slug" => :post_type, as: "post_type_#{pt_id}", post_type_id: pt_id, constraints: {post_type_slug: /(#{PluginRoutes.all_locales.split("|").map{|_l| I18n.t("routes.post_types.#{pt_slug}", default: pt_slug, locale: _l) }.uniq.join('|') })/}
76
+ get ':post_type_slug' => :post_type, as: "post_type_#{pt_id}", post_type_id: pt_id, constraints: ->(request) {
77
+ multilingual_segment = PluginRoutes.all_translations("routes.post_types.#{pt_slug}", default: pt_slug)
78
+ request.params[:post_type_slug].in?(multilingual_segment)
79
+ }
44
80
  end
45
81
  end
46
82
  end
47
83
 
48
84
  # posts
49
85
  constraints(format: /html|rss|json/) do
50
- get ':parent_title/*slug(.:format)' => :post, as: :hierarchy_post, constraints:{ parent_title: /(?!(#{PluginRoutes.all_locales}))[\w\-]+/, slug: /[a-zA-Z0-9_=\s\-\/]+/ }
86
+ get ':parent_title/*slug(.:format)' => :post, as: :hierarchy_post, constraints: ->(request) {
87
+ request.params[:parent_title].match(/^(?!(#{PluginRoutes.all_locales})$)[\w\-]+$/) &&
88
+ request.params[:slug].match(/[a-zA-Z0-9_=\s\-\/]+/)
89
+ }
51
90
  get ":slug(.:format)" => :post, :as => :post, constraints: { slug: /[a-zA-Z0-9_=\s\-]+/}
52
91
  end
53
92
  end