Author SHA1 Message Date
gurix 9bdf0fe27a Ignore case for search 2017-12-18 20:12:32 +01:00
gurix 229830b52b Remove unnecessary library 2017-12-18 20:12:07 +01:00
gurix 5f9ea11d77 geospatial searching 2017-12-17 22:26:09 +01:00
gurix de231092a2 Sample data for signatures 2017-12-17 12:27:10 +01:00
gurix e7035fc8c5 removed unnecessary specs 2017-12-17 12:26:55 +01:00
gurix f0b34f96ff Network and first signature collection prototyping 2017-12-17 11:21:09 +01:00
gurix 58a576e011 added Geocoding key 2017-11-20 14:57:12 +01:00
gurix 4c8f3b8643 fixed broken design 2017-11-20 09:22:04 +01:00
gurix b753511096 website instead of url 2017-11-18 19:48:23 +01:00
gurix 2fb44885ce responsibility 2017-11-18 19:20:11 +01:00
gurix 4e45e94f4b changed content 2017-11-16 17:38:48 +01:00
gurix d8106e7b08 Merge branch 'staging' 2017-11-16 14:52:16 +01:00
Markus GrafandGitHub 018ddce8cf Update donation.de.slim 2017-11-14 21:28:57 +01:00
gurix a4c8b2beba added description 2017-11-12 16:35:43 +01:00
gurix 59aa0ecbaf fixed spec 2017-11-12 14:07:27 +01:00
gurix 94d2d733e9 fixed routing and position 2017-11-12 14:05:45 +01:00
gurix 7bd9a0ab22 added greenday event 2017-11-12 13:27:10 +01:00
gurix 299097e13f accessibility for focus 2017-11-11 23:50:13 +01:00
gurix 037030a140 enhanced navigation 2017-11-11 23:37:01 +01:00
Markus GrafandGitHub bd95513f59 Update numbers.de.slim 2017-11-10 15:37:10 +01:00
gurix e4a2b26d6e added missing translations 2017-11-10 12:25:14 +01:00
gurix 93a77e12a4 Refactured navigation 2017-11-10 12:18:05 +01:00
gurix e9a73ea5cb User can now add a phone number 2017-11-10 10:25:25 +01:00
Markus GrafandGitHub 06922e9316 Update thanks.de.slim 2017-11-10 10:12:01 +01:00
gurix 421f9907b9 Added password for staging 2017-11-10 09:55:40 +01:00
gurix cd6bff99e7 added secret for staging 2017-11-10 09:37:45 +01:00
gurix c82f8e1ab8 added staging envs 2017-11-10 09:33:18 +01:00
Markus GrafandGitHub aa4c9d5704 Update faq.de.slim 2017-11-09 14:58:19 +01:00
Markus GrafandGitHub b55a2ac434 Update _core_statements.de.slim 2017-11-09 14:57:12 +01:00
Markus GrafandGitHub 8c772b1e43 Update donation.de.slim 2017-10-31 15:01:13 +01:00
gurix 3c6a23036c fixed typo 2017-10-19 11:13:34 +02:00
gurix df5f4df90d Merge branch 'feature/stripe' 2017-10-18 23:33:15 +02:00
gurix c5b7b79b7b addes stripe 2017-10-18 23:32:28 +02:00
Markus GrafandGitHub bdddba4e07 Update donation.de.slim 2017-10-16 18:00:54 +02:00
gurix e44d5935f2 Support bitcoin cash 2017-10-12 22:43:47 +02:00
gurix 9387735ae6 fixed statment site. 2017-10-07 20:29:58 +02:00
gurix 050a4a88e7 bundle update all 2017-10-02 13:21:56 +02:00
gurix 7f540bc3c5 bundle update nokogiri because of CVE-2017-5029 2017-10-02 13:17:36 +02:00
gurix add8550617 fixed heading of numbers 2017-09-09 17:22:21 +02:00
gurix 5834b42266 added blog link 2017-08-29 21:05:08 +02:00
gurix fec35cfa1b initiative text version 6 2017-08-28 17:21:25 +02:00
gurix 45e96470af integrate bitcoin donations 2017-08-17 18:25:25 +02:00
Markus GrafandGitHub 82db449769 Update donation.de.slim 2017-08-16 17:44:04 +02:00
Markus GrafandGitHub ca2aea6022 Update donation.de.slim 2017-08-11 14:13:48 +02:00
Markus GrafandGitHub 49ddc08550 Update donation.de.slim 2017-08-07 10:43:18 +02:00
Markus GrafandGitHub 8957724102 Update donation.de.slim 2017-07-28 19:22:40 +02:00
Markus GrafandGitHub 506665e991 Update donation.de.slim 2017-07-17 15:58:03 +02:00
Markus GrafandGitHub 03848cb6e8 Update collection_concept.de.slim 2017-07-14 16:40:18 +02:00
Markus GrafandGitHub dfa2c02820 Update donation.de.slim 2017-07-12 17:04:59 +02:00
gurix 63f514144a some content changes 2017-07-07 18:42:30 +02:00
gurix 8d0fdf9210 content changes 2017-07-07 16:16:55 +02:00
gurix 10727a1302 added content 2017-07-07 16:07:53 +02:00
gurix 1440cfcc1e statements without redcarpet gem 2017-07-06 16:56:19 +02:00
gurix 71a5c8ee64 Disable sponsoring and add sponsoring instead 2017-07-06 16:51:04 +02:00
gurix d7d42ae241 refactored statements 2017-07-06 16:50:10 +02:00
gurix 0a20c632b8 Some statistics 2017-07-06 16:48:53 +02:00
gurix d247560fca Added read more for statements 2017-05-20 15:24:44 +02:00
gurix ebe53e40d2 fixed broken link 2017-05-02 11:13:52 +02:00
gurix 36d8787306 added faq for psychosis theory 2017-04-27 11:53:09 +02:00
gurix a1fbcac477 added donation button 2017-04-25 06:59:14 +02:00
gurix 572c21a310 hide crowdfunding 2017-04-23 20:47:38 +02:00
gurix a4b267056d fixed responsivness 2017-04-22 08:26:43 +02:00
gurix 867078a437 added crowdfunding 2017-04-22 07:39:07 +02:00
gurix e244e592ed fixed routing 2017-04-21 19:33:57 +02:00
gurix 6b7feefa16 fixed sorting of statements 2017-04-21 16:31:05 +02:00
gurix 9c6414477d added link to new statement 2017-04-19 22:52:37 +02:00
gurix d4566c7446 fixed accessing not available languages 2017-04-19 10:32:35 +02:00
gurix 1bc5f9aa7a robots.txt 2017-04-19 10:18:05 +02:00
gurix d288f26286 fixed sponsoring title 2017-04-18 17:52:09 +02:00
gurix 515519a537 fixed some translation and added social media meta tags 2017-04-18 17:45:48 +02:00
gurix 2111fe9b46 changed from mail for devise 2017-04-18 16:52:18 +02:00
gurix 1ea3806a7d removed cache data 2017-04-18 16:41:39 +02:00
130 changed files with 1959 additions and 364 deletions
+1
View File
@@ -14,3 +14,4 @@
/log/*
!/log/.keep
/tmp
.Rproj.user
+21 -5
View File
@@ -12,17 +12,32 @@ gem 'coffee-rails', '~> 4.1.0'
# gem 'therubyracer', platforms: :ruby
# Integrate Paperclip into Mongoid.
gem "mongoid-paperclip"
gem 'mongoid-paperclip'
# Adds support for multiparameter fields to mongoid 4.x series.
gem 'mongoid-sadstory'
# Markdown rendering
gem 'redcarpet'
# Stripe integration
gem 'stripe'
# Render your navigation as HTML list, link list or breadcrumbs.
gem 'simple-navigation'
# To extend paperclip with locales
gem 'paperclip-i18n'
# Amazon's S3 file hosting service
gem 'aws-sdk'
gem 'aws-sdk', '< 3.0' # see https://github.com/thoughtbot/paperclip/issues/2484
# A fixtures replacement
gem 'factory_girl'
# It's a small library to provide the Rails I18n translations on the JavaScript.
gem "i18n-js"
# Use jquery as the JavaScript library
gem 'jquery-rails'
@@ -31,9 +46,6 @@ gem 'jbuilder', '~> 2.0'
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc
# Easily generate a Twitter Bootstrap navbar in your Rails app
gem 'rails_bootstrap_navbar'
# Kaminari Mongoid adapter.
gem 'kaminari-mongoid'
gem 'kaminari-actionview'
@@ -98,6 +110,10 @@ group :development do
# Access an IRB console on exception pages or by using <%= console %> in views
gem 'web-console', '~> 2.0'
# Better Errors replaces the standard Rails error page with a much better and more useful error page.
gem "better_errors"
gem "binding_of_caller"
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
# gem 'spring'
end
+168 -135
View File
@@ -1,76 +1,78 @@
GEM
remote: https://rubygems.org/
specs:
actionmailer (4.2.8)
actionpack (= 4.2.8)
actionview (= 4.2.8)
activejob (= 4.2.8)
actionmailer (4.2.10)
actionpack (= 4.2.10)
actionview (= 4.2.10)
activejob (= 4.2.10)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 1.0, >= 1.0.5)
actionpack (4.2.8)
actionview (= 4.2.8)
activesupport (= 4.2.8)
actionpack (4.2.10)
actionview (= 4.2.10)
activesupport (= 4.2.10)
rack (~> 1.6)
rack-test (~> 0.6.2)
rails-dom-testing (~> 1.0, >= 1.0.5)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (4.2.8)
activesupport (= 4.2.8)
actionview (4.2.10)
activesupport (= 4.2.10)
builder (~> 3.1)
erubis (~> 2.7.0)
rails-dom-testing (~> 1.0, >= 1.0.5)
rails-html-sanitizer (~> 1.0, >= 1.0.3)
activejob (4.2.8)
activesupport (= 4.2.8)
activejob (4.2.10)
activesupport (= 4.2.10)
globalid (>= 0.3.0)
activemodel (4.2.8)
activesupport (= 4.2.8)
activemodel (4.2.10)
activesupport (= 4.2.10)
builder (~> 3.1)
activerecord (4.2.8)
activemodel (= 4.2.8)
activesupport (= 4.2.8)
activerecord (4.2.10)
activemodel (= 4.2.10)
activesupport (= 4.2.10)
arel (~> 6.0)
activesupport (4.2.8)
activesupport (4.2.10)
i18n (~> 0.7)
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
addressable (2.5.0)
public_suffix (~> 2.0, >= 2.0.2)
addressable (2.5.2)
public_suffix (>= 2.0.2, < 4.0)
arel (6.0.4)
autoprefixer-rails (6.7.7.1)
autoprefixer-rails (7.1.4.1)
execjs
aws-sdk (2.9.7)
aws-sdk-resources (= 2.9.7)
aws-sdk-core (2.9.7)
aws-sdk (2.10.61)
aws-sdk-resources (= 2.10.61)
aws-sdk-core (2.10.61)
aws-sigv4 (~> 1.0)
jmespath (~> 1.0)
aws-sdk-resources (2.9.7)
aws-sdk-core (= 2.9.7)
aws-sigv4 (1.0.0)
aws-sdk-resources (2.10.61)
aws-sdk-core (= 2.10.61)
aws-sigv4 (1.0.2)
bcrypt (3.1.11)
benchmark-ips (2.7.2)
better_errors (2.4.0)
coderay (>= 1.0.0)
erubi (>= 1.0.0)
rack (>= 0.9.0)
binding_of_caller (0.7.2)
debug_inspector (>= 0.0.1)
bootstrap-navbar (2.4.0)
gem_config (~> 0.3)
bootstrap-sass (3.3.7)
autoprefixer-rails (>= 5.2.1)
sass (>= 3.3.4)
bson (4.2.1)
bson (4.2.2)
builder (3.2.3)
byebug (9.0.6)
capybara (2.13.0)
byebug (9.1.0)
capybara (2.15.1)
addressable
mime-types (>= 1.16)
mini_mime (>= 0.1.3)
nokogiri (>= 1.3.3)
rack (>= 1.0.0)
rack-test (>= 0.5.4)
xpath (~> 2.0)
climate_control (0.1.0)
climate_control (0.2.0)
cocaine (0.5.8)
climate_control (>= 0.0.3, < 1.0)
coderay (1.1.1)
coderay (1.1.2)
coffee-rails (4.1.1)
coffee-script (>= 2.2.0)
railties (>= 4.0.0, < 5.1.x)
@@ -79,9 +81,10 @@ GEM
execjs
coffee-script-source (1.12.2)
concurrent-ruby (1.0.5)
css_parser (1.4.10)
crass (1.0.2)
css_parser (1.6.0)
addressable
debug_inspector (0.0.2)
debug_inspector (0.0.3)
derailed_benchmarks (1.3.2)
benchmark-ips (~> 2)
get_process_mem (~> 0)
@@ -90,38 +93,44 @@ GEM
rack (>= 1)
rake (> 10, < 13)
thor (~> 0.19)
devise (4.2.1)
devise (4.3.0)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0, < 5.1)
railties (>= 4.1.0, < 5.2)
responders
warden (~> 1.2.3)
devise-i18n (1.1.2)
devise-i18n (1.2.0)
diff-lcs (1.3)
dotenv (2.2.0)
dotenv-rails (2.2.0)
dotenv (= 2.2.0)
railties (>= 3.2, < 5.1)
dotenv (2.2.1)
dotenv-rails (2.2.1)
dotenv (= 2.2.1)
railties (>= 3.2, < 5.2)
erubi (1.7.0)
erubis (2.7.0)
execjs (2.7.0)
factory_girl (4.8.0)
factory_girl (4.8.1)
activesupport (>= 3.0.0)
faker (1.7.2)
faker (1.8.4)
i18n (~> 0.5)
font-awesome-rails (4.7.0.1)
railties (>= 3.2, < 5.1)
gem_config (0.3.1)
geocoder (1.4.3)
faraday (0.13.1)
multipart-post (>= 1.2, < 3)
ffi (1.9.18)
font-awesome-rails (4.7.0.2)
railties (>= 3.2, < 5.2)
geocoder (1.4.4)
get_process_mem (0.2.1)
globalid (0.3.7)
activesupport (>= 4.1.0)
haml (4.0.7)
globalid (0.4.0)
activesupport (>= 4.2.0)
haml (5.0.3)
temple (>= 0.8.0)
tilt
heapy (0.1.2)
i18n (0.8.1)
jbuilder (2.6.3)
activesupport (>= 3.0.0, < 5.2)
multi_json (~> 1.2)
heapy (0.1.3)
i18n (0.8.6)
i18n-js (3.0.1)
i18n (~> 0.6, >= 0.6.6)
jbuilder (2.7.0)
activesupport (>= 4.2.0)
multi_json (>= 1.2)
jmespath (1.3.1)
jquery-rails (4.3.1)
rails-dom-testing (>= 1, < 3)
@@ -130,36 +139,43 @@ GEM
jquery-ui-rails (5.0.5)
railties (>= 3.2.16)
json (1.8.6)
kaminari (0.17.0)
actionpack (>= 3.0.0)
activesupport (>= 3.0.0)
kaminari (1.0.1)
activesupport (>= 4.1.0)
kaminari-actionview (= 1.0.1)
kaminari-activerecord (= 1.0.1)
kaminari-core (= 1.0.1)
kaminari-actionview (1.0.1)
actionview
kaminari-core (= 1.0.1)
kaminari-activerecord (1.0.1)
activerecord
kaminari-core (= 1.0.1)
kaminari-core (1.0.1)
kaminari-mongoid (1.0.1)
kaminari-core (~> 1.0)
mongoid
loofah (2.0.3)
loofah (2.1.1)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.6.4)
mail (2.6.6)
mime-types (>= 1.16, < 4)
memory_profiler (0.9.8)
method_source (0.8.2)
method_source (0.9.0)
mime-types (3.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2016.0521)
mimemagic (0.3.2)
mini_portile2 (2.1.0)
minitest (5.10.1)
mongo (2.4.1)
mini_mime (0.1.4)
mini_portile2 (2.3.0)
minitest (5.10.3)
mongo (2.4.3)
bson (>= 4.2.1, < 5.0.0)
mongoid (5.0.2)
activemodel (~> 4.0)
mongo (~> 2.1)
origin (~> 2.1)
tzinfo (>= 0.3.37)
mongoid-compatibility (0.4.1)
mongoid-compatibility (0.5.0)
activesupport
mongoid (>= 2.0)
mongoid-paperclip (0.0.11)
@@ -169,14 +185,17 @@ GEM
mongoid (~> 5.0)
rake
rspec (~> 3.3)
mongoid-sadstory (0.0.2)
mongoid
mongoid_paranoia (0.2.1)
mongoid (>= 4)
mongoid-compatibility
multi_json (1.12.1)
multi_json (1.12.2)
multipart-post (2.0.0)
nested_form (0.3.2)
nokogiri (1.7.1)
mini_portile2 (~> 2.1.0)
origin (2.3.0)
nokogiri (1.8.1)
mini_portile2 (~> 2.3.0)
origin (2.3.1)
orm_adapter (0.5.0)
paperclip (5.1.0)
activemodel (>= 4.2.0)
@@ -185,30 +204,29 @@ GEM
mime-types
mimemagic (~> 0.3.0)
paperclip-i18n (4.3.0)
pry (0.10.4)
pry (0.11.1)
coderay (~> 1.1.0)
method_source (~> 0.8.1)
slop (~> 3.4)
method_source (~> 0.9.0)
pry-rails (0.3.6)
pry (>= 0.10.4)
public_suffix (2.0.5)
puma (3.8.2)
rack (1.6.5)
public_suffix (3.0.0)
puma (3.10.0)
rack (1.6.8)
rack-pjax (1.0.0)
nokogiri (~> 1.5)
rack (>= 1.1)
rack-test (0.6.3)
rack (>= 1.0)
rails (4.2.8)
actionmailer (= 4.2.8)
actionpack (= 4.2.8)
actionview (= 4.2.8)
activejob (= 4.2.8)
activemodel (= 4.2.8)
activerecord (= 4.2.8)
activesupport (= 4.2.8)
rails (4.2.10)
actionmailer (= 4.2.10)
actionpack (= 4.2.10)
actionview (= 4.2.10)
activejob (= 4.2.10)
activemodel (= 4.2.10)
activerecord (= 4.2.10)
activesupport (= 4.2.10)
bundler (>= 1.3.0, < 2.0)
railties (= 4.2.8)
railties (= 4.2.10)
sprockets-rails
rails-deprecated_sanitizer (1.0.3)
activesupport (>= 4.2.0.alpha)
@@ -224,65 +242,71 @@ GEM
rails_12factor (0.0.3)
rails_serve_static_assets
rails_stdout_logging
rails_admin (1.1.1)
rails_admin (1.2.0)
builder (~> 3.1)
coffee-rails (~> 4.0)
font-awesome-rails (>= 3.0, < 5)
haml (~> 4.0)
haml (>= 4.0, < 6)
jquery-rails (>= 3.0, < 5)
jquery-ui-rails (~> 5.0)
kaminari (~> 0.14)
kaminari (>= 0.14, < 2.0)
nested_form (~> 0.3)
rack-pjax (>= 0.7)
rails (>= 4.0, < 6)
remotipart (~> 1.3)
sass-rails (>= 4.0, < 6)
rails_bootstrap_navbar (2.0.1)
bootstrap-navbar (~> 2.0)
rails (>= 3.0.0)
rails_serve_static_assets (0.0.5)
rails_stdout_logging (0.0.5)
railties (4.2.8)
actionpack (= 4.2.8)
activesupport (= 4.2.8)
railties (4.2.10)
actionpack (= 4.2.10)
activesupport (= 4.2.10)
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rake (12.0.0)
rake (12.1.0)
rb-fsevent (0.10.2)
rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2)
rdoc (4.3.0)
redcarpet (3.4.0)
remotipart (1.3.1)
responders (2.3.0)
railties (>= 4.2.0, < 5.1)
roadie (3.2.1)
css_parser (~> 1.4.5)
nokogiri (>= 1.5.0, < 1.8.0)
roadie-rails (1.1.1)
railties (>= 3.0, < 5.1)
responders (2.4.0)
actionpack (>= 4.2.0, < 5.3)
railties (>= 4.2.0, < 5.3)
roadie (3.2.2)
css_parser (~> 1.4)
nokogiri (~> 1.5)
roadie-rails (1.2.1)
railties (>= 3.0, < 5.2)
roadie (~> 3.1)
route_translator (4.4.1)
actionpack (>= 3.2, < 5.0)
activesupport (>= 3.2, < 5.0)
rspec (3.5.0)
rspec-core (~> 3.5.0)
rspec-expectations (~> 3.5.0)
rspec-mocks (~> 3.5.0)
rspec-core (3.5.4)
rspec-support (~> 3.5.0)
rspec-expectations (3.5.0)
rspec (3.6.0)
rspec-core (~> 3.6.0)
rspec-expectations (~> 3.6.0)
rspec-mocks (~> 3.6.0)
rspec-core (3.6.0)
rspec-support (~> 3.6.0)
rspec-expectations (3.6.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.5.0)
rspec-mocks (3.5.0)
rspec-support (~> 3.6.0)
rspec-mocks (3.6.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.5.0)
rspec-rails (3.5.2)
rspec-support (~> 3.6.0)
rspec-rails (3.6.1)
actionpack (>= 3.0)
activesupport (>= 3.0)
railties (>= 3.0)
rspec-core (~> 3.5.0)
rspec-expectations (~> 3.5.0)
rspec-mocks (~> 3.5.0)
rspec-support (~> 3.5.0)
rspec-support (3.5.0)
sass (3.4.23)
rspec-core (~> 3.6.0)
rspec-expectations (~> 3.6.0)
rspec-mocks (~> 3.6.0)
rspec-support (~> 3.6.0)
rspec-support (3.6.0)
sass (3.5.1)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
sass-rails (5.0.6)
railties (>= 4.0.0, < 6)
sass (~> 3.1)
@@ -292,32 +316,35 @@ GEM
sdoc (0.4.2)
json (~> 1.7, >= 1.7.7)
rdoc (~> 4.0)
simple_form (3.4.0)
actionpack (> 4, < 5.1)
activemodel (> 4, < 5.1)
slim (3.0.7)
temple (~> 0.7.6)
simple-navigation (4.0.5)
activesupport (>= 2.3.2)
simple_form (3.5.0)
actionpack (> 4, < 5.2)
activemodel (> 4, < 5.2)
slim (3.0.8)
temple (>= 0.7.6, < 0.9)
tilt (>= 1.3.3, < 2.1)
slim-rails (3.1.2)
actionpack (>= 3.1)
railties (>= 3.1)
slim (~> 3.0)
slop (3.6.0)
sprockets (3.7.1)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.2.0)
sprockets-rails (3.2.1)
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets (>= 3.0.0)
stackprof (0.2.10)
temple (0.7.7)
thor (0.19.4)
stripe (3.6.0)
faraday (~> 0.10)
temple (0.8.0)
thor (0.20.0)
thread_safe (0.3.6)
tilt (2.0.7)
tilt (2.0.8)
tzinfo (1.2.3)
thread_safe (~> 0.1)
uglifier (3.1.10)
uglifier (3.2.0)
execjs (>= 0.3.0, < 3)
warden (1.2.7)
rack (>= 1.0)
@@ -326,14 +353,16 @@ GEM
binding_of_caller (>= 0.7.2)
railties (>= 4.0)
sprockets-rails (>= 2.0, < 4.0)
xpath (2.0.0)
xpath (2.1.0)
nokogiri (~> 1.3)
PLATFORMS
ruby
DEPENDENCIES
aws-sdk
aws-sdk (< 3.0)
better_errors
binding_of_caller
bootstrap-sass (~> 3.3.5)
byebug
capybara
@@ -345,6 +374,7 @@ DEPENDENCIES
factory_girl
faker
geocoder
i18n-js
jbuilder (~> 2.0)
jquery-rails
kaminari-actionview
@@ -352,6 +382,7 @@ DEPENDENCIES
mongoid (~> 5.0.0)
mongoid-paperclip
mongoid-rspec (= 3.0.0)
mongoid-sadstory
mongoid_paranoia
paperclip-i18n
pry-rails
@@ -360,16 +391,18 @@ DEPENDENCIES
rails-i18n
rails_12factor
rails_admin
rails_bootstrap_navbar
redcarpet
roadie-rails (~> 1.0)
route_translator
rspec-rails (~> 3.0)
sass-rails (~> 5.0)
sdoc (~> 0.4.0)
simple-navigation
simple_form
slim
slim-rails
stackprof
stripe
uglifier (>= 1.3.0)
web-console (~> 2.0)
@@ -377,4 +410,4 @@ RUBY VERSION
ruby 2.3.1p112
BUNDLED WITH
1.14.6
1.16.0
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

+1
View File
@@ -15,4 +15,5 @@
//= require bootstrap-sprockets
//= require typeahead.bundle
//= require markerclusterer_compiled
//= require i18n/translations
//= require_tree .
+3
View File
@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://coffeescript.org/
+3
View File
@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://coffeescript.org/
+25
View File
@@ -0,0 +1,25 @@
$(document).ready(function(){
$('.statement article').each(function(){
var trimLength = 300;
var trimMargin = 1.2; // don't trim just a couple of words
if($(this).text().length > (trimLength * trimMargin)) {
var text = $(this).text();
var trimPoint = $(this).text().indexOf(" ", trimLength);
var newContent = text.substring(0, trimPoint)+'<span class="read-more">'+text.substring(trimPoint)+'</span><span class="toggle">... <a href="#">' + I18n.t("pages.statements.read_more");
+ '</a></span>';
$(this).html(newContent);
}
});
$('.toggle a').click(function(e){
e.preventDefault();
var para = $(this).closest('article');
var initialHeight = $(this).closest('article').innerHeight();
para.find('.read-more').show();
para.find('.toggle').hide();
var newHeight = para.innerHeight();
para.css('max-height', initialHeight+'px');
para.animate({ maxHeight: newHeight }, 300, function(){
para.css('max-height', 'none');
});
});
});
+36 -5
View File
@@ -19,6 +19,18 @@
@import "typeaheadjs"
@import "footnotes"
@import "statements"
@import "donations"
@import "nav"
*:focus
outline: 0
-webkit-box-shadow: inset 0 2px 2px rgba(0, 0, 0, 0.075), 0 0 8px red
box-shadow: inset 0 2px 2px rgba(0, 0, 0, 0.075), 0 0 8px red
.form-control:focus, input:focus
outline: 0
-webkit-box-shadow: inset 0 2px 2px rgba(0, 0, 0, 0.075), 0 0 8px $brand-success
box-shadow: inset 0 2px 2px rgba(0, 0, 0, 0.075), 0 0 8px $brand-success
.alert-alert
@extend .alert-danger
@@ -26,20 +38,30 @@
.alert-notice
@extend .alert-info
.form-inline > *
margin: 5px
body.admin
background: repeating-linear-gradient(45deg, yellow, yellow 50px, black 50px, black 100px)
body
nav.languages
position: absolute
top: 12px
right: 12px
position: relative
padding: 3px
> .container
.container.content
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19)
padding: 20px
margin-top: 10px
background: #FFF
.anouncement
margin-top: 10px
.lead
margin: 0px
header
.pagelogo
max-height: 91px
@@ -51,6 +73,12 @@ body
.container
padding-left: 0px
header > .row
margin-bottom: 12px
main > h1
margin-top: 0px
ul#topnav
font-size: 1.2em
@@ -128,4 +156,7 @@ body
a
color: #FFF
.row.fix
display: flex
flex-wrap: wrap
width: 100%
+3
View File
@@ -0,0 +1,3 @@
// Place all the styles related to the charges controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
+17
View File
@@ -0,0 +1,17 @@
.progress
.progress-bar-default
background-color: #f5f5f5
color: green
font-size: 1.2em
.progress-target
border-right: 2px solid black
text-align: right
padding: 1em
display: inline-block
.donatebox
font-size: 24px
margin: 15px
width: 80px
height: 80px
+11
View File
@@ -0,0 +1,11 @@
// Place all the styles related to the Greendays controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
.well > h2
margin-top: 0px
#map
width: 100%
height: 300px
margin-bottom: 12px
+34
View File
@@ -0,0 +1,34 @@
@import "variables"
nav#mainnav
marign-top: 12px
font-size: 16pt
a
color: $brand-success
a.selected
font-weight: bold
ul
list-style: none
padding: 0px
li
padding: 5px 5px 5px 10px
ul
padding-left: 20px
li
font-size: 12pt
li.selected
background-color: $brand-success
a
color: white
#greendays
margin-bottom: 12px
border: 1px solid $brand-success
+30
View File
@@ -0,0 +1,30 @@
.field_with_errors {
padding: 2px;
background-color: red;
display: table;
}
#error_explanation {
width: 450px;
border: 2px solid red;
padding: 7px;
padding-bottom: 0;
margin-bottom: 20px;
background-color: #f0f0f0;
h2 {
text-align: left;
font-weight: bold;
padding: 5px 5px 5px 15px;
font-size: 12px;
margin: -7px;
margin-bottom: 0px;
background-color: #c00;
color: #fff;
}
ul li {
font-size: 12px;
list-style: square;
}
}
+3
View File
@@ -14,6 +14,9 @@
margin: 0px
display: inline
.read-more
display: none
@media (max-width: 800px)
.statement
display: block
+1 -1
View File
@@ -1,4 +1,4 @@
$brand-success: #66903F
$brand-success: #4b7d1c
$navbar-default-bg: #FFF
$navbar-default-border: none
$font-size-base: 14px
@@ -33,6 +33,11 @@ class ApplicationController < ActionController::Base
false
end
def only_admin
return true if current_supporter && current_supporter.admin?
raise ActionController::RoutingError, 'Not Found'
end
protected
def configure_permitted_parameters
+29
View File
@@ -0,0 +1,29 @@
class ChargesController < ApplicationController
def new; end
def create
@amount = params[:amount]
begin
@amount = Float(@amount).round(2)
rescue
flash[:error] = 'Bitte geben sie einen Betrag in CHF ein.'
redirect_to donation_path
return
end
@amount = (@amount * 100).to_i # Must be an integer!
if @amount < 500
flash[:error] = 'Ihre Spende muss mindestens 5.- CHF betragen.'
redirect_to donation_path
return
end
Stripe::Charge.create(amount: @amount, currency: 'CHF', source: params[:stripeToken], description: 'Initiativspende')
rescue Stripe::CardError => e
flash[:error] = e.message
redirect_to donation_path
end
end
+60
View File
@@ -0,0 +1,60 @@
class GreendaysController < ApplicationController
before_action :only_admin, except: [:index, :show]
before_action :set_greenday, only: [:show, :edit, :update, :destroy]
def index
@greendays = Greenday.all.sort(title: 1)
end
def new
@greenday = Greenday.new
end
def edit; end
def create
@greenday = Greenday.new(greenday_params)
respond_to do |format|
if @greenday.save
format.html { redirect_to greendays_path, success: 'Greenday was successfully created.' }
format.json { render :show, status: :created, location: @greenday }
else
format.html { render :new }
format.json { render json: @greenday.errors, status: :unprocessable_entity }
end
end
end
def update
respond_to do |format|
if @greenday.update(greenday_params)
format.html { redirect_to greendays_path, notice: 'Greenday was successfully updated.' }
format.json { render :show, status: :ok, location: @greenday }
else
format.html { render :edit }
format.json { render json: @greenday.errors, status: :unprocessable_entity }
end
end
end
def destroy
@greenday.destroy
respond_to do |format|
format.html { redirect_to greendays_path, notice: 'Greenday was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_greenday
@greenday = Greenday.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def greenday_params
params.require(:greenday).permit(:title, :address, :homepage, :description, :logo, :delete_logo)
end
end
@@ -0,0 +1,90 @@
class Network::SignatureCollectionsController < ApplicationController
before_action :only_admin, except: [:index, :show]
before_action :set_network_signature_collection, only: [:show, :edit, :update, :destroy]
# GET /network/signature_collections
# GET /network/signature_collections.json
def index
@query, @location, @distance = params[:query], params[:location], params[:distance]
@network_signature_collections = Network::SignatureCollection.where(:event_date_start.gte => DateTime.now)
@network_signature_collections = @network_signature_collections.or(location_zip_s: /#{@query}/i) if @query
@network_signature_collections = @network_signature_collections.or(location_name: /#{@query}/i) if @query
@network_signature_collections = @network_signature_collections.or(location_address: /#{@query}/i) if @query
distance_from_location
end
def distance_from_location
return unless @location && @distance
location_coordinates = Geocoder.coordinates(@location)
return unless location_coordinates # only filter when coordinates found
@network_signature_collections = @network_signature_collections.geo_near(location_coordinates.reverse).max_distance(@distance.to_f/111)
end
# GET /network/signature_collections/1
# GET /network/signature_collections/1.json
def show
end
# GET /network/signature_collections/new
def new
@network_signature_collection = Network::SignatureCollection.new
end
# GET /network/signature_collections/1/edit
def edit
end
# POST /network/signature_collections
# POST /network/signature_collections.json
def create
@network_signature_collection = Network::SignatureCollection.new(network_signature_collection_params)
respond_to do |format|
if @network_signature_collection.save
format.html { redirect_to @network_signature_collection, notice: 'Signature collection was successfully created.' }
format.json { render :show, status: :created, location: @network_signature_collection }
else
format.html { render :new }
format.json { render json: @network_signature_collection.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /network/signature_collections/1
# PATCH/PUT /network/signature_collections/1.json
def update
respond_to do |format|
if @network_signature_collection.update(network_signature_collection_params)
format.html { redirect_to @network_signature_collection, notice: 'Signature collection was successfully updated.' }
format.json { render :show, status: :ok, location: @network_signature_collection }
else
format.html { render :edit }
format.json { render json: @network_signature_collection.errors, status: :unprocessable_entity }
end
end
end
# DELETE /network/signature_collections/1
# DELETE /network/signature_collections/1.json
def destroy
@network_signature_collection.destroy
respond_to do |format|
format.html { redirect_to network_signature_collections_url, notice: 'Signature collection was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_network_signature_collection
@network_signature_collection = Network::SignatureCollection.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def network_signature_collection_params
params.require(:network_signature_collection).permit(:location_name, :location_zip, :location_address, :event_date_start, :event_date_end)
end
end
+1 -1
View File
@@ -21,7 +21,7 @@ class SupportersController < ApplicationController
private
def supporter_form_params
params.require(:supporter).permit(:first_name, :last_name, :street, :zip, :email, :support, :li_membership, :age_category, :city, :comments)
params.require(:supporter).permit(:first_name, :last_name, :street, :zip, :email, :support, :li_membership, :age_category, :city, :comments, :tel)
end
# We use sendy for newsletters atm
+9
View File
@@ -3,4 +3,13 @@ module ApplicationHelper
content_for :title, strip_tags(page_title.to_s)
page_title
end
def markdown(content)
@markdown ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, space_after_headers: true)
@markdown.render(content)
end
def admin?
current_supporter && current_supporter.admin?
end
end
+2
View File
@@ -0,0 +1,2 @@
module ChargesHelper
end
+43
View File
@@ -0,0 +1,43 @@
class Greenday
include Mongoid::Document
include Mongoid::Timestamps
include Geocoder::Model::Mongoid
include Mongoid::Paperclip
before_save :delete_logo?
has_mongoid_attached_file :logo,
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' }
field :title, type: String
field :address, type: String
field :homepage, type: String
field :description, type: String
field :coordinates, type: Array
geocoded_by :address
after_validation :geocode # auto-fetch coordinates
validates :title, presence: true
validates :address, presence: true
validates_attachment_content_type :logo, content_type: ['image/jpg', 'image/jpeg', 'image/png', 'image/gif']
def delete_logo
@delete_logo ||= '0'
end
attr_writer :delete_logo
private
def delete_logo?
logo.clear if @delete_logo == '1'
end
end
@@ -0,0 +1,30 @@
class Network::SignatureCollection
include Mongoid::Document
include Geocoder::Model::Mongoid
field :location_name, type: String
field :location_zip, type: Integer
field :location_zip_s, type: String
field :location_address, type: String
field :event_date_start, type: Time
field :event_date_end, type: Time
field :coordinates, type: Array
geocoded_by :address
before_save :update_location # auto-fetch coordinates
before_save :stringify_zip # auto-fetch coordinates
def address
"#{location_zip} #{location_name}, Switzerland"
end
def update_location
geocode
end
def stringify_zip
self.location_zip_s = self.location_zip.to_s
end
index({coordinates: "2d"})
end
+1
View File
@@ -45,6 +45,7 @@ class Supporter
field :comments, type: String
field :language, type: String
field :duplicate, type: Boolean, default: false
field :tel, type: String
validates :first_name, presence: true
validates :last_name, presence: true
+1 -2
View File
@@ -10,7 +10,6 @@ css:
#map
javascript:
function pinSymbol(color) {
return {
path: 'M 0,0 C -2,-20 -10,-22 -10,-30 A 10,10 0 1,1 10,-30 C 10,-22 2,-20 0,0 z M -2,-30 a 2,2 0 1,1 4,0 2,2 0 1,1 -4,0',
@@ -24,7 +23,7 @@ javascript:
function initMap() {
var supporters = #{@supporters.to_json.html_safe}
console.log(@supporters.to_json.html_safe);
var customMapType = new google.maps.StyledMapType([{"featureType":"water","elementType":"geometry","stylers":[{"color":"#e9e9e9"},{"lightness":17}]},{"featureType":"landscape","elementType":"geometry","stylers":[{"color":"#f5f5f5"},{"lightness":20}]},{"featureType":"road.highway","elementType":"geometry.fill","stylers":[{"color":"#ffffff"},{"lightness":17}]},{"featureType":"road.highway","elementType":"geometry.stroke","stylers":[{"color":"#ffffff"},{"lightness":29},{"weight":0.2}]},{"featureType":"road.arterial","elementType":"geometry","stylers":[{"color":"#ffffff"},{"lightness":18}]},{"featureType":"road.local","elementType":"geometry","stylers":[{"color":"#ffffff"},{"lightness":16}]},{"featureType":"poi","elementType":"geometry","stylers":[{"color":"#f5f5f5"},{"lightness":21}]},{"featureType":"poi.park","elementType":"geometry","stylers":[{"color":"#dedede"},{"lightness":21}]},{"elementType":"labels.text.stroke","stylers":[{"visibility":"on"},{"color":"#ffffff"},{"lightness":16}]},{"elementType":"labels.text.fill","stylers":[{"saturation":36},{"color":"#333333"},{"lightness":40}]},{"elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"transit","elementType":"geometry","stylers":[{"color":"#f2f2f2"},{"lightness":19}]},{"featureType":"administrative","elementType":"geometry.fill","stylers":[{"color":"#fefefe"},{"lightness":20}]},{"featureType":"administrative","elementType":"geometry.stroke","stylers":[{"color":"#fefefe"},{"lightness":17},{"weight":1.2}]}], {
name: 'Black White'
});
@@ -2,4 +2,4 @@ h2 Ziele der Initiative
ol
li Erwachsene haben genauso die Freiheit und das Recht Cannabis zu konsumieren, wie Alkohol oder Tabak.
li Niemand muss gezwungen sein, sich auf dem Schwarzmarkt zu bedienen.
li Steuereinnahmen und Einsparungen aus der Strafverfolgung sollen der Prävention, der Forschung oder den Sozialversicherungen zugutekommen.
li Steuereinnahmen und Einsparungen aus der Strafverfolgung sollen der Prävention, der Suchtbehandlung, der Forschung oder den Sozialversicherungen zugutekommen.
+3
View File
@@ -0,0 +1,3 @@
h1 = title 'Vielen Dank für Ihre Spende'
p Auch dank Ihrer Hilfe können wir uns aktiv für die Interessen der Cannabis-Konsumenten einsetzen.
+4
View File
@@ -0,0 +1,4 @@
b Am Samstag 25. November ist Nationaler CBD-Tag!
p Um die #{link_to 'Finanzierung der Sammlung und Beglaubigung', donation_path} der eidgenössischen #{link_to 'Volksinitiative zur Cannabislegalisierung', initiative_text_path} in der Schweiz voranzutreiben, lanciert der Verein Legalize it! in Zusammenarbeit mit dem #{link_to 'Branchenverband IG Hanf', 'https://www.ighanf.ch/D_about.html', target: '_blank'} am Samstag 25. November 2017 den ersten nationalen CBD-Tag.
p In jedem Laden steht eine Spendenbox, welche für Spenden für die Initiative benutzt werden kann und die dem Verein Legalize it! zugute kommt.
p Welche Läden mitmachen, seht ihr auf der Karte:
+14
View File
@@ -0,0 +1,14 @@
= simple_form_for(@greenday) do |f|
= f.error_notification
.form-inputs
= f.input :title
= f.input :address, as: :text
= f.input :homepage
= f.input :description, as: :text
= f.input :logo, as: :file, required: false
= image_tag f.object.logo.url(:original), alt: '', class: 'img-responsive'
= f.input :delete_logo, as: :boolean
.form-actions
= f.button :submit, 'Shop speichern'
@@ -0,0 +1,2 @@
json.extract! greenday, :id, :title, :address, :coordinates, :homepage, :logo, :description, :created_at, :updated_at
json.url greenday_url(greenday, format: :json)
+8
View File
@@ -0,0 +1,8 @@
h1 Editing greenday
== render 'form'
= link_to 'Show', @greenday
' |
= link_to 'Back', greendays_path
+69
View File
@@ -0,0 +1,69 @@
h1.sr-only = title '#Greensaturday'
= render 'description'
#map
= link_to 'Neuen Shop erfassen', new_greenday_path if admin?
.row.fix
- @greendays.each do |greenday|
.col-xs-12.col-sm-6.col-lg-4
.well
h2 = greenday.title
- if greenday.logo.url(:original) != '/logos/original/missing.png'
= image_tag greenday.logo.url(:original), alt: '', class: 'img-responsive'
address = simple_format(greenday.address)
- if greenday.homepage
= link_to("Website", greenday.homepage, target: "_blank")
p = markdown(greenday.description).html_safe
- if admin?
= link_to 'Bearbeiten', edit_greenday_path(greenday)
| &nbsp;
= link_to 'Löschen', greenday, data: { confirm: 'Are you sure?' }, method: :delete
javascript:
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 8, center: {lat: 47.242, lng: 8.133},
});
var greendays_url = "#{greendays_url(format: :json)}"
var infowindow = new google.maps.InfoWindow({
content: '',
maxWidth: 200
});
$.getJSON(greendays_url, function(json) {
$.each(json, function(key, data) {
var marker = new google.maps.Marker({
position: {lat: data.coordinates[1], lng: data.coordinates[0] },
map: map,
title: data.title
});
marker.addListener('click', function() {
infowindow.open(map, marker);
var content = '<b>' + data.title + '</b>'
if(data.logo) {
content += '<img src="' + data.logo + ' alt="" width="100%"/>'
}
content += '<address>' + data.address.replace(/\n/g,"<br>")
if(data.homepage) {
content += '<br/><a href="' + data.homepage + '" target="_blank">Website</a>'
}
content += '</address>'
if(data.description) {
content += '<p>' + data.description + '</p>'
}
infowindow.setContent(content);
});
});
});
}
script async="" defer="" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBbwMtGKDqf4i8x9-OVP1-H_QVAKp92h2M&callback=initMap&libraries=visualization"
+1
View File
@@ -0,0 +1 @@
json.array! @greendays, partial: 'greendays/greenday', as: :greenday
+5
View File
@@ -0,0 +1,5 @@
h1 New greenday
== render 'form'
= link_to 'Back', greendays_path
+38 -14
View File
@@ -22,10 +22,24 @@ html lang="#{I18n.locale}"
link href="/favicon-96x96.png" rel="icon" sizes="96x96" type="image/png" /
link href="/favicon-16x16.png" rel="icon" sizes="16x16" type="image/png" /
link href="/manifest.json" rel="manifest" /
meta name="viewport" content="width=device-width, initial-scale=1.0"
meta content="#ffffff" name="msapplication-TileColor" /
meta content="/ms-icon-144x144.png" name="msapplication-TileImage" /
meta content="#ffffff" name="theme-color" /
meta property="og:title" content="#{content_for(:title)}"
meta property="og:description" content="#{t('shared.description')}"
meta property="og:image" content="#{image_url('ch420_logo.png')}"
meta name="twitter:title" content="#{content_for(:title)}"
meta name="twitter:image" content="#{image_url('ch420_logo.png')}"
meta name="twitter:site" content="@vereinlegalize"
meta name="twitter:description" content="#{t('shared.description')}"
meta name="twitter:image:alt" content="#{t('shared.header.logo')}"
body class="#{'admin' if controller.admin_area}"
= render 'donation_button'
javascript:
@@ -36,23 +50,30 @@ html lang="#{I18n.locale}"
ga('create', 'UA-79948850-1', 'auto');
ga('send', 'pageview');
.container.anouncement
/.text-center.lead.alert.alert-success
a href="https://wemakeit.com/projects/cannabislegalisierungs-crowd" class="text-success"
= t('shared.crowdfunding')
nav.languages
h2.sr-only =t('.lang')
a href='/' lang='de'
| Deutsch
| &nbsp; | &nbsp;
a href='/it' lang='it'
| Italiano
| &nbsp; | &nbsp;
a href='/fr' lang='fr'
| Français
br/
.container
nav.languages.pull-right
h2.sr-only =t('shared.lang')
a href='/' lang='de'
| Deutsch
| &nbsp; | &nbsp;
a href='/it' lang='it'
| Italiano
| &nbsp; | &nbsp;
a href='/fr' lang='fr'
| Français
.container.content
= render 'shared/flashes'
= render 'shared/header'
= render 'shared/topnavigation'
= yield
.row
.col-xs-12.col-sm-3
nav#mainnav = render_navigation
.col-xs-12.col-sm-9
main= yield
hr
footer.row
.col-xs-12.col-sm-6
@@ -62,3 +83,6 @@ html lang="#{I18n.locale}"
.col-xs-12.col-sm-2
= render 'address'
javascript:
I18n.defaultLocale = "#{I18n.default_locale}";
I18n.locale = "#{I18n.locale}";
@@ -0,0 +1,12 @@
= simple_form_for(@network_signature_collection) do |f|
= f.error_notification
.form-inputs
= f.input :location_name
= f.input :location_zip, as: :numeric
= f.input :location_address
= f.input :event_date_start, as: :datetime
= f.input :event_date_end, as: :datetime
.form-actions
= f.button :submit, value: t('shared.save')
@@ -0,0 +1,2 @@
json.extract! network_signature_collection, :id, :location_name, :location_zip, :location_address, :event_date_start, :event_date_end, :created_at, :updated_at
json.url network_signature_collection_url(network_signature_collection, format: :json)
@@ -0,0 +1,8 @@
h1 Editing network_signature_collection
== render 'form'
= link_to 'Show', @network_signature_collection
' |
= link_to 'Back', network_signature_collections_path
@@ -0,0 +1,47 @@
h1 = title t('.title')
css:
.form-inline > * {
margin: 5px;
}
form
.form-inline
input.form-control placeholder="#{t('.search')}" name="query" value="#{@query}"
input.form-control placeholder="#{t('.location')}" name="location" value="#{@location}"
select.form-control name="distance"
- [5, 10, 20, 50, 100, 150, 200].each do | d |
- if d == @distance.to_i
option value="#{d}" selected="selected" #{d} Km
- else
option value="#{d}" #{d} Km
input.btn.btn-primary type="submit" value="#{t('.search')}"
table.table
thead
tr
th = Network::SignatureCollection.human_attribute_name :location_name
th = Network::SignatureCollection.human_attribute_name :location_zip
th = Network::SignatureCollection.human_attribute_name :location_address
th = Network::SignatureCollection.human_attribute_name :event_date_start
th = Network::SignatureCollection.human_attribute_name :event_date_end
- if admin?
th
th
th
tbody.list
- @network_signature_collections.each do |network_signature_collection|
tr
td.location_name = network_signature_collection.location_name
td.location_zip = network_signature_collection.location_zip
td.location_address = network_signature_collection.location_address
td.event_date_start = l network_signature_collection.event_date_start, format: :short
td.event_date_end = l network_signature_collection.event_date_end, format: :short
- if admin?
td = link_to t('shared.show'), network_signature_collection
td = link_to t('shared.edit'), edit_network_signature_collection_path(network_signature_collection)
td = link_to t('shared.destroy'), network_signature_collection, data: { confirm: 'Are you sure?' }, method: :delete
br
= link_to t('.new'), new_network_signature_collection_path
@@ -0,0 +1 @@
json.array! @network_signature_collections, partial: 'network_signature_collections/network_signature_collection', as: :network_signature_collection
@@ -0,0 +1,5 @@
h1 New network_signature_collection
== render 'form'
= link_to 'Back', network_signature_collections_path
@@ -0,0 +1,21 @@
p#notice = notice
p
strong = Network::SignatureCollection.human_attribute_name :location_name
= @network_signature_collection.location_name
p
strong = Network::SignatureCollection.human_attribute_name :location_zip
= @network_signature_collection.location_zip
p
strong = Network::SignatureCollection.human_attribute_name :location_address
= @network_signature_collection.location_address
p
strong = Network::SignatureCollection.human_attribute_name :event_date_start
= @network_signature_collection.event_date_start
p
strong = Network::SignatureCollection.human_attribute_name :event_date_end
= @network_signature_collection.event_date_end
= link_to 'Edit', edit_network_signature_collection_path(@network_signature_collection)
' |
= link_to 'Back', network_signature_collections_path
@@ -0,0 +1 @@
json.partial! "network_signature_collections/network_signature_collection", network_signature_collection: @network_signature_collection
+101
View File
@@ -0,0 +1,101 @@
h1 = title 'Wie macht man eine Volksinitiative?'
p TL;DR: Wenn wir 100'000 CHF erreichen, versuchen wir Methode C, wenn wir 250'000 CHF erreichen, Methode B und wenn wir 500'000 oder mehr erreichen, Methode A. Wenn wir weniger als 100'000 erreichen, können wir keine Initiative machen. <a href="#{donation_path}">Über Spenden, die wir hier entgegen nehmen</a>, würden wir uns sehr freuen!
h2 Einleitung
p Im April haben wir unseren Initiativtext bei der Bundeskanzlei eingereicht. Jedoch steht die Initiative noch auf der Kippe, denn: Uns fehlen bestimmte Ressourcen für die Sammlung und Beglaubigung der Initiative.
h2 Was wir unter Ressourcen verstehen
p Die Ressourcen jedes Projekts unterteilen wir in vier Kategorien: Arbeit, Zeit, Personen und Kapital. Ein kleines Beispiel zur Veranschaulichung:
p Anna und Bea wollen in einem Tag eine Holzbox bauen. Dafür sitzen die beiden erst zwei Stunden zusammen und planen. Danach läuft Anna innerhalb einer Stunde in den Baumarkt, kauft sechs Bretter à je 5 CHF, einen Hammer à 30 CHF und vier Nägel à 2 CHF und läuft zurück. Bea baut danach innerhalb von zwei Stunden die Holzbox.
ul
li Personen: 2 (Anna und Bea)
li Kapital: 6 Bretter x 5 CHF + 1 Hammer à 30 CHF + 4 Nägel à 2 CHF = 68 CHF
li Arbeit: Fahrt Baumarkt Anna (1h) + Bau Holzbox Bea (2h) = 3h
li Zeit: Arbeit (3h) + Zweistündige Sitzung à 2 Personen (4h) = 7h
p Das Projekt benötigt also 2 Personen, dauert 7 Stunden (wobei 3 Stunden davon die eigentliche Arbeit darstellt) und kostet 68 CHF. Soweit mal unsere simple Methode der Planung.
h2 Die Frage ist jetzt natürlich: Wie viel benötigt die Sammlung und Beglaubigung einer Volksinitiative an...
h3 ...Arbeit?
p Wenn wir von durchschnittlich 10 Unterschriften, die pro Stunde gesammelt werden, ausgehen (mehr dazu unten im Text), wäre die Anzahl Arbeitsstunden für die Sammlung = ca 10'000h
p Bezüglich Beglaubigung haben wir uns Referenzzahlen eingeholt von anderen Kampagnen und rechnen mit Arbeitsstunden von ca. 2'000h.
p Wir rechnen also damit, dass insgesamt mindestens 10'000h + 2'000h = 12'000 Arbeit geleistet werden muss, nur für die Sammlung und Beglaubigung einer Volksinitiative.
h3 ...Zeit?
p Nach vielen Gesprächen mit Personen anderer Initiativen haben wir als Richtwert für die Anzahl Zeitstunden im Vergleich zu den Anzahl Arbeitsstunden den Faktor 2 definiert. Also jede Stunde Arbeit an der Initiative erfordert eine zusätzliche Stunde, die in die Vorplanung geht.
ul
li Zeit Sammlung: 10'000h
li Zeit Beglaubigung: 2'000h.
p Wir rechnen also mit zusätzlichen 10'000h + 2'000h = 12'000 Zeitstunden neben den 12'000 Arbeitsstunden, nur für die Sammlung und Beglaubigung einer Volksinitiative.
h3 ...Personen?
p Grundsätzlich gibt es drei Kategorien:
ol
li Bezahlte Personen, die ein Arbeitspensum haben.
li Aktive Personen, die 7 oder mehr Stunden pro Woche aufwenden können. Und zwar jede Woche über einen Zeitraum von 18 Monaten.
li Pikett Personen, die man punktuell für kurze Arbeiten (< 5 Stunden), wie zum Beispiel das Helfen bei einer Sammlung, anfragen kann.
p Wie viele Personen man von jeder Kategorie benötigt, wird weiter unten erläutert.
h3 ...Geld?
p Die wahrscheinliche wichtigste Komponente, wie immer im Leben, ist die Frage des Geldes: Wie viel Geld benötigt man für die Sammlung und Beglaubigung einer Volksinitiative?
p Wir stellen drei Varianten vor:
.well
b Variante A - Die 500'000 CHF-Variante
br
em Geschätzte Erfolgschance: 90 Prozent
ul
li Bezahlte Personen: 2
li Aktive Personen > 7h/Woche : Keine
li Pikett Personen < 5h: Keine
li Lohnkosten: 2 Personen à 100 Prozent à 5'000 CHF / Monat über 18 Monate = 180'000 CHF
li Bezahlte Sammler: 2 CHF pro Unterschrift à 110'000 Unterschriften = 220'000 CHF.
li Beglaubigungskosten: 100'000 CHF (Externes Büro)
li Reserven: Keine
p <strong>Schlussrechnung</strong>: Lohnkosten (180'000 CHF) + Sammelkosten (220'000 CHF) + Beglaubigungskosten (100'000 CHF) = <strong>500'000 CHF.</strong>
hr
b Variante B - Die 250'000 CHF-Variante
br
em Geschätzte Erfolgschance: 50 Prozent
ul
li Bezahlte Personen: 2
li Aktive Personen >7h / Woche: 10
li Pikett Personen < 5h: ca. 50
li Lohnkosten: 2 Personen à 100 Prozent à 5'000 CHF / Monat über 18 Monate = 180'000 CHF
li Sammelkosten: 60'000 CHF (Porto, Werbung, Sammeltage)
li Beglaubigungskosten: 0 (alles von Aktivisten gemacht)
li Reserven: 10'000 CHF
p <strong>Schlussrechnung</strong>: Lohnkosten (180'000 CHF) + Sammelkosten (60'000 CHF) + Reserven (10'000 CHF) = <strong>250'000 CHF.</strong>
p Das Problem bei dieser Variante ist, dass einerseits 250'000 CHF auftreiben sehr schwer ist, noch schwieriger ist aber, 10 Personen zu finden, die über einen 18monativen Zeitraum > 7 Stunden ehrenamtlich pro Woche helfen.
hr
b Variante C - Die 100'000 CHF-Variante
br
em Geschätzte Erfolgschance: 25 Prozent
ul
li Bezahlte Personen: 2
li Aktive Personen >7h / Woche: (400 à 2 Wochen)
li Pikett Personen: ca. 2'000 (à 1 Tag)
li Lohnkosten: 84'000 CHF
li Sammelkosten: 6'000 CHF
li Beglaubigungskosten: 0 (alles von Aktivisten gemacht)
li Reserven: 10'000 CHF
p <strong>Schlussrechnung</strong>: Lohnkosten (84'000 CHF) + Sammelkosten (6'000 CHF) = <strong>100'000 CHF.</strong>
p Wir werden das Konzept zu dieser Variante, das sehr bald hier erscheinen wird, noch ganz konkret im Detail beschreiben. In diesem <a href="http://www.tagesanzeiger.ch/zuerich/region/kiffer-wollen-temporekord-im-unterschriftensammeln/story/25552535">TA-Artikel</a> findet ihr aber einen kleinen Vorgeschmack, in welche Richtung wir denken.
h2 Drei Varianten - Welche wird es?
p Welche Variante es wird, hängt also vor allem davon ab, wie viel Geld bis Ende Jahr eingespielt wird. Wir nehmen den 31.12.2017 als Stichdatum, weil wir denken, dass ein halbes Jahr eine sinnvolle Referenzgrösse ist um zu schauen, wie die Situation ausschaut. Welche Variante es wird, hängt also einfach von den Einnahmen zusammen: Um die 100'000 CHF = Variante C, um die 250'000 CHF = Variante B und 500'000 oder mehr = Variante A. Sollten wir weniger als 100'000 CHF einspielen, dann werden wir wohl den Initiativtext zurückziehen, denn einen gewissen Geldbetrag brauchen wir einfach, um eine Initiative durchzuziehen.
p Soweit mal die Aussichten. Wir sind positiv eingestellt und überzeugt, dass wir bis Ende Jahr eine gute Bilanz ziehen können. Wenn ihr uns unterstützen wollt, dann könnt ihr das hier tun. Auf die kommende Legalisierung!
+125 -18
View File
@@ -1,28 +1,135 @@
h1 = title 'Deine Spende zählt - Verein Legalize it!'
p
dl.dl-horizontal
dt Postkonto:
dd 87-091354-3, Verein Legalize it!, Postfach 2159, 8031 Zürich
dt IBAN:
dd CH02 0900 0000 8709 1354 3
dt Zahlungszweck:
dd Spende Initiative
script src="https://checkout.stripe.com/checkout.js"
javascript:
var handler = StripeCheckout.configure({
key: "#{Rails.configuration.stripe[:publishable_key]}",
locale: '#{I18n.locale}',
image: '#{image_url("ch420_logo.png")}',
name: 'Verein Legalize it!',
currency: 'CHF',
description: 'Initiativspende',
token: function(token) {
$('input#stripeToken').val(token.id);
$('form').submit();
}
});
h2 Spendenbarometer
b Aktueller Stand: 73'000 CHF
.row
.col-xs-12.col-md-9
.col-xs-12
.progress-target style="width: 20%"
= link_to "Variante C:", collection_concept_path
br
| 100'000 CHF
.progress-target style="width: 30%"
= link_to "Variante B:", collection_concept_path
br
| 250'000 CHF
.progress-target style="width: 48%"
= link_to "Variante A:", collection_concept_path
br
| 500'000 CHF
.progress
.progress-bar.progress-bar-success role="progressbar" aria-valuenow="73000" aria-valuemin="0" aria-valuemax="500000" style="width: 14.6%"
p Detailliertere Informationen, wie dieses Geld eingesetzt wird, findest du unter <a href="#{collection_concept_path}">«Wie macht man eine Volksinitiative?»</a>
h2 Via Kreditkarte online spenden
= form_tag charges_path do
= hidden_field_tag(:stripeToken)
- if flash[:error].present?
#error_explanation.text-danger
= flash[:error]
.row
.col-xs12.col-md-5
button.donatebox.btn.btn-success onclick="donate(20)" 20 .-
button.donatebox.btn.btn-success onclick="donate(50)" 50 .-
button.donatebox.btn.btn-success onclick="donate(100)" 100 .-
button.donatebox.btn.btn-success onclick="donate(200)" 200 .-
.col-xs12.col-md-6
.form-group
strong oder einen eigenen Betrag
.form-group
.input-group
.input-group-addon CHF
= text_field_tag(:amount, 50 , class: 'form-control')
.form-group
button#donateButton.btn.btn-success Spenden übermitteln
h2 Mit Bitcoin und Bitcoin Cash spenden
.row
.col-md-6.col-xs-12
p
= image_tag '1LaYbTiCjhrUhxrQ9D5BQUfxPmRqJ7Q3gG.png', alt: 'Bitcoin Adresse: 1LaYbTiCjhrUhxrQ9D5BQUfxPmRqJ7Q3gG', width: '150', class: 'pull-right'
div
| Gerne nehmen wir auch Spenden via Bitcoin unter folgender Adresse entgegen:
br
strong 1LaYbTiCjhrUhxrQ9D5BQUfxPmRqJ7Q3gG
.col-md-6.col-xs-12
p
= image_tag '1LVGcneFcYqCkhDFNsnhWb6x7cCHHxakg9.png', alt: 'Bitcoin Cash Adresse: 1LVGcneFcYqCkhDFNsnhWb6x7cCHHxakg9', width: '150', class: 'pull-right'
div
| Oder Bitcoin Cash unter folgender Adresse:
br
strong 1LVGcneFcYqCkhDFNsnhWb6x7cCHHxakg9
.clearfix
h2 Per Überweisung spenden
.row
.col-md-7.col-xs-12
dl.dl-horizontal
dt Postkonto:
dd 87-091354-3, Verein Legalize it!, Postfach 2159, 8031 Zürich
dt IBAN:
dd CH02 0900 0000 8709 1354 3
dt Zahlungszweck:
dd Spende Initiative
.col-md-5.col-xs-12
= link_to asset_path('Einzahlungsschein_Spende_Initiative.pdf') do
= image_tag('Einzahlungsschein_Spende_Initiative.jpg', class:'img-responsive pagelogo', alt: 'Einzahlungsschein Spende initiative')
= image_tag('Einzahlungsschein_Spende_Initiative.jpg', class:'img-responsive', alt: 'Einzahlungsschein Spende initiative')
h2 Warum kann ich nicht auch online oder per Kreditkarte spenden?
p Wir haben mehrere Versuche unternommen, dies mittels verschiedener (zahlbaren) Payment-Service-Providern zu ermöglichen, sind jedoch immer wieder gescheitert. Die Gründe dafür sind vielfältig: Zum einen bieten viele solche Dienstleister ihren Service gar nicht für Vereine an, zum anderen ist das Schweizer Vereinsrecht relativ liberal. Ein zentrales Register für Vereine wie in anderen Ländern üblich, gibt es nicht. Einzig ein Handelsregistereintrag könnte ein wenig Klarheit schaffen. Dies ist jedoch zu kostspielig und würde momentan zu viel Zeit in Anspruch nehmen. Selbst wenn wir einen solchen hätten, wäre es nicht sicher, dass Dienste wie beispielsweise PayPal uns akzeptieren würden.
p Eine andere schwierigere Hürde ist unser Umfeld. Wir haben, genau wie in Amerika, die Schwierigkeit, dass unser Themenbereich Cannabis ist. Da der Umgang mit Cannabis illegal ist, scheinen die Banken der Logik verfallen zu sein, dass alles was mit Cannabis zu tun hat, auch illegal sei, notabene auch das Ändern des illegalen Status. Viele Finanzdienstleister wie etwa Stripe.com lehnen daher jegliche Zusammenarbeit kategorisch ab.
p Somit bleibt nur zum guten alten Einzahlungsschein zu greifen beziehungsweise die richtigen Zahlenkombinationen beim E-Banking an den richtigen Stellen einzufügen.
p
b Wir würden uns freuen, wenn ihr das macht und uns finanziell unter die Arme greift.
p Danke, dein Verein Legalize it!
h3 Weitere Informationen zur Initiative findest du hier:
ul
li = link_to 'Initiativ-Seite', 'https://www.hanflegal.ch/initiative'
li = link_to 'Onlineformular', root_path
javascript:
$('.donatebox').on('click', function(e) {
e.preventDefault();
});
function donate(amount) {
$('#amount').val(amount);
$('#donateButton').click();
}
$('#donateButton').on('click', function(e) {
e.preventDefault();
$('#error_explanation').html('');
var amount = $('input#amount').val();
amount = parseFloat(amount);
if (isNaN(amount)) {
$('#error_explanation').html('<p>Bitte geben sie einen Betrag in CHF ein.</p>');
}
else if (amount < 5.00) {
$('#error_explanation').html('<p>Ihre Spende muss mindestens 5.- CHF betragen.</p>');
}
else {
amount = amount * 100; // Needs to be an integer!
handler.open({
amount: Math.round(amount)
})
}
});
+7 -2
View File
@@ -6,7 +6,7 @@
ul
li Erwachsene haben genauso die Freiheit und das Recht Cannabis zu konsumieren, wie Alkohol oder Tabak.
li Niemand muss gezwungen sein, sich auf dem Schwarzmarkt zu bedienen.
li Steuereinnahmen und Einsparungen aus der Strafverfolgung sollen der Prävention, der Forschung oder den Sozialversicherungen zugutekommen.
li Steuereinnahmen und Einsparungen aus der Strafverfolgung sollen der Prävention, der Suchtbehandlung, der Forschung oder den Sozialversicherungen zugutekommen.
h2 Wem nützt die Initiative?
p Jeder Schweizer Bürger profitiert von der Annahme der Initiative. Gelder, die über den Schwarzmarkt in internationale Terror-Organisationen fliessen, werden versteuert und Millionen von Steuergeldern in der Strafverfolgung eingespart. Zehntausende von Patienten profitieren von der Möglichkeit einer alternativen Behandlung mittels Cannabis. Hunderttausende Schweizer Bürger werden entkriminalisiert und in Freiheit Cannabis als Genussmittel konsumieren.
@@ -59,7 +59,12 @@
p Nein, man müsste sich in einem geschlossenen Raum befinden und Unmengen von Cannabis verbrennen, um eine Wirkung zu erzielen. Das Einatmen einer vorbeiziehenden süsslichen Rauchschwade hat absolut keine Wirkung.
h2 Verführt Cannabis zum Konsum anderer Drogen?
p Nein, die sogenannte Einstiegsdrogen-Theorie gilt bei allen Experten als überholt. Im Gegenteil, die Trennung von sogenannten weichen und harten Drogen kann nur durch eine konsequente Legalisierung vollzogen werden. Wenn Personen, welche nicht mehr in Kontakt mit Dealern kommen, die auch noch harte Drogen verkaufen, greifen sie weniger zu anderen Drogen. Ein Modell, dass in Holland seit Jahrzehnten erfolgreich umgesetzt wird.
p Nein, die sogenannte Einstiegsdrogen-Theorie gilt bei allen Experten als überholt. Im Gegenteil, die Trennung von sogenannten weichen und harten Drogen kann nur durch eine konsequente Legalisierung vollzogen werden. Personen kommen weniger in Kontakt mit anderen Drogen, wenn sie keinen Kontakt mit Dealern haben müssen. Ein Modell, dass in Holland seit Jahrzehnten erfolgreich umgesetzt wird.
h2 Führt Cannabis-Konsum zu Psychosen?
p Das Risiko, durch das Rauchen von Cannabis eine psychische Erkrankung zu entwickeln, ist in Relation zur gesamten Zahl aller Cannabis-Konsumenten sehr gering und wissenschaftlich nicht bewiesen.
p <a href="http://www.sciencedirect.com/science/article/pii/S0955395909001182" target="_blank">Studien, die sich mit dieser Thematik befassen, liefern lediglich Hinweise</a>. Die meisten Studien sind nicht oder quasi experimentell. Das heisst sie Untersuchen das Geschehene erst im Nachhinein. Die konsumierte Menge wird oft gar nicht erhoben oder kann nicht exakt bestimmt werden. Die Qualität und der Wirkstoffgehalt kann nicht überprüft werden, da auf dem Schwarzmarkt bezogenes Cannabis weder geprüft, noch deklariert ist. Es ist, als ob man ein Weizenbier mit gepanschtem Wodka vergleichen würde. Meist kann also nicht einmal aussgeschlossen werden ob nicht auch Verunreinigungen den Effekt erklären und zur Psychose führen könnte.
p Wird die Ursache und Wirkung untersucht, muss die zeitliche Abfolge der Ereignisse berücksichtig werden. Es muss also die Erkrankung nach dem Konsum nachgewiesen sein. Psychische Erkrankungen beginnen oft schleichend und werden von den Betroffenen erst spät als solche wahrgenommen. Cannabis-Konsum, der zwischen Erkrankung und Diagnose beginnt, ist demnach nicht mehr Ursache, sondern Wirkung. Dieses Phänomen kann als eine unbewusste Selbstmedikation interpretiert werden. Bei vielen Studien wird, gerade diese Annahme der Kausalität schlicht nicht berücksichtigt ein methodischer Mangel der Studie.
h2 Wie wird Cannabis hergestellt und gewonnen?
p Cannabinoide, also die verschiedenen Wirkstoffe sind in der Cannabispflanze, insbesondere in der weiblichen Blüte vorhanden. Die Pflanze kann relativ einfach angepflanzt werden, danach können die getrockneten Blüten direkt konsumiert oder weiter verarbeitet werden. Im Prinzip reicht es ein Samen in einem Blumentopf zu setzen und regelmässig zu giessen.
+20 -6
View File
@@ -1,15 +1,29 @@
sass:
.initiative_text
ol
counter-reset: item
list-style: none
li
counter-increment: item
li:before
content: counter(item)
vertical-align: super
font-size: 0.8em
display: inline-block
h1= title 'Der Initiativtext im Wortlaut'
.well
.well.initiative_text
p Die Bundesverfassung vom 18. April 1999 wird wie folgt geändert:
p Art. 105a (neu) Cannabis:
ul
li Der Konsum von Stoffen und Präparaten des Wirkungstyps Cannabis sowie die Vorbereitung zum eigenen Konsum sind straffrei. Der gemeinschaftliche Anbau von Cannabis für den Eigenbedarf ist ebenfalls straffrei.
ol
li Der Konsum von Stoffen und Präparaten des Wirkungstyps Cannabis sowie die Vorbereitung zum eigenen Konsum ist straffrei. Der Anbau von Pflanzen, welche die Herstellung von Stoffen und Präparaten dieses Wirkungstyps für den Eigenbedarf ermöglichen, ist ebenfalls straffrei.
li Der Bund erlässt Vorschriften über den gewerblichen Anbau und die Herstellung sowie den Handel mit Stoffen und Präparaten des Wirkungstyps Cannabis.
li Die Abgabe von Stoffen und Präparaten des Wirkungstyps Cannabis an Minderjährige ohne medizinische Indikation ist verboten.
p Art. 131 Abs.1 Bst. f
ul
ol
li
| Der Bund kann besondere Verbrauchssteuern erheben auf
| Der Bund kann besondere Verbrauchssteuern erheben auf:
br
| f. Stoffe und Präparate des Wirkungstyps Cannabis, welche nicht der medizinischen Anwendung dienen.
| &nbsp; f. Stoffe und Präparate des Wirkungstyps Cannabis, welche nicht der medizinischen Anwendung dienen.
p Feedback und konstruktive Kritik ist per E-Mail herzlich willkommen. Als Cannabis im Sinne dieses Artikels gelten alle Stadien der Hanfpflanze (inkl. Saatgut) und deren Produkte, unabhängig von ihrem Gehalt an Tetrahydrocannabinol (THC). Als „Vorbereitung“ gilt vor allem der Besitz, der Erwerb und der Anbau für den eigenen Konsum.
-17
View File
@@ -1,17 +0,0 @@
h1= title 'Il testo delliniziativa'
.well
p La Costituzione Federale del 18 aprile 1999 é stata modifata come segue
p Art. 105a (nuovo) Cannabis:
ul
li Il consume di sostanze e preparati a base di cannabis, derivati o sostanze con effetto simile alla cannabis, e la preparazione per il proprio consumo non sono punibili. La coltivazione di cannabis per uso proprio non è punibile.
li La Confederazione emana prescrizioni sulla coltivazione commerciale e la produzione e il commercio di sostanze e preparati del tipo di effetto di cannabis.
li Il rilascio di sostanze e preparati a base di cannabis e di sostanze con effetto simile alla cannabis ai minori senza indicazione medica è vietata.
p Art. 131 Abs.1 Bst. f
ul
li
| La Confederazione può riscuotere imposte speciali di consumo su
br
| f. cannabis o sostanze con effetto simile alla cannabis, che non necessitano l'applicazione medica.
p In questo articolo tutte le fasi della pianta della canapa (semi incl.) e applicare i loro prodotti, indipendentemente dal loro contenuto di tetraidrocannabinolo (THC). Come „preparazione“ è particolarmente vero per il possesso, l'acquisto e la coltivazione per il consumo personale.
+18
View File
@@ -0,0 +1,18 @@
h1 = title 'Netzwerk Legalisierung'
p Liebe Legalisierende
p Du bist auf der offiziellen Webseite für die Volksinitiative zur Legalisierung von Cannabis in der Schweiz.
p Das Netzwerk Legalisierung ist ein Versuch, eine Kampagne völlig neu zu organisieren. Konkret ermöglicht dir das Netzwerk, die Kampagne für die Legalisierung selbst zu gestalten und die Legalisierung dann auch mit den anderen im Netzwerk voranzutreiben. Das Netzwerk Legalisierung ist also ein grosses Werkzeug, aufgebaut aus vielen kleinen Werkzeugen.
p Entstanden ist die Idee, weil der Verein Legalize it!, der die Initiative lanciert hat, kaum Ressourcen zur Verfügung stehen. Im Gegensatz zu Parteien und grossen Organisationen ist Legalize it! kein durchorganisierter politischer Verein mit tausenden Mitgliedern und einem immer-vollen Konto. Der Verein Legalize it! kann also die Initiative nicht alleine meistern.
p Letztendlich bedeutet dies: Ob die Legalisierung durchkommt, hängt entscheidend von dir und allen anderen Mitwirkenden im Netzwerk ab. Legalisierung passiert nicht, sondern muss gemacht werden.
p Wenig überraschend werden wir beim Verein dafür immer wieder gefragt, wie man sich für die Legalisierung konkret einsetzen kann. Denn Hunderttausende sind von der heutigen Bevormundungspolitik als Konsumierende direkt betroffen. Und sie alle wissen, dass sie direkt betroffen sind.
p Um die Legalisierung voranzubringen, bracht es verschieden Vorgehensweisen. Darum sammeln wir all eure Aktionen auf dieser Plattform. Das Netzwerk Legalisierung ist daher so aufgebaut, dass alle Möglichkeiten, sich für die Legalisierung von Cannabis einzusetzen, auf einer Plattform gesammelt werden.
p Ohne einen stramm-durchorganisierten Verein im Eiltempo hochzuziehen, wollen wir so als schlank-organisiertes und smart organisiertes Netzwerk gemeinsam die Legalisierung erreichen.
h2 So funktioniert es
p Das Netzwerk ist in drei Hauptkategorien und sieben Unterkategorien aufgeteilt. Schau dir die Seiten am besten von links nach rechts mal an, damit du einen Überblick bekommst.
p Die erste Hauptkategorie beschäftigt sich mit dem, was nötig ist, damit die Initiative überhaupt zu Stande kommt. Es geht also um die Unterschriftensammlung und Finanzierung. Erreichen wir die Ziele in der ersten Kategorie nicht, ist es nicht möglich, diese Initiative durchzuführen.
p In der zweiten Hauptkategorie in der Mitte werden die Grundlagen der Überzeugungs- und Kampagnenarbeit thematisiert. Das ist zum einen die Selbstbildung, zum anderen der Aufbau von Netzwerk-Cliquen.
p In der dritten Hauptkategorie rechts geht es um die eigentliche Überzeugungs- und Kampagnenarbeit. Es geht um die Überzeugungsarbeit in deinem eignen Umfeld, halb-öffentliche und öffentliche Überzeugungsarbeit mittels Social Media und politischer Aktionen, sowie die Möglichkeiten das Netzwerk intern zu stärken. In der dritten Hauptkategorie geht es also um deine konkreten Möglichkeiten, die Kampagne selbst zu gestalten und zu organisieren, um die Leute gezielt zu überzeugen. Du findest in der dritten Hauptkategorie dazu einen einführenden Text, das Aktionen- und Veranstaltungstool, sowie Möglichkeiten zum Ideen-Austausch.
p Damit du das Netzwerk nutzen kannst musst du dich lediglich hier registrieren:
- @supporter = Supporter.new
= render 'supporters/form'
+4 -4
View File
@@ -1,15 +1,15 @@
article
h1 = title t("Die Cannabis-Legalisierung in Zahlen: Der Staat wirft Geld aus dem Fenster und verpasst Millionen an Steuereinnahmen")
h1 = title "Die Cannabis-Legalisierung in Zahlen: Der Staat wirft Geld aus dem Fenster und verpasst Millionen an Steuereinnahmen"
h2 Cannabis-Konsum
table.table.table-bordered.table-condensed.table-inherit
caption Cannabis-Konsum im Jahr 2014 gemäss <a href="http://www.suchtmonitoring.ch/de/4/1-2.html?cannabis-pravalenz-gebrauch-in-der-gesamtbevolkerung" target="_blank">Suchtmonitoring</a>
tbody
tr
td Gelegenheitskonsumenten (Konsum innerhalb von 12 Monaten)
td Mindestens einmaliger Konsum innerhalb der letzten 12 Monaten
td ca. 536000
td 6.7%
tr
td Regelmässige Konsumenten (Konsum innerhalb von 30 Tagen)
td Mindestens einmaliger Konsum innerhalb der letzten 30 Tage
td ca. 240000
td 3%
tr
@@ -19,7 +19,7 @@ article
h2 Strafverfolgung
table.table.table-bordered.table-condensed.table-inherit
caption Strafverfolgung im Jahr 2015 gemäss <a href="http://www.bfs.admin.ch/bfs/portal/de/index/themen/19/03/02/key/05/03.html" target="_blank">Bundesamt für Statistik</a>
caption Strafverfolgung im Jahr 2015 gemäss <a href="https://www.bfs.admin.ch/bfs/de/home/statistiken/kriminalitaet-strafrecht/polizei/betaebungsmittelsubstanzen.html" target="_blank">Bundesamt für Statistik</a>
tbody
tr
td Jährliche Kosten für die Strafverfolgung (gemäss <a href="http://cannabis-irrsinn.info/wp/" target="_blank">«Der Cannabis-Irrsinn»</a>)
+1 -1
View File
@@ -1,4 +1,4 @@
h1 = t("Unsere Sponsoren")
h1 = title "Unsere Sponsoren"
.lead
| Wir suchen tatkräftige Sponsoren, die uns bei der Sammlung der Unterschriften und im späteren Wahlkampf finanziell unterstützen. Im Gegenzug ermöglichen wir den Sponsoren, sich mit Logo, einem kleinen Text und Link zu präsentieren.
h2 Beispiel...
+3 -3
View File
@@ -1,5 +1,4 @@
- supporters = Supporter.where('publicity.state' => :approved).desc(:created_at)
- supporters = Supporter.where('publicity.state' => :approved).desc('publicity.created_at')
h1 = title t('.title')
- supporters.each do |supporter|
.statement
@@ -8,6 +7,7 @@ h1 = title t('.title')
- unless supporter.publicity.organisation.blank?
em= ", #{supporter.publicity.organisation}"
br
= supporter.publicity.statement
article= supporter.publicity.statement
hr.clearfix
.text-center = link_to t(".submit_your_own_statement"), new_publicity_path
+2 -2
View File
@@ -9,13 +9,13 @@ p
h2 Was kannst du machen?
ul
li = link_to 'Spende für die Legalisierung', donation_path
li Versende den <a href="mailto:?subject=Es wird Zeit, Cannabis in der Schweiz legalisieren&body=Ich hab meine Unterstützung zugesichert unter https://ch420.herokuapp.com. Unterstütze uns auch du.">Link zum Online-Formular</a> an all deine Freunde und Bekannte
li Folge uns auf <a href="https://www.facebook.com/vereinlegalizeit">Facebook</a> und <a href="https://twitter.com/VereinLegalize">Twitter</a>
li Teile unser Projekt in den sozialen Medien mit dem Hashtag #CH420
li Erzähle allen von unserem Vorhaben und bitte Sie mitzumachen
li Werde Mitglied beim <a href="https://www.hanflegal.ch">Verein Legalize it!</a>
li = link_to 'Spende für die Legalisierung', donation_path
li Besuche unser <a href="https://forum.hanflegal.ch">Forum</a>. Da findest du eine Jobbörse und spannende Projekte bei denen wir deine Hilfe brauchen können
h2 Folge uns auf Facebook
#fb-root
-17
View File
@@ -1,17 +0,0 @@
= navbar do
= navbar_header
= navbar_collapse do
= navbar_group id: 'topnav' do
= navbar_item "Home", "/#{I18n.locale}"
= navbar_dropdown t('.initiative') do
= navbar_item t('.initiative_text'), initiative_text_path
= navbar_item t('.arguments'), arguments_path
= navbar_item t('.faq'), faq_path
= navbar_item t('.numbers'), numbers_path
= navbar_item t('.statements'), statements_path
= navbar_item t('.sponsoring'), sponsoring_path
= navbar_item t('.sign_in'), new_supporter_session_path unless supporter_signed_in?
= navbar_item t('.sign_out'), destroy_supporter_session_path, nil, 'data-method' => :delete if supporter_signed_in?
- if supporter_signed_in? && current_supporter.admin?
= navbar_dropdown t('admin.title') do
= navbar_item t('admin.publicities.index.title'), admin_publicities_path
+57 -62
View File
@@ -1,66 +1,61 @@
- title(t('shared.header.title_html'))
.row
.col-xs-12.col-md-7
h2.sr-only = t('.form')
= simple_form_for @supporter do |f|
= f.input :first_name, placeholder: t('.placeholders.first_name')
= f.input :last_name, placeholder: t('.placeholders.last_name')
= f.input :street, placeholder: t('.placeholders.street')
= f.input :city, placeholder: t('.placeholders.city')
= f.input :zip, placeholder: t('.placeholders.zip')
= f.input :email, placeholder: t('.placeholders.email')
= f.input :support, as: :radio_buttons, collection: t('support_type').map{ |x| [x.first, raw(x.last)]}, label_method: :last, value_method: :first
= f.input :li_membership, as: :boolean
= f.input :age_category, as: :radio_buttons, collection: t('age_category'), label_method: :last, value_method: :first
= f.input :comments, as: :text
.form-group
= f.submit value: t('.submit'), class: 'btn btn-success'
.form-group
= link_to t('.terms_and_conditions'), terms_and_conditions_path, class: 'small'
= simple_form_for @supporter do |f|
= f.input :first_name, placeholder: t('.placeholders.first_name')
= f.input :last_name, placeholder: t('.placeholders.last_name')
= f.input :street, placeholder: t('.placeholders.street')
= f.input :city, placeholder: t('.placeholders.city')
= f.input :zip, placeholder: t('.placeholders.zip')
= f.input :email, placeholder: t('.placeholders.email')
= f.input :tel, placeholder: '+41 (0) xxxx'
= f.input :support, as: :radio_buttons, collection: t('support_type').map{ |x| [x.first, raw(x.last)]}, label_method: :last, value_method: :first
= f.input :li_membership, as: :boolean
= f.input :age_category, as: :radio_buttons, collection: t('age_category'), label_method: :last, value_method: :first
= f.input :comments, as: :text
.form-group
= f.submit value: t('.submit'), class: 'btn btn-success'
.form-group
= link_to t('.terms_and_conditions'), terms_and_conditions_path, class: 'small'
javascript:
var cities = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: '/cities_autocomplete.json?query=%QUERY',
wildcard: '%QUERY',
}
});
javascript:
var cities = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: '/cities_autocomplete.json?query=%QUERY',
wildcard: '%QUERY',
}
});
var suggestion_template = function (data) {
return '<p>' + data.plz + ' - ' + data.city + '</p>';
var suggestion_template = function (data) {
return '<p>' + data.plz + ' - ' + data.city + '</p>';
}
$('#supporter_city').typeahead({
minLength: 2,
},{
limit: 20,
display: 'city',
templates: {
suggestion: function (data) {
return suggestion_template(data);
}
},
source: cities
}).on('typeahead:selected', function(event, datum) {
$("#supporter_zip").val(datum.plz);
});
$('#supporter_zip').typeahead({
minLength: 2,
},{
limit: 20,
display: 'plz',
templates: {
suggestion: function (data) {
return suggestion_template(data);
}
$('#supporter_city').typeahead({
minLength: 2,
},{
limit: 20,
display: 'city',
templates: {
suggestion: function (data) {
return suggestion_template(data);
}
},
source: cities
}).on('typeahead:selected', function(event, datum) {
$("#supporter_zip").val(datum.plz);
});
$('#supporter_zip').typeahead({
minLength: 2,
},{
limit: 20,
display: 'plz',
templates: {
suggestion: function (data) {
return suggestion_template(data);
}
},
source: cities
}).on('typeahead:selected', function(event, datum) {
$("#supporter_city").val(datum.city);
});
aside.col-md-5.col-xs-12
= render 'right_side'
},
source: cities
}).on('typeahead:selected', function(event, datum) {
$("#supporter_city").val(datum.city);
});
+9 -2
View File
@@ -23,6 +23,8 @@
dd == t("age_category.#{current_supporter.age_category}")
dt = Supporter.human_attribute_name(:language)
dd = t("languages.#{current_supporter.language}")
dt = Supporter.human_attribute_name(:tel)
dd = current_supporter.tel
p
= link_to t('.edit'), edit_supporter_registration_path(), class: 'pull-right'
@@ -33,5 +35,10 @@
= render 'right_side'
- else
= render 'form'
- title(t('shared.header.title_html'))
.row
.col-xs-12.col-md-7
h2.sr-only = t('.form')
= render 'form'
aside.col-md-5.col-xs-12
= render 'right_side'
@@ -21,7 +21,6 @@
= f.input :language, as: :radio_buttons, collection: t('languages').map{ |x| [x.first, raw(x.last)]}, label_method: :last, value_method: :first
.form-actions
= f.button :submit, t("devise.registrations.edit.update"), class: 'btn btn-primary'
p = link_to t("devise.shared.links.back"), :back
hr
p = link_to t("devise.registrations.edit.cancel_my_account"), registration_path(resource_name), data: { confirm: t("devise.registrations.edit.are_you_sure") }, method: :delete, class: 'btn btn-danger btn-sm pull-right'
Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Some files were not shown because too many files have changed in this diff Show More