Ability to give a statement
@@ -11,6 +11,18 @@ gem 'coffee-rails', '~> 4.1.0'
|
|||||||
# See https://github.com/rails/execjs#readme for more supported runtimes
|
# See https://github.com/rails/execjs#readme for more supported runtimes
|
||||||
# gem 'therubyracer', platforms: :ruby
|
# gem 'therubyracer', platforms: :ruby
|
||||||
|
|
||||||
|
# Integrate Paperclip into Mongoid.
|
||||||
|
gem "mongoid-paperclip"
|
||||||
|
|
||||||
|
# To extend paperclip with locales
|
||||||
|
gem 'paperclip-i18n'
|
||||||
|
|
||||||
|
# Amazon's S3 file hosting service
|
||||||
|
gem 'aws-sdk'
|
||||||
|
|
||||||
|
# A fixtures replacement
|
||||||
|
gem 'factory_girl'
|
||||||
|
|
||||||
# Use jquery as the JavaScript library
|
# Use jquery as the JavaScript library
|
||||||
gem 'jquery-rails'
|
gem 'jquery-rails'
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,14 @@ GEM
|
|||||||
arel (6.0.4)
|
arel (6.0.4)
|
||||||
autoprefixer-rails (6.7.7.1)
|
autoprefixer-rails (6.7.7.1)
|
||||||
execjs
|
execjs
|
||||||
|
aws-sdk (2.9.7)
|
||||||
|
aws-sdk-resources (= 2.9.7)
|
||||||
|
aws-sdk-core (2.9.7)
|
||||||
|
aws-sigv4 (~> 1.0)
|
||||||
|
jmespath (~> 1.0)
|
||||||
|
aws-sdk-resources (2.9.7)
|
||||||
|
aws-sdk-core (= 2.9.7)
|
||||||
|
aws-sigv4 (1.0.0)
|
||||||
bcrypt (3.1.11)
|
bcrypt (3.1.11)
|
||||||
benchmark-ips (2.7.2)
|
benchmark-ips (2.7.2)
|
||||||
binding_of_caller (0.7.2)
|
binding_of_caller (0.7.2)
|
||||||
@@ -59,6 +67,9 @@ GEM
|
|||||||
rack (>= 1.0.0)
|
rack (>= 1.0.0)
|
||||||
rack-test (>= 0.5.4)
|
rack-test (>= 0.5.4)
|
||||||
xpath (~> 2.0)
|
xpath (~> 2.0)
|
||||||
|
climate_control (0.1.0)
|
||||||
|
cocaine (0.5.8)
|
||||||
|
climate_control (>= 0.0.3, < 1.0)
|
||||||
coderay (1.1.1)
|
coderay (1.1.1)
|
||||||
coffee-rails (4.1.1)
|
coffee-rails (4.1.1)
|
||||||
coffee-script (>= 2.2.0)
|
coffee-script (>= 2.2.0)
|
||||||
@@ -94,6 +105,8 @@ GEM
|
|||||||
erubis (2.7.0)
|
erubis (2.7.0)
|
||||||
excon (0.55.0)
|
excon (0.55.0)
|
||||||
execjs (2.7.0)
|
execjs (2.7.0)
|
||||||
|
factory_girl (4.8.0)
|
||||||
|
activesupport (>= 3.0.0)
|
||||||
faker (1.7.2)
|
faker (1.7.2)
|
||||||
i18n (~> 0.5)
|
i18n (~> 0.5)
|
||||||
font-awesome-rails (4.7.0.1)
|
font-awesome-rails (4.7.0.1)
|
||||||
@@ -110,6 +123,7 @@ GEM
|
|||||||
jbuilder (2.6.3)
|
jbuilder (2.6.3)
|
||||||
activesupport (>= 3.0.0, < 5.2)
|
activesupport (>= 3.0.0, < 5.2)
|
||||||
multi_json (~> 1.2)
|
multi_json (~> 1.2)
|
||||||
|
jmespath (1.3.1)
|
||||||
jquery-rails (4.3.1)
|
jquery-rails (4.3.1)
|
||||||
rails-dom-testing (>= 1, < 3)
|
rails-dom-testing (>= 1, < 3)
|
||||||
railties (>= 4.2.0)
|
railties (>= 4.2.0)
|
||||||
@@ -139,6 +153,7 @@ GEM
|
|||||||
mime-types (3.1)
|
mime-types (3.1)
|
||||||
mime-types-data (~> 3.2015)
|
mime-types-data (~> 3.2015)
|
||||||
mime-types-data (3.2016.0521)
|
mime-types-data (3.2016.0521)
|
||||||
|
mimemagic (0.3.2)
|
||||||
mini_portile2 (2.1.0)
|
mini_portile2 (2.1.0)
|
||||||
minitest (5.10.1)
|
minitest (5.10.1)
|
||||||
mongo (2.4.1)
|
mongo (2.4.1)
|
||||||
@@ -151,6 +166,9 @@ GEM
|
|||||||
mongoid-compatibility (0.4.1)
|
mongoid-compatibility (0.4.1)
|
||||||
activesupport
|
activesupport
|
||||||
mongoid (>= 2.0)
|
mongoid (>= 2.0)
|
||||||
|
mongoid-paperclip (0.0.11)
|
||||||
|
mongoid
|
||||||
|
paperclip (>= 2.3.6, != 4.3.0)
|
||||||
mongoid-rspec (3.0.0)
|
mongoid-rspec (3.0.0)
|
||||||
mongoid (~> 5.0)
|
mongoid (~> 5.0)
|
||||||
rake
|
rake
|
||||||
@@ -164,6 +182,13 @@ GEM
|
|||||||
mini_portile2 (~> 2.1.0)
|
mini_portile2 (~> 2.1.0)
|
||||||
origin (2.3.0)
|
origin (2.3.0)
|
||||||
orm_adapter (0.5.0)
|
orm_adapter (0.5.0)
|
||||||
|
paperclip (5.1.0)
|
||||||
|
activemodel (>= 4.2.0)
|
||||||
|
activesupport (>= 4.2.0)
|
||||||
|
cocaine (~> 0.5.5)
|
||||||
|
mime-types
|
||||||
|
mimemagic (~> 0.3.0)
|
||||||
|
paperclip-i18n (4.3.0)
|
||||||
pry (0.10.4)
|
pry (0.10.4)
|
||||||
coderay (~> 1.1.0)
|
coderay (~> 1.1.0)
|
||||||
method_source (~> 0.8.1)
|
method_source (~> 0.8.1)
|
||||||
@@ -312,6 +337,7 @@ PLATFORMS
|
|||||||
ruby
|
ruby
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
|
aws-sdk
|
||||||
bootstrap-sass (~> 3.3.5)
|
bootstrap-sass (~> 3.3.5)
|
||||||
byebug
|
byebug
|
||||||
capybara
|
capybara
|
||||||
@@ -320,6 +346,7 @@ DEPENDENCIES
|
|||||||
devise
|
devise
|
||||||
devise-i18n
|
devise-i18n
|
||||||
dotenv-rails
|
dotenv-rails
|
||||||
|
factory_girl
|
||||||
faker
|
faker
|
||||||
geocoder
|
geocoder
|
||||||
jbuilder (~> 2.0)
|
jbuilder (~> 2.0)
|
||||||
@@ -328,8 +355,10 @@ DEPENDENCIES
|
|||||||
kaminari-mongoid
|
kaminari-mongoid
|
||||||
mailchimp-api
|
mailchimp-api
|
||||||
mongoid (~> 5.0.0)
|
mongoid (~> 5.0.0)
|
||||||
|
mongoid-paperclip
|
||||||
mongoid-rspec (= 3.0.0)
|
mongoid-rspec (= 3.0.0)
|
||||||
mongoid_paranoia
|
mongoid_paranoia
|
||||||
|
paperclip-i18n
|
||||||
pry-rails
|
pry-rails
|
||||||
puma
|
puma
|
||||||
rails (~> 4.2)
|
rails (~> 4.2)
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
class PublicitiesController < ApplicationController
|
||||||
|
before_action :authenticate_supporter!
|
||||||
|
|
||||||
|
def new
|
||||||
|
@publicity = current_supporter.publicity || Publicity.new
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
@publicity = Publicity.new(publicity_params.merge(supporter: current_supporter, state: :pending))
|
||||||
|
flash['success'] = t('.success') if @publicity.valid?
|
||||||
|
return redirect_to(root_path) if @publicity.save
|
||||||
|
render :new
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
create
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
current_supporter.publicity&.destroy
|
||||||
|
redirect_to(root_path)
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def publicity_params
|
||||||
|
params.require(:publicity).permit(:organisation, :statement, :avatar)
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
class Publicity
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
include Mongoid::Paperclip
|
||||||
|
|
||||||
|
has_mongoid_attached_file :avatar,
|
||||||
|
path: ':attachment/:id/:style.:extension',
|
||||||
|
styles: {
|
||||||
|
original: ['1920x1680>', :jpg],
|
||||||
|
small: ['100x100#', :jpg],
|
||||||
|
medium: ['250x250', :jpg],
|
||||||
|
large: ['500x500>', :jpg]
|
||||||
|
},
|
||||||
|
convert_options: { all: '-background white -flatten +matte' }
|
||||||
|
|
||||||
|
embedded_in :supporter
|
||||||
|
|
||||||
|
field :state, type: String, default: 'pending' # Possible states: pending, approved
|
||||||
|
field :organisation, type: String
|
||||||
|
field :statement, type: String
|
||||||
|
|
||||||
|
validates :state, presence: true
|
||||||
|
validates :avatar, presence: true
|
||||||
|
validates :statement, presence: true
|
||||||
|
validates_attachment_content_type :avatar, content_type: /\Aimage/
|
||||||
|
end
|
||||||
@@ -1,5 +1,11 @@
|
|||||||
class Supporter
|
class Supporter
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
include Mongoid::Paranoia
|
||||||
|
include Geocoder::Model::Mongoid
|
||||||
|
|
||||||
|
COUNTER_START = 10_003
|
||||||
|
|
||||||
# Include default devise modules. Others available are:
|
# Include default devise modules. Others available are:
|
||||||
# :confirmable, :lockable, :timeoutable and :omniauthable
|
# :confirmable, :lockable, :timeoutable and :omniauthable
|
||||||
devise :database_authenticatable, :registerable,
|
devise :database_authenticatable, :registerable,
|
||||||
@@ -23,22 +29,6 @@ class Supporter
|
|||||||
field :current_sign_in_ip, type: String
|
field :current_sign_in_ip, type: String
|
||||||
field :last_sign_in_ip, type: String
|
field :last_sign_in_ip, type: String
|
||||||
|
|
||||||
## Confirmable
|
|
||||||
# field :confirmation_token, type: String
|
|
||||||
# field :confirmed_at, type: Time
|
|
||||||
# field :confirmation_sent_at, type: Time
|
|
||||||
# field :unconfirmed_email, type: String # Only if using reconfirmable
|
|
||||||
|
|
||||||
## Lockable
|
|
||||||
# field :failed_attempts, type: Integer, default: 0 # Only if lock strategy is :failed_attempts
|
|
||||||
# field :unlock_token, type: String # Only if unlock strategy is :email or :both
|
|
||||||
# field :locked_at, type: Time
|
|
||||||
include Mongoid::Timestamps
|
|
||||||
include Mongoid::Paranoia
|
|
||||||
include Geocoder::Model::Mongoid
|
|
||||||
|
|
||||||
COUNTER_START = 10_003
|
|
||||||
|
|
||||||
geocoded_by :address
|
geocoded_by :address
|
||||||
after_validation :geocode # auto-fetch coordinates
|
after_validation :geocode # auto-fetch coordinates
|
||||||
|
|
||||||
@@ -66,6 +56,8 @@ class Supporter
|
|||||||
validates :age_category, presence: true
|
validates :age_category, presence: true
|
||||||
validates :language, presence: true
|
validates :language, presence: true
|
||||||
|
|
||||||
|
embeds_one :publicity
|
||||||
|
|
||||||
def self.counter
|
def self.counter
|
||||||
actual = count.to_i
|
actual = count.to_i
|
||||||
actual > COUNTER_START ? actual : COUNTER_START
|
actual > COUNTER_START ? actual : COUNTER_START
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
h1= title t('.title')
|
||||||
|
= simple_form_for(@publicity, url: publicity_path) do |form|
|
||||||
|
= form.input :organisation, required: false, label: t('.organisation'), placeholder: t('.organisation_placeholder')
|
||||||
|
= form.input :statement, as: :text, required: false
|
||||||
|
= form.input :avatar, as: :file, label: t('.avatar'), required: false
|
||||||
|
= form.submit t('.save'), class: 'btn btn-primary'
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
= render 'form'
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
- if current_supporter.publicity
|
||||||
|
.panel.panel-default
|
||||||
|
.panel-heading
|
||||||
|
h2.panel-title
|
||||||
|
= t '.title'
|
||||||
|
.panel-body
|
||||||
|
dl.dl-horizontal
|
||||||
|
dt = Publicity.human_attribute_name(:status)
|
||||||
|
- if current_supporter.publicity.state == 'pending'
|
||||||
|
dd.text-danger = t('.pending')
|
||||||
|
- if current_supporter.publicity.state == 'approved'
|
||||||
|
dd.text-success = t('.pending')
|
||||||
|
- unless current_supporter.publicity.organisation.blank?
|
||||||
|
dt = Publicity.human_attribute_name(:organisation)
|
||||||
|
dd = current_supporter.publicity.organisation
|
||||||
|
dt = Publicity.human_attribute_name(:statement)
|
||||||
|
dd = current_supporter.publicity.statement
|
||||||
|
dt = Publicity.human_attribute_name(:avatar)
|
||||||
|
dd = image_tag current_supporter.publicity.avatar.url(:small), alt: ''
|
||||||
|
|
||||||
|
.pull-right
|
||||||
|
= link_to t(".renew"), new_publicity_path
|
||||||
|
br
|
||||||
|
= link_to t(".delete"), publicity_path, data: { confirm: t("shared.are_you_sure") }, method: :delete, class: 'text-danger'
|
||||||
|
|
||||||
|
- else
|
||||||
|
.alert.alert-notice
|
||||||
|
= link_to t('.create_publicity'), new_publicity_path
|
||||||
@@ -29,7 +29,8 @@
|
|||||||
p
|
p
|
||||||
= link_to t('.edit'), edit_supporter_registration_path(), class: 'pull-right'
|
= link_to t('.edit'), edit_supporter_registration_path(), class: 'pull-right'
|
||||||
|
|
||||||
|
= render 'publicity'
|
||||||
|
|
||||||
aside.col-md-5.col-xs-12
|
aside.col-md-5.col-xs-12
|
||||||
= render 'right_side'
|
= render 'right_side'
|
||||||
|
|
||||||
|
|||||||
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
@@ -31,7 +31,7 @@ module Ch420
|
|||||||
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
||||||
config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
||||||
config.i18n.default_locale = :de
|
config.i18n.default_locale = :de
|
||||||
config.i18n.available_locales = [:de, :it, :fr]
|
config.i18n.available_locales = [:de, :it, :fr, :en]
|
||||||
|
|
||||||
config.generators do |g|
|
config.generators do |g|
|
||||||
g.orm :mongoid
|
g.orm :mongoid
|
||||||
|
|||||||
@@ -41,4 +41,16 @@ Rails.application.configure do
|
|||||||
|
|
||||||
config.action_mailer.delivery_method = :smtp
|
config.action_mailer.delivery_method = :smtp
|
||||||
config.action_mailer.smtp_settings = { address: 'localhost', port: 1025 }
|
config.action_mailer.smtp_settings = { address: 'localhost', port: 1025 }
|
||||||
|
|
||||||
|
config.paperclip_defaults = {
|
||||||
|
storage: :s3,
|
||||||
|
s3_protocol: :https,
|
||||||
|
s3_region: ENV["S3_REGION"],
|
||||||
|
s3_host_name: ENV["S3_HOST_NAME"],
|
||||||
|
s3_credentials: {
|
||||||
|
bucket: "cannabis-initiative-development",
|
||||||
|
access_key_id: ENV["S3_ACCESS_KEY"],
|
||||||
|
secret_access_key: ENV["S3_ACCESS_SECRET"]
|
||||||
|
}
|
||||||
|
}
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -87,4 +87,16 @@ Rails.application.configure do
|
|||||||
authentication: :plain,
|
authentication: :plain,
|
||||||
enable_starttls_auto: true
|
enable_starttls_auto: true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
config.paperclip_defaults = {
|
||||||
|
storage: :s3,
|
||||||
|
s3_protocol: :https,
|
||||||
|
s3_region: ENV["S3_REGION"],
|
||||||
|
s3_host_name: ENV["S3_HOST_NAME"],
|
||||||
|
s3_credentials: {
|
||||||
|
bucket: "cannabis-initiative-production",
|
||||||
|
access_key_id: ENV["S3_ACCESS_KEY"],
|
||||||
|
secret_access_key: ENV["S3_ACCESS_SECRET"]
|
||||||
|
}
|
||||||
|
}
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
Slim::Engine.set_default_options pretty: true
|
Slim::Engine.set_options pretty: true
|
||||||
@@ -15,6 +15,8 @@ de:
|
|||||||
faq: Fragen und Antworten
|
faq: Fragen und Antworten
|
||||||
sponsoring: Sponsoren & Spenden
|
sponsoring: Sponsoren & Spenden
|
||||||
numbers: Zahlen
|
numbers: Zahlen
|
||||||
|
|
||||||
|
are_you_sure: Bist du sicher?
|
||||||
|
|
||||||
counter:
|
counter:
|
||||||
supporters: "Unterstützer:"
|
supporters: "Unterstützer:"
|
||||||
@@ -57,6 +59,14 @@ de:
|
|||||||
city: Hinterpfupfikon
|
city: Hinterpfupfikon
|
||||||
zip: "4200"
|
zip: "4200"
|
||||||
email: hans.muster@hanflegal.ch
|
email: hans.muster@hanflegal.ch
|
||||||
|
|
||||||
|
publicity:
|
||||||
|
title: Mein Statement
|
||||||
|
renew: Statement neu einreichen
|
||||||
|
delete: Statement löschen
|
||||||
|
pending: Die Veröffentlichung wurde noch nicht genehmigt
|
||||||
|
approved: Das statement wurde Veröffentlicht
|
||||||
|
create_publicity: Deine Meinung zählt, darum bitten wir dir hier die Möglichkeit öffentlich deine Meinung zur Cannabis-Initiative kundzutun. Gib ein Starkes Statement ab und zeig dein Gesicht! Meine Unterstützung öffentlich kundtun ...
|
||||||
|
|
||||||
create:
|
create:
|
||||||
timeout: Ihre Eingabe war zu schnell.
|
timeout: Ihre Eingabe war zu schnell.
|
||||||
@@ -66,6 +76,19 @@ de:
|
|||||||
edit: Meine Daten bearbeiten...
|
edit: Meine Daten bearbeiten...
|
||||||
my_data: Meine Daten
|
my_data: Meine Daten
|
||||||
|
|
||||||
|
publicities:
|
||||||
|
form:
|
||||||
|
title: Meine Meinung zur Cannabis-Initiative veröffentlichen
|
||||||
|
organisation: Organisation (Optional)
|
||||||
|
organisation_placeholder: Parteizugehörigkeit, Verband oder sonstige Organisationen
|
||||||
|
avatar: Lade ein Bild von dir Hoch
|
||||||
|
save: Zur Überprüfung einsenden
|
||||||
|
|
||||||
|
create:
|
||||||
|
success: Besten Dank die Daten werden überprüft.
|
||||||
|
update:
|
||||||
|
success: Besten Dank die Daten werden überprüft.
|
||||||
|
|
||||||
pages:
|
pages:
|
||||||
show:
|
show:
|
||||||
not_found: Die Seite konnte nicht gefunden werden.
|
not_found: Die Seite konnte nicht gefunden werden.
|
||||||
@@ -101,3 +124,8 @@ de:
|
|||||||
unsubscribed: Kein Newsletter
|
unsubscribed: Kein Newsletter
|
||||||
password_confirmation: Passwort bestätigen
|
password_confirmation: Passwort bestätigen
|
||||||
current_password: Aktuelles Passwort
|
current_password: Aktuelles Passwort
|
||||||
|
publicity:
|
||||||
|
status: Status
|
||||||
|
organisation: Organisation
|
||||||
|
statement: Statement
|
||||||
|
avatar: Bild
|
||||||
@@ -20,7 +20,9 @@ fr:
|
|||||||
faq: Questions et réponses (en allemand)
|
faq: Questions et réponses (en allemand)
|
||||||
sponsoring: Donation et Sponsors (en allemand)
|
sponsoring: Donation et Sponsors (en allemand)
|
||||||
numbers: Chiffres (en allemand)
|
numbers: Chiffres (en allemand)
|
||||||
|
|
||||||
|
are_you_sure: Tu es sûre?
|
||||||
|
|
||||||
welcome_email:
|
welcome_email:
|
||||||
subject: Merci beaucoup pour ton soutien!
|
subject: Merci beaucoup pour ton soutien!
|
||||||
|
|
||||||
@@ -40,7 +42,7 @@ fr:
|
|||||||
de: Deutsch
|
de: Deutsch
|
||||||
fr: Français
|
fr: Français
|
||||||
it: Italiano
|
it: Italiano
|
||||||
|
|
||||||
supporters:
|
supporters:
|
||||||
form:
|
form:
|
||||||
form: Formulaire
|
form: Formulaire
|
||||||
@@ -54,7 +56,14 @@ fr:
|
|||||||
city: Hinterpfupfikon
|
city: Hinterpfupfikon
|
||||||
zip: "4200"
|
zip: "4200"
|
||||||
email: hans.muster@hanflegal.ch
|
email: hans.muster@hanflegal.ch
|
||||||
|
publicity:
|
||||||
|
title: Ma déclaration
|
||||||
|
renew: resoumettre déclaration
|
||||||
|
delete: supprimer déclaration
|
||||||
|
pending: La publication n'a pas été approuvé
|
||||||
|
approved: La déclaration a été publiée
|
||||||
|
create_publicity: Votre opinion compte, nous vous demandons ici d'exprimer publiquement votre avis sur initiative de cannabis possible. Rendre public mon soutien ...
|
||||||
|
|
||||||
create:
|
create:
|
||||||
timeout: Ihre Eingabe war zu schnell.
|
timeout: Ihre Eingabe war zu schnell.
|
||||||
|
|
||||||
@@ -62,6 +71,19 @@ fr:
|
|||||||
title: Salut %{name}
|
title: Salut %{name}
|
||||||
edit: Modifier mes données ...
|
edit: Modifier mes données ...
|
||||||
my_data: Mes données
|
my_data: Mes données
|
||||||
|
|
||||||
|
publicities:
|
||||||
|
form:
|
||||||
|
title: Donner mon avis sur l'initiative de cannabis
|
||||||
|
organisation: Organisation (Facultatif)
|
||||||
|
organisation_placeholder: Affiliation parti, une association ou d'autres organisations
|
||||||
|
avatar: Ajouter une photo
|
||||||
|
save: Envoyé pour examen
|
||||||
|
|
||||||
|
create:
|
||||||
|
success: Merci, les données sont vérifiées.
|
||||||
|
update:
|
||||||
|
success: Merci, les données sont vérifiées.
|
||||||
|
|
||||||
pages:
|
pages:
|
||||||
show:
|
show:
|
||||||
@@ -98,3 +120,9 @@ fr:
|
|||||||
unsubscribed: pas de newslettre
|
unsubscribed: pas de newslettre
|
||||||
password_confirmation: confirmer le mot de passe
|
password_confirmation: confirmer le mot de passe
|
||||||
current_password: Mot de passe actuel
|
current_password: Mot de passe actuel
|
||||||
|
|
||||||
|
publicity:
|
||||||
|
status: Statu
|
||||||
|
organisation: Organisation
|
||||||
|
statement: Déclaration
|
||||||
|
avatar: Photo
|
||||||
@@ -21,7 +21,8 @@ it:
|
|||||||
counter:
|
counter:
|
||||||
supporters: "Sostenitore:"
|
supporters: "Sostenitore:"
|
||||||
amount_of_supporters: Al momento abbiamo %{amount} sostenitori.
|
amount_of_supporters: Al momento abbiamo %{amount} sostenitori.
|
||||||
|
|
||||||
|
are_you_sure: Sei sicuro?
|
||||||
|
|
||||||
welcome_email:
|
welcome_email:
|
||||||
subject: Grazie mille per il tuo sostegno!
|
subject: Grazie mille per il tuo sostegno!
|
||||||
@@ -57,7 +58,15 @@ it:
|
|||||||
city: Hinterpfupfikon
|
city: Hinterpfupfikon
|
||||||
zip: "4200"
|
zip: "4200"
|
||||||
email: hans.muster@hanflegal.ch
|
email: hans.muster@hanflegal.ch
|
||||||
|
|
||||||
|
publicity:
|
||||||
|
title: La mia dichiarazione
|
||||||
|
renew: Ripresentare Statement
|
||||||
|
delete: Eliminare la dichiarazione
|
||||||
|
pending: La pubblicazione non è stato approvato
|
||||||
|
approved: La dichiarazione è stata rilasciata
|
||||||
|
create_publicity: La tua opinione conta, quindi vi chiediamo qui pubblicamente esprimere la tua opinione su iniziativa di cannabis possibile. Girare in una dichiarazione forte e mostrare il tuo volto! Il mio supporto rendere pubblico ...
|
||||||
|
|
||||||
create:
|
create:
|
||||||
timeout: Ihre Eingabe war zu schnell.
|
timeout: Ihre Eingabe war zu schnell.
|
||||||
|
|
||||||
@@ -65,6 +74,19 @@ it:
|
|||||||
title: Ciao %{name}
|
title: Ciao %{name}
|
||||||
edit: Modifica i miei dati ...
|
edit: Modifica i miei dati ...
|
||||||
my_data: Miei dati
|
my_data: Miei dati
|
||||||
|
|
||||||
|
publicities:
|
||||||
|
form:
|
||||||
|
title: Lasciare un commento sull'iniziativa cannabis
|
||||||
|
organisation: Organizzazione (opzionale)
|
||||||
|
organisation_placeholder: Partito di appartenenza, di associazione o di altre organizzazioni
|
||||||
|
avatar: Carica una foto
|
||||||
|
save: Inviato per la revisione
|
||||||
|
|
||||||
|
create:
|
||||||
|
success: Grazie, i dati vengono controllati.
|
||||||
|
update:
|
||||||
|
success: Grazie, i dati vengono controllati.
|
||||||
|
|
||||||
pages:
|
pages:
|
||||||
thanks:
|
thanks:
|
||||||
@@ -99,3 +121,8 @@ it:
|
|||||||
unsubscribed: No Newsletter
|
unsubscribed: No Newsletter
|
||||||
password_confirmation: conferma password
|
password_confirmation: conferma password
|
||||||
current_password: Password corrente
|
current_password: Password corrente
|
||||||
|
publicity:
|
||||||
|
status: Statu
|
||||||
|
organisation: Organizzazione
|
||||||
|
statement: Dichiarazione
|
||||||
|
avatar: Foto
|
||||||
@@ -0,0 +1,472 @@
|
|||||||
|
de:
|
||||||
|
mongoid:
|
||||||
|
errors:
|
||||||
|
messages:
|
||||||
|
blank_in_locale:
|
||||||
|
"can't be blank in %{location}"
|
||||||
|
message_title: "message"
|
||||||
|
summary_title: "summary"
|
||||||
|
resolution_title: "resolution"
|
||||||
|
ambiguous_relationship:
|
||||||
|
message: "Ambiguous relations %{candidates} defined on %{klass}."
|
||||||
|
summary:
|
||||||
|
"When Mongoid attempts to set an inverse document of a relation
|
||||||
|
in memory, it needs to know which relation it belongs to. When
|
||||||
|
setting %{name}, Mongoid looked on the class %{inverse}
|
||||||
|
for a matching relation, but multiples were found that could
|
||||||
|
potentially match: %{candidates}."
|
||||||
|
resolution: "On the %{name} relation on %{inverse} you must add an
|
||||||
|
:inverse_of option to specify the exact relationship on %{klass}
|
||||||
|
that is the opposite of %{name}."
|
||||||
|
callbacks:
|
||||||
|
message: "Calling %{method} on %{klass} resulted in a false return
|
||||||
|
from a callback."
|
||||||
|
summary: "If a before callback returns false when using Document.create!,
|
||||||
|
Document#save!, or Document#update_attributes! this error will get raised
|
||||||
|
since the document did not actually get saved."
|
||||||
|
resolution: "Double check all before callbacks to make sure they are
|
||||||
|
not unintentionally returning false."
|
||||||
|
calling_document_find_with_nil_is_invalid:
|
||||||
|
message: "Calling Document.find with nil is invalid."
|
||||||
|
summary: "Document.find expects the parameters to be 1 or more ids, and
|
||||||
|
will return a single document if 1 id is provided, otherwise an array
|
||||||
|
of documents if multiple ids are provided."
|
||||||
|
resolution: "Most likely this is caused by passing parameters directly
|
||||||
|
through to the find, and the parameter either is not present or the
|
||||||
|
key from which it is accessed is incorrect."
|
||||||
|
document_not_destroyed:
|
||||||
|
message: "%{klass} with id %{id} was not destroyed."
|
||||||
|
summary: "When calling %{klass}#destroy! and a callback halts the destroy
|
||||||
|
callback chain by returning a false value, the deletion will not
|
||||||
|
actually occur."
|
||||||
|
resolution: "Check the before/after destroy callbacks to ensure that the
|
||||||
|
return values are truthy for the chain to continue."
|
||||||
|
document_not_found:
|
||||||
|
message: "Document(s) not found for class %{klass} with id(s) %{missing}."
|
||||||
|
summary: "When calling %{klass}.find with an id or array of ids, each
|
||||||
|
parameter must match a document in the database or this error will be
|
||||||
|
raised. The search was for the id(s): %{searched} (%{total} total)
|
||||||
|
and the following ids were not found: %{missing}."
|
||||||
|
resolution: "Search for an id that is in the database or set
|
||||||
|
the Mongoid.raise_not_found_error configuration option to false,
|
||||||
|
which will cause a nil to be returned instead of raising this error when
|
||||||
|
searching for a single id, or only the matched documents when searching
|
||||||
|
for multiples."
|
||||||
|
document_with_attributes_not_found:
|
||||||
|
message: "Document not found for class %{klass} with attributes %{attributes}."
|
||||||
|
summary: "When calling %{klass}.find_by with a hash of attributes, all
|
||||||
|
attributes provided must match a document in the database or this error
|
||||||
|
will be raised."
|
||||||
|
resolution: "Search for attributes that are in the database or set
|
||||||
|
the Mongoid.raise_not_found_error configuration option to false,
|
||||||
|
which will cause a nil to be returned instead of raising this error."
|
||||||
|
eager_load:
|
||||||
|
message: "Eager loading :%{name} is not supported since it is a
|
||||||
|
polymorphic belongs_to relation."
|
||||||
|
summary: "Mongoid cannot currently determine the classes it needs to
|
||||||
|
eager load when the relation is polymorphic. The parents reside in
|
||||||
|
different collections so a simple id lookup is not sufficient enough."
|
||||||
|
resolution: "Don't attempt to perform this action and have patience,
|
||||||
|
maybe this will be supported in the future."
|
||||||
|
invalid_collection:
|
||||||
|
message: "Access to the collection for %{klass} is not allowed."
|
||||||
|
summary: "%{klass}.collection was called, and %{klass} is an embedded
|
||||||
|
document - it resides within the collection of the root document of
|
||||||
|
the hierarchy."
|
||||||
|
resolution: "For access to the collection that the embedded document is
|
||||||
|
in, use %{klass}#_root.collection, or do not attempt to persist an
|
||||||
|
embedded document without a parent set."
|
||||||
|
invalid_config_option:
|
||||||
|
message: "Invalid configuration option: %{name}."
|
||||||
|
summary: "A invalid configuration option was provided in your
|
||||||
|
mongoid.yml, or a typo is potentially present. The valid configuration
|
||||||
|
options are: %{options}."
|
||||||
|
resolution: "Remove the invalid option or fix the typo. If you were
|
||||||
|
expecting the option to be there, please consult the following page
|
||||||
|
with repect to Mongoid's configuration:\n\n
|
||||||
|
\_\_http://mongoid.org/en/mongoid/docs/installation.html"
|
||||||
|
invalid_field:
|
||||||
|
message: "Defining a field named '%{name}' is not allowed."
|
||||||
|
summary: "Defining this field would override the method '%{name}',
|
||||||
|
which would cause issues with expectations around the original
|
||||||
|
method and cause extremely hard to debug issues. The original
|
||||||
|
method was defined in:\n
|
||||||
|
\_\_Object: %{origin}\n
|
||||||
|
\_\_File: %{file}\n
|
||||||
|
\_\_Line: %{line}"
|
||||||
|
resolution: "Use Mongoid.destructive_fields to see what names are not
|
||||||
|
allowed, and don't use these names. These include names that also
|
||||||
|
conflict with core Ruby methods on Object, Module, Enumerable, or
|
||||||
|
included gems that inject methods into these or Mongoid internals."
|
||||||
|
invalid_field_option:
|
||||||
|
message: "Invalid option :%{option} provided for field :%{name}."
|
||||||
|
summary: "Mongoid requires that you only provide valid options on each
|
||||||
|
field definition in order to prevent unexpected behaviour later on."
|
||||||
|
resolution: "When defining the field :%{name} on '%{klass}', please provide
|
||||||
|
valid options for the field. These are currently: %{valid}. If you
|
||||||
|
meant to define a custom field option, please do so first like so:\n\n
|
||||||
|
\_\_Mongoid::Fields.option :%{option} do |model, field, value|\n
|
||||||
|
\_\_\_\_# Your logic here...\n
|
||||||
|
\_\_end\n
|
||||||
|
\_\_class %{klass}\n
|
||||||
|
\_\_\_\_include Mongoid::Document\n
|
||||||
|
\_\_\_\_field :%{name}, %{option}: true\n
|
||||||
|
\_\_end\n\n"
|
||||||
|
invalid_includes:
|
||||||
|
message: "Invalid includes directive: %{klass}.includes(%{args})"
|
||||||
|
summary: "Eager loading in Mongoid only supports providing arguments
|
||||||
|
to %{klass}.includes that are the names of relations on the %{klass}
|
||||||
|
model, and only supports one level of eager loading. (ie, eager loading
|
||||||
|
associations not on the %{klass} but one step away via another relation
|
||||||
|
is not allowed."
|
||||||
|
resolution: "Ensure that each parameter passed to %{klass}.includes is
|
||||||
|
a valid name of a relation on the %{klass} model. These are: %{relations}."
|
||||||
|
invalid_index:
|
||||||
|
message: "Invalid index specification on %{klass}: %{spec}, %{options}"
|
||||||
|
summary: "Indexes in Mongoid are defined as a hash of field name and
|
||||||
|
direction/2d pairs, with a hash for any additional options."
|
||||||
|
resolution: "Ensure that the index conforms to the correct syntax and
|
||||||
|
has the correct options.\n\n
|
||||||
|
Valid options are:\n
|
||||||
|
\_\_background: true|false\n
|
||||||
|
\_\_database: 'database_name'\n
|
||||||
|
\_\_drop_dups: true|false\n
|
||||||
|
\_\_name: 'index_name'\n
|
||||||
|
\_\_sparse: true|false\n
|
||||||
|
\_\_unique: true|false\n
|
||||||
|
\_\_min: 1\n
|
||||||
|
\_\_max: 1\n
|
||||||
|
\_\_bits: 26\n
|
||||||
|
\_\_bucket_size : 1\n
|
||||||
|
\_\_weights: { content: 1, title: 2 }\n
|
||||||
|
\_\_expire_after_seconds: number_of_seconds\n
|
||||||
|
Valid types are: 1, -1, '2d', '2dsphere', 'geoHaystack', 'text', 'hashed'\n\n
|
||||||
|
Example:\n
|
||||||
|
\_\_class Band\n
|
||||||
|
\_\_\_\_include Mongoid::Document\n
|
||||||
|
\_\_\_\_index({ name: 1, label: -1 }, { sparse: true })\n
|
||||||
|
\_\_\_\_index({ location: '2d' }, { background: true })\n
|
||||||
|
\_\_end\n\n"
|
||||||
|
invalid_options:
|
||||||
|
message: "Invalid option :%{invalid} provided to relation :%{name}."
|
||||||
|
summary: "Mongoid checks the options that are passed to the relation
|
||||||
|
macros to ensure that no ill side effects occur by letting something
|
||||||
|
slip by."
|
||||||
|
resolution: "Valid options are: %{valid}, make sure these are the ones
|
||||||
|
you are using."
|
||||||
|
invalid_path:
|
||||||
|
message: "Having a root path assigned for %{klass} is invalid."
|
||||||
|
summary: "Mongoid has two different path objects for determining
|
||||||
|
the location of a document in the database, Root and Embedded.
|
||||||
|
This error is raised when an embedded document somehow gets a
|
||||||
|
root path assigned."
|
||||||
|
resolution: "Most likely your embedded model, %{klass} is also
|
||||||
|
referenced via a has_many from a root document in another
|
||||||
|
collection. Double check the relation definitions and fix any
|
||||||
|
instances where embedded documents are improperly referenced
|
||||||
|
from other collections."
|
||||||
|
invalid_scope:
|
||||||
|
message: "Defining a scope of value %{value} on %{klass} is not
|
||||||
|
allowed."
|
||||||
|
summary: "Scopes in Mongoid must be procs that wrap criteria objects."
|
||||||
|
resolution: "Change the scope to be a proc wrapped critera.\n\n
|
||||||
|
Example:\n
|
||||||
|
\_\_class Band\n
|
||||||
|
\_\_\_\_include Mongoid::Document\n
|
||||||
|
\_\_\_\_scope :inactive, ->{ where(active: false) }\n
|
||||||
|
\_\_end\n\n"
|
||||||
|
invalid_storage_options:
|
||||||
|
message: "Invalid options passed to %{klass}.store_in: %{options}."
|
||||||
|
summary: "The :store_in macro takes only a hash of parameters with
|
||||||
|
the keys :database, :collection, or :session."
|
||||||
|
resolution: "Change the options passed to store_in to match the
|
||||||
|
documented API, and ensure all keys in the options hash are
|
||||||
|
symbols.\n\n
|
||||||
|
Example:\n
|
||||||
|
\_\_class Band\n
|
||||||
|
\_\_\_\_include Mongoid::Document\n
|
||||||
|
\_\_\_\_store_in collection: 'artists', database: 'secondary'\n
|
||||||
|
\_\_end\n\n"
|
||||||
|
invalid_storage_parent:
|
||||||
|
message: "Invalid store_in call on class %{klass}."
|
||||||
|
summary: "The :store_in macro can only be called on a base Mongoid Document"
|
||||||
|
resolution: "Remove the store_in call on class %{klass}, as it will use its
|
||||||
|
parent store configuration. Or remove the hierarchy extension for this
|
||||||
|
class."
|
||||||
|
invalid_time:
|
||||||
|
message: "'%{value}' is not a valid Time."
|
||||||
|
summary: "Mongoid tries to serialize the values for Date, DateTime, and
|
||||||
|
Time into proper UTC times to store in the database. The provided
|
||||||
|
value could not be parsed."
|
||||||
|
resolution: "Make sure to pass parsable values to the field setter
|
||||||
|
for Date, DateTime, and Time objects. When this is a String it needs
|
||||||
|
to be valid for Time.parse. Other objects must be valid to pass to
|
||||||
|
Time.local."
|
||||||
|
inverse_not_found:
|
||||||
|
message: "When adding a(n) %{klass} to %{base}#%{name}, Mongoid could
|
||||||
|
not determine the inverse foreign key to set. The attempted key was
|
||||||
|
'%{inverse}'."
|
||||||
|
summary: "When adding a document to a relation, Mongoid attempts
|
||||||
|
to link the newly added document to the base of the relation in
|
||||||
|
memory, as well as set the foreign key to link them on the
|
||||||
|
database side. In this case Mongoid could not determine what the
|
||||||
|
inverse foreign key was."
|
||||||
|
resolution: "If an inverse is not required, like a belongs_to or
|
||||||
|
has_and_belongs_to_many, ensure that :inverse_of => nil is set
|
||||||
|
on the relation. If the inverse is needed, most likely the
|
||||||
|
inverse cannot be figured out from the names of the relations and
|
||||||
|
you will need to explicitly tell Mongoid on the relation what
|
||||||
|
the inverse is.\n\n
|
||||||
|
Example:\n
|
||||||
|
\_\_class Lush\n
|
||||||
|
\_\_\_\_include Mongoid::Document\n
|
||||||
|
\_\_\_\_has_one :whiskey, class_name: \"Drink\", inverse_of: :alcoholic\n
|
||||||
|
\_\_end\n\n
|
||||||
|
\_\_class Drink\n
|
||||||
|
\_\_\_\_include Mongoid::Document\n
|
||||||
|
\_\_\_\_belongs_to :alcoholic, class_name: \"Lush\", inverse_of: :whiskey\n
|
||||||
|
\_\_end"
|
||||||
|
invalid_set_polymorphic_relation:
|
||||||
|
message: "The %{name} attribute can't be set to an instance of
|
||||||
|
%{other_klass} as %{other_klass} has multiple relations referencing
|
||||||
|
%{klass} as %{name}."
|
||||||
|
summary: "If the parent class of a polymorphic relation has multiple
|
||||||
|
definitions for the same relation, the values must be set from the
|
||||||
|
parent side and not the child side since Mongoid cannot determine
|
||||||
|
from the child side which relation to go in."
|
||||||
|
resolution: "Set the values from the parent, or redefine the relation
|
||||||
|
with only a single definition in the parent."
|
||||||
|
invalid_value:
|
||||||
|
message: "Value of type %{value_class} cannot be written to a field of type %{field_class}"
|
||||||
|
summary: "Tried to set a value of type %{value_class} to a field of type %{field_class}"
|
||||||
|
resolution: "Verify if the value to be set correspond to field definition"
|
||||||
|
mixed_relations:
|
||||||
|
message: "Referencing a(n) %{embedded} document from the %{root}
|
||||||
|
document via a relational association is not allowed since the
|
||||||
|
%{embedded} is embedded."
|
||||||
|
summary: "In order to properly access a(n) %{embedded} from %{root}
|
||||||
|
the reference would need to go through the root document of
|
||||||
|
%{embedded}. In a simple case this would require Mongoid to store
|
||||||
|
an extra foreign key for the root, in more complex cases where
|
||||||
|
%{embedded} is multiple levels deep a key would need to be stored
|
||||||
|
for each parent up the hierarchy."
|
||||||
|
resolution: "Consider not embedding %{embedded}, or do the key
|
||||||
|
storage and access in a custom manner in the application code."
|
||||||
|
mixed_session_configuration:
|
||||||
|
message: "Both uri and standard configuration options defined for
|
||||||
|
session: '%{name}'."
|
||||||
|
summary: "Instead of simply giving uri or standard options a
|
||||||
|
preference order, Mongoid assumes that you have made a mistake in
|
||||||
|
your configuration and requires that you provide one or the other,
|
||||||
|
but not both. The options that were provided were: %{config}."
|
||||||
|
resolution: "Provide either only a uri as configuration or only
|
||||||
|
standard options."
|
||||||
|
nested_attributes_metadata_not_found:
|
||||||
|
message: "Could not find metadata for relation '%{name}' on model:
|
||||||
|
%{klass}."
|
||||||
|
summary: "When defining nested attributes for a relation, Mongoid
|
||||||
|
needs to access the metadata for the relation '%{name}' in order
|
||||||
|
if add autosave functionality to it, if applicable. Either no
|
||||||
|
relation named '%{name}' could be found, or the relation had not
|
||||||
|
been defined yet."
|
||||||
|
resolution: "Make sure that there is a relation defined named
|
||||||
|
'%{name}' on %{klass} or that the relation definition comes before
|
||||||
|
the accepts_nested_attributes_for macro in the model - order
|
||||||
|
matters so that Mongoid has access to the metadata.\n\n
|
||||||
|
Example:\n
|
||||||
|
\_\_class Band\n
|
||||||
|
\_\_\_\_include Mongoid::Document\n
|
||||||
|
\_\_\_\_has_many :albums\n
|
||||||
|
\_\_\_\_accepts_nested_attributes_for :albums\n
|
||||||
|
\_\_end\n\n"
|
||||||
|
no_default_session:
|
||||||
|
message: "No default session configuration is defined."
|
||||||
|
summary: "The configuration provided settings for: %{keys}, but
|
||||||
|
Mongoid requires a :default to be defined at minimum."
|
||||||
|
resolution: "If configuring via a mongoid.yml, ensure that within
|
||||||
|
your :sessions section a :default session is defined.\n\n
|
||||||
|
Example:\n
|
||||||
|
\_\_development:\n
|
||||||
|
\_\_\_\_sessions:\n
|
||||||
|
\_\_\_\_\_\_default:\n
|
||||||
|
\_\_\_\_\_\_\_\_hosts:\n
|
||||||
|
\_\_\_\_\_\_\_\_\_\_- localhost:27017\n\n"
|
||||||
|
no_environment:
|
||||||
|
message: "Could not load the configuration since no environment
|
||||||
|
was defined."
|
||||||
|
summary: "Mongoid attempted to find the appropriate environment
|
||||||
|
but no Rails.env, Sinatra::Base.environment, RACK_ENV, or
|
||||||
|
MONGOID_ENV could be found."
|
||||||
|
resolution: "Make sure some environment is set from the mentioned
|
||||||
|
options. Mongoid cannot load configuration from the yaml without
|
||||||
|
knowing which environment it is in, and we have considered
|
||||||
|
defaulting to development an undesireable side effect of this not
|
||||||
|
being defined."
|
||||||
|
no_map_reduce_output:
|
||||||
|
message: "No output location was specified for the map/reduce
|
||||||
|
operation."
|
||||||
|
summary: "When executing a map/reduce, you must provide the output
|
||||||
|
location of the results. The attempted command was: %{command}."
|
||||||
|
resolution: "Provide the location that the output of the operation
|
||||||
|
is to go by chaining an #out call to the map/reduce.\n\n
|
||||||
|
Example:\n
|
||||||
|
\_\_Band.map_reduce(map, reduce).out(inline: 1)\n\n
|
||||||
|
Valid options for the out function are:\n
|
||||||
|
\_\_inline: 1\n
|
||||||
|
\_\_merge: 'collection-name'\n
|
||||||
|
\_\_replace: 'collection-name'\n
|
||||||
|
\_\_reduce: 'collection-name'\n\n"
|
||||||
|
no_metadata:
|
||||||
|
message: "Metadata not found for document of type %{klass}."
|
||||||
|
summary: "Mongoid sets the metadata of a relation on the document
|
||||||
|
when it is either loaded from within the relation, or added to
|
||||||
|
one. The presence of the metadata is required in order to
|
||||||
|
provide various functionality around relations. Most likely you
|
||||||
|
are getting this error because the document is embedded and was
|
||||||
|
attempted to be persisted without being associated with a parent,
|
||||||
|
or the relation was not properly defined."
|
||||||
|
resolution: "Ensure that your relations on the %{klass} model
|
||||||
|
are all properly defined, and that the inverse relations
|
||||||
|
are also properly defined. Embedded relations must have both the
|
||||||
|
parent (embeds_one/embeds_many) and the inverse (embedded_in)
|
||||||
|
present in order to work properly."
|
||||||
|
no_parent:
|
||||||
|
message: "Cannot persist embedded document %{klass} without a
|
||||||
|
parent document."
|
||||||
|
summary: "If the document is embedded, in order to be persisted it
|
||||||
|
must always have a reference to its parent document. This is
|
||||||
|
most likely caused by either calling %{klass}.create or
|
||||||
|
%{klass}.create! without setting the parent document as an
|
||||||
|
attribute."
|
||||||
|
resolution: "Ensure that you've set the parent relation if
|
||||||
|
instantiating the embedded document directly, or always create new
|
||||||
|
embedded documents via the parent relation."
|
||||||
|
no_session_config:
|
||||||
|
message: "No configuration could be found for a session named
|
||||||
|
'%{name}'."
|
||||||
|
summary: "When attempting to create the new session, Mongoid could
|
||||||
|
not find a session configuration for the name: '%{name}'. This is
|
||||||
|
necessary in order to know the host, port, and options needed
|
||||||
|
to connect."
|
||||||
|
resolution: "Double check your mongoid.yml to make sure under the
|
||||||
|
sessions key that a configuration exists for '%{name}'. If you
|
||||||
|
have set the configuration programatically, ensure that '%{name}'
|
||||||
|
exists in the configuration hash."
|
||||||
|
no_sessions_config:
|
||||||
|
message: "No sessions configuration provided."
|
||||||
|
summary: "Mongoid's configuration requires that you provide details
|
||||||
|
about each session that can be connected to, and requires in
|
||||||
|
the sessions config at least 1 default session to exist."
|
||||||
|
resolution: "Double check your mongoid.yml to make sure that you
|
||||||
|
have a top-level sessions key with at least 1 default session
|
||||||
|
configuration for it. You can regenerate a new mongoid.yml for
|
||||||
|
assistance via `rails g mongoid:config`.\n\n
|
||||||
|
Example:\n
|
||||||
|
\_\_development:\n
|
||||||
|
\_\_\_\_sessions:\n
|
||||||
|
\_\_\_\_\_\_default:\n
|
||||||
|
\_\_\_\_\_\_\_\_database: mongoid_dev\n
|
||||||
|
\_\_\_\_\_\_\_\_hosts:\n
|
||||||
|
\_\_\_\_\_\_\_\_\_\_- localhost:27017\n\n"
|
||||||
|
no_session_database:
|
||||||
|
message: "No database provided for session configuration: :%{name}."
|
||||||
|
summary: "Each session configuration must provide a database so Mongoid
|
||||||
|
knows where the default database to persist to. What was provided
|
||||||
|
was: %{config}."
|
||||||
|
resolution: "If configuring via a mongoid.yml, ensure that within
|
||||||
|
your :%{name} section a :database value for the session's default
|
||||||
|
database is defined.\n\n
|
||||||
|
Example:\n
|
||||||
|
\_\_development:\n
|
||||||
|
\_\_\_\_sessions:\n
|
||||||
|
\_\_\_\_\_\_%{name}:\n
|
||||||
|
\_\_\_\_\_\_\_\_database: my_app_db\n
|
||||||
|
\_\_\_\_\_\_\_\_hosts:\n
|
||||||
|
\_\_\_\_\_\_\_\_\_\_- localhost:27017\n\n"
|
||||||
|
no_session_hosts:
|
||||||
|
message: "No hosts provided for session configuration: :%{name}."
|
||||||
|
summary: "Each session configuration must provide hosts so Mongoid
|
||||||
|
knows where the database server is located. What was provided
|
||||||
|
was: %{config}."
|
||||||
|
resolution: "If configuring via a mongoid.yml, ensure that within
|
||||||
|
your :%{name} section a :hosts value for the session hosts is
|
||||||
|
defined.\n\n
|
||||||
|
Example:\n
|
||||||
|
\_\_development:\n
|
||||||
|
\_\_\_\_sessions:\n
|
||||||
|
\_\_\_\_\_\_%{name}:\n
|
||||||
|
\_\_\_\_\_\_\_\_database: my_app_db\n
|
||||||
|
\_\_\_\_\_\_\_\_hosts:\n
|
||||||
|
\_\_\_\_\_\_\_\_\_\_- localhost:27017\n\n"
|
||||||
|
readonly_attribute:
|
||||||
|
message: "Attempted to set the readonly attribute '%{name}' with
|
||||||
|
the value: %{value}."
|
||||||
|
summary: "Attributes flagged as readonly via Model.attr_readonly
|
||||||
|
can only have values set when the document is a new record."
|
||||||
|
resolution: "Don't define '%{name}' as readonly, or do not attempt
|
||||||
|
to update its value after the document is persisted."
|
||||||
|
readonly_document:
|
||||||
|
message: "Attempted to persist the readonly document '%{klass}'."
|
||||||
|
summary: "Documents loaded from the database using #only
|
||||||
|
cannot be persisted."
|
||||||
|
resolution: "Don't attempt to persist documents that are flagged as
|
||||||
|
readonly."
|
||||||
|
scope_overwrite:
|
||||||
|
message: "Cannot create scope :%{scope_name}, because of existing
|
||||||
|
method %{model_name}.%{scope_name}."
|
||||||
|
summary: "When defining a scope that conflicts with a method that
|
||||||
|
already exists on the model, this error will get raised if
|
||||||
|
Mongoid.scope_overwrite_exception is set to true."
|
||||||
|
resolution: "Change the name of the scope so it does not conflict
|
||||||
|
with the already defined method %{model_name}, or set the
|
||||||
|
configuration option Mongoid.scope_overwrite_exception to false,
|
||||||
|
which is its default. In this case a warning will be logged."
|
||||||
|
taken:
|
||||||
|
"exisitert bereits"
|
||||||
|
too_many_nested_attribute_records:
|
||||||
|
message: "Accepting nested attributes for %{association} is limited
|
||||||
|
to %{limit} records."
|
||||||
|
summary: "More documents were sent to be processed than the allowed
|
||||||
|
limit."
|
||||||
|
resolution: "The limit is set as an option to the macro, for example:
|
||||||
|
accepts_nested_attributes_for :%{association}, limit: %{limit}.
|
||||||
|
Consider raising this limit or making sure no more are sent than
|
||||||
|
the set value."
|
||||||
|
unknown_attribute:
|
||||||
|
message: "Attempted to set a value for '%{name}' which is not
|
||||||
|
allowed on the model %{klass}."
|
||||||
|
summary: "Without including Mongoid::Attributes::Dynamic in your model
|
||||||
|
and the attribute does not already exist in the attributes hash,
|
||||||
|
attempting to call %{klass}#%{name}= for it is not allowed. This is
|
||||||
|
also triggered by passing the attribute to any method that accepts an
|
||||||
|
attributes hash, and is raised instead of getting a NoMethodError."
|
||||||
|
resolution: "You can include Mongoid::Attributes::Dynamic if you
|
||||||
|
expect to be writing values for undefined fields often."
|
||||||
|
unsaved_document:
|
||||||
|
message: "Attempted to save %{document} before the parent %{base}."
|
||||||
|
summary: "You cannot call create or create! through the
|
||||||
|
relation (%{document}) who's parent (%{base}) is
|
||||||
|
not already saved. This would case the database to be out of sync
|
||||||
|
since the child could potentially reference a nonexistant parent."
|
||||||
|
resolution: "Make sure to only use create or create! when the parent
|
||||||
|
document %{base} is persisted."
|
||||||
|
unsupported_javascript:
|
||||||
|
message: "Executing Javascript $where selector on an embedded criteria
|
||||||
|
is not supported."
|
||||||
|
summary: "Mongoid only supports providing a hash of arguments to
|
||||||
|
#where criterion on embedded documents. Since %{klass} is embedded,
|
||||||
|
the expression %{javascript} is not allowed."
|
||||||
|
resolution: "Please provide a standard hash to #where when the criteria
|
||||||
|
is for an embedded relation."
|
||||||
|
validations:
|
||||||
|
message: "Validation of %{document} failed."
|
||||||
|
summary: "The following errors were found: %{errors}"
|
||||||
|
resolution: "Try persisting the document with valid data or remove
|
||||||
|
the validations."
|
||||||
|
delete_restriction:
|
||||||
|
message: "Cannot delete %{document} because of dependent '%{relation}'."
|
||||||
|
summary: "When defining '%{relation}' with a :dependent => :restrict,
|
||||||
|
Mongoid will raise an error when attempting to delete the
|
||||||
|
%{document} when the child '%{relation}' still has documents in it."
|
||||||
|
resolution: "Don't attempt to delete the parent %{document} when
|
||||||
|
it has children, or change the dependent option on the relation."
|
||||||
@@ -24,6 +24,7 @@ Rails.application.routes.draw do
|
|||||||
scope '/:locale' do
|
scope '/:locale' do
|
||||||
get '/', to: 'supporters#new'
|
get '/', to: 'supporters#new'
|
||||||
resources :supporters
|
resources :supporters
|
||||||
|
resource :publicity
|
||||||
get '/thanks', to: 'pages#thanks', as: :thanks
|
get '/thanks', to: 'pages#thanks', as: :thanks
|
||||||
get '/spenden', to: 'pages#spenden', as: :spenden
|
get '/spenden', to: 'pages#spenden', as: :spenden
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
FactoryGirl.define do
|
||||||
|
factory :publicity do
|
||||||
|
organisation { Faker::Company.name }
|
||||||
|
statement { Faker::Lorem.paragraph }
|
||||||
|
avatar { File.new("#{Rails.root}/spec/support/fixtures/image.jpg") }
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
FactoryGirl.define do
|
||||||
|
factory :supporter do
|
||||||
|
email { Faker::Internet.email }
|
||||||
|
password { Faker::Lorem.words(8).join }
|
||||||
|
first_name { Faker::Name.first_name }
|
||||||
|
last_name { Faker::Name.last_name }
|
||||||
|
street { Faker::Address.street_name }
|
||||||
|
zip { Faker::Address.zip }
|
||||||
|
city { Faker::Address.city }
|
||||||
|
support { %w(signer supporter).sample }
|
||||||
|
age_category { %w(underage young middle retired).sample }
|
||||||
|
language { %w(de fr it).sample }
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
feature 'Publicity' do
|
||||||
|
let(:supporter) { create :supporter }
|
||||||
|
|
||||||
|
before { sign_in(supporter) }
|
||||||
|
|
||||||
|
scenario 'User makes his announcement public' do
|
||||||
|
visit root_path
|
||||||
|
|
||||||
|
click_link 'Meine Unterstützung öffentlich kundtun ...'
|
||||||
|
|
||||||
|
fill_in 'Organisation', with: 'Schweizer Volkspartei'
|
||||||
|
fill_in 'Statement', with: 'Wir wollen ja eigentlich nur das Volk verarschen ;)'
|
||||||
|
|
||||||
|
attach_file('publicity_avatar', "#{Rails.root}/spec/support/fixtures/image.jpg")
|
||||||
|
|
||||||
|
click_button 'Zur Überprüfung einsenden'
|
||||||
|
|
||||||
|
expect(page).to have_content 'Besten Dank die Daten werden überprüft.'
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'User makes changes announcement' do
|
||||||
|
|
||||||
|
create :publicity, supporter: supporter
|
||||||
|
|
||||||
|
visit root_path
|
||||||
|
|
||||||
|
click_link 'Statement neu einreichen'
|
||||||
|
|
||||||
|
fill_in 'Organisation', with: 'Schweizer Volkspartei'
|
||||||
|
fill_in 'Statement', with: 'Wir wollen ja eigentlich nur das Volk verarschen ;)'
|
||||||
|
|
||||||
|
attach_file('publicity_avatar', "#{Rails.root}/spec/support/fixtures/image.jpg")
|
||||||
|
|
||||||
|
click_button 'Zur Überprüfung einsenden'
|
||||||
|
|
||||||
|
expect(page).to have_content 'Besten Dank die Daten werden überprüft.'
|
||||||
|
expect(page).to have_content 'Die Veröffentlichung wurde noch nicht genehmigt'
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
feature 'Support announcement' do
|
feature 'Support' do
|
||||||
scenario 'User announces support' do
|
scenario 'User announces support' do
|
||||||
visit root_path
|
visit root_path
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
describe Publicity do
|
||||||
|
it { is_expected.to be_embedded_in(:supporter) }
|
||||||
|
|
||||||
|
it { is_expected.to validate_presence_of(:state) }
|
||||||
|
it { is_expected.to validate_presence_of(:statement) }
|
||||||
|
it { is_expected.to validate_presence_of(:avatar) }
|
||||||
|
end
|
||||||
@@ -12,6 +12,8 @@ describe Supporter do
|
|||||||
it { is_expected.to validate_presence_of(:age_category) }
|
it { is_expected.to validate_presence_of(:age_category) }
|
||||||
it { is_expected.to validate_presence_of(:language) }
|
it { is_expected.to validate_presence_of(:language) }
|
||||||
|
|
||||||
|
it { is_expected.to embed_one(:publicity) }
|
||||||
|
|
||||||
describe '.counter' do
|
describe '.counter' do
|
||||||
it 'counts only from a certain number on' do
|
it 'counts only from a certain number on' do
|
||||||
allow(Supporter).to receive(:count) { 12 }
|
allow(Supporter).to receive(:count) { 12 }
|
||||||
|
|||||||
@@ -16,6 +16,16 @@ Bundler.require(*Rails.groups)
|
|||||||
RSpec.configure do |config|
|
RSpec.configure do |config|
|
||||||
config.include Mongoid::Matchers, type: :model
|
config.include Mongoid::Matchers, type: :model
|
||||||
|
|
||||||
|
config.include FactoryGirl::Syntax::Methods
|
||||||
|
|
||||||
|
config.before(:suite) do
|
||||||
|
FactoryGirl.find_definitions
|
||||||
|
end
|
||||||
|
|
||||||
|
config.include Devise::Test::ControllerHelpers, type: :controller
|
||||||
|
config.include Devise::Test::ControllerHelpers, type: :view
|
||||||
|
config.include Devise::Test::IntegrationHelpers, type: :feature
|
||||||
|
|
||||||
# rspec-expectations config goes here. You can use an alternate
|
# rspec-expectations config goes here. You can use an alternate
|
||||||
# assertion/expectation library such as wrong or the stdlib/minitest
|
# assertion/expectation library such as wrong or the stdlib/minitest
|
||||||
# assertions if you prefer.
|
# assertions if you prefer.
|
||||||
|
|||||||
|
After Width: | Height: | Size: 19 KiB |