alchemy_cms 3.2.0.rc1 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CODE_OF_CONDUCT.md +13 -0
  4. data/README.md +2 -2
  5. data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.coffee +5 -9
  6. data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +0 -1
  7. data/app/assets/javascripts/alchemy/alchemy.windows.js.coffee +16 -4
  8. data/app/assets/stylesheets/alchemy/selects.scss +26 -2
  9. data/app/controllers/alchemy/admin/elements_controller.rb +1 -1
  10. data/app/helpers/alchemy/elements_block_helper.rb +6 -6
  11. data/app/models/alchemy/language.rb +23 -11
  12. data/app/models/alchemy/page/page_naming.rb +29 -16
  13. data/app/views/alchemy/admin/elements/fold.js.erb +0 -1
  14. data/app/views/alchemy/admin/elements/order.js.erb +6 -4
  15. data/app/views/alchemy/admin/trash/index.html.erb +1 -0
  16. data/bin/alchemy +3 -3
  17. data/config/locales/alchemy.nl.yml +35 -35
  18. data/lib/alchemy/auth_accessors.rb +1 -1
  19. data/lib/alchemy/config.rb +3 -5
  20. data/lib/alchemy/errors.rb +14 -0
  21. data/lib/alchemy/modules.rb +1 -1
  22. data/lib/alchemy/mount_point.rb +1 -1
  23. data/lib/alchemy/tasks/helpers.rb +1 -1
  24. data/lib/alchemy/version.rb +1 -1
  25. data/lib/rails/generators/alchemy/base.rb +1 -1
  26. data/lib/rails/templates/alchemy.rb +1 -1
  27. data/spec/controllers/admin/elements_controller_spec.rb +1 -1
  28. data/spec/controllers/alchemy/api/contents_controller_spec.rb +41 -23
  29. data/spec/controllers/alchemy/api/elements_controller_spec.rb +49 -21
  30. data/spec/controllers/alchemy/api/pages_controller_spec.rb +50 -12
  31. data/spec/libraries/auth_accessors_spec.rb +3 -1
  32. data/spec/libraries/config_spec.rb +1 -3
  33. data/spec/libraries/modules_spec.rb +1 -1
  34. data/spec/libraries/mount_point_spec.rb +1 -1
  35. data/spec/models/content_spec.rb +2 -2
  36. data/spec/models/element_spec.rb +28 -26
  37. data/spec/models/language_spec.rb +3 -1
  38. data/spec/models/page_spec.rb +13 -1
  39. data/spec/tasks/helpers_spec.rb +15 -9
  40. data/vendor/assets/javascripts/tinymce/langs/de.js +3 -0
  41. data/vendor/assets/javascripts/tinymce/langs/es.js +5 -2
  42. data/vendor/assets/javascripts/tinymce/langs/fr.js +14 -11
  43. data/vendor/assets/javascripts/tinymce/langs/nl.js +6 -3
  44. data/vendor/assets/javascripts/tinymce/langs/ru.js +3 -0
  45. data/vendor/assets/javascripts/tinymce/plugins/autoresize/plugin.min.js +1 -1
  46. data/vendor/assets/javascripts/tinymce/plugins/charmap/plugin.min.js +1 -1
  47. data/vendor/assets/javascripts/tinymce/plugins/fullscreen/plugin.min.js +1 -1
  48. data/vendor/assets/javascripts/tinymce/plugins/link/plugin.min.js +1 -1
  49. data/vendor/assets/javascripts/tinymce/plugins/paste/plugin.min.js +1 -1
  50. data/vendor/assets/javascripts/tinymce/plugins/table/plugin.min.js +1 -1
  51. data/vendor/assets/javascripts/tinymce/themes/modern/theme.min.js +1 -1
  52. data/vendor/assets/javascripts/tinymce/tinymce.min.js +13 -11
  53. metadata +6 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5f8ca76e53123738e5b411666a78d9677f265404
4
- data.tar.gz: ffc2be39f4cb1bc85af32c008b8029175fd1b4d8
3
+ metadata.gz: 843d3c5e682842d297dfa3ac503f46739f0c7923
4
+ data.tar.gz: 923ddb8430a40163ca1268c1bc8543bbdbac53ef
5
5
  SHA512:
6
- metadata.gz: e8e351a38eee79090b65c5d1d96d2bd7b1c8ca07aad0f4153554e2f9fbb112e03a92314d7ad975e8451c819b66a267892466346ae3d6e6d4e4f79c64fe1d6b36
7
- data.tar.gz: 075c70c688c8b1091e12c3b8f727875c892f7a9e4b3dd2539e23e1004c1799add4bd844f79deb9d17452b9799f4538e0b45e0b32b77b093b06fd0f58b9d6bfde
6
+ metadata.gz: a21f12882df65fe9f1e4d5ad7381d20c74de29f3dd61e3d532e0c9a4bc3358620849809f63acc239189ded7f286f31c67982d822a77d5ae0eea0925d493a6494
7
+ data.tar.gz: 76e2ba7f396580a673ec3fc7e7444d8acb7b78828e9dd7dc3c19dc49b958e1e98180a10315a62f25056ebf37384e99fca54d97e9388c57d4dbf957341d6c33d1
data/.gitignore CHANGED
@@ -19,3 +19,4 @@ spec/dummy/config/locales/**/*
19
19
  /index/
20
20
  /.bundle/
21
21
  .rbenv-version
22
+ .ruby-*
@@ -0,0 +1,13 @@
1
+ # Contributor Code of Conduct
2
+
3
+ As contributors and maintainers of AlchemyCMS, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
4
+
5
+ We are committed to making participation in AlchemyCMS a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion.
6
+
7
+ Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.
8
+
9
+ AlchemyCMS maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. AlchemyCMS maintainers who do not follow the Code of Conduct may be removed from the AlchemyCMS team.
10
+
11
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the AlchemyCMS maintainers.
12
+
13
+ This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.0.0, available at [http://contributor-covenant.org/version/1/0/0/](http://contributor-covenant.org/version/1/0/0/)
data/README.md CHANGED
@@ -29,7 +29,7 @@ Read more about Alchemy on the [website](http://alchemy-cms.com) and in the [gui
29
29
 
30
30
  ## Rails Version
31
31
 
32
- **This version of Alchemy CMS runs with Rails 4.2**
32
+ **This version of Alchemy CMS runs with Rails 4.2 only**
33
33
 
34
34
  * For a Rails 4.0/4.1 compatible version use the [`3.1-stable` branch](https://github.com/AlchemyCMS/alchemy_cms/tree/3.1-stable).
35
35
  * For a Rails 3.2 compatible version use the [`2.8-stable` branch](https://github.com/AlchemyCMS/alchemy_cms/tree/2.8-stable).
@@ -54,7 +54,7 @@ For a Ruby 1.8.7 compatible version use the [`2.3-stable` branch](https://github
54
54
  Use the installer:
55
55
 
56
56
  ```shell
57
- $ gem install alchemy_cms --pre
57
+ $ gem install alchemy_cms
58
58
  $ alchemy new my_magicpage
59
59
  ```
60
60
 
@@ -30,11 +30,6 @@ $.extend Alchemy,
30
30
  $(child).attr "data-element-id"
31
31
  params_string = ""
32
32
  cell_id = $(this).attr("data-cell-id")
33
- # Is the trash window open?
34
- if Alchemy.TrashWindow.current
35
- # update the trash icon
36
- if $("#trash_items div.element_editor").not(".dragged").length is 0
37
- $("#element_trash_button .icon").removeClass "full"
38
33
  $(event.target).css "cursor", "progress"
39
34
  params_string = "page_id=" + page_id + "&authenticity_token=" + encodeURIComponent(form_token) + "&" + $.param(element_ids: ids)
40
35
  params_string += "&cell_id=" + cell_id if cell_id
@@ -82,7 +77,8 @@ $.extend Alchemy,
82
77
  iframeFix: "iframe#alchemy_preview_window"
83
78
  connectToSortable: cell_classes.replace(/,.$/, "")
84
79
  start: (event, ui) ->
85
- $(this).hide().addClass "dragged"
86
- ui.helper.css width: "300px"
87
- stop: ->
88
- $(this).show().removeClass "dragged"
80
+ $(this).hide().addClass("dragged")
81
+ ui.helper.css("width", "300px")
82
+ stop: (event, ui) ->
83
+ $(this).show().removeClass("dragged")
84
+ ui.helper.css("width", "")
@@ -20,4 +20,3 @@ Alchemy.GUI =
20
20
  Alchemy.ElementDirtyObserver($el)
21
21
  Alchemy.GUI.init($el)
22
22
  Alchemy.ImageLoader($el)
23
- Alchemy.Spinner.watch($el)
@@ -18,13 +18,25 @@ $.extend Alchemy,
18
18
  # Opens the trash window
19
19
  open: (page_id, title) ->
20
20
  url = Alchemy.routes.admin_trash_path(page_id)
21
- Alchemy.TrashWindow.current = new Alchemy.Dialog url,
21
+ @current = new Alchemy.Dialog url,
22
22
  title: title,
23
23
  size: '380x460',
24
24
  modal: false
25
- Alchemy.TrashWindow.current.open()
25
+ @current.open()
26
+ return
26
27
 
27
28
  # Refreshes the trash window
28
29
  refresh: ->
29
- if Alchemy.TrashWindow.current
30
- Alchemy.TrashWindow.current.reload()
30
+ @current.reload() if @current
31
+ return
32
+
33
+ # Update the trash window icon
34
+ updateIcon: ->
35
+ return unless @current?
36
+ $icon = $("#element_trash_button .icon")
37
+ # Is the trash window open?
38
+ if $("#trash_items div.element_editor").not(".dragged").length is 0
39
+ $icon.removeClass("full")
40
+ else
41
+ $icon.addClass("full")
42
+ return
@@ -28,9 +28,13 @@ select {
28
28
 
29
29
  b {
30
30
  @extend .icon-menu;
31
- width: 18px;
32
- line-height: 23px;
33
31
  background-image: none;
32
+
33
+ &:before {
34
+ position: relative;
35
+ top: 5px;
36
+ left: 1px;
37
+ }
34
38
  }
35
39
  }
36
40
  }
@@ -55,6 +59,11 @@ select {
55
59
  line-height: 4px;
56
60
  width: 12px;
57
61
  font-size: 10px;
62
+
63
+ &:before {
64
+ top: 0px;
65
+ left: 0px;
66
+ }
58
67
  }
59
68
  }
60
69
  }
@@ -209,3 +218,18 @@ select {
209
218
  margin-right: 2*$default-margin;
210
219
  }
211
220
  }
221
+
222
+ // overriding important of select2 default style for retina screens
223
+ @media only screen and (-webkit-min-device-pixel-ratio: 1.5),
224
+ only screen and (min-resolution: 2dppx) {
225
+
226
+ #alchemy {
227
+
228
+ .select2-search input,
229
+ .select2-search-choice-close,
230
+ .select2-container .select2-choice abbr,
231
+ .select2-container .select2-choice .select2-arrow b {
232
+ background-image: none !important;
233
+ }
234
+ }
235
+ }
@@ -84,7 +84,7 @@ module Alchemy
84
84
  end
85
85
 
86
86
  def order
87
- @trashed_elements = Element.trashed.where(id: params[:element_ids]).pluck(:id)
87
+ @trashed_element_ids = Element.trashed.where(id: params[:element_ids]).pluck(:id)
88
88
  Element.transaction do
89
89
  params[:element_ids].each_with_index do |element_id, idx|
90
90
  # Ensure to set page_id and cell_id to the current page and
@@ -108,15 +108,15 @@ module Alchemy
108
108
  #
109
109
  def element_view_for(element, options = {})
110
110
  options = {
111
- :tag => :div,
112
- :id => element_dom_id(element),
113
- :class => element.name,
114
- :tags_formatter => lambda { |tags| tags.join(" ") }
111
+ tag: :div,
112
+ id: element_dom_id(element),
113
+ class: element.name,
114
+ tags_formatter: ->(tags) { tags.join(" ") }
115
115
  }.merge(options)
116
116
 
117
117
  # capture inner template block
118
118
  output = capture do
119
- yield ElementViewHelper.new(self, :element => element) if block_given?
119
+ yield ElementViewHelper.new(self, element: element) if block_given?
120
120
  end
121
121
 
122
122
  # wrap output in a useful DOM element
@@ -155,7 +155,7 @@ module Alchemy
155
155
  }.merge(options)
156
156
 
157
157
  capture do
158
- yield ElementEditorHelper.new(self, :element => element)
158
+ yield ElementEditorHelper.new(self, element: element) if block_given?
159
159
  end
160
160
  end
161
161
  end
@@ -19,6 +19,9 @@
19
19
 
20
20
  module Alchemy
21
21
  class Language < ActiveRecord::Base
22
+ belongs_to :site
23
+ has_many :pages
24
+
22
25
  validates_presence_of :name
23
26
  validates_presence_of :language_code
24
27
  validates_presence_of :page_layout
@@ -26,20 +29,30 @@ module Alchemy
26
29
  validates_uniqueness_of :language_code, scope: [:site_id, :country_code]
27
30
  validate :presence_of_default_language
28
31
  validate :publicity_of_default_language
29
- has_many :pages
30
- belongs_to :site
31
- after_destroy :delete_language_root_page
32
- validates_format_of :language_code, with: /\A[a-z]{2}\z/, if: -> { language_code.present? }
33
- validates_format_of :country_code, with: /\A[a-z]{2}\z/, if: -> { country_code.present? }
32
+
33
+ validates_format_of :language_code, with: /\A[a-z]{2}\z/,
34
+ if: -> { language_code.present? }
35
+
36
+ validates_format_of :country_code, with: /\A[a-z]{2}\z/,
37
+ if: -> { country_code.present? }
38
+
39
+ before_save :remove_old_default,
40
+ if: -> { default_changed? && self != Language.default }
41
+
42
+ after_update :set_pages_language,
43
+ if: -> { language_code_changed? || country_code_changed? }
44
+
45
+ after_update :unpublish_pages,
46
+ if: -> { changes[:public] == [true, false] }
47
+
34
48
  before_destroy :check_for_default
35
- after_update :set_pages_language, if: proc { |m| m.language_code_changed? || m.country_code_changed? }
36
- after_update :unpublish_pages, if: proc { changes[:public] == [true, false] }
37
- before_save :remove_old_default, if: proc { |m| m.default_changed? && m != Language.default }
49
+ after_destroy :delete_language_root_page
50
+
51
+ default_scope { on_site(Site.current) }
38
52
 
39
53
  scope :published, -> { where(public: true) }
40
54
  scope :with_root_page, -> { joins(:pages).where(Page.table_name => {language_root: true}) }
41
55
  scope :on_site, ->(s) { s.present? ? where(site_id: s) : all }
42
- default_scope { on_site(Site.current) }
43
56
 
44
57
  class << self
45
58
 
@@ -117,7 +130,7 @@ module Alchemy
117
130
  end
118
131
 
119
132
  def check_for_default
120
- raise "Default language is not deletable" if self.default?
133
+ raise DefaultLanguageNotDeletable if default?
121
134
  end
122
135
 
123
136
  def delete_language_root_page
@@ -127,6 +140,5 @@ module Alchemy
127
140
  def unpublish_pages
128
141
  self.pages.update_all(public: false)
129
142
  end
130
-
131
143
  end
132
144
  end
@@ -37,8 +37,7 @@ module Alchemy
37
37
  # Makes a slug of all ancestors urlnames including mine and delimit them be slash.
38
38
  # So the whole path is stored as urlname in the database.
39
39
  def update_urlname!
40
- names = ancestors.visible.contentpages.where(language_root: nil).map(&:slug).compact
41
- new_urlname = (names << slug).join('/')
40
+ new_urlname = nested_url_name(slug)
42
41
  if urlname != new_urlname
43
42
  legacy_urls.create(urlname: urlname)
44
43
  update_column(:urlname, new_urlname)
@@ -56,6 +55,18 @@ module Alchemy
56
55
  "http://#{urlname}"
57
56
  end
58
57
 
58
+ # Returns an array of visible/non-language_root ancestors.
59
+ def visible_ancestors
60
+ return [] unless parent
61
+ if new_record?
62
+ parent.visible_ancestors.tap do |base|
63
+ base.push(parent) if parent.visible?
64
+ end
65
+ else
66
+ ancestors.visible.contentpages.where(language_root: nil).to_a
67
+ end
68
+ end
69
+
59
70
  private
60
71
 
61
72
  def update_descendants_urlnames
@@ -71,18 +82,15 @@ module Alchemy
71
82
  # If url_nesting is enabled the urlname contains the whole path.
72
83
  def set_urlname
73
84
  if Config.get(:url_nesting)
74
- url_name = [
75
- parent_urlname,
76
- convert_url_name(urlname.blank? ? name : slug)
77
- ].compact.join('/')
85
+ value = slug
78
86
  else
79
- url_name = convert_url_name(urlname.blank? ? name : urlname)
87
+ value = urlname
80
88
  end
81
- write_attribute :urlname, url_name
89
+ self[:urlname] = nested_url_name(value)
82
90
  end
83
91
 
84
92
  def set_title
85
- write_attribute :title, name
93
+ self[:title] = name
86
94
  end
87
95
 
88
96
  # Converts the given name into an url friendly string.
@@ -90,8 +98,8 @@ module Alchemy
90
98
  # Names shorter than 3 will be filled up with dashes,
91
99
  # so it does not collidate with the language code.
92
100
  #
93
- def convert_url_name(name)
94
- url_name = convert_to_urlname(name)
101
+ def convert_url_name(value)
102
+ url_name = convert_to_urlname(value.blank? ? name : value)
95
103
  if url_name.length < 3
96
104
  ('-' * (3 - url_name.length)) + url_name
97
105
  else
@@ -99,11 +107,16 @@ module Alchemy
99
107
  end
100
108
  end
101
109
 
102
- # Urlname of parent page.
103
- # Returns nil, if the parent is either a language root page or the root page itself
104
- def parent_urlname
105
- return if parent.nil? || parent.language_root? || parent.root?
106
- parent.urlname
110
+ def nested_url_name(value)
111
+ (ancestor_slugs << convert_url_name(value)).join('/')
112
+ end
113
+
114
+ # Slugs of all visible/non-language_root ancestors.
115
+ # Returns [], if there is no parent, the parent is
116
+ # the root page itself, or url_nesting is off.
117
+ def ancestor_slugs
118
+ return [] if !Config.get(:url_nesting) || parent.nil? || parent.root?
119
+ visible_ancestors.map(&:slug).compact
107
120
  end
108
121
  end
109
122
  end
@@ -19,7 +19,6 @@
19
19
  <% else -%>
20
20
 
21
21
  $el.trigger('Alchemy.SelectElementEditor');
22
- Alchemy.SelectBox($el);
23
22
  Alchemy.Tinymce.init(<%= @element.richtext_contents_ids.to_json %>);
24
23
  Alchemy.GUI.initElement($el);
25
24
 
@@ -1,10 +1,12 @@
1
1
  $('#element_area .ajax_folder').show();
2
2
  Alchemy.PreviewWindow.refresh();
3
- <% if @trashed_elements.any? %>
3
+ <% if @trashed_element_ids.any? %>
4
4
  Alchemy.growl('<%= _t(:successfully_restored_element) -%>');
5
- <% element_ids = @trashed_elements.collect { |e| ".dragged[data-element-id=\"#{e.id}\"]" }.join(", ").html_safe %>
6
- <% @trashed_elements.each do |element| %>
7
- $('<%= element_ids %>').each(function() { this.id = 'element_' + <%= element.id %> });
5
+ <% element_ids = @trashed_element_ids.collect do |id|
6
+ "#element_area [data-element-id=\"#{id}\"]"
7
+ end.join(", ").html_safe %>
8
+ <% @trashed_element_ids.each do |id| %>
9
+ $('<%= element_ids %>').each(function() { this.id = 'element_' + <%= id %> });
8
10
  <% end %>
9
11
  Alchemy.ElementEditors.reinit('<%= element_ids %>');
10
12
  <% else %>
@@ -25,4 +25,5 @@
25
25
  <%- end -%>
26
26
  <script type="text/javascript" charset="utf-8">
27
27
  Alchemy.DraggableTrashItems(<%= @draggable_trash_items.to_json.html_safe %>);
28
+ Alchemy.TrashWindow.updateIcon();
28
29
  </script>
@@ -24,7 +24,7 @@ class AlchemyInstaller < Thor
24
24
  say welcome_message, :yellow
25
25
  say "Step 1: Creating a Rails #{rails_version} application.", :yellow
26
26
  say "Please wait...", :yellow
27
- system("rails _#{rails_version}_ new #{@application} -m #{alchemy_template} -d #{options[:database]} -JT --quiet") || exit!(1)
27
+ system("rails _#{rails_version}_ new #{@application} -m #{alchemy_template} -d #{options[:database]} -T") || exit!(1)
28
28
  say "Successfully created the Rails application!", :green
29
29
  say instructions, :yellow
30
30
  if options[:database] == 'mysql' || options[:database] == 'postgresql'
@@ -57,7 +57,7 @@ class AlchemyInstaller < Thor
57
57
  end
58
58
 
59
59
  def bundle_cmd
60
- "cd #{@application} && bundle exec"
60
+ "cd #{@application} && DISABLE_SPRING=1 bundle exec"
61
61
  end
62
62
 
63
63
  def alchemy_template
@@ -88,7 +88,7 @@ INSTRUCTIONS
88
88
  def further_instructions
89
89
  <<-EOF
90
90
 
91
- Step 5: Further Instructions
91
+ Step 4: Further Instructions
92
92
 
93
93
  Change into your app folder:
94
94
 
@@ -178,18 +178,18 @@ nl:
178
178
  "Currently locked pages": "Vergrendelde pagina's"
179
179
  "Default language has to be public": "De standaardpagina moet publiek zijn."
180
180
  "Delete image": "Afbeelding verwijderen"
181
- "Do you really want to clear the clipboard?": "Klembord zeker leegmaken?"
182
- "Do you really want to clear the trash?": "Prullenbak zeker leeg maken?"
183
- "Do you really want to delete this content?": "Deze inhoud zeker verwijderen?"
181
+ "Do you really want to clear the clipboard?": "Klembord echt leeg maken?"
182
+ "Do you really want to clear the trash?": "Prullenbak echt leeg maken?"
183
+ "Do you really want to delete this content?": "Inhoud echt verwijderen?"
184
184
  "Drag an element over to the element window to restore it": "Sleep een element over het elementenvenster om deze te herstellen"
185
- "Edit Picturemask": "Afbeeldingsmaker bewerken"
185
+ "Edit Picturemask": "Afbeeldingsmasker bewerken"
186
186
  "Edit image": "Afbeelding bewerken"
187
187
  "Edit multiple pictures": "Meerdere afbeeldingen bewerken"
188
188
  "Elements": "Elementen"
189
189
  "Element trashed": "Element verwijderd"
190
190
  "Error with the Flash® Uploader!": "Fout in de Flash® Uploader!"
191
191
  "Excerpt": "fragment"
192
- "File uploaded succesfully": "Bestand %{name} geüploadet"
192
+ "File uploaded succesfully": "Bestand %{name} geüpload"
193
193
  "File successfully updated": "Bestand is succesvol geüpdatet"
194
194
  "File upload error": "Bestand kon niet worden geüpload: %{error}"
195
195
  "File deleted successfully": "%{name} verwijderd"
@@ -231,7 +231,7 @@ nl:
231
231
  "Pages order saved": "Paginasortering is opgeslagen"
232
232
  "Password": "Wachtwoord"
233
233
  "Password reset": "Wachtwoord resetten"
234
- "Paste from clipboard": "Uit klembord kopieren"
234
+ "Paste from clipboard": "Uit klembord kopiëren"
235
235
  "Picture infos": "Afbeeldingsinformatie"
236
236
  "Picture uploaded succesfully": "Afbeelding %{name} is geüpload"
237
237
  "Picture validation error": "Fout bij het uploaden van afbeelding %{name}"
@@ -290,11 +290,11 @@ nl:
290
290
  "Welcome to Alchemy": "Welkom bij Alchemy"
291
291
  "Who else is online": "Wie is ook online"
292
292
  "Yes": "Ja"
293
- "You are not authorized": "U bent niet geauthoriseerd."
293
+ "You are not authorized": "U bent niet geautoriseerd."
294
294
  "You are about to edit many pictures at once": "%{length} afbeeldingen worden in een keer aangepast"
295
295
  element_dirty_close_window_notice: "Elementen zijn nog niet opgeslagen. Dit venster toch sluiten?"
296
296
  "You may upload files with following extensions": "%{file_types_description} mogen worden geüpload met de volgende extensies: %{file_types}"
297
- "You may upload any file": "Alle bestanden kunnen worden geüploadet"
297
+ "You may upload any file": "Alle bestanden kunnen worden geüpload"
298
298
  "Your last login was on": "Uw laatste aanmelding was op %{time}."
299
299
  "Your last updated pages": "Your last updated pages"
300
300
  "Your trash is empty": "De prullenbak is leeg"
@@ -329,11 +329,11 @@ nl:
329
329
  content_essence_not_found: "Content essence is niet gevonden"
330
330
  content_not_found: "Veld voor content is niet aanwezig"
331
331
  content_validations_headline: "Controleer de gemarkeerde velden"
332
- copy: "kopieren"
333
- copy_element: "Dit element kopieren"
334
- copy_page: "Pagina kopieren"
332
+ copy: "kopiëren"
333
+ copy_element: "Dit element kopiëren"
334
+ copy_page: "Pagina kopiëren"
335
335
  "Could not delete Pictures": "Kan de afbeeldingen niet verwijderen"
336
- copy_language_tree_heading: "Paginastructuur kopieren"
336
+ copy_language_tree_heading: "Paginastructuur kopiëren"
337
337
  country_code_placeholder: 'bijv. us (optioneel)'
338
338
  country_code_foot_note: "Een landcode is alleen nodig voor het toewijzen van een aparte taal aan elk land."
339
339
  create: "maken"
@@ -347,25 +347,25 @@ nl:
347
347
  delete_image: "Deze afbeelding verwijderen"
348
348
  delete_language: "Deze taal verwijderen"
349
349
  delete_page: "Deze pagina verwijderen"
350
- delete_tag: 'Tag löschen'
350
+ delete_tag: 'Tag wissen'
351
351
  document: "Bestand"
352
352
  documents: "Bestanden"
353
353
  download_csv: "CSV downloaden"
354
354
  download_file: "Bestand '%{filename}' downloaden"
355
- do_you_really_want_to_delete_this_tag?: "Do you really want to delete this tag?"
355
+ do_you_really_want_to_delete_this_tag?: "Wilt u deze tag echt verwijderen?"
356
356
  drag_to_sort: "slepen om afbeeldingen te sorteren"
357
357
  edit_file_properties: "Eigenschappen van het bestand aanpassen"
358
358
  edit_image_properties: "Eigenschappen van de afbeelding aanpassen"
359
359
  edit_language: "Taal aanpassen"
360
360
  edit_page: "Pagina aanpassen"
361
361
  edit_page_properties: "Eigenschappen van de pagina aanpassen"
362
- edit_tag: 'Tag bearbeiten'
362
+ edit_tag: 'Tag bewerken'
363
363
  edit_selected_pictures: "Geselecteerde afbeeldingen aanpassen"
364
364
  element_editor_not_found: "Foutmelding in het element"
365
365
  element_of_type: "Element"
366
366
  element_saved: "Opgeslagen element."
367
367
  enter_external_link: "Voer de URL van de snelkoppeling in"
368
- explain_cropping: "<p>Verplaats het frame en verander de grootte om de uitsnede aan te passen.</p><p>Klik op apply als het goed is.</p>"
368
+ explain_cropping: "<p>Verplaats het frame en verander de grootte om de uitsnede aan te passen.</p><p>Klik op 'toepassen' als het goed is.</p>"
369
369
  explain_publishing: "Pagina publiceren en gecachede versie van de server verwijderen."
370
370
  explain_sitemap_dragndrop_sorting: "Tip: Versleep de pagina's met het icoon om ze te sorteren."
371
371
  explain_unlocking: "Pagina verlaten en ontgrendelen voor andere gebruikers."
@@ -373,7 +373,7 @@ nl:
373
373
  footnote: "HINT! Gebruik de CTRL knop (of CMD voor OSX) om meerdere %{name} te uploaden."
374
374
  intro: "Zo werkt het uploaden van %{name}."
375
375
  step1: "Klik op 'browse' en ga naar de %{name} map"
376
- step2: "Selecteer alle %{name} die je wilt uploaden"
376
+ step2: "Selecteer alle %{name} die u wilt uploaden"
377
377
  step3: "Klik op 'open'."
378
378
  dragndrop: "Of sleep de bestanden op onderstaande vlak"
379
379
  external_link_notice_1: "Voer de complete URL in (inclusief bijvoorbeeld http://)"
@@ -406,19 +406,19 @@ nl:
406
406
  image_title: "Titel-tag"
407
407
  images: "Bilder"
408
408
  internal_link_headline: "Kies een pagina om een snelkoppeling naar te maken."
409
- internal_link_page_elements_explanation: "Additionally you can click right beside a page on 'Show Elements' to link to an anchor of an element from that page."
410
- internal_link_page_anchors_explanation: "Alternativly you can link to an anchor of the actual page."
411
- "item copied to clipboard": "%{name} naar het klembord gekopieerd"
409
+ internal_link_page_elements_explanation: "Ook kunt u rechts klikken op een pagina in 'Toon Elementen' om naar een interne verwijzing (anchor) van deze pagina te verwijzen."
410
+ internal_link_page_anchors_explanation: "Ook kunt u naar de pagina zelf verwijzen."
411
+ "item copied to clipboard": "%{name} naar het klembord gekopiëerd"
412
412
  "item moved to clipboard": "%{name} naar het klembord verplaatst"
413
413
  "item removed from clipboard": "%{name} van het klembord verwijderd"
414
414
  javascript_disabled_headline: "Javascript is uitgeschakeld!"
415
- javascript_disabled_text: "Javascript is nodig voor een juiste werking van Alchemy. Gebruik de browseringstellingen om Javascript in te schakelen."
415
+ javascript_disabled_text: "Javascript is nodig voor een juiste werking van Alchemy. Gebruik de browserinstellingen om Javascript in te schakelen."
416
416
  language_code_placeholder: 'bijv. en'
417
417
  language_does_not_exist: "Deze boomstructuur bestaat niet."
418
418
  language_pages_copied: "Boomstructuur gekopieerd."
419
419
  last_upload_only: "Alleen de laatste upload"
420
420
  left: "links"
421
- legacy_url_info_text: "A link is a redirect from an old URL to the current URL of this page. This redirect happens with a <a href='https://support.google.com/webmasters/answer/93633' target='_blank'>301 status code</a>."
421
+ legacy_url_info_text: "Een link is een omleiding van een historische URL naar de huidige URL van deze pagina. Deze omleiding gebeurt met een <a href='https://support.google.com/webmasters/answer/93633' target='_blank'>301 status code</a>."
422
422
  link_image: "Snelkoppeling naar deze afbeelding maken."
423
423
  link_overlay_tab_label:
424
424
  contactform: "Contactformulier"
@@ -489,7 +489,7 @@ nl:
489
489
  page_type: "Type"
490
490
  page_visible_in_navigation: "Zichtbaar in navigatie"
491
491
  page_was_created: "Is aangemaakt"
492
- page_was_updated: "Is geüpdated"
492
+ page_was_updated: "Is geüpdatet"
493
493
  pages:
494
494
  update:
495
495
  comma_seperated: "Komma gescheiden"
@@ -556,7 +556,7 @@ nl:
556
556
  title: "Titel"
557
557
  to_alchemy: "Naar Alchemy"
558
558
  "trash element": "Element naar de prullenbak verplaatsen"
559
- unknown: "unknown"
559
+ unknown: "onbekend"
560
560
  unlink: "Snelkoppeling van deze afbeelding verwijderen."
561
561
  unlock_page: "Pagina verlaten"
562
562
  unlocked_page: "pagina %{name} is ontgrendeld."
@@ -565,8 +565,8 @@ nl:
565
565
  url_name: "URL-Naam"
566
566
  visible: "zichtbaar"
567
567
  want_to_create_new_language: "Nieuwe boomstructuur aanmaken?"
568
- want_to_make_copy_of_existing_language: "Een boomstructuur kopieren?"
569
- "We need at least one default.": "Er moet een standarad taal zijn."
568
+ want_to_make_copy_of_existing_language: "Een boomstructuur kopiëren?"
569
+ "We need at least one default.": "Er moet minimaal één standaard taal zijn."
570
570
  welcome_note: "Welkom %{name}"
571
571
  welcome_back_note: "Welkom terug %{name}"
572
572
  welcome_please_identify_notice: "Welkom! voer uw gegevens in."
@@ -576,7 +576,7 @@ nl:
576
576
  zoom_image: "Afbeelding vergroten"
577
577
  "Leave Alchemy": "Alchemy verlaten"
578
578
  leave: "Afmelden"
579
- "You are about to leave Alchemy": "U staat op het punt de NVM Regiosite te verlaten"
579
+ "You are about to leave Alchemy": "U staat op het punt Alchemy te verlaten"
580
580
  "Do you want to": "Wilt u"
581
581
  "stay logged in": "ingelogd blijven"
582
582
  "or to completely": "of compleet"
@@ -631,15 +631,15 @@ nl:
631
631
  distance_in_words:
632
632
  half_a_minute: "halve minuut"
633
633
  less_than_x_seconds:
634
- zero: 'weniger als 1 Sekunde'
634
+ zero: 'minder dan nul seconden'
635
635
  one: "minder dan 1 seconde"
636
636
  many: "minder dan %{count} seconden"
637
637
  x_seconds:
638
638
  one: "1 seconde"
639
639
  many: "%{count} seconden"
640
640
  less_than_x_minutes:
641
- zero: 'weniger als 1 Minute'
642
- one: "minder dan een minuut"
641
+ zero: 'minder dan nul minuten'
642
+ one: "minder dan één minuut"
643
643
  many: "minder dan %{count} minuten"
644
644
  x_minutes:
645
645
  one: "1 minuut"
@@ -857,9 +857,9 @@ nl:
857
857
  link_title: Link-Titel
858
858
  css_class: Stijl
859
859
  link_target: Link-Doel
860
- render_size: Rendergrootte
861
- crop_from: Crop van
862
- crop_size: Cropgrotte
860
+ render_size: Weergavegrootte
861
+ crop_from: Uitsnede uit
862
+ crop_size: Grootte van uitsnede
863
863
  picture_id: Afbeelding
864
864
 
865
865
  alchemy/language:
@@ -880,12 +880,12 @@ nl:
880
880
  locked: "Deze pagina is geblokkeerd door een andere gebruiker."
881
881
  locked_by: "geblokkeerd door"
882
882
  meta_description: "Omschrijving"
883
- meta_keywords: "Keywords"
883
+ meta_keywords: "Sleutelwoorden"
884
884
  name: "Naam"
885
885
  page_layout: "Paginatype"
886
886
  public: "publiek"
887
887
  restricted: "afgeschermd"
888
- robot_follow: "robot mag links volgen"
888
+ robot_follow: "robot mag URL's volgen"
889
889
  robot_index: "robot mag index volgen"
890
890
  sitemap: "zichtbaar in sitemap"
891
891
  tag_list: Tags