locomotive_cms 2.5.5 → 2.5.6.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -2
  3. data/README.textile +3 -3
  4. data/app/assets/images/locomotive/icons/flags/pt.png +0 -0
  5. data/app/assets/javascripts/locomotive/utils/aloha_settings.js.coffee +1 -1
  6. data/app/assets/javascripts/locomotive/views/current_site/edit_view.js.coffee +5 -0
  7. data/app/assets/stylesheets/locomotive/backoffice/menu/main.css.scss +1 -1
  8. data/app/controllers/locomotive/api/theme_assets_controller.rb +1 -1
  9. data/app/controllers/locomotive/public/content_entries_controller.rb +6 -11
  10. data/app/controllers/locomotive/public/pages_controller.rb +1 -1
  11. data/app/controllers/locomotive/public/sitemaps_controller.rb +1 -1
  12. data/app/models/locomotive/extensions/content_type/sync.rb +16 -5
  13. data/app/models/locomotive/extensions/page/tree.rb +7 -3
  14. data/app/models/locomotive/extensions/site/locales.rb +12 -9
  15. data/app/models/locomotive/site.rb +10 -0
  16. data/app/views/locomotive/current_site/_form.html.haml +1 -0
  17. data/config/locales/admin_ui.cs.yml +2 -0
  18. data/config/locales/admin_ui.de.yml +3 -2
  19. data/config/locales/admin_ui.en.yml +1 -0
  20. data/config/locales/admin_ui.es.yml +2 -1
  21. data/config/locales/admin_ui.et.yml +1 -0
  22. data/config/locales/admin_ui.fr.yml +2 -1
  23. data/config/locales/admin_ui.it.yml +23 -0
  24. data/config/locales/admin_ui.ja.yml +1 -0
  25. data/config/locales/admin_ui.nb.yml +1 -0
  26. data/config/locales/admin_ui.nl.yml +4 -0
  27. data/config/locales/admin_ui.pl.yml +1 -0
  28. data/config/locales/admin_ui.pt-BR.yml +6 -5
  29. data/config/locales/admin_ui.pt.yml +320 -0
  30. data/config/locales/admin_ui.ru.yml +1 -0
  31. data/config/locales/admin_ui.sk.yml +2 -0
  32. data/config/locales/admin_ui.sr.yml +1 -0
  33. data/config/locales/admin_ui.zh-CN.yml +1 -0
  34. data/config/locales/carrierwave.pt.yml +4 -0
  35. data/config/locales/default.pt.yml +212 -0
  36. data/config/locales/devise.pt.yml +62 -0
  37. data/config/locales/flash.pt.yml +106 -0
  38. data/config/locales/formtastic.pt.yml +70 -0
  39. data/config/routes.rb +5 -6
  40. data/features/api/authorization/theme_assets.feature +4 -4
  41. data/features/public/contact_form.feature +1 -1
  42. data/features/public/new_contact_form.feature +95 -0
  43. data/features/public/pages.feature +2 -2
  44. data/features/step_definitions/relationships_steps.rb +37 -34
  45. data/lib/generators/locomotive/install/install_generator.rb +2 -0
  46. data/lib/generators/locomotive/install/templates/README +3 -2
  47. data/lib/generators/locomotive/install/templates/devise.rb +175 -0
  48. data/lib/generators/locomotive/install/templates/dragonfly.rb +1 -1
  49. data/lib/generators/locomotive/install/templates/locomotive.rb +2 -2
  50. data/lib/locomotive.rb +9 -0
  51. data/lib/locomotive/action_controller/public_responder.rb +45 -28
  52. data/lib/locomotive/configuration.rb +2 -2
  53. data/lib/locomotive/liquid/drops/content_entry.rb +6 -8
  54. data/lib/locomotive/liquid/drops/site.rb +1 -5
  55. data/lib/locomotive/liquid/filters/translate.rb +1 -1
  56. data/lib/locomotive/liquid/tags/fetch_page.rb +14 -6
  57. data/lib/locomotive/liquid/tags/model_form.rb +75 -0
  58. data/lib/locomotive/middlewares.rb +5 -1
  59. data/lib/locomotive/middlewares/base.rb +45 -0
  60. data/lib/locomotive/middlewares/locale.rb +32 -0
  61. data/lib/locomotive/middlewares/locale_redirection.rb +46 -0
  62. data/lib/locomotive/middlewares/seo_trailing_slash.rb +7 -28
  63. data/lib/locomotive/middlewares/site.rb +26 -0
  64. data/lib/locomotive/regexps.rb +1 -1
  65. data/lib/locomotive/render.rb +22 -2
  66. data/lib/locomotive/routing.rb +1 -0
  67. data/lib/locomotive/routing/post_content_entry_constraint.rb +11 -0
  68. data/lib/locomotive/routing/site_dispatcher.rb +1 -12
  69. data/lib/locomotive/version.rb +1 -1
  70. data/spec/dummy/config/boot.rb +1 -1
  71. data/spec/dummy/config/initializers/dragonfly.rb +1 -1
  72. data/spec/dummy/config/initializers/locomotive.rb +2 -2
  73. data/spec/lib/locomotive/liquid/drops/content_entry_spec.rb +23 -18
  74. data/spec/lib/locomotive/liquid/drops/site_spec.rb +25 -15
  75. data/spec/lib/locomotive/liquid/tags/model_form_spec.rb +46 -0
  76. data/spec/lib/locomotive/routing/site_dispatcher_spec.rb +0 -41
  77. data/spec/models/locomotive/site_spec.rb +1 -1
  78. data/spec/requests/locale_redirection_spec.rb +109 -0
  79. data/spec/requests/locale_spec.rb +85 -0
  80. data/spec/requests/seo_trailing_slash_spec.rb +1 -1
  81. data/spec/requests/site_spec.rb +27 -0
  82. data/spec/support/factories.rb +6 -0
  83. data/spec/support/middlewares.rb +3 -0
  84. metadata +48 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 934e34a25d00b8c0c55c81d20e17346b7a75f105
4
- data.tar.gz: dd086d5f1ef9307fd1b6f4deb59c0581840b45c7
3
+ metadata.gz: b03080f0869d8c8dffe1f7394f9410ddcfe8b9e0
4
+ data.tar.gz: 8649c776cdb126fd7c6ba67ad7578c84d71a19a9
5
5
  SHA512:
6
- metadata.gz: 3dd291b6d7e877f9187ec006a9d66300b176d7cecba047cf94a842f9d29f72d614f13e67a41006f0a1ac97537eac170134f8d31f468b99a1c2a3ca00b47c1c7a
7
- data.tar.gz: 249b2e6f9b65fc55e13ff4aa31e40853d7f163a8c9e846fedeba3619ca456dd81e6610f5858b719fd8f8966f0e558e924772ab985bb5e840056120fe006d7df7
6
+ metadata.gz: 395d855f2fd564535e365289afb551f38ee38761f146e459a93c7b5f39dbe8b95f51d1fd07b1b5fd0dfc3fd0ce90202b4c70cfa7e21f57bedbf0d325e5b3fb3e
7
+ data.tar.gz: b20cf87aac7025dec0241910f99e050be41b39ae27ffb92d9cd9db2dbea1b590576abdd2e3a3510980e66fc37e66feb61c8d830c0186707e731cbacfe98cd89a
data/Gemfile CHANGED
@@ -9,14 +9,13 @@ group :assets do
9
9
  gem 'sass-rails', '~> 3.2.4'
10
10
  gem 'coffee-rails', '~> 3.2.2'
11
11
  gem 'uglifier', '~> 1.2.4'
12
- gem 'compass-rails'
13
12
  end
14
13
 
15
14
  # The rest of the dependencies are for use when in the locomotive development / test environments
16
15
 
17
16
  group :test, :development do
18
17
  gem 'rspec-rails', '~> 2.13.0' # In order to have rspec tasks and generators
19
- gem 'rspec-cells'
18
+ gem 'rspec-cells', '0.1.10'
20
19
  end
21
20
 
22
21
  group :development do
@@ -28,7 +28,7 @@ h2. Gems
28
28
  Here is a short list of main gems / technologies used in the application.
29
29
 
30
30
  * Ruby 2.x
31
- * Rails 3.2.17 (Rails 4.0 planned for the beginning of 2014)
31
+ * Rails 3.2.19 (Rails 4.0 planned for the beginning of 2014)
32
32
  * Mongoid 3.1.5 (with MongoDB 2.x)
33
33
  * Liquid
34
34
  * Devise
@@ -44,7 +44,7 @@ See the "installation documentation on the official website":http://doc.locomoti
44
44
 
45
45
  h2. Upgrading
46
46
 
47
- We work on the procedure to upgrade from a previous version of the engine (below the 2.0.0)
47
+ See the "engine upgrade guide on the official website":http://doc.locomotivecms.com/guides/upgrading-engine
48
48
 
49
49
  h2. Community
50
50
 
@@ -89,5 +89,5 @@ h2. Contact
89
89
 
90
90
  Feel free to contact me at didier at nocoffee dot fr.
91
91
 
92
- Copyright (c) 2013 NoCoffee, released under the MIT license
92
+ Copyright (c) 2014 NoCoffee, released under the MIT license
93
93
  ...
@@ -39,7 +39,7 @@ window.Aloha.settings =
39
39
  crop: false
40
40
 
41
41
  i18n:
42
- available: ['en', 'fr', 'pl', 'pt-BR', 'es', 'de', 'no', 'ru', 'nl', 'ja', 'cs', 'bg', 'sk']
42
+ available: ['en', 'fr', 'pl', 'pt', 'pt-BR', 'es', 'de', 'no', 'ru', 'nl', 'ja', 'cs', 'bg', 'sk']
43
43
 
44
44
  sidebar:
45
45
  disabled: true
@@ -28,6 +28,8 @@ class Locomotive.Views.CurrentSite.EditView extends Locomotive.Views.Shared.Form
28
28
 
29
29
  @enable_liquid_editing()
30
30
 
31
+ @enable_checkboxes()
32
+
31
33
  add_toggle_mode_for_locales: ->
32
34
  @$('#site_locales_input .list input[type=checkbox]').bind 'change', (event) ->
33
35
  el = $(event.target)
@@ -67,6 +69,9 @@ class Locomotive.Views.CurrentSite.EditView extends Locomotive.Views.Shared.Form
67
69
 
68
70
  @editor.on 'change', (editor, change) => @model.set(robots_txt: editor.getValue())
69
71
 
72
+ enable_checkboxes: ->
73
+ @_enable_checkbox('prefix_default_locale')
74
+
70
75
  save: (event) ->
71
76
  # if @model.includes_domain(window.location.host)
72
77
  if !@model.get('subdomain') || @model.includes_domain(window.location.host)
@@ -2,7 +2,7 @@
2
2
  @import "compass/css3/border-radius";
3
3
  @import "compass/css3/text-shadow";
4
4
  @import "compass/css3/box-shadow";
5
- @import "compass/css3/transform-legacy";
5
+ @import "compass/css3/transform";
6
6
 
7
7
  #menu {
8
8
  padding: 0;
@@ -5,7 +5,7 @@ module Locomotive
5
5
  load_and_authorize_resource class: Locomotive::ThemeAsset, through: :current_site
6
6
 
7
7
  def index
8
- respond_with(@theme_assets)
8
+ respond_with(@theme_assets.sort_by(&:local_path))
9
9
  end
10
10
 
11
11
  def show
@@ -10,26 +10,24 @@ module Locomotive
10
10
 
11
11
  before_filter :sanitize_entry_params, only: :create
12
12
 
13
+ self.responder = Locomotive::ActionController::PublicResponder
14
+
13
15
  respond_to :html, :json
14
16
 
15
17
  def create
16
18
  @entry = @content_type.entries.safe_create(params[:entry] || params[:content])
17
-
18
- respond_with @entry, {
19
- location: self.callback_url,
20
- responder: Locomotive::ActionController::PublicResponder
21
- }
19
+ respond_with @entry
22
20
  end
23
21
 
24
22
  protected
25
23
 
26
24
  def set_locale
27
- ::I18n.locale = params[:locale] || current_site.default_locale
25
+ ::I18n.locale = request.env['locomotive.locale'] || params[:locale] || current_site.default_locale
28
26
  ::Mongoid::Fields::I18n.locale = ::I18n.locale
29
27
  end
30
28
 
31
29
  def set_content_type
32
- @content_type = current_site.content_types.where(slug: params[:slug]).first
30
+ @content_type = current_site.content_types.where(slug: params[:content_type_slug] || params[:slug]).first
33
31
 
34
32
  # check if ability to receive public submissions
35
33
  unless @content_type.public_submission_enabled?
@@ -41,10 +39,6 @@ module Locomotive
41
39
  end
42
40
  end
43
41
 
44
- def callback_url
45
- (@entry.errors.empty? ? params[:success_callback] : params[:error_callback]) || main_app.root_path
46
- end
47
-
48
42
  def sanitize_entry_params
49
43
  entry_params = params[:entry] || params[:content] || {}
50
44
  entry_params.each do |key, value|
@@ -53,6 +47,7 @@ module Locomotive
53
47
  end
54
48
  end
55
49
 
50
+ # only verify csrf protection if it has been enable in the Locomotive config file
56
51
  def handle_unverified_request
57
52
  if Locomotive.config.csrf_protection
58
53
  reset_session
@@ -39,7 +39,7 @@ module Locomotive
39
39
  end
40
40
 
41
41
  def set_locale
42
- ::Mongoid::Fields::I18n.locale = params[:locale] || current_site.default_locale
42
+ ::Mongoid::Fields::I18n.locale = request.env['locomotive.locale'] || params[:locale] || current_site.default_locale
43
43
  ::I18n.locale = ::Mongoid::Fields::I18n.locale
44
44
 
45
45
  self.setup_i18n_fallbacks
@@ -14,7 +14,7 @@ module Locomotive
14
14
  protected
15
15
 
16
16
  def set_locale
17
- ::Mongoid::Fields::I18n.locale = params[:locale] || current_site.default_locale
17
+ ::Mongoid::Fields::I18n.locale = request.env['locomotive.locale'] || params[:locale] || current_site.default_locale
18
18
  ::I18n.locale = ::Mongoid::Fields::I18n.locale
19
19
  end
20
20
 
@@ -6,16 +6,17 @@ module Locomotive
6
6
  extend ActiveSupport::Concern
7
7
 
8
8
  included do
9
- after_save :sync_relationships_order_by
9
+ before_update :sync_relationships_order_by_for_has_many_fields
10
+ after_save :sync_relationships_order_by_for_belongs_to_fields
10
11
  end
11
12
 
12
13
  protected
13
14
 
14
- # If the user changes the order of the content type, we have to make
15
- # sure that other related content types tied to the current one through
16
- # a belongs_to / has_many relationship also gets updated.
15
+ # If an user changes the default order of a content type, we need to make sure
16
+ # that all the content types referencing this content type through a has_many
17
+ # relationship without UI enabled (this is very important) have the new order_by.
17
18
  #
18
- def sync_relationships_order_by
19
+ def sync_relationships_order_by_for_belongs_to_fields
19
20
  current_class_name = self.klass_with_custom_fields(:entries).name
20
21
 
21
22
  self.entries_custom_fields.where(type: 'belongs_to').each do |field|
@@ -37,6 +38,16 @@ module Locomotive
37
38
  end
38
39
  end
39
40
 
41
+ # If an user enables the UI option for a has_many relationship in the current content type,
42
+ # then all the content entries of that content type should order the entries of the has_many relationship
43
+ # from the "position_in_<field name>" value.
44
+ #
45
+ def sync_relationships_order_by_for_has_many_fields
46
+ self.entries_custom_fields.where(:type.in => %w(has_many), ui_enabled: true).each do |field|
47
+ field.order_by = nil # that will force the content entry to use the position_in_<inverse_of> field
48
+ end
49
+ end
50
+
40
51
  # Save the changes for the content type passed in parameter without forgetting
41
52
  # to bump the version.. It also updates the recipe for related entries.
42
53
  # That method does not call the Mongoid API but directly MongoDB.
@@ -19,9 +19,9 @@ module Locomotive
19
19
  before_destroy :delete_descendants
20
20
 
21
21
  ## indexes ##
22
- index position: 1
23
- index depth: 1, position: 1
24
22
  index site_id: 1, depth: 1, position: 1
23
+ index depth: 1, position: 1
24
+ index position: 1
25
25
 
26
26
  alias_method_chain :rearrange, :identity_map
27
27
  alias_method_chain :rearrange_children, :identity_map
@@ -46,6 +46,10 @@ module Locomotive
46
46
 
47
47
  module ClassMethods
48
48
 
49
+ def order_by_depth_and_position
50
+ order_by(:depth.asc, :position.asc)
51
+ end
52
+
49
53
  # Returns the tree of pages from the site with the most minimal amount of queries.
50
54
  # This method should only be used for read-only purpose since
51
55
  # the mongodb returns the minimal set of required attributes to build
@@ -56,7 +60,7 @@ module Locomotive
56
60
  # @return [ Array ] The first array of pages (depth = 0)
57
61
  #
58
62
  def quick_tree(site, minimal_attributes = true)
59
- pages = (minimal_attributes ? site.pages.unscoped.minimal_attributes : site.pages.unscoped).order_by(:depth.asc, :position.asc).to_a
63
+ pages = (minimal_attributes ? site.pages.unscoped.minimal_attributes : site.pages.unscoped).order_by_depth_and_position.to_a
60
64
 
61
65
  tmp = []
62
66
 
@@ -9,6 +9,7 @@ module Locomotive
9
9
 
10
10
  ## fields ##
11
11
  field :locales, type: ::RawArray, default: []
12
+ field :prefix_default_locale, type: ::Boolean, default: false
12
13
 
13
14
  ## validations ##
14
15
  validate :can_not_remove_default_locale
@@ -19,6 +20,10 @@ module Locomotive
19
20
 
20
21
  end
21
22
 
23
+ def prefix_default_locale?
24
+ self.prefix_default_locale
25
+ end
26
+
22
27
  # Tell if the site serves other locales than the default one.
23
28
  #
24
29
  # @return [ Boolean ] True if the number of locales is greater than 1
@@ -47,15 +52,9 @@ module Locomotive
47
52
  return nil if page.fullpath_translations.blank?
48
53
 
49
54
  locale = (locale || I18n.locale).to_s
50
- fullpath = page.fullpath_translations[locale] || page.fullpath_translations[self.default_locale]
51
-
52
- if locale == self.default_locale.to_s # no need to specify the locale
53
- page.index? ? '' : fullpath
54
- elsif page.index? # avoid /en/index or /fr/index, prefer /en or /fr instead
55
- locale
56
- else
57
- File.join(locale, fullpath)
58
- end
55
+ fullpath = page.index? ? nil : (page.fullpath_translations[locale] || page.fullpath_translations[self.default_locale])
56
+ locale_prefix = is_default_locale?(locale) && !prefix_default_locale ? nil : locale
57
+ [locale_prefix, fullpath].compact.join '/'
59
58
  end
60
59
 
61
60
  def locales=(array)
@@ -66,6 +65,10 @@ module Locomotive
66
65
  self.locales.first || Locomotive.config.site_locales.first
67
66
  end
68
67
 
68
+ def is_default_locale?(locale)
69
+ locale == default_locale.to_s
70
+ end
71
+
69
72
  def default_locale_was
70
73
  self.locales_was.try(:first) || Locomotive.config.site_locales.first
71
74
  end
@@ -41,6 +41,16 @@ module Locomotive
41
41
  Page.quick_tree(self)
42
42
  end
43
43
 
44
+ # Get all the pages in the right order: depth and position, both ASC.
45
+ #
46
+ # @param [ Hash ] conditions Extra conditions passed to the Mongoid criteria
47
+ #
48
+ # @return [ Criteria ] a Mongoid criteria
49
+ #
50
+ def ordered_pages(conditions = {})
51
+ self.pages.unscoped.where(conditions || {}).order_by_depth_and_position
52
+ end
53
+
44
54
  def fetch_page(path, logged_in)
45
55
  Locomotive::Page.fetch_page_from_path self, path, logged_in
46
56
  end
@@ -10,6 +10,7 @@
10
10
  = f.inputs name: :information do
11
11
  = f.input :name, wrapper_html: { style: 'display: none' }
12
12
  = f.input :locales, as: '::Locomotive::Locales', collection: ordered_current_site_locales, input_html: { class: 'locales' }
13
+ = f.input :prefix_default_locale, as: :'Locomotive::Toggle', input_html: { class: 'simple-toggle' }
13
14
  = f.input :timezone_name, as: :select, include_blank: false, collection: options_for_site_timezones
14
15
 
15
16
  - if can?(:point, Locomotive::Site)
@@ -14,6 +14,7 @@ cs:
14
14
  de: Němčina
15
15
  fr: Francouzština
16
16
  pl: Polština
17
+ pt: Portugalština
17
18
  pt-BR: "Brazilská portugalština"
18
19
  it: Italština
19
20
  nl: Holandština
@@ -26,6 +27,7 @@ cs:
26
27
  cs: Čeština
27
28
  sk: Slovenština
28
29
  sr: Serbian
30
+ bg: Bulgarian
29
31
 
30
32
  messages:
31
33
  confirm: Jste si jistý?
@@ -15,6 +15,7 @@ de:
15
15
  de: Deutsch
16
16
  fr: Französisch
17
17
  pl: Polnisch
18
+ pt: Portugiesisch
18
19
  pt-BR: "Bras. Portugiesisch"
19
20
  it: Italienisch
20
21
  nl: Niederländisch
@@ -73,7 +74,7 @@ de:
73
74
  send: Senden
74
75
  disable_with: "Transfer..."
75
76
  footer:
76
- who_is_behind: "LocomitveCMS - entwickelt von %{development} und entworfen von <a href=\"http://www.sachagreif.com\">Sacha Greif</a> &mdash; <small>version</small> %{version}"
77
+ who_is_behind: "LocomotiveCMS - entwickelt von %{development} und entworfen von <a href=\"http://www.sachagreif.com\">Sacha Greif</a> &mdash; <small>version</small> %{version}"
77
78
 
78
79
  notifications:
79
80
  new_content_entry:
@@ -337,4 +338,4 @@ de:
337
338
  buttons:
338
339
  back: "Zurück zur Administration"
339
340
  confirm: Bestätigen
340
- cancel: Abbrechen
341
+ cancel: Abbrechen
@@ -14,6 +14,7 @@ en:
14
14
  de: German
15
15
  fr: French
16
16
  pl: Polish
17
+ pt: Portuguese
17
18
  pt-BR: "Brazilian Portuguese"
18
19
  it: Italian
19
20
  nl: Dutch
@@ -20,6 +20,7 @@ es:
20
20
  pl: Polaco
21
21
  nl: Holandés
22
22
  et: Estonio
23
+ pt: Portugués
23
24
  pt-BR: "Portugués brasileño"
24
25
  nb: Noruego
25
26
  ja: Japonés
@@ -39,7 +40,7 @@ es:
39
40
 
40
41
  messages:
41
42
  confirm: Por favor confirme
42
- sending_form: "locomotive.messages.sending_form"
43
+ sending_form: El formulario está siendo enviado
43
44
 
44
45
  shared:
45
46
  header:
@@ -14,6 +14,7 @@ et:
14
14
  de: Saksa
15
15
  fr: Prantsuse
16
16
  pl: Poola
17
+ pt: Portugali
17
18
  pt-BR: "Brasiilia Portugali"
18
19
  it: Itaalia
19
20
  nl: Hollandi
@@ -15,7 +15,8 @@ fr:
15
15
  de: Allemand
16
16
  fr: Français
17
17
  pl: Polonais
18
- pt-BR: "Portugais"
18
+ pt: "Portugais"
19
+ pt-BR: "Brésilien Portugais"
19
20
  it: "Italien"
20
21
  nl: "Hollandais"
21
22
  nb: "Norvégien"
@@ -5,6 +5,7 @@ it:
5
5
  de: Tedesco
6
6
  fr: Francese
7
7
  pl: Polacco
8
+ pt: Portoghese
8
9
  pt-BR: "Portoghese Brasiliano"
9
10
  it: Italiano
10
11
  nl: Olandese
@@ -17,6 +18,7 @@ it:
17
18
  bg: Bulgaro
18
19
  sk: Slovacco
19
20
  sr: Serbe
21
+ zh-CN: "Chiński"
20
22
 
21
23
  buttons:
22
24
  login: Entra
@@ -46,6 +48,7 @@ it:
46
48
  account: Mio account
47
49
  site: Sito
48
50
  theme_assets: Files del tema
51
+ translations: Traduzioni
49
52
  footer:
50
53
  who_is_behind: "Servizio sviluppato da %{development} e desig di <a href=\"http://www.sachagreif.com\">Sacha Greif</a>"
51
54
  form_actions:
@@ -86,6 +89,11 @@ it:
86
89
  index:
87
90
  is_required: è richiesto
88
91
  default_label: Nome campo
92
+ form:
93
+ required: Obbligatorio
94
+ default_label: Nome campo
95
+ select_options:
96
+ ask_name: "Inserisci il label della option"
89
97
 
90
98
  sessions:
91
99
  new:
@@ -300,3 +308,18 @@ it:
300
308
  explanations: "Questo è l'ultimo passo dell'installazione. Puoi caricare un tema come file zip. Noi abbiao dei temi gratuiti <a href=\"http://www.locomotivecms.com/support/themes\">qui</a>."
301
309
  back_to_default_template: "Invece clicca <a href='#'>qui</a> per selezionare il modello di sito predefinito"
302
310
  next: Crea sito
311
+
312
+ public:
313
+ pages:
314
+ show_toolbar:
315
+ statuses:
316
+ loading: "Loading...."
317
+ disabled: "Inline Editor disabilitato"
318
+ labels:
319
+ save_changes: "Salva modifiche: "
320
+ editing_mode: "Modalità di modifica: "
321
+ lang: "Lingua: "
322
+ buttons:
323
+ back: "Ritorna all'amministrazione"
324
+ confirm: Conferma
325
+ cancel: Annulla