camaleon_cms 2.4.5.8 → 2.4.5.9

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 (50) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +120 -106
  3. data/app/assets/javascripts/camaleon_cms/admin/_data.js +1 -0
  4. data/app/assets/stylesheets/camaleon_cms/admin/lte/_admin.css.scss +4 -4
  5. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-blue.css +1 -1
  6. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-purple.css +1 -0
  7. data/app/controllers/camaleon_cms/admin/media_controller.rb +11 -7
  8. data/app/controllers/camaleon_cms/admin/posts_controller.rb +6 -2
  9. data/app/decorators/camaleon_cms/post_tag_decorator.rb +6 -0
  10. data/app/helpers/camaleon_cms/admin/application_helper.rb +0 -13
  11. data/app/models/camaleon_cms/media.rb +5 -5
  12. data/app/uploaders/camaleon_cms_aws_uploader.rb +34 -10
  13. data/app/uploaders/camaleon_cms_local_uploader.rb +22 -18
  14. data/app/uploaders/camaleon_cms_uploader.rb +22 -2
  15. data/app/views/camaleon_cms/admin/plugins/_plugins_list.html.erb +3 -2
  16. data/app/views/layouts/camaleon_cms/admin/_footer.html.erb +1 -1
  17. data/app/views/layouts/camaleon_cms/admin/_sidebar.html.erb +1 -1
  18. data/config/locales/camaleon_cms/admin/ar.yml +683 -0
  19. data/config/locales/camaleon_cms/common.yml +66 -0
  20. data/config/locales/camaleon_cms/languages.yml +26 -1
  21. data/config/system.json +2 -2
  22. data/db/migrate/20180704211100_adjust_field_length.rb +9 -0
  23. data/lib/camaleon_cms/version.rb +1 -1
  24. data/lib/generators/camaleon_cms/theme_generator.rb +13 -18
  25. data/lib/generators/camaleon_cms/theme_template/{app/apps/themes/my_theme/assets → assets}/css/main.css +1 -1
  26. data/lib/generators/camaleon_cms/theme_template/{app/apps/themes/my_theme/assets → assets}/images/image.png +0 -0
  27. data/lib/generators/camaleon_cms/theme_template/{app/apps/themes/my_theme/assets → assets}/js/main.js +1 -1
  28. data/lib/generators/camaleon_cms/theme_template/{app/apps/themes/my_theme/config → config}/config.json +0 -0
  29. data/lib/generators/camaleon_cms/theme_template/{app/apps/themes/my_theme/main_helper.rb → main_helper.rb} +0 -0
  30. data/lib/generators/camaleon_cms/theme_template/{app/apps/themes/my_theme/views → views}/admin/settings.html.erb +0 -0
  31. data/lib/generators/camaleon_cms/theme_template/{app/apps/themes/my_theme/views → views}/index.html.erb +0 -0
  32. data/lib/generators/camaleon_cms/theme_template/{app/apps/themes/my_theme/views → views}/layouts/index.html.erb +0 -0
  33. data/lib/generators/camaleon_cms/theme_template/{app/apps/themes/my_theme/views → views}/partials/readme.txt +0 -0
  34. data/lib/plugin_routes.rb +2 -8
  35. data/spec/dummy/bin/bundle +1 -1
  36. data/spec/dummy/bin/rails +1 -1
  37. data/spec/dummy/bin/setup +20 -13
  38. data/spec/dummy/bin/update +31 -0
  39. data/spec/dummy/bin/yarn +11 -0
  40. data/spec/dummy/db/schema.rb +159 -1
  41. data/spec/factories/post.rb +10 -10
  42. data/spec/factories/post_type.rb +1 -1
  43. data/spec/factories/site.rb +3 -3
  44. data/spec/factories/user.rb +6 -6
  45. data/spec/features/admin/plugins_spec.rb +3 -3
  46. data/spec/spec_helper.rb +23 -28
  47. data/spec/support/capybara_normalize_whitespace_patch.rb +17 -0
  48. data/spec/support/common.rb +4 -5
  49. metadata +66 -60
  50. data/spec/support/fixtures/rails_tmp.png +0 -0
@@ -1,5 +1,4 @@
1
1
  class CamaleonCmsAwsUploader < CamaleonCmsUploader
2
-
3
2
  def after_initialize
4
3
  @cloudfront = @aws_settings[:cloud_front] || @current_site.get_option("filesystem_s3_cloudfront")
5
4
  @aws_region = @aws_settings[:region] || @current_site.get_option("filesystem_region", 'us-west-2')
@@ -10,6 +9,14 @@ class CamaleonCmsAwsUploader < CamaleonCmsUploader
10
9
  @aws_settings[:aws_file_read_settings] ||= lambda{|data, s3_file| data }
11
10
  end
12
11
 
12
+ def setup_private_folder
13
+ if is_private_uploader?
14
+ add_folder(PRIVATE_DIRECTORY)
15
+
16
+ @aws_settings["inner_folder"] = "#{@aws_settings["inner_folder"]}/#{PRIVATE_DIRECTORY}"
17
+ end
18
+ end
19
+
13
20
  # recover all files from AWS and parse it to save into DB as cache
14
21
  def browser_files
15
22
  bucket.objects(@aws_settings["inner_folder"].present? ? {prefix: @aws_settings["inner_folder"]} : nil).each do |file|
@@ -27,21 +34,38 @@ class CamaleonCmsAwsUploader < CamaleonCmsUploader
27
34
  super(prefix, sort)
28
35
  end
29
36
 
37
+ def fetch_file(file_name)
38
+ bucket.object(file_name).download_file(file_name) unless file_exists?(file_name)
39
+
40
+ if file_exists?(file_name)
41
+ file_name
42
+ else
43
+ raise ActionController::RoutingError, 'File not found'
44
+ end
45
+ end
46
+
30
47
  # parse an AWS file into custom file_object
31
48
  def file_parse(s3_file)
32
49
  key = s3_file.is_a?(String) ? s3_file : s3_file.key
33
50
  key = key.cama_fix_media_key
34
51
  is_dir = s3_file.is_a?(String) || File.extname(key) == ''
52
+
53
+ if is_private_uploader?
54
+ url = is_dir ? '' : File.basename(key)
55
+ else
56
+ url = is_dir ? '' : (@cloudfront.present? ? File.join(@cloudfront, key) : s3_file.public_url)
57
+ end
58
+
35
59
  res = {
36
- "name" => File.basename(key),
37
- "folder_path" => File.dirname(key),
38
- "url" => is_dir ? '' : (@cloudfront.present? ? File.join(@cloudfront, key) : s3_file.public_url),
39
- "is_folder" => is_dir,
40
- "file_size" => is_dir ? 0 : s3_file.size.round(2),
41
- "thumb" => '',
42
- 'file_type' => is_dir ? '' : self.class.get_file_format(key),
43
- 'created_at' => is_dir ? '' : s3_file.last_modified,
44
- 'dimension' => ''
60
+ "name" => File.basename(key),
61
+ "folder_path" => File.dirname(key),
62
+ "url" => url,
63
+ "is_folder" => is_dir,
64
+ "file_size" => is_dir ? 0 : s3_file.size.round(2),
65
+ "thumb" => '',
66
+ 'file_type' => is_dir ? '' : self.class.get_file_format(key),
67
+ 'created_at' => is_dir ? '' : s3_file.last_modified,
68
+ 'dimension' => ''
45
69
  }.with_indifferent_access
46
70
  res["thumb"] = version_path(res['url']).sub('.svg', '.jpg') if res['file_type'] == 'image' && File.extname(res['name']).downcase != '.gif'
47
71
  res['key'] = File.join(res['folder_path'], res['name'])
@@ -1,33 +1,37 @@
1
1
  class CamaleonCmsLocalUploader < CamaleonCmsUploader
2
- PRIVATE_DIRECTORY = 'private'
2
+ def after_initialize
3
+ @root_folder = @args[:root_folder] || @current_site.upload_directory
4
+
5
+ FileUtils.mkdir_p(@root_folder)
6
+ end
7
+
8
+ def setup_private_folder
9
+ @root_folder = Rails.root.join(self.class::PRIVATE_DIRECTORY).to_s
10
+
11
+ FileUtils.mkdir_p(@root_folder) unless Dir.exist?(@root_folder)
12
+ end
13
+
3
14
  def browser_files(prefix = '/', objects = {})
4
15
  path = File.join(@root_folder, prefix)
16
+
5
17
  Dir.entries(path).each do |f_name|
6
18
  next if f_name == '..' || f_name == '.' || f_name == 'thumb'
19
+
7
20
  obj = file_parse(File.join(path, f_name).sub(@root_folder, '').cama_fix_media_key)
8
21
  cache_item(obj)
9
- browser_files(File.join(prefix, obj['name'])) if obj['is_folder']
10
- end
11
- end
12
-
13
- # return the full file path for private file with key
14
- # sample: 'my_file.pdf' ==> /var/www/my_app/private/my_file.pdf
15
- def self.private_file_path(key, current_site)
16
- Rails.root.join(self::PRIVATE_DIRECTORY, current_site.id.to_s, key.gsub(/(\/){2,}/, "/")).to_s
17
- end
18
22
 
19
- # check if this uploader is private mode
20
- def is_private_uploader?
21
- @args[:private]
23
+ if obj['is_folder']
24
+ browser_files(File.join(prefix, obj['name']))
25
+ end
26
+ end
22
27
  end
23
28
 
24
- def after_initialize
25
- if is_private_uploader?
26
- @root_folder = Rails.root.join(self.class::PRIVATE_DIRECTORY, @current_site.id.to_s).to_s
29
+ def fetch_file(file_name)
30
+ if file_exists?(file_name)
31
+ file_name
27
32
  else
28
- @root_folder = @args[:root_folder] || @current_site.upload_directory
33
+ raise ActionController::RoutingError, 'File not found'
29
34
  end
30
- FileUtils.mkdir_p(@root_folder) unless Dir.exist?(@root_folder)
31
35
  end
32
36
 
33
37
  def file_parse(key)
@@ -1,4 +1,6 @@
1
1
  class CamaleonCmsUploader
2
+ PRIVATE_DIRECTORY = 'private'
3
+
2
4
  attr_accessor :thumb
3
5
  # root_folder= '/var/www/my_public_foler/', current_site= CamaSite.first.decorate, thumb = {w: 100, h: 75},
4
6
  # aws_settings: {region, access_key, secret_key, bucket}
@@ -55,7 +57,7 @@ class CamaleonCmsUploader
55
57
  end
56
58
  file_parsed
57
59
  end
58
-
60
+
59
61
  # return the media collection for current situation
60
62
  def get_media_collection
61
63
  is_private_uploader? ? @current_site.public_media : @current_site.private_media
@@ -136,9 +138,27 @@ class CamaleonCmsUploader
136
138
  # deprecated
137
139
  end
138
140
 
141
+ def enable_private_mode!
142
+ @args[:private] = true
143
+
144
+ setup_private_folder
145
+ end
146
+
147
+ def disable_private_mode!
148
+ @args[:private] = false
149
+ end
150
+
151
+ def file_exists?(file_name)
152
+ File.exist?(file_name)
153
+ end
154
+
139
155
  private
140
156
  def cache_key
141
157
  "cama_media_cache#{'_private' if is_private_uploader?}"
142
158
  end
143
- def is_private_uploader?() end
159
+
160
+ # check if this uploader is private mode
161
+ def is_private_uploader?
162
+ @args[:private]
163
+ end
144
164
  end
@@ -29,7 +29,8 @@
29
29
  <td><%= plugin["version"] %></td>
30
30
  <td><%= t("camaleon_cms.admin.plugins.status_#{status}") %></td>
31
31
  <td>
32
- <%= link_to raw("<i class='fa fa-#{status ? "check-square" : "square"}'></i>"), {action: :toggle, id: plugin["key"], status: status }, class: "btn btn-default btn-xs", title: "#{status ? t('camaleon_cms.admin.button.disable_plugin') : t('camaleon_cms.admin.button.activate_plugin') }", data: { confirm: "#{"#{status ? t('camaleon_cms.admin.button.disable_plugin') : t('camaleon_cms.admin.button.activate_plugin') }"}?" } %>
32
+ <% msg = "#{status ? t('camaleon_cms.admin.button.disable_plugin') : t('camaleon_cms.admin.button.activate_plugin') }" %>
33
+ <%= link_to msg, {action: :toggle, id: plugin["key"], status: status }, class: "btn btn-#{status ? 'danger' : 'primary'} btn-xs", data: { confirm: msg } %>
33
34
  <%= link_to("<i class='fa fa-arrow-circle-o-up'></i>".html_safe, cama_admin_plugin_upgrade_path(plugin["key"]), class: "btn btn-info btn-xs", title: "#{t("camaleon_cms.admin.plugins.upgrade_to")} #{plugin["version"]}") if status && current_site.get_plugin(plugin["key"]).old_version? %>
34
35
  </td>
35
36
  </tr>
@@ -39,4 +40,4 @@
39
40
  </table>
40
41
  <%= content_tag("div", raw(t('camaleon_cms.admin.message.data_found_list')), class: "alert alert-warning") if plugins.empty? %>
41
42
  </div>
42
- </div>
43
+ </div>
@@ -1,6 +1,6 @@
1
1
  <footer class="main-footer" id="main-footer">
2
2
  <div class="row">
3
- <div class="col-md-6"><strong>Copyright &copy; 2015-2016 <a href="http://camaleon.tuzitio.com">Camaleon CMS.</a> </strong></div>
3
+ <div class="col-md-6"><strong>Copyright &copy; 2015 - <%= Time.now.year %> <a href="http://camaleon.tuzitio.com">Camaleon CMS.</a> </strong></div>
4
4
  <div class="col-md-6 hidden-xs">
5
5
  <div class="pull-left">
6
6
  <a id="link_see_intro" href="#" onclick="init_intro(); return false;"><i class="fa fa-tv"></i> <%= I18n.t('camaleon_cms.see_intro') %>.</a>
@@ -11,7 +11,7 @@
11
11
  <!-- /.search form -->
12
12
 
13
13
  <ul class="sidebar-menu cama_ajax_request">
14
- <li class="header"><%= t("camaleon_cms.admin.sidebar.main_navigation") %></li>
14
+ <li class="header" ><%= t("camaleon_cms.admin.sidebar.main_navigation") %></li>
15
15
  <%= raw _admin_menu_draw %>
16
16
  </ul>
17
17
  </section>
@@ -0,0 +1,683 @@
1
+ ar:
2
+ camaleon_cms:
3
+ see_intro: "See intro"
4
+ welcome_message: "مرحبا بك في لوحة التحكم"
5
+ page_not_exist: "<h1>ooops...</h1><h5>الصفحة التي تبحث عنها غير موجودة.</h5>"
6
+ page_error_500: "<h1>ooops...</h1><h5>خطا 500 خطا داخلي في الملقم. الرجاء الاتصال بالمسؤول.</h5>"
7
+ admin:
8
+ request_error_message: "حدث خطا ، الرجاء الاتصال بالمسؤول."
9
+ authorization_error: "ليس لديك تخويل لهذا القسم."
10
+ header:
11
+ member_since: "Member since %{time}"
12
+ button:
13
+ activity: 'النشاط'
14
+ add_new_field: 'أضافه حقل جديد'
15
+ add_option: 'خيار أضافه'
16
+ add_option: 'خيار أضافه'
17
+ add_menu: 'Add to Menu'
18
+ add_widget: 'Add Widget'
19
+ accept: 'Accept'
20
+ add_folder: 'Add Folder'
21
+ actived: 'Activated'
22
+ activate_plugin: 'Activate Plugin'
23
+ back: 'Back'
24
+ change_photo: 'Change Photo'
25
+ change_password: 'Change Password'
26
+ create_menu: 'Create Menu'
27
+ create: 'Create'
28
+ cancel: 'Cancel'
29
+ chat: 'Chat'
30
+ close: 'Close'
31
+ delete: 'Delete'
32
+ disable_plugin: 'Disable Plugin'
33
+ enter: 'Enter'
34
+ edit: 'Edit'
35
+ new: 'New'
36
+ following: 'Following'
37
+ log_in: 'Log In'
38
+ move_trash: 'Move to trash'
39
+ no: 'No'
40
+ none: 'None'
41
+ not_actived: 'Not Active'
42
+ publish: 'Publish'
43
+ preview: 'Preview'
44
+ proccess: 'Process'
45
+ recover: 'Recover'
46
+ restore: 'Restore'
47
+ restore_selections: 'Restore Selections'
48
+ delete_complete: "Delete completely"
49
+ select: 'Select'
50
+ select_all: 'Select All'
51
+ select_file: 'Select File'
52
+ select_none: 'Select None'
53
+ sign_up: 'Sign Up'
54
+ submit: 'Submit'
55
+ settings: 'Settings'
56
+ sortable: 'Sortable'
57
+ update: 'Update'
58
+ update_menu: 'Update Menu'
59
+ upload_audio: 'Upload Audio'
60
+ upload_file: 'Upload File'
61
+ upload_image: 'Upload Image'
62
+ upload_icon: 'Upload Icon'
63
+ upload_video: 'Upload Video'
64
+ drag_drop: 'Drag & drop files'
65
+ view_draft: 'View Draft'
66
+ view_page: 'View Page'
67
+ yes: 'Yes'
68
+ out_yes: 'Yes'
69
+ out_not: 'No'
70
+ domain: "Domain"
71
+ search: "Search"
72
+
73
+ comments:
74
+ new_msg: "New comment for this Content"
75
+ comments_list_post: 'List Comments Post'
76
+ responses: 'Responses'
77
+ message:
78
+ approved: 'Approved'
79
+ change_status: 'The response status has been changed to '
80
+ created: 'The comment has been created.'
81
+ destroy: 'The answers have been removed.'
82
+ destroy_comments: 'The comments have been removed.'
83
+ deleted: 'The answers has been removed.'
84
+ error: 'Not found comment'
85
+ pending: 'Pending'
86
+ responses: 'The reply has been created.'
87
+ spam: 'Spam'
88
+ there_no_comments: 'There are no comments.'
89
+ updated: 'The comment has been updated.'
90
+
91
+ tooltip:
92
+ approved_comment: 'Approve Comment'
93
+ comment_pending: 'Comment To Pending'
94
+ comment_spam: 'Comment To Spam'
95
+ reply_comment: 'Reply Comment'
96
+ delete_comment: 'Delete Comment'
97
+ custom_field:
98
+ message:
99
+ custom_group_error: 'Error custom field group'
100
+ custom_created: 'The custom field group has been created.'
101
+ custom_updated: 'The custom field group has been updated.'
102
+ fields:
103
+ text_box: 'Text Box'
104
+ text_area: 'Text Area'
105
+ select: 'Select'
106
+ colorpicker: 'Colorpicker'
107
+ date: 'Date'
108
+ email: 'Email'
109
+ file: 'File'
110
+ image: 'Image'
111
+ image_dimension: 'Dimension'
112
+ image_dimension_descr: 'Crop the image with indicated dimension (widthxheight), sample: 400x300 <br>Possible values: 400x300 | 400x | x300 | ?400x?500 | ?1400x (? => maximum, empty => auto)'
113
+ image_versions: 'Versions'
114
+ image_versions_descr: "Create addtional multiple versions of the image uploaded, sample: 300x300,505x350 ==> Will create two extra images with these dimensions"
115
+ image_thumb: 'Thumbnail'
116
+ required_image_thumb: 'Is Required Thumbnail?'
117
+ image_thumb_descr: "Define the dimension for the thumbnail, sample: 100x100. Default: %{d}"
118
+ numeric: 'Numeric'
119
+ phone: 'Phone'
120
+ users: 'Users'
121
+ posts: 'Posts'
122
+ select_eval: 'Select Eval'
123
+ field_attrs: 'Field Attributes'
124
+ website: 'Website'
125
+ multiple_choice: 'Radio Button'
126
+
127
+
128
+ login:
129
+ already_have_account: 'Already have account?'
130
+ authentication: 'Authentication'
131
+ captcha: 'Captcha'
132
+ create_account: 'Create an account'
133
+ login: 'Login'
134
+ forgot_your_password_int: 'Forgot your password?'
135
+ message:
136
+ success: 'Welcome!!!'
137
+ fail: 'Username or Password incorrect'
138
+ forgot_url_incorrect: 'URL incorrect'
139
+ forgot_expired: 'Reset expired.'
140
+ hello: 'Hello'
141
+ reset_password_succes: 'Reset password success!'
142
+ reset_password_error: 'Password incorrect'
143
+ reset_url: 'Reset URL'
144
+ subject_email: 'Reset your access'
145
+ send_mail_succes: 'Send email reset success.'
146
+ send_mail_error: 'Not found email address.'
147
+ invalid_caption: 'Invalid captcha'
148
+ email_not_validated: 'Email has not been validated.'
149
+ confirm_email_token_incorrect: 'URL incorrect'
150
+ confirm_email_token_expired: 'Confirm email URL expired'
151
+ confirm_email_success: 'Confirm email success!'
152
+ personal_info: 'Personal info'
153
+ please_login: 'Please login'
154
+ reset_password: 'reset password'
155
+ reCaptcha: 'reCaptcha'
156
+ send_email: 'Send email'
157
+ reset_password_html: '<strong>Send email</strong>, reset password'
158
+ welcome: 'Welcome'
159
+ welcome_login_html: '<strong>Welcome</strong>, Please login'
160
+ do_not_have_account_yet: "Do not have an account yet?"
161
+ msg_registration_html: '<strong>Registration</strong>, use form below'
162
+ username: "Username"
163
+ password: "Password"
164
+ password_confirm: "Password confirmation"
165
+ first_name: "First Name"
166
+ last_name: "Last Name"
167
+ email: "Email"
168
+ remember_me: "Remember Me"
169
+ confirm:
170
+ text: "Please confirm your account by clicking this link"
171
+ subject: "Confirm your account"
172
+ logout:
173
+ log: 'Log'
174
+ out: 'Out'
175
+ logout: 'Logout'
176
+ logout_html: 'Log <strong>Out</strong>?'
177
+ message:
178
+ closed: 'Session Closed'
179
+ media:
180
+ media_manager: 'Media Manager'
181
+ home: "Home"
182
+ info: "Information"
183
+ external: "Upload From URL"
184
+ folder_name: 'Folder Name'
185
+ folder_file_name: 'Folder or File Name'
186
+ reload: 'Reload'
187
+ clear_cache: 'Clear Cache'
188
+ name_required: 'File name is required'
189
+ menus:
190
+ link_url: 'Link URL'
191
+ target: 'Target'
192
+ targets:
193
+ blank: 'Blank'
194
+ parent: 'Parent'
195
+ message:
196
+ created: 'The nav menu has been created.'
197
+ deleted: 'The nav menu has been delete.'
198
+ error_menu: 'Error Menu'
199
+ name_link: 'Name Link'
200
+ name_menu: 'Name Menu'
201
+ external_link: 'External Link'
202
+ or: 'or'
203
+ create_new: 'create a new menu'
204
+ select: 'Select Menu'
205
+ select_edit: 'Select the menu you want to edit:'
206
+ message:
207
+ are_you_sure_you_want_log_out_int: 'Are you sure you want to log out?'
208
+ are_you_sure_to_import: "Are you sure you want to import?"
209
+ data_found_list: 'No data found in the list'
210
+ delete: 'Are you sure to delete this item?'
211
+ delete_item: 'Really want to delete this item?'
212
+ edit_menu: 'Place each item in the order you prefer. Click on the icon of a pencil to edit the item and click the icon in the form of x to delete the item.'
213
+ add_menus: 'Add menu items from the left column.'
214
+ press_no_continue_work_press_yes_logout: 'Press No if you want to continue work. Press Yes to logout current user.'
215
+ updated_success: 'Updated Successfully'
216
+ remove_items_submenu: 'Really remove this item and its sub menu items?'
217
+ you_must_upload_image: 'You must upload an image'
218
+ you_must_upload_video: 'You must upload an video'
219
+ so_their_data_has_not_been_saved: 'So their data has not been saved'
220
+ no_response_fields: 'No response fields '
221
+ quick_info: 'Some quick info about this user'
222
+ was_inactivated: 'was inactivated.'
223
+ was_activated: 'was activated.'
224
+ was_upgraded: 'was updated.'
225
+ can_not_be_removed: 'can not be removed.'
226
+ was_removed: 'was removed.'
227
+ processing: 'Procesando...'
228
+ change_photo: 'Use form below to upload file. Only image files.'
229
+ change_password: 'To change your password enter your old password first, then enter the new password and repeat the new password.'
230
+ you_must_upload_json_file: 'You must upload an json file'
231
+ import_process: 'Import in process'
232
+ unauthorized: "Access denied"
233
+ welcome: 'مرحبا بكم في لوحه مشرف موقعك.'
234
+ no_templates_defined: 'No templates defined'
235
+ avatar_updated: 'Updated Avatar'
236
+ form_error: 'Form Error'
237
+ page_title:
238
+ page_title: 'Page Title'
239
+ create: 'Create'
240
+ details: 'Details'
241
+ edit: 'Edit'
242
+ add: 'Add'
243
+ list: 'List'
244
+ list_of: 'List of %{post_type}'
245
+ new_site: 'New Site'
246
+ edit_site: 'Edit Site'
247
+ update: 'Update'
248
+ post:
249
+ add_tag: 'Add a Tag'
250
+ clone: 'Clone'
251
+ clone_content: 'Clone content'
252
+ label_required: 'Required Label'
253
+ placeholder_required: 'Required Placeholder'
254
+ message:
255
+ created: 'The %{post_type} has been created.'
256
+ updated: 'The %{post_type} has been updated.'
257
+ deleted: 'The %{post_type} has been removed.'
258
+ error: 'Error %{post_type}'
259
+ error_post_type: 'Error %{post_type}'
260
+ trash: 'The %{post_type} was moved to the trash.'
261
+ requires_different_slug: 'Requires different slug'
262
+ restore: 'The %{post_type} was restored.'
263
+ draft: 'Saved draft success'
264
+ recover: 'Recover...'
265
+ permalink: 'Permalink'
266
+ post_type:
267
+ route_format: 'Contents Route Format'
268
+ icons_url_desc: 'Please enter any icon name from here: '
269
+ all: 'All Items'
270
+ add: 'Add'
271
+ add_category: 'Add Category'
272
+ add_post_type: 'Add Post Type'
273
+ add_new: 'Add New'
274
+ add_post_tag: 'Add Post Tag'
275
+ categories: 'Categories'
276
+ category: 'Category'
277
+ configuration: 'Configuration'
278
+ other_configuration: 'Custom Configurations'
279
+ comments: 'Comments'
280
+ draft: 'Draft'
281
+ edit_post_type: 'Edit Post Type'
282
+ edit_category: 'Edit Category'
283
+ enter_password: 'Enter the password'
284
+ featured_image: 'Featured Image'
285
+ keywords: 'Keywords'
286
+ default_layout: 'Default Layout'
287
+ default_template: 'Default Template'
288
+ icon: 'Icon'
289
+ message:
290
+ error: 'Error class'
291
+ error_term: 'Error term class'
292
+ created: 'Saved'
293
+ updated: 'Updated'
294
+ deleted: 'Deleted'
295
+ no_created_html: '<br> No %{taxonomy} found'
296
+ pending: 'Pending'
297
+ permit_comments: 'Allow Comments?'
298
+ post_types: 'Post Types'
299
+ posts: 'Posts'
300
+ post_tags: 'Post Tags'
301
+ published: 'Published'
302
+ published_date: 'Published Date'
303
+ save_draft: 'Save Draft'
304
+ save_pending: 'Save Pending'
305
+ summary: 'Summary'
306
+ tags: 'Tags'
307
+ template: 'Template'
308
+ layout: 'Layout'
309
+ trash: 'Trash'
310
+ tooltip:
311
+ permission_asing_categories: 'Permit to manage your post contents by categories'
312
+ permission_add_tags: 'Enable the field to enter tags in post content'
313
+ permission_add_content: 'Enable the editor to enter the post content'
314
+ permission_add_content_summary: 'Enable the field to enter the post summary'
315
+ permission_reviews: 'Enable the option to indicate if post contents can be commented'
316
+ permission_add_image_presentation: 'Enable the editor to upload thumbnail in post contents'
317
+ permission_manage_template: 'Enable the field to select template in contents. (template: file that will be used to render a content)'
318
+ permission_manage_layout: 'Enable the field to select layout in contents. (Layout: File wrapper in which will be rendered the template)'
319
+ permission_add_keywords: 'Enable the field to enter the post keywords (SEO)'
320
+ default_layout: 'Select the default layout for all contents of this post type'
321
+ default_template: 'Select the default template for all contents of this post type'
322
+ upload_image: 'Upload Image'
323
+ view_comments: 'View Comments'
324
+ plugins:
325
+ active_plugins: 'Active Plugins'
326
+ disabled_plugins: 'Disabled Plugins'
327
+ all_plugins: 'All Plugins'
328
+ status_false: 'Inactive'
329
+ status_true: 'Active'
330
+ type_contents: 'Type Contents'
331
+ upgrade_to: "Upgrade to"
332
+ settings:
333
+ activate_create_account: 'Activate Create Account'
334
+ activate_login_social_networks: 'Activate Login Social Networks'
335
+ add_field_group: 'Add Field Group'
336
+ admin_language: 'Admin language'
337
+ allow_user_registration: 'Allow user registration?'
338
+ available_fields: 'Available fields'
339
+ available_languages: 'Available languages'
340
+ categories_in: 'Categories in'
341
+ configuration_site: 'Configuration Site'
342
+ current_languages: 'Current Languages'
343
+ details_custom_field_group: 'Details Custom Field Group'
344
+ details_site: 'Details Site'
345
+ edit_custom_field_group: 'Edit Custom Field Group'
346
+ field: 'Field'
347
+ fields: 'Fields'
348
+ information_basic: 'Basic Information'
349
+ theme_setting: "Theme settings"
350
+ input_only_date: 'Input only the date'
351
+ input_date_time: 'Input date and time'
352
+ languages_configuration: 'Languages configuration'
353
+ list_custom_fields_group: 'List Custom Fields Group'
354
+ list_sites: 'List Sites'
355
+ login_twitter: 'Twitter'
356
+ login_facebook: 'Facebook'
357
+ login_google: 'Google+'
358
+ email_enabled: "Use these settings to send emails"
359
+ email_server: "Email Server"
360
+ email_port: "Email Port"
361
+ email_domain: "Email Domain"
362
+ email_username: "User Name"
363
+ email_pass: "User Password"
364
+ email_from: "Email From"
365
+ email_cc: "Email CC"
366
+ twitter_card: "Twitter Card"
367
+ author: "Author Name"
368
+ seo_setting: "Seo Settings"
369
+ email_settings: "Email Settings (SMTP)"
370
+ filesystem_type: "Filesystem type"
371
+ filesystem_s3_access_key: "AWS S3 Access Key"
372
+ filesystem_s3_secret_key: "AWS S3 Secret Key"
373
+ filesystem_s3_bucket_name: "AWS S3 Bucket name"
374
+ filesystem_s3_endpoint: "AWS S3 Bucket endpoint"
375
+ send_test_email: 'Send Test Email'
376
+ filesystem_region: "AWS S3 Region"
377
+ filesystem_cdn: "CDN url"
378
+ security:
379
+ captcha_user_register: "Enable captcha on user registration?"
380
+ need_validate_email: "Need validate email?"
381
+ message:
382
+ language_updated: 'Your languages was configured.'
383
+ site_updated: 'The site has been updated.'
384
+ new_custom_field_group: 'New Custom Field Group'
385
+ options_select: 'Options select'
386
+ option_title: 'Option Title'
387
+ others: 'Others'
388
+ please_separated_commas: 'Please separated by commas'
389
+ comment_status: 'Register comments as approved?'
390
+ list_per_page_front: 'Quantity of items to be listed on frontend'
391
+ list_per_page_admin: 'Quantity of items to be listed on backend'
392
+ permission_register_users: 'Permission to Register Users'
393
+ permission_login_twitter: 'Permission to Login with Twitter'
394
+ permission_login_facebook: 'Permission to Login with Facebook'
395
+ permission_login_google: 'Permission to Login with Google+'
396
+ posts_in: 'Posts in'
397
+ in_post_type_settings_of: 'In Post Type settings of'
398
+ settings: 'Settings'
399
+ tooltip:
400
+ add_custom_field_posts: 'Add Custom Field in Posts of '
401
+ add_custom_field_categories: 'Add Custom Field in Categories of '
402
+ add_custom_field_users: 'Add Custom Field in Users '
403
+ add_custom_field_sites: 'Add Custom Field in Site '
404
+ add_custom_field_themes: 'Add Custom Field in Theme '
405
+ add_custom_field_widget: 'Add Custom Field in Widget '
406
+ untitled: 'Untitled'
407
+ where_display_group: 'Where to display this group'
408
+ sidebar:
409
+ appearance: 'Appearance'
410
+ comments: 'Comments'
411
+ content: 'Content'
412
+ contents: 'Contents'
413
+ content_groups: 'Content Groups'
414
+ custom_fields: 'Custom Fields'
415
+ dashboard: 'Dashboard'
416
+ general_site: 'General Site'
417
+ information: 'Information'
418
+ languages: 'Languages'
419
+ shortcodes: "Shortcodes"
420
+ media: 'Media'
421
+ menus: 'Menus'
422
+ navigation: 'Navigation'
423
+ plugins: 'Plugins'
424
+ post_type: 'Post Type'
425
+ settings: 'Settings'
426
+ site_settings: 'Site settings'
427
+ sites: 'Sites'
428
+ themes: 'Themes'
429
+ users: 'Users'
430
+ widget: 'Widget'
431
+ widgets: 'Widgets'
432
+ main_navigation: "MAIN NAVIGATION"
433
+ sidebar_top:
434
+ admin_panel: 'Admin. Panel'
435
+ visit: 'Visit'
436
+ sites:
437
+ add_site: 'Add Site'
438
+ message:
439
+ error: 'Not found site'
440
+ created: 'The site has been created.'
441
+ updated: 'The site has been updated.'
442
+ deleted: 'Correct Deleted'
443
+ enter_key_domain: 'Enter a key or a domain'
444
+ enter_key_domain_empty: 'Enter a key (site2) or a domain (my_domain.com). Key will be the name of your subdomain.'
445
+ signin:
446
+ message:
447
+ enter_username_password: 'You must enter a username and/or password'
448
+ combination_username_password_invalid: 'Combination of username/password invalid.'
449
+ success_user: 'Success User'
450
+ table:
451
+ actions: 'Actions'
452
+ attribute: 'Attribute'
453
+ author: 'Author'
454
+ basic: 'Basic'
455
+ categories: 'Categories'
456
+ updated_at: "Updated at"
457
+ comments: 'Comments'
458
+ count: 'Count'
459
+ date_published: 'Date Published'
460
+ default: 'Default'
461
+ default_thumbnail: 'Default Thumbnail'
462
+ default_value: 'Default Value'
463
+ description: 'Description'
464
+ dimensions: 'Dimensions'
465
+ display_objects: 'Display Objects'
466
+ draft: 'Draft'
467
+ email: 'Email'
468
+ e_mail: 'E-mail'
469
+ email_address: 'Email Address'
470
+ error: 'Error'
471
+ errors: 'Errors'
472
+ excerpt: 'Excerpt'
473
+ facebook: 'Facebook'
474
+ favicon: 'Favicon'
475
+ screenshot: "Screenshot"
476
+ first_names: 'First Name'
477
+ group_name: 'Group Name'
478
+ google_plus: 'Google plus'
479
+ hide: 'Hide'
480
+ home_page: 'Home Page'
481
+ id: 'ID'
482
+ images: 'Images'
483
+ import: 'Import'
484
+ instagram: 'Instagram'
485
+ keywords: 'Keywords (enter separated by commas)'
486
+ kind: 'Kind'
487
+ last_login: 'Last login'
488
+ last_names: 'Last Name'
489
+ last_visit: 'Last visit'
490
+ link: 'Link'
491
+ linkedin: 'Linkedin'
492
+ login: 'Login'
493
+ logo: 'Logo'
494
+ manage_category: 'Manage Multiple Categories'
495
+ manage_content: 'Manage Content'
496
+ manage_picture: 'Manage Picture'
497
+ manage_seo: 'Manage Seo'
498
+ manage_summary: 'Manage Summary'
499
+ manage_tags: 'Manage Tags'
500
+ manage_template: 'Manage Template'
501
+ manage_layout: 'Manage Layout'
502
+ modified: 'Modified'
503
+ multiple_field_int: 'Multiple field?'
504
+ required_field_int: 'Required field?'
505
+ translate_field_int: 'Translate field?'
506
+ show_in_frontend: 'Show in Frontend (Only post contents)'
507
+ name: 'Name'
508
+ new_password: 'New Password'
509
+ no_default: 'No Default'
510
+ old_password: 'Old Password'
511
+ options: 'Options'
512
+ settings: 'Settings'
513
+ options_field: 'Options Field'
514
+ parent: 'Parent'
515
+ password: 'Password'
516
+ password_confirmation: 'Password Confirmation'
517
+ password_protection: 'Password protection'
518
+ permit_comments_default: 'Allow Comments (default)'
519
+ post: 'Post'
520
+ post_type: 'Post Type'
521
+ pending: 'Pending'
522
+ private: 'Private'
523
+ public: 'Public'
524
+ qty: 'Quantity'
525
+ quick_info: 'Quick Info'
526
+ registration: 'Registration'
527
+ repeat_new: 'Repeat New'
528
+ role: 'Role'
529
+ slogan: 'Slogan'
530
+ slug: 'Slug'
531
+ short_code: 'Short Code'
532
+ site_name: 'Site Name'
533
+ size: 'Size'
534
+ social: 'Social'
535
+ skype: 'Skype'
536
+ status: 'Status'
537
+ owner: 'Page Owner'
538
+ tags: 'Tags'
539
+ text: 'Text'
540
+ title: 'Title'
541
+ total: 'Total'
542
+ trash: 'Trash'
543
+ twitter: 'Twitter'
544
+ username: 'Username'
545
+ value: 'Value'
546
+ version: 'Version'
547
+ visibility: 'Visibility'
548
+ page_404: '404 Page'
549
+ youtube: 'Youtube'
550
+ more_actions: 'More actions'
551
+ more_actions_info: 'More actions...'
552
+ shorcodes: "Shortcodes"
553
+ themes:
554
+ footer_copyright: 'Footer Copyright'
555
+ theme_select: 'Select Theme'
556
+ title: 'Theme %{theme} Settings '
557
+ analytics_code: 'Analytics Code'
558
+ social_share: 'Social share'
559
+
560
+ message:
561
+ updated: 'Theme updated'
562
+ users:
563
+ impersonate: 'Impersonate'
564
+ all_users: 'All Users'
565
+ add_user: 'Add User'
566
+ add_user_role: 'Add User Role'
567
+ avatar: 'Avatar'
568
+ create_user: 'Create User'
569
+ edit_profile: 'Edit Profile'
570
+ list_users: 'List Users'
571
+ list_user_roles: 'User Roles'
572
+ message:
573
+ error: 'Not found user.'
574
+ error_captcha: 'Oh! Its error with CAPTCHA!'
575
+ created: 'The user has been created.'
576
+ updated: 'The user has been updated.'
577
+ deleted: 'The user has been deleted.'
578
+ incorrect_old_password: 'Incorrect old password'
579
+ rol_error: 'Not found group user.'
580
+ rol_created: 'The user role has been created.'
581
+ rol_updated: 'The user role has been updated.'
582
+ rol_deleted: 'The user role has been deleted.'
583
+ requires_different_name: 'Requires different name'
584
+ requires_different_username: 'Requires different username'
585
+ requires_different_email: 'Requires different email'
586
+ created_pending_validate_email: "The user has been created, please confirm your email"
587
+ new_photo: 'New Photo'
588
+ others_permissions: 'Others permissions'
589
+ profile: 'Profile'
590
+ slogan: 'Slogan'
591
+ type_contents: 'Type of Contents'
592
+ user_roles: 'User Roles'
593
+ roles_values:
594
+ comments: 'Comments'
595
+ forms: 'Forms'
596
+ media: 'Media'
597
+ publish: 'Publish'
598
+ themes: 'Themes'
599
+ html_create_or_edit: 'Create<br>or Edit'
600
+ html_edit_other: 'Edit <br> Other'
601
+ html_edit_publish: 'Edit <br> Publish'
602
+ html_delete_other: 'Delete <br> Other'
603
+ html_delete_publish: 'Delete <br> Publish'
604
+ html_read_private: 'Read <br> Private'
605
+ html_manage_categories: 'Manage <br> Categories'
606
+ html_manage_tags: 'Manage <br> Tags'
607
+ tool_tip:
608
+ comments: 'Allowing the comments section'
609
+ delete: 'You need permission to Create or Edit to delete posts of your property. '
610
+ forms: 'Allowing Forms section'
611
+ media: 'Permission to the midsection'
612
+ publish: 'You need permits Create or Edit, Edit Other, Edit, Publish, to enable this permission'
613
+ themes: 'Themes permission to section'
614
+ widgets: 'Widgets permission to section'
615
+ menus: 'Permission to the Menu section'
616
+ plugins: 'Permission to the Plugins section'
617
+ users: 'Permission to create, edit, delete Users'
618
+ settings: 'Permission to section Settings'
619
+ create_or_edit: 'It lets you create and edit your posts (the post is not published)'
620
+ edit_other: 'It allows you to edit the post of other users (the post is not published)'
621
+ edit_publish: 'It allows you to edit the post published'
622
+ delete_other: 'You need permission to remove edit other posts by other users'
623
+ delete_publish: 'You need permits Delete, Delete Other, to enable this permission'
624
+ read_private: 'Allows you to view private posts'
625
+ manage_categories: 'Permission to create, edit and delete categories'
626
+ manage_tags: 'Permission to create, edit and delete post tags'
627
+ validate:
628
+ required: 'This field is required.'
629
+ remote: 'Please fix this field.'
630
+ email: 'Please enter a valid email address.'
631
+ url: 'Please enter a valid URL.'
632
+ date: 'Please enter a valid date.'
633
+ dateiso: 'Please enter a valid date ( ISO ).'
634
+ number: 'Please enter a valid number.'
635
+ digits: 'Please enter only digits.'
636
+ creditcard: 'Please enter a valid credit card number.'
637
+ equalto: 'Please enter the same value again.'
638
+ maxlength: 'Please enter no more than {0} characters.'
639
+ minlength: 'Please enter at least {0} characters.'
640
+ rangelength: 'Please enter a value between {0} and {1} characters long.'
641
+ range: 'Please enter a value between {0} and {1}.'
642
+ max: 'Please enter a value less than or equal to {0}.'
643
+ min: 'Please enter a value greater than or equal to {0}.'
644
+ widgets:
645
+ create_widget: 'Create Widget'
646
+ create_sidebar: 'Create Sidebar'
647
+ complex_widgets: 'Complex Widgets'
648
+ simple_widgets: 'Simple Widgets'
649
+ message:
650
+ created: 'The widget has been created.'
651
+ updated: 'The widget has been updated.'
652
+ deleted: 'The widget has been delete.'
653
+ error_created: 'Not Created Widget.'
654
+ error_updated: 'Not Updated Widget.'
655
+ not_registered_widgets: 'There are no registered widgets'
656
+ assign:
657
+ updated: "Widget assign updated"
658
+ error_updated: "Widget assign not updated"
659
+ sidebar:
660
+ created: "Sidebar Create."
661
+ updated: "Sidebar Update."
662
+ error_created: "No created sidebar."
663
+ error_updated: "No Update sidebar."
664
+ error_deleted: "Sidebar deleted."
665
+ intro:
666
+ profile: "In this place you can see your profile options."
667
+ content: "This block contains all content groups of your site. Each content can have different structure configured in settings => Content Groups"
668
+ #dashboard: "In this section you can see "
669
+ media: "This section manages all your public media files."
670
+ comments: "This section manages all the comments of your contents."
671
+ appearance: "Manage all the information related to Public Interface."
672
+ themes: "In this section you can choose your preferred theme (Public Interface)."
673
+ widgets: "This module permits you to manage your widgets and paste the code in any content."
674
+ menus: "<img style=\"max-width: 100%;\" src=\"%{image}\" /> This module permits you to control your menus for Public Interface in multiple levels."
675
+ plugins: "In this section you can see all plugins (custom applications to extend your site functionality)."
676
+ users: "Permits you to manage all users of the site. Also you can manage the roles for the users."
677
+ settings: "In this section you can find all site configurations."
678
+ gral_site: "This is a section where you can configure all settings of the site and current theme"
679
+ sites: "This module permits you to manage your sub sites, i.e. you can create unlimited sites like this (This is visible only for main site). Check /config/system.json to customize settings."
680
+ custom_fields: "This section permits you to extend easily your contents, themes,... by custom fields."
681
+ post_type: "In this module you can manage your content groups without programing anything."
682
+ languages: "This module permits you to manage all languages for your site. Also you can configure the language for your admin panel."
683
+ shortcodes: "In this section you can see all available shortcodes to use in your contents."