Merge branch 'master' into polls

This commit is contained in:
Alberto
2017-04-06 14:16:49 +02:00
committed by GitHub
118 changed files with 1294 additions and 748 deletions

View File

@@ -12,6 +12,10 @@ require 'capistrano/delayed_job'
require 'whenever/capistrano' require 'whenever/capistrano'
require 'rvm1/capistrano3' require 'rvm1/capistrano3'
#SCM: Git
require "capistrano/scm/git"
install_plugin Capistrano::SCM::Git
# Load custom tasks from `lib/capistrano/tasks` if you have any defined # Load custom tasks from `lib/capistrano/tasks` if you have any defined
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r } Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }
Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r } Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r }

54
Gemfile
View File

@@ -1,20 +1,20 @@
source 'https://rubygems.org' source 'https://rubygems.org'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.7.1' gem 'rails', '4.2.8'
# Use PostgreSQL # Use PostgreSQL
gem 'pg', '~> 0.19.0' gem 'pg', '~> 0.20.0'
# Use SCSS for stylesheets # Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0', '>= 5.0.4' gem 'sass-rails', '~> 5.0', '>= 5.0.4'
# Use Uglifier as compressor for JavaScript assets # Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 3.0.4' gem 'uglifier', '~> 3.1.9'
# Use CoffeeScript for .coffee assets and views # Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2.1' gem 'coffee-rails', '~> 4.2.1'
# 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
# Use jquery as the JavaScript library # Use jquery as the JavaScript library
gem 'jquery-rails', '~> 4.2.2' gem 'jquery-rails', '~> 4.3.1'
gem 'jquery-ui-rails' gem 'jquery-ui-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks' gem 'turbolinks'
@@ -28,10 +28,10 @@ gem 'devise_security_extension'
# gem 'bcrypt', '~> 3.1.7' # gem 'bcrypt', '~> 3.1.7'
gem 'omniauth' gem 'omniauth'
gem 'omniauth-twitter' gem 'omniauth-twitter'
gem 'omniauth-facebook', '~> 3.0.0' gem 'omniauth-facebook', '~> 4.0.0'
gem 'omniauth-google-oauth2', '~> 0.4.0' gem 'omniauth-google-oauth2', '~> 0.4.0'
gem 'kaminari' gem 'kaminari', '~> 1.0.1'
gem 'ancestry', '~> 2.2.2' gem 'ancestry', '~> 2.2.2'
gem 'acts-as-taggable-on' gem 'acts-as-taggable-on'
gem 'responders', '~> 2.3.0' gem 'responders', '~> 2.3.0'
@@ -40,30 +40,30 @@ gem 'foundation_rails_helper', '~> 2.0.0'
gem 'acts_as_votable' gem 'acts_as_votable'
gem 'ckeditor', '~> 4.2.2' gem 'ckeditor', '~> 4.2.2'
gem 'invisible_captcha', '~> 0.9.2' gem 'invisible_captcha', '~> 0.9.2'
gem 'cancancan' gem 'cancancan', '~> 1.16.0'
gem 'social-share-button' gem 'social-share-button', '~> 0.10'
gem 'initialjs-rails', '0.2.0.4' gem 'initialjs-rails', '0.2.0.4'
gem 'unicorn', '~> 5.2.0' gem 'unicorn', '~> 5.2.0'
gem 'paranoia', '~> 2.2.0' gem 'paranoia', '~> 2.2.1'
gem 'rinku', '~> 2.0.2', require: 'rails_rinku' gem 'rinku', '~> 2.0.2', require: 'rails_rinku'
gem 'savon' gem 'savon'
gem 'dalli' gem 'dalli'
gem 'rollbar', '~> 2.14.0' gem 'rollbar', '~> 2.14.1'
gem 'delayed_job_active_record', '~> 4.1.0' gem 'delayed_job_active_record', '~> 4.1.0'
gem 'daemons' gem 'daemons'
gem 'devise-async' gem 'devise-async'
gem 'newrelic_rpm', '~> 3.17.2.327' gem 'newrelic_rpm', '~> 4.0.0.332'
gem 'whenever', require: false gem 'whenever', require: false
gem 'pg_search' gem 'pg_search'
gem 'sitemap_generator' gem 'sitemap_generator', '~> 5.3.1'
gem 'ahoy_matey', '~> 1.5.3' gem 'ahoy_matey', '~> 1.5.5'
gem 'groupdate', '~> 3.1.0' # group temporary data gem 'groupdate', '~> 3.2.0' # group temporary data
gem 'tolk', '~> 2.0.0' # Web interface for translations gem 'tolk', '~> 2.0.0' # Web interface for translations
gem 'browser' gem 'browser'
gem 'turnout', '~> 2.4.0' gem 'turnout', '~> 2.4.0'
gem 'redcarpet' gem 'redcarpet', '~> 3.4.0'
group :development, :test do group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console # Call 'byebug' anywhere in the code to stop execution and get a debugger console
@@ -72,28 +72,28 @@ group :development, :test do
gem 'spring' gem 'spring'
gem 'spring-commands-rspec' gem 'spring-commands-rspec'
gem 'rspec-rails', '~> 3.5' gem 'rspec-rails', '~> 3.5'
gem 'capybara' gem 'capybara', '~> 2.13.0'
gem 'factory_girl_rails' gem 'factory_girl_rails', '~> 4.8.0'
gem 'fuubar' gem 'fuubar'
gem 'launchy' gem 'launchy'
gem 'quiet_assets' gem 'quiet_assets'
gem 'letter_opener_web', '~> 1.3.0' gem 'letter_opener_web', '~> 1.3.1'
gem 'i18n-tasks' gem 'i18n-tasks', '~> 0.9.12'
gem 'capistrano', '3.5.0', require: false gem 'capistrano', '~> 3.8.0', require: false
gem 'capistrano-bundler', '~> 1.2', require: false gem 'capistrano-bundler', '~> 1.2', require: false
gem "capistrano-rails", '1.1.8', require: false gem "capistrano-rails", '~> 1.2.3', require: false
gem 'rvm1-capistrano3', require: false gem 'rvm1-capistrano3', require: false
gem 'capistrano3-delayed-job', '~> 1.0' gem 'capistrano3-delayed-job', '~> 1.7.3'
gem "bullet" gem "bullet", '~> 5.5.1'
gem "faker" gem "faker", '~> 1.7.3'
gem 'rubocop', '~> 0.45.0', require: false gem 'rubocop', '~> 0.47.1', require: false
gem 'knapsack' gem 'knapsack'
end end
group :test do group :test do
gem 'database_cleaner' gem 'database_cleaner'
gem 'poltergeist' gem 'poltergeist', '~> 1.14.0'
gem 'coveralls', require: false gem 'coveralls', '~> 0.8.19', require: false
gem 'email_spec' gem 'email_spec'
end end

View File

@@ -1,46 +1,46 @@
GEM GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
specs: specs:
actionmailer (4.2.7.1) actionmailer (4.2.8)
actionpack (= 4.2.7.1) actionpack (= 4.2.8)
actionview (= 4.2.7.1) actionview (= 4.2.8)
activejob (= 4.2.7.1) activejob (= 4.2.8)
mail (~> 2.5, >= 2.5.4) mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 1.0, >= 1.0.5) rails-dom-testing (~> 1.0, >= 1.0.5)
actionpack (4.2.7.1) actionpack (4.2.8)
actionview (= 4.2.7.1) actionview (= 4.2.8)
activesupport (= 4.2.7.1) activesupport (= 4.2.8)
rack (~> 1.6) rack (~> 1.6)
rack-test (~> 0.6.2) rack-test (~> 0.6.2)
rails-dom-testing (~> 1.0, >= 1.0.5) rails-dom-testing (~> 1.0, >= 1.0.5)
rails-html-sanitizer (~> 1.0, >= 1.0.2) rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (4.2.7.1) actionview (4.2.8)
activesupport (= 4.2.7.1) activesupport (= 4.2.8)
builder (~> 3.1) builder (~> 3.1)
erubis (~> 2.7.0) erubis (~> 2.7.0)
rails-dom-testing (~> 1.0, >= 1.0.5) rails-dom-testing (~> 1.0, >= 1.0.5)
rails-html-sanitizer (~> 1.0, >= 1.0.2) rails-html-sanitizer (~> 1.0, >= 1.0.3)
activejob (4.2.7.1) activejob (4.2.8)
activesupport (= 4.2.7.1) activesupport (= 4.2.8)
globalid (>= 0.3.0) globalid (>= 0.3.0)
activemodel (4.2.7.1) activemodel (4.2.8)
activesupport (= 4.2.7.1) activesupport (= 4.2.8)
builder (~> 3.1) builder (~> 3.1)
activerecord (4.2.7.1) activerecord (4.2.8)
activemodel (= 4.2.7.1) activemodel (= 4.2.8)
activesupport (= 4.2.7.1) activesupport (= 4.2.8)
arel (~> 6.0) arel (~> 6.0)
activesupport (4.2.7.1) activesupport (4.2.8)
i18n (~> 0.7) i18n (~> 0.7)
json (~> 1.7, >= 1.7.7)
minitest (~> 5.1) minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4) thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1) tzinfo (~> 1.1)
acts-as-taggable-on (3.5.0) acts-as-taggable-on (4.0.0)
activerecord (>= 3.2, < 5) activerecord (>= 4.0)
acts_as_votable (0.10.0) acts_as_votable (0.10.0)
addressable (2.4.0) addressable (2.5.0)
ahoy_matey (1.5.3) public_suffix (~> 2.0, >= 2.0.2)
ahoy_matey (1.5.5)
addressable addressable
browser (~> 2.0) browser (~> 2.0)
geocoder geocoder
@@ -51,14 +51,14 @@ GEM
safely_block (>= 0.1.1) safely_block (>= 0.1.1)
user_agent_parser user_agent_parser
uuidtools uuidtools
airbrussh (1.1.1) airbrussh (1.1.2)
sshkit (>= 1.6.1, != 1.7.0) sshkit (>= 1.6.1, != 1.7.0)
akami (1.3.1) akami (1.3.1)
gyoku (>= 0.4.0) gyoku (>= 0.4.0)
nokogiri nokogiri
ancestry (2.2.2) ancestry (2.2.2)
activerecord (>= 3.0.0) activerecord (>= 3.0.0)
arel (6.0.3) arel (6.0.4)
ast (2.3.0) ast (2.3.0)
babel-source (5.8.35) babel-source (5.8.35)
babel-transpiler (0.7.0) babel-transpiler (0.7.0)
@@ -66,28 +66,27 @@ GEM
execjs (~> 2.0) execjs (~> 2.0)
bcrypt (3.1.11) bcrypt (3.1.11)
browser (2.3.0) browser (2.3.0)
builder (3.2.2) builder (3.2.3)
bullet (5.4.2) bullet (5.5.1)
activesupport (>= 3.0.0) activesupport (>= 3.0.0)
uniform_notifier (~> 1.10.0) uniform_notifier (~> 1.10.0)
byebug (9.0.6) byebug (9.0.6)
cancancan (1.15.0) cancancan (1.16.0)
capistrano (3.5.0) capistrano (3.8.0)
airbrussh (>= 1.0.0) airbrussh (>= 1.0.0)
capistrano-harrow
i18n i18n
rake (>= 10.0.0) rake (>= 10.0.0)
sshkit (>= 1.9.0) sshkit (>= 1.9.0)
capistrano-bundler (1.2.0) capistrano-bundler (1.2.0)
capistrano (~> 3.1) capistrano (~> 3.1)
sshkit (~> 1.2) sshkit (~> 1.2)
capistrano-harrow (0.5.3) capistrano-rails (1.2.3)
capistrano-rails (1.1.8)
capistrano (~> 3.1) capistrano (~> 3.1)
capistrano-bundler (~> 1.1) capistrano-bundler (~> 1.1)
capistrano3-delayed-job (1.7.2) capistrano3-delayed-job (1.7.3)
capistrano (~> 3.0, >= 3.0.0) capistrano (~> 3.0, >= 3.0.0)
capybara (2.7.1) daemons (~> 1.2.4)
capybara (2.13.0)
addressable addressable
mime-types (>= 1.16) mime-types (>= 1.16)
nokogiri (>= 1.3.3) nokogiri (>= 1.3.3)
@@ -109,9 +108,9 @@ GEM
coffee-script (2.4.1) coffee-script (2.4.1)
coffee-script-source coffee-script-source
execjs execjs
coffee-script-source (1.10.0) coffee-script-source (1.12.2)
concurrent-ruby (1.0.4) concurrent-ruby (1.0.5)
coveralls (0.8.17) coveralls (0.8.19)
json (>= 1.8, < 3) json (>= 1.8, < 3)
simplecov (~> 0.12.0) simplecov (~> 0.12.0)
term-ansicolor (~> 1.3) term-ansicolor (~> 1.3)
@@ -151,14 +150,14 @@ GEM
errbase (0.0.3) errbase (0.0.3)
erubis (2.7.0) erubis (2.7.0)
execjs (2.7.0) execjs (2.7.0)
factory_girl (4.7.0) factory_girl (4.8.0)
activesupport (>= 3.0.0) activesupport (>= 3.0.0)
factory_girl_rails (4.7.0) factory_girl_rails (4.8.0)
factory_girl (~> 4.7.0) factory_girl (~> 4.8.0)
railties (>= 3.0.0) railties (>= 3.0.0)
faker (1.6.6) faker (1.7.3)
i18n (~> 0.5) i18n (~> 0.5)
faraday (0.9.2) faraday (0.11.0)
multipart-post (>= 1.2, < 3) multipart-post (>= 1.2, < 3)
foundation-rails (6.2.4.0) foundation-rails (6.2.4.0)
railties (>= 3.1.0) railties (>= 3.1.0)
@@ -173,20 +172,20 @@ GEM
fuubar (2.2.0) fuubar (2.2.0)
rspec-core (~> 3.0) rspec-core (~> 3.0)
ruby-progressbar (~> 1.4) ruby-progressbar (~> 1.4)
geocoder (1.4.1) geocoder (1.4.3)
globalid (0.3.7) globalid (0.3.7)
activesupport (>= 4.1.0) activesupport (>= 4.1.0)
groupdate (3.1.1) groupdate (3.2.0)
activesupport (>= 3) activesupport (>= 3)
gyoku (1.3.1) gyoku (1.3.1)
builder (>= 2.1.2) builder (>= 2.1.2)
hashie (3.4.6) hashie (3.5.5)
highline (1.7.8) highline (1.7.8)
htmlentities (4.3.4) htmlentities (4.3.4)
httpi (2.4.1) httpi (2.4.1)
rack rack
i18n (0.7.0) i18n (0.8.1)
i18n-tasks (0.9.6) i18n-tasks (0.9.12)
activesupport (>= 4.0.2) activesupport (>= 4.0.2)
ast (>= 2.1.0) ast (>= 2.1.0)
easy_translate (>= 0.5.0) easy_translate (>= 0.5.0)
@@ -200,26 +199,35 @@ GEM
railties (>= 3.1, < 6.0) railties (>= 3.1, < 6.0)
invisible_captcha (0.9.2) invisible_captcha (0.9.2)
rails (>= 3.2.0) rails (>= 3.2.0)
jquery-rails (4.2.2) jquery-rails (4.3.1)
rails-dom-testing (>= 1, < 3) rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0) railties (>= 4.2.0)
thor (>= 0.14, < 2.0) thor (>= 0.14, < 2.0)
jquery-ui-rails (5.0.5) jquery-ui-rails (6.0.1)
railties (>= 3.2.16) railties (>= 3.2.16)
json (1.8.3) json (2.0.3)
jwt (1.5.4) jwt (1.5.6)
kaminari (0.17.0) kaminari (1.0.1)
actionpack (>= 3.0.0) activesupport (>= 4.1.0)
activesupport (>= 3.0.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)
kgio (2.11.0) kgio (2.11.0)
knapsack (1.13.1) knapsack (1.13.2)
rake rake
timecop (>= 0.1.0) timecop (>= 0.1.0)
launchy (2.4.3) launchy (2.4.3)
addressable (~> 2.3) addressable (~> 2.3)
letter_opener (1.4.1) letter_opener (1.4.1)
launchy (~> 2.2) launchy (~> 2.2)
letter_opener_web (1.3.0) letter_opener_web (1.3.1)
actionmailer (>= 3.2) actionmailer (>= 3.2)
letter_opener (~> 1.0) letter_opener (~> 1.0)
railties (>= 3.2) railties (>= 3.2)
@@ -233,26 +241,26 @@ GEM
mini_portile2 (2.1.0) mini_portile2 (2.1.0)
minitest (5.10.1) minitest (5.10.1)
multi_json (1.12.1) multi_json (1.12.1)
multi_xml (0.5.5) multi_xml (0.6.0)
multipart-post (2.0.0) multipart-post (2.0.0)
net-scp (1.2.1) net-scp (1.2.1)
net-ssh (>= 2.6.5) net-ssh (>= 2.6.5)
net-ssh (3.2.0) net-ssh (4.1.0)
newrelic_rpm (3.17.2.327) newrelic_rpm (4.0.0.332)
nokogiri (1.6.8.1) nokogiri (1.7.1)
mini_portile2 (~> 2.1.0) mini_portile2 (~> 2.1.0)
nori (2.6.0) nori (2.6.0)
oauth (0.5.0) oauth (0.5.1)
oauth2 (1.0.0) oauth2 (1.3.1)
faraday (>= 0.8, < 0.10) faraday (>= 0.8, < 0.12)
jwt (~> 1.0) jwt (~> 1.0)
multi_json (~> 1.3) multi_json (~> 1.3)
multi_xml (~> 0.5) multi_xml (~> 0.5)
rack (~> 1.2) rack (>= 1.2, < 3)
omniauth (1.3.1) omniauth (1.6.1)
hashie (>= 1.2, < 4) hashie (>= 3.4.6, < 3.6.0)
rack (>= 1.0, < 3) rack (>= 1.6.2, < 3)
omniauth-facebook (3.0.0) omniauth-facebook (4.0.0)
omniauth-oauth2 (~> 1.2) omniauth-oauth2 (~> 1.2)
omniauth-google-oauth2 (0.4.1) omniauth-google-oauth2 (0.4.1)
jwt (~> 1.5.2) jwt (~> 1.5.2)
@@ -265,24 +273,25 @@ GEM
omniauth-oauth2 (1.4.0) omniauth-oauth2 (1.4.0)
oauth2 (~> 1.0) oauth2 (~> 1.0)
omniauth (~> 1.2) omniauth (~> 1.2)
omniauth-twitter (1.2.1) omniauth-twitter (1.4.0)
json (~> 1.3)
omniauth-oauth (~> 1.1) omniauth-oauth (~> 1.1)
rack
orm_adapter (0.5.0) orm_adapter (0.5.0)
paranoia (2.2.0) paranoia (2.2.1)
activerecord (>= 4.0, < 5.1) activerecord (>= 4.0, < 5.1)
parser (2.3.3.1) parser (2.4.0.0)
ast (~> 2.2) ast (~> 2.2)
pg (0.19.0) pg (0.20.0)
pg_search (1.0.6) pg_search (2.0.1)
activerecord (>= 3.1) activerecord (>= 4.2)
activesupport (>= 3.1) activesupport (>= 4.2)
arel arel (>= 6)
poltergeist (1.10.0) poltergeist (1.14.0)
capybara (~> 2.1) capybara (~> 2.1)
cliver (~> 0.3.1) cliver (~> 0.3.1)
websocket-driver (>= 0.2.0) websocket-driver (>= 0.2.0)
powerpack (0.1.1) powerpack (0.1.1)
public_suffix (2.0.5)
quiet_assets (1.1.0) quiet_assets (1.1.0)
railties (>= 3.1, < 5.0) railties (>= 3.1, < 5.0)
rack (1.6.5) rack (1.6.5)
@@ -292,40 +301,40 @@ GEM
rack rack
rack-test (0.6.3) rack-test (0.6.3)
rack (>= 1.0) rack (>= 1.0)
rails (4.2.7.1) rails (4.2.8)
actionmailer (= 4.2.7.1) actionmailer (= 4.2.8)
actionpack (= 4.2.7.1) actionpack (= 4.2.8)
actionview (= 4.2.7.1) actionview (= 4.2.8)
activejob (= 4.2.7.1) activejob (= 4.2.8)
activemodel (= 4.2.7.1) activemodel (= 4.2.8)
activerecord (= 4.2.7.1) activerecord (= 4.2.8)
activesupport (= 4.2.7.1) activesupport (= 4.2.8)
bundler (>= 1.3.0, < 2.0) bundler (>= 1.3.0, < 2.0)
railties (= 4.2.7.1) railties (= 4.2.8)
sprockets-rails sprockets-rails
rails-deprecated_sanitizer (1.0.3) rails-deprecated_sanitizer (1.0.3)
activesupport (>= 4.2.0.alpha) activesupport (>= 4.2.0.alpha)
rails-dom-testing (1.0.7) rails-dom-testing (1.0.8)
activesupport (>= 4.2.0.beta, < 5.0) activesupport (>= 4.2.0.beta, < 5.0)
nokogiri (~> 1.6.0) nokogiri (~> 1.6)
rails-deprecated_sanitizer (>= 1.0.1) rails-deprecated_sanitizer (>= 1.0.1)
rails-html-sanitizer (1.0.3) rails-html-sanitizer (1.0.3)
loofah (~> 2.0) loofah (~> 2.0)
railties (4.2.7.1) railties (4.2.8)
actionpack (= 4.2.7.1) actionpack (= 4.2.8)
activesupport (= 4.2.7.1) activesupport (= 4.2.8)
rake (>= 0.8.7) rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0) thor (>= 0.18.1, < 2.0)
rainbow (2.1.0) rainbow (2.2.1)
raindrops (0.17.0) raindrops (0.17.0)
rake (12.0.0) rake (12.0.0)
redcarpet (3.3.4) redcarpet (3.4.0)
referer-parser (0.3.0) referer-parser (0.3.0)
request_store (1.3.1) request_store (1.3.2)
responders (2.3.0) responders (2.3.0)
railties (>= 4.2.0, < 5.1) railties (>= 4.2.0, < 5.1)
rinku (2.0.2) rinku (2.0.2)
rollbar (2.14.0) rollbar (2.14.1)
multi_json multi_json
rspec-core (3.5.4) rspec-core (3.5.4)
rspec-support (~> 3.5.0) rspec-support (~> 3.5.0)
@@ -344,8 +353,8 @@ GEM
rspec-mocks (~> 3.5.0) rspec-mocks (~> 3.5.0)
rspec-support (~> 3.5.0) rspec-support (~> 3.5.0)
rspec-support (3.5.0) rspec-support (3.5.0)
rubocop (0.45.0) rubocop (0.47.1)
parser (>= 2.3.1.1, < 3.0) parser (>= 2.3.3.1, < 3.0)
powerpack (~> 0.1) powerpack (~> 0.1)
rainbow (>= 1.99.1, < 3.0) rainbow (>= 1.99.1, < 3.0)
ruby-progressbar (~> 1.7) ruby-progressbar (~> 1.7)
@@ -355,9 +364,9 @@ GEM
capistrano (~> 3.0) capistrano (~> 3.0)
sshkit (>= 1.2) sshkit (>= 1.2)
safe_yaml (1.0.4) safe_yaml (1.0.4)
safely_block (0.1.1) safely_block (0.2.0)
errbase errbase
sass (3.4.22) sass (3.4.23)
sass-rails (5.0.6) sass-rails (5.0.6)
railties (>= 4.0.0, < 6) railties (>= 4.0.0, < 6)
sass (~> 3.1) sass (~> 3.1)
@@ -377,12 +386,12 @@ GEM
json (>= 1.8, < 3) json (>= 1.8, < 3)
simplecov-html (~> 0.10.0) simplecov-html (~> 0.10.0)
simplecov-html (0.10.0) simplecov-html (0.10.0)
sitemap_generator (5.2.0) sitemap_generator (5.3.1)
builder (~> 3.0) builder (~> 3.0)
social-share-button (0.3.1) social-share-button (0.10.0)
coffee-rails coffee-rails
sass-rails spring (2.0.1)
spring (1.7.2) activesupport (>= 4.2)
spring-commands-rspec (1.0.4) spring-commands-rspec (1.0.4)
spring (>= 0.9.1) spring (>= 0.9.1)
sprockets (3.7.1) sprockets (3.7.1)
@@ -396,7 +405,7 @@ GEM
actionpack (>= 4.0) actionpack (>= 4.0)
activesupport (>= 4.0) activesupport (>= 4.0)
sprockets (>= 3.0.0) sprockets (>= 3.0.0)
sshkit (1.11.4) sshkit (1.12.0)
net-scp (>= 1.1.2) net-scp (>= 1.1.2)
net-ssh (>= 2.8.0) net-ssh (>= 2.8.0)
term-ansicolor (1.4.0) term-ansicolor (1.4.0)
@@ -405,10 +414,10 @@ GEM
unicode-display_width (~> 1.1.1) unicode-display_width (~> 1.1.1)
thor (0.19.4) thor (0.19.4)
thread (0.2.2) thread (0.2.2)
thread_safe (0.3.5) thread_safe (0.3.6)
tilt (2.0.5) tilt (2.0.7)
timecop (0.8.1) timecop (0.8.1)
tins (1.13.0) tins (1.13.2)
tolk (2.0.0) tolk (2.0.0)
rails (>= 4.0) rails (>= 4.0)
safe_yaml (>= 0.8.6) safe_yaml (>= 0.8.6)
@@ -421,9 +430,9 @@ GEM
tilt (>= 1.4, < 3) tilt (>= 1.4, < 3)
tzinfo (1.2.2) tzinfo (1.2.2)
thread_safe (~> 0.1) thread_safe (~> 0.1)
uglifier (3.0.4) uglifier (3.1.9)
execjs (>= 0.3.0, < 3) execjs (>= 0.3.0, < 3)
unicode-display_width (1.1.1) unicode-display_width (1.1.3)
unicorn (5.2.0) unicorn (5.2.0)
kgio (~> 2.6) kgio (~> 2.6)
raindrops (~> 0.7) raindrops (~> 0.7)
@@ -439,7 +448,7 @@ GEM
activemodel (>= 4.2) activemodel (>= 4.2)
debug_inspector debug_inspector
railties (>= 4.2) railties (>= 4.2)
websocket-driver (0.6.4) websocket-driver (0.6.5)
websocket-extensions (>= 0.1.0) websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.2) websocket-extensions (0.1.2)
whenever (0.9.7) whenever (0.9.7)
@@ -453,20 +462,20 @@ PLATFORMS
DEPENDENCIES DEPENDENCIES
acts-as-taggable-on acts-as-taggable-on
acts_as_votable acts_as_votable
ahoy_matey (~> 1.5.3) ahoy_matey (~> 1.5.5)
ancestry (~> 2.2.2) ancestry (~> 2.2.2)
browser browser
bullet bullet (~> 5.5.1)
byebug byebug
cancancan cancancan (~> 1.16.0)
capistrano (= 3.5.0) capistrano (~> 3.8.0)
capistrano-bundler (~> 1.2) capistrano-bundler (~> 1.2)
capistrano-rails (= 1.1.8) capistrano-rails (~> 1.2.3)
capistrano3-delayed-job (~> 1.0) capistrano3-delayed-job (~> 1.7.3)
capybara capybara (~> 2.13.0)
ckeditor (~> 4.2.2) ckeditor (~> 4.2.2)
coffee-rails (~> 4.2.1) coffee-rails (~> 4.2.1)
coveralls coveralls (~> 0.8.19)
daemons daemons
dalli dalli
database_cleaner database_cleaner
@@ -475,50 +484,53 @@ DEPENDENCIES
devise-async devise-async
devise_security_extension devise_security_extension
email_spec email_spec
factory_girl_rails factory_girl_rails (~> 4.8.0)
faker faker (~> 1.7.3)
foundation-rails (~> 6.2.4.0) foundation-rails (~> 6.2.4.0)
foundation_rails_helper (~> 2.0.0) foundation_rails_helper (~> 2.0.0)
fuubar fuubar
groupdate (~> 3.1.0) groupdate (~> 3.2.0)
i18n-tasks i18n-tasks (~> 0.9.12)
initialjs-rails (= 0.2.0.4) initialjs-rails (= 0.2.0.4)
invisible_captcha (~> 0.9.2) invisible_captcha (~> 0.9.2)
jquery-rails (~> 4.2.2) jquery-rails (~> 4.3.1)
jquery-ui-rails jquery-ui-rails
kaminari kaminari (~> 1.0.1)
knapsack knapsack
launchy launchy
letter_opener_web (~> 1.3.0) letter_opener_web (~> 1.3.1)
newrelic_rpm (~> 3.17.2.327) newrelic_rpm (~> 4.0.0.332)
omniauth omniauth
omniauth-facebook (~> 3.0.0) omniauth-facebook (~> 4.0.0)
omniauth-google-oauth2 (~> 0.4.0) omniauth-google-oauth2 (~> 0.4.0)
omniauth-twitter omniauth-twitter
paranoia (~> 2.2.0) paranoia (~> 2.2.1)
pg (~> 0.19.0) pg (~> 0.20.0)
pg_search pg_search
poltergeist poltergeist (~> 1.14.0)
quiet_assets quiet_assets
rails (= 4.2.7.1) rails (= 4.2.8)
redcarpet redcarpet (~> 3.4.0)
responders (~> 2.3.0) responders (~> 2.3.0)
rinku (~> 2.0.2) rinku (~> 2.0.2)
rollbar (~> 2.14.0) rollbar (~> 2.14.1)
rspec-rails (~> 3.5) rspec-rails (~> 3.5)
rubocop (~> 0.45.0) rubocop (~> 0.47.1)
rvm1-capistrano3 rvm1-capistrano3
sass-rails (~> 5.0, >= 5.0.4) sass-rails (~> 5.0, >= 5.0.4)
savon savon
sitemap_generator sitemap_generator (~> 5.3.1)
social-share-button social-share-button (~> 0.10)
spring spring
spring-commands-rspec spring-commands-rspec
sprockets (~> 3.7.1) sprockets (~> 3.7.1)
tolk (~> 2.0.0) tolk (~> 2.0.0)
turbolinks turbolinks
turnout (~> 2.4.0) turnout (~> 2.4.0)
uglifier (>= 3.0.4) uglifier (~> 3.1.9)
unicorn (~> 5.2.0) unicorn (~> 5.2.0)
web-console (= 3.3.0) web-console (= 3.3.0)
whenever whenever
BUNDLED WITH
1.13.7

View File

@@ -1,15 +1,19 @@
![Logo of Consul] ![Logo of Consul](https://raw.githubusercontent.com/consul/consul/master/public/consul_logo.png)
(https://raw.githubusercontent.com/consul/consul/master/public/consul_logo.png)
# Consul # Consul
Citizen Participation and Open Government Application Citizen Participation and Open Government Application
[![Join the chat at https://gitter.im/consul/consul](https://badges.gitter.im/consul/consul.svg)](https://gitter.im/consul/consul?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Build Status](https://travis-ci.org/consul/consul.svg?branch=master)](https://travis-ci.org/consul/consul) [![Build Status](https://travis-ci.org/consul/consul.svg?branch=master)](https://travis-ci.org/consul/consul)
[![Code Climate](https://codeclimate.com/github/consul/consul/badges/gpa.svg)](https://codeclimate.com/github/consul/consul) [![Code Climate](https://codeclimate.com/github/consul/consul/badges/gpa.svg)](https://codeclimate.com/github/consul/consul)
[![Dependency Status](https://gemnasium.com/consul/consul.svg)](https://gemnasium.com/consul/consul) [![Dependency Status](https://gemnasium.com/consul/consul.svg)](https://gemnasium.com/consul/consul)
[![Coverage Status](https://coveralls.io/repos/github/consul/consul/badge.svg?branch=master)](https://coveralls.io/github/consul/consul?branch=master) [![Coverage Status](https://coveralls.io/repos/github/consul/consul/badge.svg?branch=master)](https://coveralls.io/github/consul/consul?branch=master)
[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](http://www.gnu.org/licenses/agpl-3.0)
[![Accessibility conformance](https://img.shields.io/badge/accessibility-WAI:AA-green.svg)](https://www.w3.org/WAI/eval/Overview)
[![A11y issues checked with Rocket Validator](https://rocketvalidator.com/badges/checked_with_rocket_validator.svg?url=https://rocketvalidator.com)](https://rocketvalidator.com/opensource)
[![Join the chat at https://gitter.im/consul/consul](https://badges.gitter.im/consul/consul.svg)](https://gitter.im/consul/consul?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
This is the opensource code repository of the eParticipation website originally developed for the Madrid City government eParticipation website This is the opensource code repository of the eParticipation website originally developed for the Madrid City government eParticipation website

View File

@@ -1,15 +1,20 @@
![Logotipo de Consul] ![Logotipo de Consul](https://raw.githubusercontent.com/consul/consul/master/public/consul_logo.png)
(https://raw.githubusercontent.com/consul/consul/master/public/consul_logo.png)
# Consul # Consul
Aplicación de Participación Ciudadana y Gobierno Abierto Aplicación de Participación Ciudadana y Gobierno Abierto
[![Join the chat at https://gitter.im/consul/consul](https://badges.gitter.im/consul/consul.svg)](https://gitter.im/consul/consul?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Build Status](https://travis-ci.org/consul/consul.svg?branch=master)](https://travis-ci.org/consul/consul) [![Build Status](https://travis-ci.org/consul/consul.svg?branch=master)](https://travis-ci.org/consul/consul)
[![Code Climate](https://codeclimate.com/github/consul/consul/badges/gpa.svg)](https://codeclimate.com/github/consul/consul) [![Code Climate](https://codeclimate.com/github/consul/consul/badges/gpa.svg)](https://codeclimate.com/github/consul/consul)
[![Dependency Status](https://gemnasium.com/consul/consul.svg)](https://gemnasium.com/consul/consul) [![Dependency Status](https://gemnasium.com/consul/consul.svg)](https://gemnasium.com/consul/consul)
[![Coverage Status](https://coveralls.io/repos/github/consul/consul/badge.svg?branch=master)](https://coveralls.io/github/consul/consul?branch=master) [![Coverage Status](https://coveralls.io/repos/github/consul/consul/badge.svg?branch=master)](https://coveralls.io/github/consul/consul?branch=master)
[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](http://www.gnu.org/licenses/agpl-3.0)
[![Accessibility conformance](https://img.shields.io/badge/accessibility-WAI:AA-green.svg)](https://www.w3.org/WAI/eval/Overview)
[![A11y issues checked with Rocket Validator](https://rocketvalidator.com/badges/checked_with_rocket_validator.svg?url=https://rocketvalidator.com)](https://rocketvalidator.com/opensource)
[![Join the chat at https://gitter.im/consul/consul](https://badges.gitter.im/consul/consul.svg)](https://gitter.im/consul/consul?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
Este es el repositorio de código abierto de la Aplicación de Participación Ciudadana Consul, creada originariamente por el Ayuntamiento de Madrid. Este es el repositorio de código abierto de la Aplicación de Participación Ciudadana Consul, creada originariamente por el Ayuntamiento de Madrid.

Binary file not shown.

View File

@@ -56,6 +56,9 @@
<glyph glyph-name="arrow-right" unicode="&#85;" d="M329 256c0-5-2-9-5-13l-128-128c-4-3-8-5-13-5-5 0-9 2-13 5-4 4-5 8-5 13l0 256c0 5 1 9 5 13 4 3 8 5 13 5 5 0 9-2 13-5l128-128c3-4 5-8 5-13z"/> <glyph glyph-name="arrow-right" unicode="&#85;" d="M329 256c0-5-2-9-5-13l-128-128c-4-3-8-5-13-5-5 0-9 2-13 5-4 4-5 8-5 13l0 256c0 5 1 9 5 13 4 3 8 5 13 5 5 0 9-2 13-5l128-128c3-4 5-8 5-13z"/>
<glyph glyph-name="check-circle" unicode="&#86;" d="M256 480c-124 0-224-100-224-224 0-124 100-224 224-224 124 0 224 100 224 224 0 124-100 224-224 224z m115-149l-139-179c-1-1-3-3-5-3-3 0-4 1-5 3-2 1-79 76-79 76l-2 1c0 1-1 2-1 3 0 2 1 3 1 4 1 0 1 0 1 1 8 8 24 24 25 25 1 2 2 3 4 3 3 0 5-2 6-3 1-1 45-43 45-43l111 143c1 0 2 1 4 1 1 0 2 0 3-1l31-24c0-1 1-3 1-4 0-1 0-2-1-3z"/> <glyph glyph-name="check-circle" unicode="&#86;" d="M256 480c-124 0-224-100-224-224 0-124 100-224 224-224 124 0 224 100 224 224 0 124-100 224-224 224z m115-149l-139-179c-1-1-3-3-5-3-3 0-4 1-5 3-2 1-79 76-79 76l-2 1c0 1-1 2-1 3 0 2 1 3 1 4 1 0 1 0 1 1 8 8 24 24 25 25 1 2 2 3 4 3 3 0 5-2 6-3 1-1 45-43 45-43l111 143c1 0 2 1 4 1 1 0 2 0 3-1l31-24c0-1 1-3 1-4 0-1 0-2-1-3z"/>
<glyph glyph-name="arrow-top" unicode="&#87;" d="M402 165c0-5-2-10-5-13-4-4-8-6-13-6l-256 0c-5 0-9 2-13 6-3 3-5 8-5 13 0 5 2 9 5 12l128 128c4 4 8 6 13 6 5 0 9-2 13-6l128-128c3-3 5-7 5-12z"/> <glyph glyph-name="arrow-top" unicode="&#87;" d="M402 165c0-5-2-10-5-13-4-4-8-6-13-6l-256 0c-5 0-9 2-13 6-3 3-5 8-5 13 0 5 2 9 5 12l128 128c4 4 8 6 13 6 5 0 9-2 13-6l128-128c3-3 5-7 5-12z"/>
<glyph glyph-name="help-1" unicode="&#88;" d="M345 435c-27 21-58 28-98 28-29 0-55-6-75-20-30-20-44-54-44-108l77 0c0 14-2 30 7 43 8 13 20 24 40 24 20 0 31-6 41-18 8-11 11-23 11-36 0-12-5-22-12-32-4-5-9-10-15-15 0 0-42-25-56-48-11-18-15-40-16-66 0-2 0-5 7-5 7 0 56 0 62 0 6 0 7 4 7 6 0 9 2 24 3 29 4 11 10 20 20 28l21 14c18 15 33 26 40 36 11 15 19 34 19 57 0 36-13 64-39 83z m-103-293c-26 1-47-17-48-46-1-28 19-46 45-47 27-1 48 17 49 45 1 28-19 47-46 48z"/>
<glyph glyph-name="checkmark-circle" unicode="&#89;" d="M171 296l-29-30 93-93 208 208-29 29-179-178z m251-40c0-92-74-166-166-166-92 0-166 74-166 166 0 92 74 166 166 166 16 0 31-2 46-6l32 32c-24 11-50 16-78 16-114 0-208-94-208-208 0-114 94-208 208-208 114 0 208 94 208 208z"/> <glyph glyph-name="checkmark-circle" unicode="&#89;" d="M171 296l-29-30 93-93 208 208-29 29-179-178z m251-40c0-92-74-166-166-166-92 0-166 74-166 166 0 92 74 166 166 166 16 0 31-2 46-6l32 32c-24 11-50 16-78 16-114 0-208-94-208-208 0-114 94-208 208-208 114 0 208 94 208 208z"/>
<glyph glyph-name="minus-square" unicode="&#88;" d="M357 402c17 0 32-6 45-18 12-13 19-28 19-46l0-201c0-17-7-32-19-45-13-13-28-19-45-19l-202 0c-17 0-32 6-45 19-12 13-19 28-19 45l0 201c0 18 7 33 19 46 13 12 28 18 45 18z m27-265l0 201c0 8-3 14-8 20-5 5-12 8-19 8l-202 0c-7 0-14-3-19-8-5-6-8-12-8-20l0-201c0-7 3-14 8-19 5-6 12-8 19-8l202 0c7 0 14 2 19 8 5 5 8 12 8 19z m-46 119c3 0 5-1 7-3 2-1 2-3 2-6l0-18c0-3 0-5-2-7-2-2-4-3-7-3l-164 0c-3 0-5 1-7 3-2 2-2 4-2 7l0 18c0 3 0 5 2 6 2 2 4 3 7 3z"/>
<glyph glyph-name="plus-square" unicode="&#90;" d="M347 247l0-18c0-3 0-5-2-7-2-2-4-3-7-3l-64 0 0-64c0-2-1-4-2-6-2-2-4-3-7-3l-18 0c-3 0-5 1-7 3-1 2-2 4-2 6l0 64-64 0c-3 0-5 1-7 3-2 2-2 4-2 7l0 18c0 3 0 5 2 6 2 2 4 3 7 3l64 0 0 64c0 3 1 5 2 7 2 1 4 2 7 2l18 0c3 0 5-1 7-2 1-2 2-4 2-7l0-64 64 0c3 0 5-1 7-3 2-1 2-3 2-6z m37-110l0 201c0 8-3 14-8 20-5 5-12 8-19 8l-202 0c-7 0-14-3-19-8-5-6-8-12-8-20l0-201c0-7 3-14 8-19 5-6 12-8 19-8l202 0c7 0 14 2 19 8 5 5 8 12 8 19z m37 201l0-201c0-17-7-32-19-45-13-13-28-19-45-19l-202 0c-17 0-32 6-45 19-12 13-19 28-19 45l0 201c0 18 7 33 19 46 13 12 28 18 45 18l202 0c17 0 32-6 45-18 12-13 19-28 19-46z"/>
<glyph glyph-name="expand" unicode="&#48;" d="M26 168l-26-158c0-2 1-5 3-7 0 0 0 0 0 0 2-2 5-3 7-3l158 27c3 0 6 3 7 6 1 3 0 7-3 9l-30 31 82 82c4 4 4 9 0 13l-57 57c-3 3-9 3-12 0l-83-83-31 31c-2 2-5 3-9 2-3-1-5-4-6-7z m460 176l26 158c0 2-1 5-3 7 0 0 0 0 0 0-2 2-5 3-7 3l-158-27c-3 0-6-3-7-6-1-3 0-7 3-9l30-31-82-82c-4-4-4-9 0-13l57-57c3-3 9-3 12 0l83 83 31-31c2-2 5-3 9-2 3 1 5 4 6 7z"/>
<glyph glyph-name="telegram" unicode="&#49;" d="M504 509c6-5 9-11 8-18l-73-439c-1-6-4-10-10-13-2-2-5-2-8-2-3 0-5 0-7 1l-130 53-69-84c-3-5-8-7-14-7-2 0-4 0-6 1-4 1-7 4-9 7-2 3-3 6-3 10l0 100 247 303-306-265-113 47c-7 2-10 7-11 15 0 8 3 14 9 17l476 274c2 2 5 3 9 3 4 0 7-1 10-3z"/>
</font></defs></svg> </font></defs></svg>

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -12,8 +12,8 @@
// //
//= require jquery //= require jquery
//= require jquery_ujs //= require jquery_ujs
//= require jquery-ui/datepicker //= require jquery-ui/widgets/datepicker
//= require jquery-ui/datepicker-es //= require jquery-ui/i18n/datepicker-es
//= require foundation //= require foundation
//= require turbolinks //= require turbolinks
//= require ckeditor/loader //= require ckeditor/loader

View File

@@ -6,6 +6,7 @@
@import "admin"; @import "admin";
@import "layout"; @import "layout";
@import "participation"; @import "participation";
@import "pages";
@import "custom"; @import "custom";
@import "c3"; @import "c3";
@import "annotator.min"; @import "annotator.min";

View File

@@ -190,3 +190,6 @@
.icon-checkmark-circle:before { .icon-checkmark-circle:before {
content: "\59"; content: "\59";
} }
.icon-telegram:before {
content: "\31";
}

View File

@@ -70,6 +70,11 @@ a {
} }
} }
.button.hollow {
border: 1px solid $link;
color: $link;
}
.postfix.button { .postfix.button {
padding: 0; padding: 0;
} }
@@ -1128,11 +1133,12 @@ img.avatar, img.admin-avatar, img.moderator-avatar, img.initialjs-avatar {
// -------------------- // --------------------
[class^="level-"] { [class^="level-"] {
color: white; color: black;
} }
.is-author { .is-author {
background: #008CCF; background: #00A5F1;
color: black;
} }
.is-association { .is-association {
@@ -1190,7 +1196,11 @@ table {
.button.button-twitter, .button.button-twitter,
.button.button-facebook, .button.button-facebook,
.button.button-google { .button.button-google,
.button.button-telegram {
background: white;
color: $text;
font-weight: bold;
height: $line-height*2; height: $line-height*2;
line-height: $line-height*2; line-height: $line-height*2;
padding: 0; padding: 0;
@@ -1198,9 +1208,11 @@ table {
} }
.button.button-twitter { .button.button-twitter {
background: #45B0E3; background: #ECF7FC;
border-left: 3px solid #45B0E3;
&:before { &:before {
color: #45B0E3;
content: "f"; content: "f";
font-family: "icons" !important; font-family: "icons" !important;
font-size: rem-calc(24); font-size: rem-calc(24);
@@ -1238,9 +1250,11 @@ table {
} }
.button.button-facebook { .button.button-facebook {
background: #3B5998; background: #EBEEF4;
border-left: 3px solid #3B5998;
&:before { &:before {
color: #3B5998;
content: "A"; content: "A";
font-family: "icons" !important; font-family: "icons" !important;
font-size: rem-calc(24); font-size: rem-calc(24);
@@ -1278,9 +1292,11 @@ table {
} }
.button.button-google { .button.button-google {
background: #DE4C34; background: #FCEDEA;
border-left: 3px solid #DE4C34;
&:before { &:before {
color: #DE4C34;
content: "B"; content: "B";
font-family: "icons" !important; font-family: "icons" !important;
font-size: rem-calc(24); font-size: rem-calc(24);
@@ -1317,6 +1333,48 @@ table {
} }
} }
.button.button-telegram {
background: #ECF7FC;
border-left: 3px solid #0088cc;
&:before {
color: #0088cc;
content: "1";
font-family: "icons" !important;
font-size: rem-calc(24);
left: 0;
line-height: $line-height*2;
padding: 0 rem-calc(20);
position: absolute;
top: 0;
}
}
.ssb-telegram {
background: #0088cc;
background-image: none !important;
color: white;
height: $line-height*2 !important;
position: relative;
width: $line-height*2 !important;
&:before {
content: "1";
font-family: "icons" !important;
font-size: rem-calc(24);
left: 50%;
line-height: $line-height*2;
margin-left: rem-calc(-11);
position: absolute;
top: 0;
}
&:hover, &:focus {
background: white;
color: #40A2D1;
}
}
.social { .social {
a { a {
@@ -1408,6 +1466,30 @@ table {
color: #CE3E26; color: #CE3E26;
} }
} }
.ssb-telegram {
background: #0088cc;
color: white;
height: $line-height;
position: relative;
width: $line-height*2;
&:before {
content: "A";
font-family: "icons" !important;
font-size: rem-calc(24);
left: 50%;
line-height: $line-height*2;
margin-left: rem-calc(-11);
position: absolute;
top: 0;
}
&:hover, &:focus {
background: white;
color: #40A2D1;
}
}
} }
// 13. Pages // 13. Pages

View File

@@ -0,0 +1,111 @@
// Table of Contents
//
// 01. Header
// 02. Navigation
// 03. Content
// 04. Sidebar
//
// 01. Header
// ----------------------
.jumbo {
margin-bottom: $line-height;
margin-top: rem-calc(-24);
padding-bottom: $line-height;
padding-top: $line-height;
&.light {
background: #ECF0F1;
}
}
.lead {
font-size: rem-calc(24);
}
// 03. Navigation
// ----------------------
.menu-pages {
list-style-type: none;
margin: 0;
li {
display: block;
@include breakpoint(medium) {
display: inline-block;
margin-right: $line-height/2;
}
}
}
// 03. Content
// ----------------------
.more-info-content {
h3 {
color: $brand;
}
.additional-info {
margin-bottom: $line-height;
}
a:not(.button) {
text-decoration: underline;
}
figure {
margin: 0;
text-align: center;
figcaption {
font-size: $small-font-size;
font-style: italic;
}
}
ul.features {
list-style-type: circle;
margin-left: $line-height;
@include breakpoint(medium) {
margin: $line-height 0 $line-height $line-height*2.5;
}
li {
margin-bottom: $line-height
}
}
.section-content {
border-top: 1px solid $medium-gray;
padding-bottom: $line-height*2;
padding-top: $line-height*2;
&:first-child {
border-top: 0;
padding-top: 0;
}
}
}
// 04. Sidebar
// ----------------------
.more-info-sidebar {
.sidebar-card {
border: 1px solid $border;
margin-bottom: $line-height;
padding: $line-height/2;
&.light {
background: #ECF0F1;
border: 0;
}
}
}

View File

@@ -457,7 +457,7 @@
} }
.bullet { .bullet {
color: $border; color: $text;
} }
.investment-project-show p, .budget-investment-show p { .investment-project-show p, .budget-investment-show p {
@@ -976,6 +976,10 @@
&.social-share-button-google_plus:hover { &.social-share-button-google_plus:hover {
color: #CE3E26; color: #CE3E26;
} }
&.social-share-button-telegram:hover {
color: #CE3E26;
}
} }
} }

View File

@@ -55,7 +55,7 @@ module Budgets
end end
def destroy def destroy
investment.destroy @investment.destroy
redirect_to user_path(current_user, filter: 'budget_investments'), notice: t('flash.actions.destroy.budget_investment') redirect_to user_path(current_user, filter: 'budget_investments'), notice: t('flash.actions.destroy.budget_investment')
end end

View File

@@ -129,16 +129,16 @@ module CommentableActions
when '4' when '4'
1.year.ago 1.year.ago
else else
Date.parse(params[:advanced_search][:date_min]) rescue nil Date.parse(params[:advanced_search][:date_min]) rescue 100.years.ago
end end
end end
def search_finish_date def search_finish_date
params[:advanced_search][:date_max].try(:to_date) || Date.today (params[:advanced_search][:date_max].to_date rescue Date.today) || Date.today
end end
def search_date_range def search_date_range
search_start_date.beginning_of_day..search_finish_date.end_of_day [100.years.ago, search_start_date].max.beginning_of_day..[search_finish_date, Date.today].min.end_of_day
end end
def set_search_order def set_search_order

View File

@@ -7,6 +7,11 @@ class Management::BudgetsController < Management::BaseController
def create_investments def create_investments
@budgets = Budget.accepting.order(created_at: :desc).page(params[:page]) @budgets = Budget.accepting.order(created_at: :desc).page(params[:page])
if current_manager_administrator?
@budgets += Budget.reviewing.order(created_at: :desc) +
Budget.selecting.order(created_at: :desc)
end
end end
def support_investments def support_investments
@@ -23,4 +28,8 @@ class Management::BudgetsController < Management::BaseController
check_verified_user t("management.budget_investments.alert.unverified_user") check_verified_user t("management.budget_investments.alert.unverified_user")
end end
def current_manager_administrator?
session[:manager]["login"].match("admin")
end
end end

View File

@@ -32,7 +32,7 @@ class Management::UsersController < Management::BaseController
private private
def user_params def user_params
params.require(:user).permit(:document_type, :document_number, :username, :email) params.require(:user).permit(:document_type, :document_number, :username, :email, :date_of_birth)
end end
def destroy_session def destroy_session

View File

@@ -38,4 +38,8 @@ module BudgetsHelper
def current_ballot def current_ballot
Budget::Ballot.where(user: current_user, budget: @budget).first Budget::Ballot.where(user: current_user, budget: @budget).first
end end
def investment_tags_select_options
Budget::Investment.tags_on(:valuation).order(:name).select(:name).distinct
end
end end

View File

@@ -2,6 +2,7 @@ module EmbedVideosHelper
def embedded_video_code def embedded_video_code
link = @proposal.video_url link = @proposal.video_url
title = t('proposals.show.embed_video_title', proposal: @proposal.title)
if link.match(/vimeo.*/) if link.match(/vimeo.*/)
server = "Vimeo" server = "Vimeo"
elsif link.match(/youtu*.*/) elsif link.match(/youtu*.*/)
@@ -21,7 +22,7 @@ module EmbedVideosHelper
end end
if match and match[2] if match and match[2]
'<iframe src="' + src + match[2] + '" frameborder="0" allowfullscreen></iframe>' '<iframe src="' + src + match[2] + '" style="border:0;" allowfullscreen title="' + title + '"></iframe>'
else else
'' ''
end end

View File

@@ -2,7 +2,7 @@ module SignatureSheetsHelper
def signable_options def signable_options
[[t("activerecord.models.proposal", count: 1), Proposal], [[t("activerecord.models.proposal", count: 1), Proposal],
[t("activerecord.models.spending_proposal", count: 1), SpendingProposal]] [t("activerecord.models.budget/investment", count: 1), Budget::Investment]]
end end
end end

View File

@@ -46,6 +46,7 @@ module Abilities
can :create, SpendingProposal can :create, SpendingProposal
can :create, Budget::Investment, budget: { phase: "accepting" } can :create, Budget::Investment, budget: { phase: "accepting" }
can :destroy, Budget::Investment, budget: { phase: ["accepting", "reviewing"] }, author_id: user.id
can :vote, Budget::Investment, budget: { phase: "selecting" } can :vote, Budget::Investment, budget: { phase: "selecting" }
can [:show, :create], Budget::Ballot, budget: { phase: "balloting" } can [:show, :create], Budget::Ballot, budget: { phase: "balloting" }
can [:create, :destroy], Budget::Ballot::Line, budget: { phase: "balloting" } can [:create, :destroy], Budget::Ballot::Line, budget: { phase: "balloting" }

View File

@@ -25,6 +25,7 @@ class Budget
validates :description, presence: true validates :description, presence: true
validates :heading_id, presence: true validates :heading_id, presence: true
validates_presence_of :unfeasibility_explanation, if: :unfeasibility_explanation_required? validates_presence_of :unfeasibility_explanation, if: :unfeasibility_explanation_required?
validates_presence_of :price, if: :price_required?
validates :title, length: { in: 4..Budget::Investment.title_max_length } validates :title, length: { in: 4..Budget::Investment.title_max_length }
validates :description, length: { maximum: Budget::Investment.description_max_length } validates :description, length: { maximum: Budget::Investment.description_max_length }
@@ -136,6 +137,10 @@ class Budget
unfeasible? && valuation_finished? unfeasible? && valuation_finished?
end end
def price_required?
feasible? && valuation_finished?
end
def unfeasible_email_pending? def unfeasible_email_pending?
unfeasible_email_sent_at.blank? && unfeasible? && valuation_finished? unfeasible_email_sent_at.blank? && unfeasible? && valuation_finished?
end end
@@ -225,7 +230,7 @@ class Budget
def should_show_aside? def should_show_aside?
(budget.selecting? && !unfeasible?) || (budget.selecting? && !unfeasible?) ||
(budget.balloting? && feasible?) || (budget.balloting? && feasible?) ||
(budget.valuating? && feasible?) (budget.valuating? && !unfeasible?)
end end
def should_show_votes? def should_show_votes?
@@ -259,7 +264,7 @@ class Budget
private private
def set_denormalized_ids def set_denormalized_ids
self.group_id ||= self.heading.try(:group_id) self.group_id = self.heading.try(:group_id) if self.heading_id_changed?
self.budget_id ||= self.heading.try(:group).try(:budget_id) self.budget_id ||= self.heading.try(:group).try(:budget_id)
end end
end end

View File

@@ -12,35 +12,30 @@ class Signature < ActiveRecord::Base
before_validation :clean_document_number before_validation :clean_document_number
def verified?
user_exists? || in_census?
end
def verify def verify
if verified?
assign_vote
mark_as_verified
end
end
def assign_vote
if user_exists? if user_exists?
assign_vote_to_user assign_vote_to_user
else mark_as_verified
elsif in_census?
create_user create_user
assign_vote_to_user assign_vote_to_user
mark_as_verified
end end
end end
def assign_vote_to_user def assign_vote_to_user
set_user set_user
signable.register_vote(user, "yes") if signable.is_a? Budget::Investment
signable.vote_by(voter: user, vote: 'yes') if [nil, :no_selecting_allowed].include?(signable.reason_for_not_being_selectable_by(user))
else
signable.register_vote(user, "yes")
end
assign_signature_to_vote assign_signature_to_vote
end end
def assign_signature_to_vote def assign_signature_to_vote
vote = Vote.where(votable: signable, voter: user).first vote = Vote.where(votable: signable, voter: user).first
vote.update(signature: self) vote.update(signature: self) if vote
end end
def user_exists? def user_exists?
@@ -55,7 +50,10 @@ class Signature < ActiveRecord::Base
erased_at: Time.current, erased_at: Time.current,
password: random_password, password: random_password,
terms_of_service: '1', terms_of_service: '1',
email: nil email: nil,
date_of_birth: @census_api_response.date_of_birth,
gender: @census_api_response.gender,
geozone: Geozone.where(census_code: @census_api_response.district_code).first
} }
User.create!(user_params) User.create!(user_params)
end end
@@ -70,10 +68,17 @@ class Signature < ActiveRecord::Base
end end
def in_census? def in_census?
response = document_types.detect do |document_type| document_types.detect do |document_type|
CensusApi.new.call(document_type, document_number).valid? response = CensusApi.new.call(document_type, document_number)
if response.valid?
@census_api_response = response
true
else
false
end
end end
response.present?
@census_api_response.present?
end end
def set_user def set_user

View File

@@ -2,7 +2,7 @@ class SignatureSheet < ActiveRecord::Base
belongs_to :signable, polymorphic: true belongs_to :signable, polymorphic: true
belongs_to :author, class_name: 'User', foreign_key: 'author_id' belongs_to :author, class_name: 'User', foreign_key: 'author_id'
VALID_SIGNABLES = %w( Proposal SpendingProposal ) VALID_SIGNABLES = %w( Proposal Budget::Investment SpendingProposal )
has_many :signatures has_many :signatures

View File

@@ -28,7 +28,7 @@
<div class="small-12 medium-3 column"> <div class="small-12 medium-3 column">
<%= select_tag :tag_name, <%= select_tag :tag_name,
options_for_select(spending_proposal_tags_select_options, params[:tag_name]), options_for_select(investment_tags_select_options, params[:tag_name]),
{ prompt: t("admin.budget_investments.index.tags_filter_all"), { prompt: t("admin.budget_investments.index.tags_filter_all"),
label: false, label: false,
class: "js-submit-on-change" } %> class: "js-submit-on-change" } %>

View File

@@ -7,23 +7,24 @@
</th> </th>
</tr> </tr>
<% if headings.blank? %> <% if headings.blank? %>
<tbody> </thead>
<tr> <tbody>
<td colspan="3"> <tr>
<div class="callout primary"> <td colspan="3">
<%= t("admin.budgets.form.no_heading") %> <div class="callout primary">
</div> <%= t("admin.budgets.form.no_heading") %>
</td> </div>
</tr> </td>
<% else %> </tr>
<tr> <% else %>
<th><%= t("admin.budgets.form.table_heading") %></th> <tr>
<th><%= t("admin.budgets.form.table_amount") %></th> <th><%= t("admin.budgets.form.table_heading") %></th>
</tr> <th><%= t("admin.budgets.form.table_amount") %></th>
</thead> </tr>
<tbody> </thead>
<% end %> <tbody>
<% end %>
<!-- new heading form --> <!-- new heading form -->
<tr id="group-<%= group.id %>-new-heading-form" style="display:none"> <tr id="group-<%= group.id %>-new-heading-form" style="display:none">
@@ -52,16 +53,15 @@
<!-- /. new heading form --> <!-- /. new heading form -->
<!-- headings list --> <!-- headings list -->
<% headings.each do |heading| %> <% headings.each do |heading| %>
<tr> <tr>
<td> <td>
<%= heading.name %> <%= heading.name %>
</td> </td>
<td> <td>
<%= heading.price %> <%= heading.price %>
</td> </td>
</tr> </tr>
<% end %> <% end %>
<!-- /. headings list --> <!-- /. headings list -->
</tbody> </tbody>
</table> </table>
</div>

View File

@@ -10,8 +10,10 @@
<div class="small-12 medium-9 column"> <div class="small-12 medium-9 column">
<table> <table>
<thead> <thead>
<th><%= Budget.human_attribute_name(:name) %></th> <tr>
<th><%= Budget.human_attribute_name(:phase) %></th> <th scope="col"><%= Budget.human_attribute_name(:name) %></th>
<th scope="col"><%= Budget.human_attribute_name(:phase) %></th>
</tr>
</thead> </thead>
<tbody> <tbody>
<% @budgets.each do |budget| %> <% @budgets.each do |budget| %>

View File

@@ -103,8 +103,9 @@
<div class="social-share-full"> <div class="social-share-full">
<%= social_share_button_tag("#{investment.title} #{setting['twitter_hashtag']}") %> <%= social_share_button_tag("#{investment.title} #{setting['twitter_hashtag']}") %>
<% if browser.device.mobile? %> <% if browser.device.mobile? %>
<a href="whatsapp://send?text=<%= investment.title %> <%= budget_investment_url(budget_id: investment.budget_id, id: investment.id) %>" data-action="share/whatsapp/share"> <a href="whatsapp://send?text=<%= investment.title.gsub(/\s/, '&nbsp;') %>&nbsp;<%= budget_investment_url(budget_id: investment.budget_id, id: investment.id) %>" data-action="share/whatsapp/share">
<span class="icon-whatsapp whatsapp"></span> <span class="icon-whatsapp whatsapp"></span>
<span class="sr-only"><%= t("social.whatsapp") %></span>
</a> </a>
<% end %> <% end %>
</div> </div>

View File

@@ -7,7 +7,7 @@
<div data-alert class="callout primary"> <div data-alert class="callout primary">
<%= t("debates.new.info", <%= t("debates.new.info",
info_link: link_to(t("debates.new.info_link"), new_proposal_path )).html_safe %> info_link: link_to(t("debates.new.info_link"), new_proposal_path )).html_safe %>
<%= link_to "/more_information", title: t('shared.target_blank_html'), target: "_blank" do %> <%= link_to more_info_path, title: t('shared.target_blank_html'), target: "_blank" do %>
<strong><%= t("debates.new.more_info") %></strong> <strong><%= t("debates.new.more_info") %></strong>
<% end %> <% end %>
</div> </div>

View File

@@ -53,8 +53,9 @@
<div class="social-share-full"> <div class="social-share-full">
<%= social_share_button_tag("#{@debate.title} #{setting['twitter_hashtag']}") %> <%= social_share_button_tag("#{@debate.title} #{setting['twitter_hashtag']}") %>
<% if browser.device.mobile? %> <% if browser.device.mobile? %>
<a href="whatsapp://send?text=<%= @debate.title %> <%= debate_url(@debate) %>" data-action="share/whatsapp/share"> <a href="whatsapp://send?text=<%= @debate.title.gsub(/\s/, '&nbsp;') %>&nbsp;<%= debate_url(@debate) %>" data-action="share/whatsapp/share">
<span class="icon-whatsapp whatsapp"></span> <span class="icon-whatsapp whatsapp"></span>
<span class="sr-only"><%= t("social.whatsapp") %></span>
</a> </a>
<% end %> <% end %>
</div> </div>

View File

@@ -19,6 +19,7 @@
<%= f.submit(t("devise_views.confirmations.new.submit"), class: "button expanded") %> <%= f.submit(t("devise_views.confirmations.new.submit"), class: "button expanded") %>
</div> </div>
</div> </div>
</div>
<% end %> <% end %>
<%= render "devise/shared/links" %> <%= render "devise/shared/links" %>

View File

@@ -1,6 +1,6 @@
<% if user_signed_in? %> <% if user_signed_in? %>
<li> <li>
<%= link_to notifications_path, class: "notifications", accesskey: "n" do %> <%= link_to notifications_path, class: "notifications" do %>
<span class="sr-only"><%= t("layouts.header.notifications") %></span> <span class="sr-only"><%= t("layouts.header.notifications") %></span>
<% if current_user.notifications_count > 0 %> <% if current_user.notifications_count > 0 %>
<span class="icon-circle" aria-hidden="true"></span> <span class="icon-circle" aria-hidden="true"></span>
@@ -12,19 +12,19 @@
<% end %> <% end %>
</li> </li>
<li> <li>
<%= link_to(t("layouts.header.my_activity_link"), user_path(current_user), accesskey: "a") %> <%= link_to t("layouts.header.my_activity_link"), user_path(current_user) %>
</li> </li>
<li> <li>
<%= link_to(t("layouts.header.my_account_link"), account_path, accesskey: "m") %> <%= link_to t("layouts.header.my_account_link"), account_path %>
</li> </li>
<li> <li>
<%= link_to(t("devise_views.menu.login_items.logout"), destroy_user_session_path, method: :delete) %> <%= link_to t("devise_views.menu.login_items.logout"), destroy_user_session_path, method: :delete %>
</li> </li>
<% else %> <% else %>
<li> <li>
<%= link_to(t("devise_views.menu.login_items.login"), new_user_session_path) %> <%= link_to t("devise_views.menu.login_items.login"), new_user_session_path %>
</li> </li>
<li> <li>
<%= link_to(t("devise_views.menu.login_items.signup"), new_user_registration_path, class: "button") %> <%= link_to t("devise_views.menu.login_items.signup"), new_user_registration_path, class: "button" %>
</li> </li>
<% end %> <% end %>

View File

@@ -11,6 +11,7 @@
<%= f.submit t("devise_views.passwords.new.send_submit"), class: "button expanded" %> <%= f.submit t("devise_views.passwords.new.send_submit"), class: "button expanded" %>
</div> </div>
</div> </div>
</div>
<% end %> <% end %>
<%= render "devise/shared/links" %> <%= render "devise/shared/links" %>

View File

@@ -11,18 +11,18 @@
<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %> <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
<div class="row"> <div class="row">
<div class="small-12 column"> <div class="small-12 column">
<%= f.email_field :email, autofocus: true, placeholder: t("devise_views.sessions.new.email_label"), tabindex: "1" %> <%= f.email_field :email, autofocus: true, placeholder: t("devise_views.sessions.new.email_label") %>
</div> </div>
<div class="small-12 column"> <div class="small-12 column">
<%= link_to t("devise_views.shared.links.new_password"), new_password_path(resource_name), class: "float-right", tabindex: "3" %> <%= f.password_field :password, autocomplete: "off", placeholder: t("devise_views.sessions.new.password_label") %>
<%= f.password_field :password, autocomplete: "off", placeholder: t("devise_views.sessions.new.password_label"), tabindex: "2" %> <%= link_to t("devise_views.shared.links.new_password"), new_password_path(resource_name), class: "float-right" %>
</div> </div>
<% if devise_mapping.rememberable? -%> <% if devise_mapping.rememberable? -%>
<div class="small-12 column"> <div class="small-12 column">
<%= f.label :remember_me do %> <%= f.label :remember_me do %>
<%= f.check_box :remember_me, title: t('devise_views.sessions.new.remember_me'), label: false, tabindex: "4" %> <%= f.check_box :remember_me, title: t('devise_views.sessions.new.remember_me'), label: false %>
<span class="checkbox"><%= t("devise_views.sessions.new.remember_me") %></span> <span class="checkbox"><%= t("devise_views.sessions.new.remember_me") %></span>
<% end %> <% end %>
</div> </div>
@@ -35,5 +35,3 @@
<% end %> <% end %>
<%= render "devise/shared/links" %> <%= render "devise/shared/links" %>

View File

@@ -43,7 +43,6 @@
<div class="small-12 medium-8 column"> <div class="small-12 medium-8 column">
<%= t("layouts.footer.copyright", year: Time.current.year) %>&nbsp;| <%= t("layouts.footer.copyright", year: Time.current.year) %>&nbsp;|
<ul class="no-bullet inline-block"> <ul class="no-bullet inline-block">
<li class="inline-block"><%= link_to t("layouts.footer.more_info"), page_path('more_information') %>&nbsp;|</li>
<li class="inline-block"><%= link_to t("layouts.footer.privacy"), page_path('privacy') %>&nbsp;|</li> <li class="inline-block"><%= link_to t("layouts.footer.privacy"), page_path('privacy') %>&nbsp;|</li>
<li class="inline-block"><%= link_to t("layouts.footer.conditions"), page_path('conditions') %>&nbsp;|</li> <li class="inline-block"><%= link_to t("layouts.footer.conditions"), page_path('conditions') %>&nbsp;|</li>
<li class="inline-block"><%= link_to t("layouts.footer.accessibility"), page_path('accessibility') %></li> <li class="inline-block"><%= link_to t("layouts.footer.accessibility"), page_path('accessibility') %></li>
@@ -85,6 +84,14 @@
<% end %> <% end %>
</li> </li>
<% end %> <% end %>
<% if setting['telegram_handle'] %>
<li class="inline-block">
<%= link_to "https://www.telegram.me/#{setting['telegram_handle']}", target: "_blank", title: t("social.telegram") + t('shared.target_blank_html') do %>
<span class="sr-only"><%= t("social.telegram") %></span>
<span class="icon-telegram" aria-hidden="true"></span>
<% end %>
</li>
<% end %>
</ul> </ul>
</div> </div>
</div> </div>

View File

@@ -21,7 +21,7 @@
<div id="responsive-menu"> <div id="responsive-menu">
<div class="top-bar-title"> <div class="top-bar-title">
<%= link_to root_path, class: "hide-for-small-only", accesskey: "/" do %> <%= link_to root_path, class: "hide-for-small-only", accesskey: "0" do %>
<%= image_tag('logo_header.png', class: 'hide-for-small-only float-left', size: '80x80', alt: t("layouts.header.logo")) %> <%= image_tag('logo_header.png', class: 'hide-for-small-only float-left', size: '80x80', alt: t("layouts.header.logo")) %>
<%= setting['org_name'] %> <%= setting['org_name'] %>
<% end %> <% end %>

View File

@@ -20,9 +20,11 @@
type: "image/png" %> type: "image/png" %>
<%= content_for :social_media_meta_tags %> <%= content_for :social_media_meta_tags %>
<%= setting['per_page_code'].try(:html_safe) %> <%= setting['per_page_code_head'].try(:html_safe) %>
</head> </head>
<body> <body>
<%= setting['per_page_code_body'].try(:html_safe) %>
<h1 class="sr-only"><%= setting['org_name'] %></h1> <h1 class="sr-only"><%= setting['org_name'] %></h1>
<div class="wrapper <%= yield (:wrapper_class) %>"> <div class="wrapper <%= yield (:wrapper_class) %>">

View File

@@ -4,7 +4,7 @@
message: t("management.document_verifications.in_census_has_following_permissions"), message: t("management.document_verifications.in_census_has_following_permissions"),
permissions: [:debates, :create_proposals, :support_proposals, :vote_proposals] %> permissions: [:debates, :create_proposals, :support_proposals, :vote_proposals] %>
<div class="row"> <div class="row verification account">
<div class="small-12 medium-6 column"> <div class="small-12 medium-6 column">
<%= form_for @user, url: management_users_path do |f| %> <%= form_for @user, url: management_users_path do |f| %>
<%= f.hidden_field :document_type %> <%= f.hidden_field :document_type %>
@@ -15,7 +15,13 @@
<%= f.text_field :email, <%= f.text_field :email,
label: t('management.email_label'), label: t('management.email_label'),
placeholder: t('management.email_label') %> placeholder: t('management.email_label') %>
<div class="date-of-birth">
<%= f.label t("management.date_of_birth") %>
<%= f.date_select :date_of_birth,
prompt: true,
start_year: 1900, end_year: 16.years.ago.year,
label: false %>
</div>
<%= f.submit t("management.users.create_user_submit"), class: "button success" %> <%= f.submit t("management.users.create_user_submit"), class: "button success" %>
<% end %> <% end %>
</div> </div>

View File

@@ -19,45 +19,34 @@
<div class="small-12 medium-6"> <div class="small-12 medium-6">
<table> <table>
<caption class="sr-only">Atajos de teclado para el menú de navegación</caption>
<thead> <thead>
<tr> <tr>
<th class="text-center">Tecla</th> <th scope="col" class="text-center">Tecla</th>
<th>Página</th> <th scope="col">Página</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td class="text-center">/</td> <td class="text-center">0</td>
<td>Inicio</td> <td>Inicio</td>
</tr> </tr>
<tr> <tr>
<td class="text-center">D</td> <td class="text-center">1</td>
<td>Debates</td> <td>Debates</td>
</tr> </tr>
<tr> <tr>
<td class="text-center">P</td> <td class="text-center">2</td>
<td>Propuestas</td> <td>Propuestas</td>
</tr> </tr>
<tr> <tr>
<td class="text-center">S</td> <td class="text-center">3</td>
<td>Votaciones</td>
</tr>
<tr>
<td class="text-center">4</td>
<td>Presupuestos participativos</td> <td>Presupuestos participativos</td>
</tr> </tr>
<tr>
<td class="text-center">I</td>
<td>Más información</td>
</tr>
<tr>
<td class="text-center">N</td>
<td>Notificaciones</td>
</tr>
<tr>
<td class="text-center">A</td>
<td>Mi actividad</td>
</tr>
<tr>
<td class="text-center">M</td>
<td>Mi cuenta</td>
</tr>
</tbody> </tbody>
</table> </table>
</div> </div>
@@ -66,10 +55,11 @@
<div class="small-12 medium-6"> <div class="small-12 medium-6">
<table> <table>
<caption class="sr-only">Combinación de teclas dependiendo del sistema operativo y navegador</caption>
<thead> <thead>
<tr> <tr>
<th>Navegador</th> <th scope="col">Navegador</th>
<th>Combinación de teclas</th> <th scope="col">Combinación de teclas</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -104,8 +94,8 @@
<table> <table>
<thead> <thead>
<tr> <tr>
<th>Navegador</th> <th scope="col">Navegador</th>
<th>Acción a realizar </th> <th scope="col">Acción a realizar </th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>

View File

@@ -1,20 +0,0 @@
<div class="row margin-top">
<div class="small-12 medium-3 column">
<%= render "shared/back_link" %>
<ul class="menu vertical margin-top">
<li>
<a href="#i"><strong>I. <%= t('pages.more_information.how_it_works.i') %></strong></a>
<ul class="nested vertical menu">
<li><a href="#i1"><strong>I.1. <%= t('pages.more_information.how_it_works.i1') %></strong></a></li>
<li><a href="#i2"><strong>I.2. <%= t('pages.more_information.how_it_works.i2') %></strong></a></li>
</ul>
</li>
</ul>
</div>
<div class="small-12 medium-9 column">
<h1><%= t('pages.more_information.titles.how_it_works') %></h1>
<%= markdown t('pages.more_information.how_it_works.text') %>
</div>
</div>

View File

@@ -1,9 +0,0 @@
<div class="row margin-top">
<div class="text small-12 column">
<%= render "shared/back_link" %>
<h1><%= t('pages.more_information.titles.how_to_use') %></h1>
<%= markdown t('pages.more_information.how_to_use.text') %>
</div>
</div>

View File

@@ -0,0 +1,26 @@
<div class="row section-content">
<div class="small-12 column">
<h3 id="budgets" data-magellan-target="budgets">
<%= t("pages.more_info.budgets.title") %>
</h3>
<p>
<%= link_to t("pages.more_info.budgets.detail"), more_info_budgets_path, class: "small" %>
</p>
<p><%= t("pages.more_info.budgets.description") %></p>
<ul class="features">
<li>
<%= t("pages.more_info.budgets.feature_1",
link: link_to(t("pages.more_info.budgets.feature_1_link", org_name: setting['org_name']),
new_user_registration_path)).html_safe %>
</li>
<li><%= t("pages.more_info.budgets.feature_2_html") %></li>
<li><%= t("pages.more_info.budgets.feature_3_html") %></li>
<li><%= t("pages.more_info.budgets.feature_4_html") %></li>
</ul>
<figure>
<%= image_tag "more_info/budgets_#{I18n.locale}.png", alt: t("pages.more_info.budgets.image_alt") %>
<figcaption><%= t("pages.more_info.budgets.figcaption_html") %></figcaption>
</figure>
</div>
</div>

View File

@@ -0,0 +1,21 @@
<div class="row section-content">
<div class="small-12 column">
<h3 id="debates" data-magellan-target="debates">
<%= t("pages.more_info.debates.title") %>
</h3>
<p><%= t("pages.more_info.debates.description") %></p>
<ul class="features">
<li>
<%= t("pages.more_info.debates.feature_1",
link: link_to(t("pages.more_info.debates.feature_1_link", org_name: setting['org_name']),
new_user_registration_path)).html_safe %>
</li>
<li><%= t("pages.more_info.debates.feature_2_html") %></li>
</ul>
<figure>
<%= image_tag "more_info/debates.png", alt: t("pages.more_info.debates.image_alt") %>
<figcaption><%= t("pages.more_info.debates.figcaption") %></figcaption>
</figure>
</div>
</div>

View File

@@ -0,0 +1,22 @@
<div class="row">
<div class="small-12 column">
<ul class="menu-pages" data-magellan>
<% if feature?(:debates) %>
<li>
<%= link_to t("pages.more_info.menu.debates"), "#debates", class: "button hollow expanded" %>
</li>
<% end %>
<li>
<%= link_to t("pages.more_info.menu.proposals"), "#proposals", class: "button hollow expanded" %>
</li>
<% if feature?(:budgets) %>
<li>
<%= link_to t("pages.more_info.menu.budgets"), "#budgets", class: "button hollow expanded" %>
</li>
<% end %>
<li>
<%= link_to t("pages.more_info.menu.other"), "#other", class: "button hollow expanded" %>
</li>
</ul>
</div>
</div>

View File

@@ -0,0 +1,7 @@
<h3 id="other" data-magellan-target="other">Otra información de interés</h3>
<ul class="features">
<li><%= link_to t("pages.more_info.other.how_to_use", org_name: setting['org_name']), faq_path %></li>
<li><%= link_to t("pages.more_info.other.facts"), participation_facts_path %></li>
<li><%= link_to t("pages.more_info.other.world"), participation_world_path %></li>
</ul>

View File

@@ -0,0 +1,25 @@
<div class="row section-content">
<div class="small-12 column">
<h3 id="proposals" data-magellan-target="proposals">
<%= t("pages.more_info.proposals.title") %>
</h3>
<p>
<%= link_to t("pages.more_info.proposals.detail"), more_info_proposals_path, class: "small" %>
</p>
<p><%= t("pages.more_info.proposals.description") %></p>
<ul class="features">
<li>
<%= t("pages.more_info.proposals.feature_1",
link: link_to(t("pages.more_info.proposals.feature_1_link", org_name: setting['org_name']),
new_user_registration_path)).html_safe %>
</li>
<li><%= t("pages.more_info.proposals.feature_2_html") %></li>
<li><%= t("pages.more_info.proposals.feature_3_html") %></li>
</ul>
<figure>
<%= image_tag "more_info/proposals_#{I18n.locale}.png", alt: t("pages.more_info.proposals.image_alt") %>
<figcaption><%= t("pages.more_info.proposals.figcaption_html") %></figcaption>
</figure>
</div>
</div>

View File

@@ -0,0 +1,5 @@
<div class="sidebar-card">
<h3><%= t("pages.more_info.faq.title") %></h3>
<p><%= t("pages.more_info.faq.description") %></p>
<%= link_to t("pages.more_info.faq.button"), faq_path, class: "button expanded" %>
</div>

View File

@@ -0,0 +1,9 @@
<div class="row margin-top">
<div class="text small-12 column">
<%= render "shared/back_link" %>
<h1><%= t('pages.more_info.titles.how_to_use') %></h1>
<%= markdown t('pages.more_info.how_to_use.text') %>
</div>
</div>

View File

@@ -0,0 +1,39 @@
<% provide :title do %><%= t("pages.titles.more_info", org_name: setting['org_name']) %><% end %>
<div class="jumbo light">
<div class="row">
<div class="small-12 column">
<h2><%= t("pages.more_info.title", org_name: setting['org_name']) %></h2>
<p class="lead"><%= t("pages.more_info.subtitle") %></p>
<p><%= t("pages.more_info.guide", org_name: setting['org_name']) %></p>
</div>
</div>
<%= render "pages/more_info/menu" %>
</div>
<div id="more-info" class="more-info-content">
<div class="row">
<div class="small-12 medium-7 large-8 column">
<% if feature?(:debates) %>
<%= render "pages/more_info/debates" %>
<% end %>
<%= render "pages/more_info/proposals" %>
<% if feature?(:budgets) %>
<%= render "pages/more_info/budgets" %>
<% end %>
</div>
<div class="small-12 medium-4 large-3 column more-info-sidebar">
<%= render "pages/more_info/sidebar" %>
</div>
</div>
<div class="row">
<hr>
<div class="small-12 column">
<%= render "pages/more_info/other" %>
</div>
</div>
</div>

View File

@@ -1,71 +0,0 @@
<% provide :title do %><%= t('pages.titles.more_information') %><% end %>
<div class="row">
<div class="more-information small-12 medium-9 large-7 column">
<h1><%= t('pages.titles.more_information') %></h1>
<ul class="no-bullet">
<li>
<%= link_to page_path('how_it_works') do %>
<%= t('pages.more_information.titles.how_it_works') %>
<br>
<span><%= t('pages.more_information.description.how_it_works') %></span>
<% end %>
</li>
<li>
<%= link_to page_path('how_to_use') do %>
<%= t('pages.more_information.titles.how_to_use') %>
<br>
<span><%= t('pages.more_information.description.how_to_use') %></span>
<% end %>
</li>
<li>
<%= link_to page_path('participation') do %>
<%= t('pages.more_information.titles.participation') %>
<br>
<span><%= t('pages.more_information.description.participation') %></span>
<% end %>
</li>
<li>
<%= link_to page_path('proposals_info') do %>
<%= t('pages.more_information.titles.proposals_info') %>
<br>
<span><%= t('pages.more_information.description.proposals_info') %></span>
<% end %>
</li>
<li>
<%= link_to page_path('spending_proposals_info') do %>
<%= t('pages.more_information.titles.spending_proposals_info') %>
<br>
<span><%= t('pages.more_information.description.spending_proposals_info') %></span>
<% end %>
</li>
<li>
<%= link_to page_path('participation_world') do %>
<%= t('pages.more_information.titles.participation_world') %>
<br>
<span><%= t('pages.more_information.description.participation_world') %></span>
<% end %>
</li>
<li>
<%= link_to page_path('participation_facts') do %>
<%= t('pages.more_information.titles.participation_facts') %>
<br>
<span><%= t('pages.more_information.description.participation_facts') %></span>
<% end %>
</li>
<li>
<%= link_to page_path('faq') do %>
<%= t('pages.more_information.titles.faq') %>
<br>
<span><%= t('pages.more_information.description.faq') %></span>
<% end %>
</li>
<li>
<%= link_to page_path('proposals_info', :anchor => "iii") do %>
<%= t('pages.more_information.titles.signature_sheet') %>
<br>
<span><%= t('pages.more_information.description.signature_sheet') %></span>
<% end %>
</li>
</ul>
</div>
</div>

View File

@@ -1,14 +0,0 @@
<% provide :title do %><%= t('pages.titles.opendata') %><% end %>
<div class="expanded highlight no-margin-top">
<div class="row padding margin">
<div class="small-12 medium-7 column">
<h1><%= t("pages.opendata.title") %></h1>
<p><%= t("pages.opendata.slogan") %></p>
</div>
<div class="show-for-medium small-12 medium-5 column text-center">
<%= image_tag("icon_home.png", size: "330x240", alt:"") %>
</div>
</div>
</div>

View File

@@ -1,46 +0,0 @@
<div class="row margin-top">
<div class="small-12 medium-3 column">
<%= render "shared/back_link" %>
<ul class="menu vertical margin-top hide-for-small-only">
<li>
<a href="#i"><strong>I. Participación</strong></a>
<ul class="nested vertical menu">
<li><a href="#i1"><strong>I.1. Participación</strong></a></li>
<li><a href="#i2"><strong>I.2. Participación</strong></a></li>
<li><a href="#i3"><strong>I.3. Participación</strong></a></li>
</ul>
</li>
<li>
<a href="#ii"><strong>II. Transparencia</strong></a>
<ul class="nested vertical menu">
<li><a href="#ii1"><strong>II.1. Transparencia</strong></a></li>
<li><a href="#ii2"><strong>II.2. Transparencia</strong></a></li>
<li><a href="#ii3"><strong>II.3. Transparencia</strong></a></li>
</ul>
</li>
</ul>
</div>
<div class="small-12 medium-9 column">
<h1>Participación y Transparencia</h1>
<p>Página de información sobre Participación y Transparencia.</p>
<h3 id="i">I. Participación.</h3>
<ul>
<li id="i1"><strong>I.1. Participación.</strong> Información sobre Participación</li>
<li id="i2"><strong>I.1. Participación.</strong> Información sobre Participación</li>
<li id="i3"><strong>I.1. Participación.</strong> Información sobre Participación</li>
</ul>
<h3 id="ii">II. Transparencia</h3>
<ul>
<li id="ii1"><strong>II.1. Transparencia</strong> Información sobre Transparencia</li>
<li id="ii2"><strong>II.1. Transparencia</strong> Información sobre Transparencia</li>
<li id="ii3"><strong>II.1. Transparencia</strong> Información sobre Transparencia</li>
</ul>
</div>
</div>

View File

@@ -1,6 +1,6 @@
<div class="row"> <div class="row">
<div class="small-12 column"> <div class="small-12 column">
<ul class="tabs" data-tabs id="example-tabs"> <ul class="tabs" data-tabs id="proposals-tabs">
<li class="tabs-title is-active"> <li class="tabs-title is-active">
<%= link_to "#tab-comments" do %> <%= link_to "#tab-comments" do %>
<h3> <h3>

View File

@@ -132,8 +132,9 @@
<div class="social-share-full"> <div class="social-share-full">
<%= social_share_button_tag("#{@proposal.title} #{setting['twitter_hashtag']}") %> <%= social_share_button_tag("#{@proposal.title} #{setting['twitter_hashtag']}") %>
<% if browser.device.mobile? %> <% if browser.device.mobile? %>
<a href="whatsapp://send?text=<%= @proposal.title %> <%= proposal_url(@proposal) %>" data-action="share/whatsapp/share"> <a href="whatsapp://send?text=<%= @proposal.title.gsub(/\s/, '&nbsp;') %>&nbsp;<%= proposal_url(@proposal) %>" data-action="share/whatsapp/share">
<span class="icon-whatsapp whatsapp"></span> <span class="icon-whatsapp whatsapp"></span>
<span class="sr-only"><%= t("social.whatsapp") %></span>
</a> </a>
<% end %> <% end %>
</div> </div>
@@ -142,7 +143,7 @@
</div> </div>
<% end %> <% end %>
<div class="tabs-content" data-tabs-content="example-tabs"> <div class="tabs-content" data-tabs-content="proposals-tabs" role="tablist">
<%= render "proposals/filter_subnav" %> <%= render "proposals/filter_subnav" %>
<%= render "proposals/notifications" %> <%= render "proposals/notifications" %>

View File

@@ -11,7 +11,8 @@
</li> </li>
<% end %> <% end %>
<% if feature?(:spending_proposals) && (current_user.administrator? || current_user.valuator?) %> <% if (feature?(:spending_proposals) || feature?(:budgets)) &&
(current_user.administrator? || current_user.valuator?) %>
<li> <li>
<%= link_to t("layouts.header.valuation"), valuation_root_path %> <%= link_to t("layouts.header.valuation"), valuation_root_path %>
</li> </li>

View File

@@ -36,8 +36,6 @@
</label> </label>
<%= text_field_tag 'advanced_search[date_min]', <%= text_field_tag 'advanced_search[date_min]',
params[:advanced_search].try(:[], :date_min), params[:advanced_search].try(:[], :date_min),
type: "date",
placeholder: t("shared.advanced_search.date_placeholder"),
class: 'js-calendar' %> class: 'js-calendar' %>
</div> </div>
<div class='small-12 large-6 column'> <div class='small-12 large-6 column'>
@@ -46,8 +44,6 @@
</label> </label>
<%= text_field_tag 'advanced_search[date_max]', <%= text_field_tag 'advanced_search[date_max]',
params[:advanced_search].try(:[], :date_max), params[:advanced_search].try(:[], :date_max),
type: "date",
placeholder: t("shared.advanced_search.date_placeholder"),
class: 'js-calendar' %> class: 'js-calendar' %>
</div> </div>
</div> </div>

View File

@@ -3,23 +3,23 @@
<% if feature?(:debates) %> <% if feature?(:debates) %>
<li> <li>
<%= layout_menu_link_to t("layouts.header.debates"), <%= layout_menu_link_to t("layouts.header.debates"),
debates_path, debates_path,
controller_name == 'debates', controller_name == 'debates',
accesskey: "d" %> accesskey: "1" %>
</li> </li>
<% end %> <% end %>
<li> <li>
<%= layout_menu_link_to t("layouts.header.proposals"), <%= layout_menu_link_to t("layouts.header.proposals"),
proposals_path, proposals_path,
controller_name == 'proposals', controller_name == 'proposals',
accesskey: "p" %> accesskey: "2" %>
</li> </li>
<% if feature?(:polls) %> <% if feature?(:polls) %>
<li> <li>
<%= layout_menu_link_to t("layouts.header.poll_questions"), <%= layout_menu_link_to t("layouts.header.poll_questions"),
polls_path, polls_path,
controller_name == "polls", controller_name == "polls",
accesskey: "v" %> accesskey: "3" %>
</li> </li>
<% end %> <% end %>
<% if feature?(:spending_proposals) %> <% if feature?(:spending_proposals) %>
@@ -35,8 +35,14 @@
<%= layout_menu_link_to t("layouts.header.budgets"), <%= layout_menu_link_to t("layouts.header.budgets"),
budgets_path, budgets_path,
controller_name == "budgets" || controller_name == "investments", controller_name == "budgets" || controller_name == "investments",
accesskey: "b" %> accesskey: "4" %>
</li> </li>
<% end %> <% end %>
<li>
<%= link_to t("layouts.header.more_info"),
more_info_path,
accesskey: "5",
class: ("active" if current_page?(more_info_path)) %>
</li>
</ul> </ul>
</div> </div>

View File

@@ -5,8 +5,7 @@
<% taggable.tag_list_with_limit(limit).each do |tag| %> <% taggable.tag_list_with_limit(limit).each do |tag| %>
<li class="inline-block"> <li class="inline-block">
<%= link_to sanitize(tag.name), <%= link_to sanitize(tag.name),
taggables_path(taggable.class.name.underscore, tag.name), taggables_path(taggable.class.name.underscore, tag.name) %></li>
search: tag.name %></li>
<% end %> <% end %>
<% if taggable.tags_count_out_of_limit(limit) > 0 %> <% if taggable.tags_count_out_of_limit(limit) > 0 %>

View File

@@ -1,10 +1,4 @@
<ul class="no-bullet external-links"> <ul class="no-bullet external-links">
<li>
<%= link_to t("layouts.header.more_information"),
page_path('more_information'),
class: ("selected" if current_page?("/more_information")),
accesskey: "i" %>
</li>
<li> <li>
<%= link_to t("layouts.header.external_link_transparency"), <%= link_to t("layouts.header.external_link_transparency"),
t("layouts.header.external_link_transparency_url"), t("layouts.header.external_link_transparency_url"),

View File

@@ -45,8 +45,9 @@
<div class="social-share-full"> <div class="social-share-full">
<%= social_share_button_tag("#{@spending_proposal.title} #{setting['twitter_hashtag']}") %> <%= social_share_button_tag("#{@spending_proposal.title} #{setting['twitter_hashtag']}") %>
<% if browser.device.mobile? %> <% if browser.device.mobile? %>
<a href="whatsapp://send?text=<%= @spending_proposal.title %> <%= spending_proposal_url(@spending_proposal) %>" data-action="share/whatsapp/share"> <a href="whatsapp://send?text=<%= @spending_proposal.title.gsub(/\s/, '&nbsp;') %>&nbsp;<%= spending_proposal_url(@spending_proposal) %>" data-action="share/whatsapp/share">
<span class="icon-whatsapp whatsapp"></span> <span class="icon-whatsapp whatsapp"></span>
<span class="sr-only"><%= t("social.whatsapp") %></span>
</a> </a>
<% end %> <% end %>
</div> </div>

View File

@@ -4,6 +4,12 @@
<td> <td>
<%= link_to budget_investment.title, budget_investment_path(budget_investment.budget, budget_investment) %> <%= link_to budget_investment.title, budget_investment_path(budget_investment.budget, budget_investment) %>
</td> </td>
<td class="text-right">
<% if can? :destroy, budget_investment %>
<%= link_to t('shared.delete'), budget_investment_path(budget_investment.budget, budget_investment),
method: :delete, class: "button hollow alert" %>
<% end %>
</td>
</tr> </tr>
<% end %> <% end %>
</table> </table>

View File

@@ -19,7 +19,7 @@
<%= f.label :username %> <%= f.label :username %>
<p class="note"><%= t("devise_views.users.registrations.new.username_note") %></p> <p class="note"><%= t("devise_views.users.registrations.new.username_note") %></p>
<%= f.text_field :username, maxlength: User.username_max_length, placeholder: t("devise_views.users.registrations.new.username_label"), label: false %> <%= f.text_field :username, autofocus: true, maxlength: User.username_max_length, placeholder: t("devise_views.users.registrations.new.username_label"), label: false %>
<%= f.invisible_captcha :family_name %> <%= f.invisible_captcha :family_name %>

View File

@@ -4,7 +4,7 @@
<h1><%= t("layouts.header.open_city_title") %></h1> <h1><%= t("layouts.header.open_city_title") %></h1>
<p> <p>
<%= t("layouts.header.open_city_slogan_html") %>&nbsp; <%= t("layouts.header.open_city_slogan_html") %>&nbsp;
<%= link_to t("layouts.header.more_information"), page_path('more_information') %> <%= link_to t("layouts.header.more_info"), more_info_path %>
</p> </p>
<div class="small-12 medium-6"> <div class="small-12 medium-6">
<%= link_to t("layouts.header.see_all"), proposals_path, class: "button see-more expanded" %> <%= link_to t("layouts.header.see_all"), proposals_path, class: "button see-more expanded" %>

View File

@@ -1,5 +1,5 @@
# config valid only for current version of Capistrano # config valid only for current version of Capistrano
lock '3.5.0' lock '3.8.0'
def deploysecret(key) def deploysecret(key)
@deploy_secrets_yml ||= YAML.load_file('config/deploy-secrets.yml')[fetch(:stage).to_s] @deploy_secrets_yml ||= YAML.load_file('config/deploy-secrets.yml')[fetch(:stage).to_s]
@@ -15,7 +15,6 @@ set :full_app_name, deploysecret(:full_app_name)
set :server_name, deploysecret(:server_name) set :server_name, deploysecret(:server_name)
set :repo_url, 'https://github.com/consul/consul.git' set :repo_url, 'https://github.com/consul/consul.git'
set :scm, :git
set :revision, `git rev-parse --short #{fetch(:branch)}`.strip set :revision, `git rev-parse --short #{fetch(:branch)}`.strip
set :log_level, :info set :log_level, :info
@@ -56,4 +55,4 @@ task :install_bundler_gem do
on roles(:app) do on roles(:app) do
execute "rvm use #{fetch(:rvm1_ruby_version)}; gem install bundler" execute "rvm use #{fetch(:rvm1_ruby_version)}; gem install bundler"
end end
end end

View File

@@ -22,6 +22,8 @@ data:
## Another gem (replace %#= with %=): ## Another gem (replace %#= with %=):
# - "<%#= %x[bundle show vagrant].chomp %>/templates/locales/%{locale}.yml" # - "<%#= %x[bundle show vagrant].chomp %>/templates/locales/%{locale}.yml"
- config/locales/%{locale}.yml - config/locales/%{locale}.yml
- config/locales/activerecord.%{locale}.yml
- config/locales/activemodel.%{locale}.yml
- config/locales/admin.%{locale}.yml - config/locales/admin.%{locale}.yml
- config/locales/moderation.%{locale}.yml - config/locales/moderation.%{locale}.yml
- config/locales/valuation.%{locale}.yml - config/locales/valuation.%{locale}.yml

View File

@@ -8,50 +8,3 @@ Kaminari.configure do |config|
# config.page_method_name = :page # config.page_method_name = :page
# config.param_name = :page # config.param_name = :page
end end
# Overrides for making Kaminari handle i18n pluralization correctly
#
# Remove everything below once https://github.com/amatsuda/kaminari/pull/694 is
# merged in Kaminari and we have updated
module Kaminari
module ActionViewExtension
def page_entries_info(collection, options = {})
entry_name = if options[:entry_name]
options[:entry_name].pluralize(collection.size)
else
collection.entry_name(:count => collection.size).downcase
end
if collection.total_pages < 2
t('helpers.page_entries_info.one_page.display_entries', entry_name: entry_name, count: collection.total_count)
else
first = collection.offset_value + 1
last = collection.last_page? ? collection.total_count : collection.offset_value + collection.limit_value
t('helpers.page_entries_info.more_pages.display_entries', entry_name: entry_name, first: first, last: last, total: collection.total_count)
end.html_safe
end
end
module ActiveRecordRelationMethods
def entry_name(options = {})
model_name.human(options.reverse_merge(default: model_name.human.pluralize(options[:count])))
end
end
module MongoidCriteriaMethods
def entry_name(options = {})
model_name.human(options.reverse_merge(default: model_name.human.pluralize(options[:count])))
end
end
class PaginatableArray < Array
ENTRY = 'entry'.freeze
def entry_name(options = {})
I18n.t('helpers.page_entries_info.entry', options.reverse_merge(default: ENTRY.pluralize(options[:count])))
end
end
end

View File

@@ -1,3 +1,3 @@
SocialShareButton.configure do |config| SocialShareButton.configure do |config|
config.allow_sites = %w(twitter facebook google_plus) config.allow_sites = %w(twitter facebook google_plus telegram)
end end

View File

@@ -8,8 +8,8 @@ es:
one: "Presupuesto participativo" one: "Presupuesto participativo"
other: "Presupuestos participativos" other: "Presupuestos participativos"
budget/investment: budget/investment:
one: "Propuesta de inversión" one: "Proyecto de inversión"
other: "Propuestas de inversión" other: "Proyectos de inversión"
comment: comment:
one: "Comentario" one: "Comentario"
other: "Comentarios" other: "Comentarios"
@@ -49,13 +49,13 @@ es:
attributes: attributes:
budget: budget:
name: "Nombre" name: "Nombre"
description_accepting: "Descripción durante la fase de aceptación" description_accepting: "Descripción durante la fase de presentación de proyectos"
description_reviewing: "Descripción durante la fase de revisión" description_reviewing: "Descripción durante la fase de revisión interna"
description_selecting: "Descripción durante la fase de selección" description_selecting: "Descripción durante la fase de apoyos"
description_valuating: "Descripción durante la fase de evaluación" description_valuating: "Descripción durante la fase de evaluación"
description_balloting: "Descripción durante la fase de votación" description_balloting: "Descripción durante la fase de votación"
description_reviewing_ballots: "Descripción durante la fase de revisión de votos" description_reviewing_ballots: "Descripción durante la fase de revisión de votos"
description_finished: "Descripción cuando el presupuesto ha finalizado" description_finished: "Descripción cuando el presupuesto ha finalizado / Resultados"
phase: "Fase" phase: "Fase"
currency_symbol: "Divisa" currency_symbol: "Divisa"
budget/investment: budget/investment:
@@ -138,6 +138,10 @@ es:
attributes: attributes:
tag_list: tag_list:
less_than_or_equal_to: "los temas deben ser menor o igual que %{count}" less_than_or_equal_to: "los temas deben ser menor o igual que %{count}"
budget/investment:
attributes:
tag_list:
less_than_or_equal_to: "los temas deben ser menor o igual que %{count}"
proposal_notification: proposal_notification:
attributes: attributes:
minimum_interval: minimum_interval:

View File

@@ -25,11 +25,11 @@ en:
unfeasible_title: Unfeasible investments unfeasible_title: Unfeasible investments
unfeasible: See unfeasible investments unfeasible: See unfeasible investments
phase: phase:
accepting: Accepting proposals accepting: Accepting projects
reviewing: Reviewing proposals reviewing: Reviewing projects
selecting: Selecting proposals selecting: Selecting projects
valuating: Valuating proposals valuating: Valuating projects
balloting: Balloting proposals balloting: Balloting projects
reviewing_ballots: Reviewing Ballots reviewing_ballots: Reviewing Ballots
finished: Finished budget finished: Finished budget
index: index:

View File

@@ -25,13 +25,13 @@ es:
unfeasible_title: Propuestas inviables unfeasible_title: Propuestas inviables
unfeasible: Ver propuestas inviables unfeasible: Ver propuestas inviables
phase: phase:
accepting: Aceptando propuestas accepting: Presentación de proyectos
reviewing: Revisando propuestas reviewing: Revisión interna de proyectos
selecting: Selección de propuestas selecting: Fase de apoyos
valuating: Evaluación de propuestas valuating: Evaluación de proyectos
balloting: Votación de propuestas balloting: Votación final
reviewing_ballots: Contando resultados reviewing_ballots: Votación finalizada
finished: Presupuesto terminado finished: Resultados
index: index:
title: Presupuestos participativos title: Presupuestos participativos
investments: investments:

View File

@@ -175,7 +175,6 @@ en:
copyright: Consul, %{year} copyright: Consul, %{year}
description: This portal uses the %{consul} which is %{open_source}. description: This portal uses the %{consul} which is %{open_source}.
faq: technical assistance faq: technical assistance
more_info: More information
open_data_text: Every detail about the City Council is yours to access. open_data_text: Every detail about the City Council is yours to access.
open_data_title: Open data open_data_title: Open data
open_source: open-source software open_source: open-source software
@@ -192,16 +191,16 @@ en:
debates: Debates debates: Debates
external_link_blog: Blog external_link_blog: Blog
external_link_opendata: Open data external_link_opendata: Open data
external_link_opendata_url: "/opendata" external_link_opendata_url: https://opendata.consul
external_link_transparency: Transparency external_link_transparency: Transparency
external_link_transparency_url: https://transparency.consul external_link_transparency_url: https://transparency.consul
locale: 'Language:' locale: 'Language:'
logo: Consul logo: Consul logo
management: Management management: Management
moderation: Moderation moderation: Moderation
valuation: Valuation valuation: Valuation
officing: Polling officers officing: Polling officers
more_information: More information more_info: More information
my_account_link: My account my_account_link: My account
my_activity_link: My activity my_activity_link: My activity
notifications: Notifications notifications: Notifications
@@ -388,6 +387,7 @@ en:
share: Share share: Share
send_notification: Send notification send_notification: Send notification
no_notifications: "This proposal has any notifications." no_notifications: "This proposal has any notifications."
embed_video_title: "Video on %{proposal}"
update: update:
form: form:
submit_button: Save changes submit_button: Save changes
@@ -481,6 +481,7 @@ en:
search: 'Filter' search: 'Filter'
title: 'Advanced search' title: 'Advanced search'
to: 'To' to: 'To'
delete: Delete
author_info: author_info:
author_deleted: User deleted author_deleted: User deleted
back: Go back back: Go back
@@ -525,6 +526,8 @@ en:
facebook: Facebook facebook: Facebook
twitter: Twitter twitter: Twitter
youtube: YouTube youtube: YouTube
whatsapp: WhatsApp
telegram: Telegram
spending_proposals: spending_proposals:
form: form:
association_name_label: 'If you propose in name of an assocation or collective add the name here' association_name_label: 'If you propose in name of an assocation or collective add the name here'

View File

@@ -175,7 +175,6 @@ es:
copyright: Consul, %{year} copyright: Consul, %{year}
description: Este portal usa la %{consul} que es %{open_source}. description: Este portal usa la %{consul} que es %{open_source}.
faq: Asistencia técnica faq: Asistencia técnica
more_info: Más información
open_data_text: Todos los datos del Ayuntamiento son tuyos. open_data_text: Todos los datos del Ayuntamiento son tuyos.
open_data_title: Datos Abiertos open_data_title: Datos Abiertos
open_source: software libre open_source: software libre
@@ -192,16 +191,16 @@ es:
debates: Debates debates: Debates
external_link_blog: Blog external_link_blog: Blog
external_link_opendata: Datos abiertos external_link_opendata: Datos abiertos
external_link_opendata_url: "/opendata" external_link_opendata_url: https://opendata.consul
external_link_transparency: Transparencia external_link_transparency: Transparencia
external_link_transparency_url: https://transparency.consul external_link_transparency_url: https://transparency.consul
locale: 'Idioma:' locale: 'Idioma:'
logo: Consul logo: Consul logo
management: Gestión management: Gestión
moderation: Moderar moderation: Moderar
valuation: Evaluación valuation: Evaluación
officing: Presidentes de mesa officing: Presidentes de mesa
more_information: Más información more_info: Más información
my_account_link: Mi cuenta my_account_link: Mi cuenta
my_activity_link: Mi actividad my_activity_link: Mi actividad
notifications: Notificaciones notifications: Notificaciones
@@ -388,6 +387,7 @@ es:
send_notification: Enviar notificación send_notification: Enviar notificación
share: Compartir share: Compartir
no_notifications: "Esta propuesta no tiene notificaciones." no_notifications: "Esta propuesta no tiene notificaciones."
embed_video_title: "Vídeo en %{proposal}"
update: update:
form: form:
submit_button: Guardar cambios submit_button: Guardar cambios
@@ -481,6 +481,7 @@ es:
search: 'Filtrar' search: 'Filtrar'
title: 'Búsqueda avanzada' title: 'Búsqueda avanzada'
to: 'Hasta' to: 'Hasta'
delete: 'Borrar'
author_info: author_info:
author_deleted: Usuario eliminado author_deleted: Usuario eliminado
back: Volver back: Volver
@@ -525,6 +526,8 @@ es:
facebook: Facebook facebook: Facebook
twitter: Twitter twitter: Twitter
youtube: YouTube youtube: YouTube
whatsapp: WhatsApp
telegram: Telegram
spending_proposals: spending_proposals:
form: form:
association_name_label: 'Si propones en nombre de una asociación o colectivo añade el nombre aquí' association_name_label: 'Si propones en nombre de una asociación o colectivo añade el nombre aquí'
@@ -620,8 +623,8 @@ es:
one: 1 Propuesta one: 1 Propuesta
other: "%{count} Propuestas" other: "%{count} Propuestas"
budget_investments: budget_investments:
one: 1 Propuesta de inversión one: 1 Proyecto de presupuestos participativos
other: "%{count} Propuestas de inversión" other: "%{count} Proyectos de presupuestos participativos"
no_activity: Usuario sin actividad pública no_activity: Usuario sin actividad pública
no_private_messages: "Este usuario no acepta mensajes privados." no_private_messages: "Este usuario no acepta mensajes privados."
private_activity: Este usuario ha decidido mantener en privado su lista de actividades private_activity: Este usuario ha decidido mantener en privado su lista de actividades

View File

@@ -854,7 +854,6 @@ fr:
description: Ce portail utiliser %{consul} qui est %{open_source}. De Madrid description: Ce portail utiliser %{consul} qui est %{open_source}. De Madrid
ouvert sur le monde. ouvert sur le monde.
faq: assistance technique faq: assistance technique
more_info: Plus d'information
open_data_text: Tout les détails de la Mairie sont vôtre pour accès open_data_text: Tout les détails de la Mairie sont vôtre pour accès
open_data_title: Open data open_data_title: Open data
open_source: logiciel libre open_source: logiciel libre
@@ -874,9 +873,9 @@ fr:
external_link_transparency: Transparence external_link_transparency: Transparence
external_link_transparency_url: https://transparency.consul external_link_transparency_url: https://transparency.consul
locale: 'Langue :' locale: 'Langue :'
logo: Consul logo: Consul logo
moderation: Modération moderation: Modération
more_information: Plus d'information more_info: Plus d'information
my_account_link: Mon compte my_account_link: Mon compte
my_activity_link: Mon activité my_activity_link: Mon activité
new_notifications: new_notifications:
@@ -1167,7 +1166,7 @@ fr:
mentionnées dans les conditions d'utilisation de ce portail." mentionnées dans les conditions d'utilisation de ce portail."
conditions: Conditions d'utilisation conditions: Conditions d'utilisation
general_terms: Conditions d'utilisation general_terms: Conditions d'utilisation
more_information: more_info:
description: description:
faq: Questions fréquentes sur les problèmes techniques faq: Questions fréquentes sur les problèmes techniques
how_it_works: Découvrez tout ce qui est possible de faire avec ce site how_it_works: Découvrez tout ce qui est possible de faire avec ce site
@@ -1232,7 +1231,7 @@ fr:
titles: titles:
accessibility: Accessibilité accessibility: Accessibilité
conditions: Conditions d'utilisation conditions: Conditions d'utilisation
more_information: Plus d'informations more_info: Plus d'informations
opendata: Open Data opendata: Open Data
privacy: Vie privée privacy: Vie privée
verify: verify:
@@ -1354,7 +1353,8 @@ fr:
official_level_3_name: Niveau 3 personne officielle official_level_3_name: Niveau 3 personne officielle
official_level_4_name: Niveau 4 personne officielle official_level_4_name: Niveau 4 personne officielle
official_level_5_name: Niveau 5 personne officielle official_level_5_name: Niveau 5 personne officielle
per_page_code: Code à inclure dans chaque page per_page_code_head: "Code à inclure dans chaque page (<head>)"
per_page_code_body: "Code à inclure dans chaque page (<body>)"
proposal_code_prefix: Préfixe pour les codes de propositions proposal_code_prefix: Préfixe pour les codes de propositions
votes_for_proposal_success: Nombre de votes nécessaires pour l'approbation d'une votes_for_proposal_success: Nombre de votes nécessaires pour l'approbation d'une
proposition proposition
@@ -1395,6 +1395,8 @@ fr:
facebook: Facebook facebook: Facebook
twitter: Twitter twitter: Twitter
youtube: YouTube youtube: YouTube
whatsapp: WhatsApp
telegram: Telegram
social_share_button: social_share_button:
baidu: Baidu.com baidu: Baidu.com
delicious: Delicious delicious: Delicious
@@ -1413,6 +1415,7 @@ fr:
tumblr: Tumblr tumblr: Tumblr
twitter: Twitter twitter: Twitter
weibo: Sina Weibo weibo: Sina Weibo
telegram: Telegram
spending_proposals: spending_proposals:
form: form:
description: Description description: Description
@@ -1629,7 +1632,7 @@ fr:
link: Voir les propositions link: Voir les propositions
text: Créez vos propres propositions et soutenez celles d'autres citoyens. text: Créez vos propres propositions et soutenez celles d'autres citoyens.
title: Propositions citoyennes title: Propositions citoyennes
more_information: Plus d'information sur cette page more_info: Plus d'information sur cette page
proposal: proposal:
alt: Icône Proposez alt: Icône Proposez
description: Espace ouvert aux propositions sur le type de ville que nous voulons description: Espace ouvert aux propositions sur le type de ville que nous voulons

View File

@@ -32,6 +32,7 @@ en:
under_age: "You don't have the required age to verify your account." under_age: "You don't have the required age to verify your account."
verify: Verify verify: Verify
email_label: Email email_label: Email
date_of_birth: Date of birth
email_verifications: email_verifications:
already_verified: This user account is already verified. already_verified: This user account is already verified.
choose_options: 'Please choose one of the following options:' choose_options: 'Please choose one of the following options:'

View File

@@ -32,6 +32,7 @@ es:
under_age: No tienes edad suficiente para verificar tu cuenta. under_age: No tienes edad suficiente para verificar tu cuenta.
verify: Verificar usuario verify: Verificar usuario
email_label: Email email_label: Email
date_of_birth: Fecha de nacimiento
email_verifications: email_verifications:
already_verified: Esta cuenta de usuario ya está verificada. already_verified: Esta cuenta de usuario ya está verificada.
choose_options: 'Elige una de las opciones siguientes:' choose_options: 'Elige una de las opciones siguientes:'

View File

@@ -4,42 +4,52 @@ en:
census_terms: To confirm the account, you must be 16 or older and be registered, having provided the information requested previously, will verify. By accepting the verification process, you also consent to the verification of this information, as well as the contact methods featuring in said files. The data provided will be acquired and processed in a file mentioned previously in the terms and conditions of use for the Portal. census_terms: To confirm the account, you must be 16 or older and be registered, having provided the information requested previously, will verify. By accepting the verification process, you also consent to the verification of this information, as well as the contact methods featuring in said files. The data provided will be acquired and processed in a file mentioned previously in the terms and conditions of use for the Portal.
conditions: Terms and conditions of use conditions: Terms and conditions of use
general_terms: Terms and Conditions general_terms: Terms and Conditions
more_information: more_info:
description: title: "Discover %{org_name}"
faq: Frecuently asked question about tecnical problems subtitle: "Learn everything you can do on this website."
how_it_works: Find out all you can do with this web site guide: 'This guide explains each section of %{org_name}. You can expand the information on "Detailed information" links.'
how_to_use: Use it freely or help us to improve it, it is free software menu:
participation: Citizen participation, transparency and open government debates: "Debates"
participation_facts: To lose your fear proposals: "Proposals"
participation_world: Systems of citizen participation that exist in the world budgets: "Participatory budgets"
proposals_info: Create your own proposals other: "Other information of interest"
signature_sheet: Sheet collecting signatures for support debates:
spending_proposals_info: Create your own spending proposals title: "Debates"
how_it_works: description: "Create a thread where you can discuss any topic you want to share with other people in your city."
i: Participation feature_1: "To create a debate you have to %{link}"
i1: Debates area feature_1_link: "sign up on %{org_name}"
i2: Proposals area feature_2_html: "Debates can be rated using the <strong>I agree</strong> or <strong>I disagree</strong> buttons you'll find on each of them."
text: |- image_alt: "Buttons to rate the debates"
The new Open Government Portal is divided in three parts: Participation, Transparency and Open Data (you can see the links in the upper right-hand part). figcaption: '"I agree" and "I disagree" buttons to rate the debates.'
>**I. Participation:** In this part we can decide which city we want (using citizen proposals, debate areas, participatory budgets , collaborative legislation, and many others we will implement). proposals:
**II. Transparency:** In this part information about how the city is managed will be published every day: name, position, salary, contracts, agenda,... of the persons in charge. It is also the place where exercise your right to access information, having the chance to request any information about City Council easily and rapidly. title: "Proposals"
**III. Open data:** In this part the city council databases are posted, so that anyone can use information directly, without having to ask. It can also be requested the publication of more databases. description: "Propose what you want the City Council to carry out and support proposals from other people."
detail: "Detailed information of proposals"
We have opened the new Participation portal and we will open the new Transparency and Open Data seccion shortly (meanwhile the links to existing sites are kept). feature_1: "To create a proposal you have to %{link}, in addition to support you must verify your account."
## <a id='i'></a> I. Participation feature_1_link: "sign up on %{org_name}"
The participation section will have different ways to participate: citizen proposals, debate areas, participatory budgets , collaborative legislation, and many others. You can currently visit the debate area and the citizen proposals will be ready very soon. feature_2_html: "Proposals that get <strong>support from 1% of people</strong> will be voted on."
## <a id='i1'></a>I.I. Debates area feature_3_html: "If there are more people in favor of against, <strong>the City Council assumes the proposal and it is done</strong>."
In the debates area everyone can open a discussion thread about any topic, creating an independent space where people could debate about the proposed topic. In this way, in this digital space there will be hundreds of different debate spaces which citizens could see, joining the ones they find more interesting. image_alt: "Button to support a proposal"
figcaption_html: 'Button to "Support" a proposal.<br>When it reaches the number of supports will go to vote.'
Both threads and comments could be valued by anyone, so the citizenship, and not someone in its name, will decide which are the most important issues in every moment. These will be showed in the main page of the space, being able to access also the rest of issues in following pages, or using others order criteria (the most commented, the newst, the most controversial, etc.). budgets:
title: "Participatory Budgeting"
Every city council employee has its own user, which will be designated as such, allowing them to participate in debates at the same level than the rest of citizens. That will allow creating direct communication spaces between them, avoiding the problems that implies the measured communication, and following clear approach of the new City Council by virtue of which the city council works for the citizenship. description: "The first six months of each year you can decide how to spend part of the budget."
## <a id='i2'></a> I.I. Proposals area detail: "Detailed information of Participatory Budgeting"
In the proposals area everyone can propose an initiative with the intention of collecting support enough for the idea being consulting to the whole citizenship with binding effect. feature_1: "To create an investment project you have to %{link} and verify your account."
feature_1_link: "sign up on %{org_name}"
The proposals can be supported by every citizen registered that has verified their account in the participation platform. In this way, the citizenship, and not someone in its name, will decide which are the proposals that are worthwhile to carry out. feature_2_html: "The first is the <strong>accepting phase</strong> of investment projects."
feature_3_html: "Then there is a <strong>support phase</strong> to prioritize the most interesting, the most supported are evaluated by the City to see if they are viable and how much they are worth."
One that the proposal has achive support of 1% census, it will be studied by a city council group and to move beyond the popular referendum phase, in which citizenship will vote if it is carried out or not. The maximum period to obtain support enough is 12 months. feature_4_html: "At the end there is a <strong>voting phase </strong> where it is decided on which part of the budget is spent."
image_alt: "Different phases of a participatory budget"
figcaption_html: '"Support phase" and "Voting" phase of participatory budgets.'
faq:
title: "Technical problems?"
description: "Read the FAQs and solve your questions."
button: "View frequently asked questions"
other:
how_to_use: "Use %{org_name} in your city"
world: "Citizen participation in the world"
facts: "Facts about citizen participation and direct democracy"
how_to_use: how_to_use:
text: |- text: |-
Use it in your local government or help us to improve it, it is free software. Use it in your local government or help us to improve it, it is free software.
@@ -48,24 +58,12 @@ en:
If you are a programmer, you can see the code and help us to improve it at [Consul app](https://github.com/ayuntamientomadrid 'consul github'). If you are a programmer, you can see the code and help us to improve it at [Consul app](https://github.com/ayuntamientomadrid 'consul github').
titles: titles:
faq: Solution to tecnical problemas (FAQ)
how_it_works: How does this Open Government Portal work?
how_to_use: Use it in your local government how_to_use: Use it in your local government
participation: Participation and Transparency y Transparencia - coming news
participation_facts: Facts about citizen participation and direct democracy
participation_world: Direct citizen participation in the world
proposals_info: How does citizen proposals work?
signature_sheet: Signature sheet
spending_proposals_info: How does participatory budgeting work?
opendata:
slogan: "Information about Open Data."
title: Open Data
privacy: Privacy Policy privacy: Privacy Policy
titles: titles:
accessibility: Accessibility accessibility: Accessibility
conditions: Terms of use conditions: Terms of use
more_information: More information more_info: "More information about %{org_name}"
opendata: Open Data
privacy: Privacy Policy privacy: Privacy Policy
verify: verify:
code: Code you received in letter code: Code you received in letter
@@ -74,4 +72,4 @@ en:
info_code: 'Now introduce the code you received in letter:' info_code: 'Now introduce the code you received in letter:'
password: Password password: Password
submit: Verify my account submit: Verify my account
title: Verify your account title: Verify your account

View File

@@ -4,42 +4,52 @@ es:
census_terms: Para verificar la cuenta hay que tener 16 años o más y estar empadronado aportando los datos indicados anteriormente, los cuales serán contrastados. Aceptando el proceso de verificación acepta dar su consentimiento para contrastar dicha información, así como medios de contacto que figuren en dichos ficheros. Los datos aportados serán incorporados y tratados en un fichero indicado anteriormente en las condiciones de uso del portal. census_terms: Para verificar la cuenta hay que tener 16 años o más y estar empadronado aportando los datos indicados anteriormente, los cuales serán contrastados. Aceptando el proceso de verificación acepta dar su consentimiento para contrastar dicha información, así como medios de contacto que figuren en dichos ficheros. Los datos aportados serán incorporados y tratados en un fichero indicado anteriormente en las condiciones de uso del portal.
conditions: Condiciones de uso conditions: Condiciones de uso
general_terms: Términos y Condiciones general_terms: Términos y Condiciones
more_information: more_info:
description: title: "Descubre %{org_name}"
faq: Preguntas frecuentes sobre problemas técnicos subtitle: "Aprende todo lo que puedes hacer en esta web."
how_it_works: Descubre todo lo que puedes hacer en esta web guide: 'Esta guía explica cada una de las secciones de %{org_name}. Puedes ampliar la información en los enlaces de "Información detallada".'
how_to_use: Utilízalo libremente o ayúdanos a mejorarlo, es software libre menu:
participation: Participación Ciudadana, Transparencia y Gobierno Abierto debates: "Debates"
participation_facts: Para perderle el miedo proposals: "Propuestas"
participation_world: Sistemas de participación ciudadana que ya existen en el mundo budgets: "Presupuestos participativos"
proposals_info: Crea tus propias propuestas other: "Otra información de interés"
signature_sheet: Hojas de firmas para recoger apoyos debates:
spending_proposals_info: Envía tus propuestas de gasto title: "Debates"
how_it_works: description: "Crea un hilo en el que debatir sobre cualquier tema que quieras compartir con el resto de gente de tu ciudad."
i: Participación feature_1: "Para crear un debate tienes que %{link}"
i1: Espacio de debate feature_1_link: "registrarte en %{org_name}"
i2: Espacio de propuestas feature_2_html: "Los debates pueden ser valorados utilizando los botones de <strong>Estoy de acuerdo</strong> o <strong>No estoy de acuerdo</strong> que encontrarás en cada uno de ellos."
text: |- image_alt: "Botones para valorar los debates"
El nuevo Portal de Gobierno Abierto está dividido en tres partes: Participación, Transparencia y Datos Abiertos (verás los enlaces en la parte superior derecha). figcaption: 'Botones "Estoy de acuerdo" y "No estoy de acuerdo" para valorar los debates.'
>**I. Participación:** Donde poder decidir qué ciudad queremos tener (a través de propuestas ciudadanas, espacios de debate, presupuestos participativos, legislación colaborativa, y muchos otros procesos que iremos implementando). proposals:
**II. Transparencia:** En este espacio se publicarán todos los datos relativos a quién y cómo se gestiona la ciudad (nombres de los responsables, cargos, sueldos, planes de gobierno, contratos, agendas de los responsables...). Además es el espacio donde ejercer el derecho de acceso a la información, pudiendo solicitar cualquier información sobre el Ayuntamiento de manera fácil y rápida. title: "Propuestas"
**III. Datos Abiertos:** En este espacio se cuelgan las bases de datos que tiene el Ayuntamiento, para que cualquiera pueda usar toda la información directamente, sin necesidad ni siquiera de preguntar. También se puede solicitar la publicación de más bases de datos. description: "Propón lo que quieres que el Ayuntamiento lleve a cabo y apoya propuestas de otras personas."
detail: "Información detallada de Propuestas"
Inauguramos el nuevo portal con la nueva sección de Participación, y en breve añadiremos las nuevas secciones de Transparencia y Datos Abiertos (así que mantenemos por el momento los enlaces a las páginas al respecto que ya existían). feature_1: "Para crear una propuesta tienes que %{link}, además para apoyarlas debes verificar tu cuenta."
## <a id='i'></a> I. Participación feature_1_link: "registrarte en %{org_name}"
El apartado de participación comprenderá diferentes mecanismos de participación: propuestas ciudadanas, espacios de debate, presupuestos participativos, legislación colaborativa, entre muchos otros. Por el momento presentamos el espacio de debate, y muy pronto las propuestas ciudadanas. feature_2_html: "Las propuestas que consigan <strong>el apoyo del 1% de la gente</strong> (mayor de 16 años empadronada en Madrid; 27.064 apoyos) pasan a votación."
## <a id='i1'></a>I.I. Espacio de debate feature_3_html: "Si hay más gente a favor que en contra en la votación, <strong>el Ayuntamiento asume la propuesta y se hace</strong>."
En este espacio, cualquier persona puede abrir un hilo de discusión sobre cualquier tema, creando un espacio independiente donde la gente podrá debatir sobre el tema propuesto. De esta manera, en este espacio digital convivirán cada día cientos de espacios de debate distintos entre los que la ciudadanía podrá pasearse, sumándose a los que más les interese. image_alt: "Botón para apoyar una propuesta"
figcaption_html: 'Botón para "Apoyar" una propuesta.<br>Cuando alcance el número de apoyos pasará a votación.'
Tanto los hilos, como los comentarios podrán ser valorados por cualquiera, de tal manera que será la propia ciudadanía, y nadie en su nombre, la que decida cuáles son los temas más importantes en cada momento. Estos serán presentados en la portada del espacio, pudiendo por supuesto accederse a todos los demás temas en páginas posteriores, o usando otros criterios de ordenación (los temas con más comentarios, los más nuevos, los más controvertidos, etc.). budgets:
title: "Presupuestos participativos"
Cada uno de los trabajadores del Ayuntamiento tiene un usuario propio, que será resaltado como tal, permitiendo que participen en los debates al mismo nivel que todos los demás ciudadanos. Esto permitirá crear espacios de comunicación directos entre unos y otros, evitando los inconvenientes que implica la comunicación mediada, y respondiendo a un planteamiento claro por parte del nuevo gobierno por el cual el Ayuntamiento trabaja para la ciudadanía, y ante ella debe responder. description: "Los primeros seis meses de cada año puedes decidir cómo gastar parte del presupuesto."
## <a id='i2'></a> I.I. Espacio de propuestas detail: "Información detallada de Presupuestos participativos"
En este espacio, cualquier persona puede proponer una iniciativa con la intención de recabar los suficientes apoyos como para que la idea pase a ser consultada a toda la ciudadanía con carácter vinculante. feature_1: "Para crear un proyecto de gasto tienes que %{link} y verificar tu cuenta."
feature_1_link: "registrarte en %{org_name}"
Las propuestas pueden ser apoyadas por ciudadanos empadronados que hayan verificado su cuenta en la plataforma de participación, de tal manera que será la propia ciudadanía, y nadie en su nombre, la que decida cuáles son las propuestas que merecen la pena ser llevadas a cabo. feature_2_html: "En primer lugar empieza la <strong>fase de aceptación</strong> de proyectos de gasto."
feature_3_html: "Después hay una <strong>fase de apoyos</strong> para priorizar lo más interesante, las más apoyadas son evaluadas por el Ayuntamiento para ver si son viables y cuánto valen."
Una vez que una propuesta alcance una cantidad de apoyos equivalente al 1% del censo, automáticamente pasa a ser estudiada por un grupo de trabajo del Ayuntamiento y pasará a la siguiente fase de consulta popular, en la que la ciudadanía votará si se lleva a cabo o no. El plazo máximo para recabar los apoyos necesarios será de 12 meses. feature_4_html: "Al final hay una <strong>fase de votación</strong> donde se decide en cuáles se gasta esa parte del presupuesto."
image_alt: "Diferentes fases de un presupuesto participativo"
figcaption_html: 'Fase de "Apoyos" y fase de "Votación" de los presupuestos participativos.'
faq:
title: "¿Problemas técnicos?"
description: "Lee las preguntas frecuentes y resuelve tus dudas."
button: "Ver preguntas frecuentes"
other:
how_to_use: "Utiliza %{org_name} en tu municipio"
world: "Participación ciudadana directa en el mundo"
facts: "Hechos sobre participación ciudadana y democracia directa"
how_to_use: how_to_use:
text: |- text: |-
Utilízalo en tu municipio libremente o ayúdanos a mejorarlo, es software libre. Utilízalo en tu municipio libremente o ayúdanos a mejorarlo, es software libre.
@@ -48,24 +58,12 @@ es:
Si eres programador, puedes ver el código y ayudarnos a mejorarlo en [aplicación Consul](https://github.com/ayuntamientomadrid 'github consul'). Si eres programador, puedes ver el código y ayudarnos a mejorarlo en [aplicación Consul](https://github.com/ayuntamientomadrid 'github consul').
titles: titles:
faq: Soluciones a problemas técnicos (FAQ)
how_it_works: "¿Cómo funciona este Portal de Gobierno Abierto?"
how_to_use: Utilízalo en tu municipio how_to_use: Utilízalo en tu municipio
participation: Participación y Transparencia - Próximas novedades
participation_facts: Hechos sobre participación ciudadana y democracia directa
participation_world: Participación ciudadana directa en el mundo
proposals_info: "¿Cómo funcionan las propuestas ciudadanas?"
signature_sheet: Hojas de firmas
spending_proposals_info: "¿Cómo funcionan los presupuestos participativos?"
opendata:
slogan: "Información sobre Datos abiertos."
title: Datos abiertos
privacy: Política de Privacidad privacy: Política de Privacidad
titles: titles:
accessibility: Accesibilidad accessibility: Accesibilidad
conditions: Condiciones de uso conditions: Condiciones de uso
more_information: Más información more_info: "Más información sobre %{org_name}"
opendata: Datos abiertos
privacy: Política de Privacidad privacy: Política de Privacidad
verify: verify:
code: Código que has recibido en tu carta code: Código que has recibido en tu carta
@@ -74,4 +72,4 @@ es:
info_code: 'Ahora introduce el código que has recibido en tu carta:' info_code: 'Ahora introduce el código que has recibido en tu carta:'
password: Contraseña password: Contraseña
submit: Verificar mi cuenta submit: Verificar mi cuenta
title: Verifica tu cuenta title: Verifica tu cuenta

View File

@@ -841,7 +841,6 @@ pt-BR:
description: Este portal usa o %{consul} que é %{open_source}. De Madrid para description: Este portal usa o %{consul} que é %{open_source}. De Madrid para
o mundo. o mundo.
faq: suporte técnico faq: suporte técnico
more_info: Mais informações
open_data_text: Todos os detalhes sobre a Câmara estão disponíveis para acesso. open_data_text: Todos os detalhes sobre a Câmara estão disponíveis para acesso.
open_data_title: Dados abertos open_data_title: Dados abertos
open_source: programa de código aberto open_source: programa de código aberto
@@ -860,9 +859,9 @@ pt-BR:
external_link_transparency: Transparência external_link_transparency: Transparência
external_link_transparency_url: https://transparency.consul external_link_transparency_url: https://transparency.consul
locale: 'Idioma:' locale: 'Idioma:'
logo: Consul logo: Consul logotipo
moderation: Moderação moderation: Moderação
more_information: Mais informações more_info: Mais informações
my_account_link: Minha conta my_account_link: Minha conta
my_activity_link: Minha atividade my_activity_link: Minha atividade
new_notifications: new_notifications:
@@ -1149,7 +1148,7 @@ pt-BR:
mencionado previamente nos termos e condições de uso deste Portal. mencionado previamente nos termos e condições de uso deste Portal.
conditions: Termos e condições de uso conditions: Termos e condições de uso
general_terms: Termos e condições general_terms: Termos e condições
more_information: more_info:
description: description:
faq: Perguntas frequentes feitas sobre problemas técnicos faq: Perguntas frequentes feitas sobre problemas técnicos
how_it_works: Descubra tudo que você pode fazer com este website. how_it_works: Descubra tudo que você pode fazer com este website.
@@ -1248,7 +1247,7 @@ pt-BR:
titles: titles:
accessibility: Acessibilidade accessibility: Acessibilidade
conditions: Termos de uso conditions: Termos de uso
more_information: Mais informações more_info: Mais informações
opendata: Dados abertos opendata: Dados abertos
privacy: Política de privacidade privacy: Política de privacidade
verify: verify:
@@ -1370,7 +1369,8 @@ pt-BR:
official_level_3_name: Nível 3 coordenador público official_level_3_name: Nível 3 coordenador público
official_level_4_name: Nível 4 coordenador público official_level_4_name: Nível 4 coordenador público
official_level_5_name: Nível 5 coordenador público official_level_5_name: Nível 5 coordenador público
per_page_code: Código a ser incluído em cada página per_page_code_head: "Código a ser incluído em cada página (<head>)"
per_page_code_body: "Código a ser incluído em cada página (<body>)"
proposal_code_prefix: Prefixo para códigos de Proposta proposal_code_prefix: Prefixo para códigos de Proposta
votes_for_proposal_success: Número de votos necessários para aprovar uma Proposta votes_for_proposal_success: Número de votos necessários para aprovar uma Proposta
shared: shared:
@@ -1640,7 +1640,7 @@ pt-BR:
link: Mostrar propostas link: Mostrar propostas
text: Criar suas próprias propostas e apoiar aquelas de outros cidadãos text: Criar suas próprias propostas e apoiar aquelas de outros cidadãos
title: Propostas cidadãs title: Propostas cidadãs
more_information: Mais informações sobre esta página more_info: Mais informações sobre esta página
proposal: proposal:
alt: "Ícone proposta" alt: "Ícone proposta"
description: Espaço aberto para propostas cidadãs sobre o tipo de cidade dentro da qual nós queremos viver. description: Espaço aberto para propostas cidadãs sobre o tipo de cidade dentro da qual nós queremos viver.

View File

@@ -13,7 +13,8 @@ en:
votes_for_proposal_success: "Number of votes necessary for approval of a Proposal" votes_for_proposal_success: "Number of votes necessary for approval of a Proposal"
months_to_archive_proposals: "Months to archive Proposals" months_to_archive_proposals: "Months to archive Proposals"
email_domain_for_officials: "Email domain for public officials" email_domain_for_officials: "Email domain for public officials"
per_page_code: "Code to be included on every page" per_page_code_head: "Code to be included on every page (<head>)"
per_page_code_body: "Code to be included on every page (<body>)"
twitter_handle: "Twitter handle" twitter_handle: "Twitter handle"
twitter_hashtag: "Twitter hashtag" twitter_hashtag: "Twitter hashtag"
facebook_handle: "Facebook handle" facebook_handle: "Facebook handle"

View File

@@ -13,7 +13,8 @@ es:
votes_for_proposal_success: "Número de votos necesarios para aprobar una Propuesta" votes_for_proposal_success: "Número de votos necesarios para aprobar una Propuesta"
months_to_archive_proposals: "Meses para archivar las Propuestas" months_to_archive_proposals: "Meses para archivar las Propuestas"
email_domain_for_officials: "Dominio de email para cargos públicos" email_domain_for_officials: "Dominio de email para cargos públicos"
per_page_code: "Código a incluir en cada página" per_page_code_head: "Código a incluir en cada página (<head>)"
per_page_code_body: "Código a incluir en cada página (<body>)"
twitter_handle: "Usuario de Twitter" twitter_handle: "Usuario de Twitter"
twitter_hashtag: "Hashtag para Twitter" twitter_hashtag: "Hashtag para Twitter"
facebook_handle: "Identificador de Facebook" facebook_handle: "Identificador de Facebook"

View File

@@ -17,3 +17,4 @@ en:
plurk: "Plurk" plurk: "Plurk"
pinterest: "Pinterest" pinterest: "Pinterest"
email: "Email" email: "Email"
telegram: "Telegram"

View File

@@ -17,3 +17,4 @@ es:
plurk: "Plurk" plurk: "Plurk"
pinterest: "Pinterest" pinterest: "Pinterest"
email: "Correo electrónico" email: "Correo electrónico"
telegram: "Telegram"

View File

@@ -329,7 +329,7 @@ Rails.application.routes.draw do
get :support_investments get :support_investments
get :print_investments get :print_investments
end end
resources :investments, only: [:index, :new, :create, :show], controller: 'budgets/investments' do resources :investments, only: [:index, :new, :create, :show, :destroy], controller: 'budgets/investments' do
post :vote, on: :member post :vote, on: :member
get :print, on: :collection get :print, on: :collection
end end
@@ -355,6 +355,15 @@ Rails.application.routes.draw do
mount Tolk::Engine => '/translate', :as => 'tolk' mount Tolk::Engine => '/translate', :as => 'tolk'
# more info pages
get 'more-information', to: 'pages#show', id: 'more_info/index', as: 'more_info'
get 'more-information/how-to-use', to: 'pages#show', id: 'more_info/how_to_use/index', as: 'how_to_use'
get 'more-information/faq', to: 'pages#show', id: 'more_info/faq/index', as: 'faq'
get 'more-information/proposals', to: 'pages#show', id: 'more_info/proposals/index', as: 'more_info_proposals'
get 'more-information/budgets', to: 'pages#show', id: 'more_info/budgets/index', as: 'more_info_budgets'
get 'more-information/participation/facts', to: 'pages#show', id: 'more_info/participation/facts', as: 'participation_facts'
get 'more-information/participation/world', to: 'pages#show', id: 'more_info/participation/world', as: 'participation_world'
# static pages # static pages
get '/blog' => redirect("http://blog.consul/") get '/blog' => redirect("http://blog.consul/")
resources :pages, path: '/', only: [:show] resources :pages, path: '/', only: [:show]

View File

@@ -33,7 +33,8 @@ Setting.create(key: 'feature.twitter_login', value: "true")
Setting.create(key: 'feature.facebook_login', value: "true") Setting.create(key: 'feature.facebook_login', value: "true")
Setting.create(key: 'feature.google_login', value: "true") Setting.create(key: 'feature.google_login', value: "true")
Setting.create(key: 'feature.signature_sheets', value: "true") Setting.create(key: 'feature.signature_sheets', value: "true")
Setting.create(key: 'per_page_code', value: "") Setting.create(key: 'per_page_code_head', value: "")
Setting.create(key: 'per_page_code_body', value: "")
Setting.create(key: 'comments_body_max_length', value: '1000') Setting.create(key: 'comments_body_max_length', value: '1000')
Setting.create(key: 'mailer_from_name', value: 'Consul') Setting.create(key: 'mailer_from_name', value: 'Consul')
Setting.create(key: 'mailer_from_address', value: 'noreply@consul.dev') Setting.create(key: 'mailer_from_address', value: 'noreply@consul.dev')
@@ -422,7 +423,7 @@ end
puts "" puts ""
print "Creating Valuation Assignments" print "Creating Valuation Assignments"
(1..17).to_a.sample.times do (1..50).to_a.sample.times do
Budget::Investment.reorder("RANDOM()").first.valuators << valuator.valuator Budget::Investment.reorder("RANDOM()").first.valuators << valuator.valuator
end end

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