Fixes conflicts. Merge branch 'master' into ancestry
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
// 14. Tables
|
||||
// 15. Social
|
||||
// 16. Pages
|
||||
// 17. Verification
|
||||
//
|
||||
|
||||
// 01. Variables
|
||||
@@ -126,6 +127,7 @@ h6 {
|
||||
}
|
||||
|
||||
.button {
|
||||
font-size: rem-calc(13);
|
||||
padding: rem-calc(15) rem-calc(32);
|
||||
}
|
||||
|
||||
@@ -221,6 +223,11 @@ h6 {
|
||||
}
|
||||
}
|
||||
|
||||
.progress {
|
||||
background-color: rgba(0,0,0,.06);
|
||||
border: 0;
|
||||
}
|
||||
|
||||
// 04. Header
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
||||
@@ -229,7 +236,7 @@ header {
|
||||
background-position: 50% 50%;
|
||||
background-size: cover;
|
||||
color: $text;
|
||||
min-height: rem-calc(600);
|
||||
min-height: rem-calc(624);
|
||||
|
||||
&.results {
|
||||
min-height: rem-calc(48);
|
||||
@@ -543,9 +550,14 @@ footer {
|
||||
a {
|
||||
color: white;
|
||||
|
||||
&.link:hover {
|
||||
&:hover {
|
||||
color: white;
|
||||
opacity: .5;
|
||||
transition: opacity 275ms;
|
||||
}
|
||||
|
||||
&:active, &:focus {
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -554,7 +566,14 @@ footer {
|
||||
text-decoration: underline;
|
||||
|
||||
&:hover {
|
||||
color: rgba(255,255,255,.6);
|
||||
color: white;
|
||||
opacity: .5;
|
||||
transition: opacity 275ms;
|
||||
}
|
||||
|
||||
&:active, &:focus {
|
||||
color: white;
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -752,6 +771,13 @@ form {
|
||||
}
|
||||
}
|
||||
|
||||
.captcha {
|
||||
|
||||
label {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
// 09. Alerts
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
||||
@@ -847,22 +873,8 @@ form {
|
||||
margin-right: rem-calc(12);
|
||||
}
|
||||
|
||||
.date {
|
||||
|
||||
select {
|
||||
float: left;
|
||||
width: 25%;
|
||||
}
|
||||
}
|
||||
|
||||
.verify-account {
|
||||
padding-right: rem-calc(12);
|
||||
|
||||
.verified {
|
||||
color: $check;
|
||||
font-weight: bold;
|
||||
line-height: rem-calc(42);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1122,13 +1134,23 @@ table {
|
||||
|
||||
.page {
|
||||
background: white;
|
||||
min-height: 100%;
|
||||
min-height: rem-calc(600);
|
||||
|
||||
.menu {
|
||||
margin-top: rem-calc(24);
|
||||
|
||||
ul {
|
||||
list-style-type: none;
|
||||
margin-left: 0;
|
||||
|
||||
& ul {
|
||||
margin-left: rem-calc(12);
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
display: block;
|
||||
font-size: rem-calc(13);
|
||||
margin-bottom: rem-calc(12);
|
||||
}
|
||||
}
|
||||
@@ -1137,7 +1159,12 @@ table {
|
||||
margin-top: rem-calc(24);
|
||||
text-align: justify;
|
||||
|
||||
ul {
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
ul, ol {
|
||||
margin-left: rem-calc(12);
|
||||
|
||||
li {
|
||||
font-size: rem-calc(13);
|
||||
@@ -1147,7 +1174,91 @@ table {
|
||||
}
|
||||
}
|
||||
|
||||
// 17. Verification
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
||||
.verification {
|
||||
min-height: 60%;
|
||||
|
||||
@media (min-width: $small-breakpoint) {
|
||||
.left + .left {
|
||||
margin-left: rem-calc(12);
|
||||
}
|
||||
}
|
||||
|
||||
.verify-account {
|
||||
padding-right: rem-calc(12);
|
||||
|
||||
.verified {
|
||||
color: $check;
|
||||
font-weight: bold;
|
||||
line-height: rem-calc(42);
|
||||
}
|
||||
}
|
||||
|
||||
.date {
|
||||
|
||||
select {
|
||||
float: left;
|
||||
width: 30%;
|
||||
|
||||
@media (min-width: $small-breakpoint) {
|
||||
width: 25%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.progress {
|
||||
height: rem-calc(48);
|
||||
|
||||
@media (min-width: $small-breakpoint) {
|
||||
height: rem-calc(24);
|
||||
}
|
||||
|
||||
.meter {
|
||||
background: #63D1C4;
|
||||
}
|
||||
}
|
||||
|
||||
.verification-step {
|
||||
font-size: rem-calc(11);
|
||||
padding-top: rem-calc(10);
|
||||
|
||||
@media (min-width: $small-breakpoint) {
|
||||
line-height: $line-height;
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
&.active {
|
||||
color: white;
|
||||
}
|
||||
|
||||
&.completed {
|
||||
color: rgba(255,255,255,.5);
|
||||
}
|
||||
}
|
||||
|
||||
.send-letter {
|
||||
background: none;
|
||||
color: $link;
|
||||
|
||||
&:hover {
|
||||
color: $link-hover;
|
||||
}
|
||||
}
|
||||
|
||||
.button + form {
|
||||
display: inline-block;
|
||||
margin-left: rem-calc(12);
|
||||
}
|
||||
|
||||
.verification-list {
|
||||
font-size: rem-calc(13);
|
||||
list-style-type: none;
|
||||
margin-left: 0;
|
||||
|
||||
span {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
class AccountController < ApplicationController
|
||||
|
||||
before_action :authenticate_user!
|
||||
before_action :set_account
|
||||
load_and_authorize_resource class: "User"
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
class Admin::CommentsController < Admin::BaseController
|
||||
before_filter :set_valid_filters, only: :index
|
||||
before_filter :parse_filter, only: :index
|
||||
has_filters %w{all with_confirmed_hide}
|
||||
|
||||
before_filter :load_comment, only: [:confirm_hide, :restore]
|
||||
before_action :load_comment, only: [:confirm_hide, :restore]
|
||||
|
||||
def index
|
||||
@comments = Comment.only_hidden.send(@filter).page(params[:page])
|
||||
@comments = Comment.only_hidden.send(@current_filter).page(params[:page])
|
||||
end
|
||||
|
||||
def confirm_hide
|
||||
@@ -23,13 +22,4 @@ class Admin::CommentsController < Admin::BaseController
|
||||
@comment = Comment.with_hidden.find(params[:id])
|
||||
end
|
||||
|
||||
def set_valid_filters
|
||||
@valid_filters = %w{all with_confirmed_hide}
|
||||
end
|
||||
|
||||
def parse_filter
|
||||
@filter = params[:filter]
|
||||
@filter = 'all' unless @valid_filters.include?(@filter)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
class Admin::DebatesController < Admin::BaseController
|
||||
before_filter :set_valid_filters, only: :index
|
||||
before_filter :parse_filter, only: :index
|
||||
has_filters %w{all with_confirmed_hide}, only: :index
|
||||
|
||||
before_filter :load_debate, only: [:confirm_hide, :restore]
|
||||
before_action :load_debate, only: [:confirm_hide, :restore]
|
||||
|
||||
def index
|
||||
@debates = Debate.only_hidden.send(@filter).page(params[:page])
|
||||
@debates = Debate.only_hidden.send(@current_filter).page(params[:page])
|
||||
end
|
||||
|
||||
def confirm_hide
|
||||
@@ -24,13 +23,4 @@ class Admin::DebatesController < Admin::BaseController
|
||||
@debate = Debate.with_hidden.find(params[:id])
|
||||
end
|
||||
|
||||
def set_valid_filters
|
||||
@valid_filters = %w{all with_confirmed_hide}
|
||||
end
|
||||
|
||||
def parse_filter
|
||||
@filter = params[:filter]
|
||||
@filter = 'all' unless @valid_filters.include?(@filter)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
class Admin::ModeratorsController < Admin::BaseController
|
||||
|
||||
load_and_authorize_resource
|
||||
|
||||
def index
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
class Admin::OrganizationsController < Admin::BaseController
|
||||
before_filter :set_valid_filters, only: :index
|
||||
before_filter :parse_filter, only: :index
|
||||
has_filters %w{all pending verified rejected}, only: :index
|
||||
|
||||
load_and_authorize_resource except: :search
|
||||
|
||||
def index
|
||||
@organizations = @organizations.send(@filter)
|
||||
@organizations = @organizations.send(@current_filter)
|
||||
@organizations = @organizations.includes(:user).order(:name, 'users.email').page(params[:page])
|
||||
end
|
||||
|
||||
@@ -23,14 +22,4 @@ class Admin::OrganizationsController < Admin::BaseController
|
||||
redirect_to request.query_parameters.merge(action: :index)
|
||||
end
|
||||
|
||||
private
|
||||
def set_valid_filters
|
||||
@valid_filters = %w{all pending verified rejected}
|
||||
end
|
||||
|
||||
def parse_filter
|
||||
@filter = params[:filter]
|
||||
@filter = 'all' unless @valid_filters.include?(@filter)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
class Admin::UsersController < Admin::BaseController
|
||||
before_filter :set_valid_filters, only: :index
|
||||
before_filter :parse_filter, only: :index
|
||||
has_filters %w{all with_confirmed_hide}, only: :index
|
||||
|
||||
before_filter :load_user, only: [:confirm_hide, :restore]
|
||||
before_action :load_user, only: [:confirm_hide, :restore]
|
||||
|
||||
def index
|
||||
@users = User.only_hidden.send(@filter).page(params[:page])
|
||||
@users = User.only_hidden.send(@current_filter).page(params[:page])
|
||||
end
|
||||
|
||||
def show
|
||||
@@ -30,13 +29,4 @@ class Admin::UsersController < Admin::BaseController
|
||||
@user = User.with_hidden.find(params[:id])
|
||||
end
|
||||
|
||||
def set_valid_filters
|
||||
@valid_filters = %w{all with_confirmed_hide}
|
||||
end
|
||||
|
||||
def parse_filter
|
||||
@filter = params[:filter]
|
||||
@filter = 'all' unless @valid_filters.include?(@filter)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class Api::StatsController < Api::ApiController
|
||||
|
||||
def show
|
||||
unless params[:events].present? || params[:visits].present?
|
||||
return render json: {}, status: :bad_request
|
||||
@@ -19,4 +20,5 @@ class Api::StatsController < Api::ApiController
|
||||
|
||||
render json: ds.build
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1,29 +1,28 @@
|
||||
require "application_responder"
|
||||
|
||||
class ApplicationController < ActionController::Base
|
||||
before_filter :authenticate_http_basic
|
||||
|
||||
before_filter :authenticate_user!, unless: :devise_controller?, if: :beta_site?
|
||||
before_filter :authenticate_beta_tester!, unless: :devise_controller?, if: :beta_site?
|
||||
|
||||
check_authorization unless: :devise_controller?
|
||||
include SimpleCaptcha::ControllerHelpers
|
||||
self.responder = ApplicationResponder
|
||||
respond_to :html
|
||||
include HasFilters
|
||||
|
||||
before_action :set_locale
|
||||
layout :set_layout
|
||||
|
||||
# Prevent CSRF attacks by raising an exception.
|
||||
# For APIs, you may want to use :null_session instead.
|
||||
protect_from_forgery with: :exception
|
||||
before_action :authenticate_http_basic
|
||||
before_action :authenticate_user!, unless: :devise_controller?, if: :beta_site?
|
||||
before_action :authenticate_beta_tester!, unless: :devise_controller?, if: :beta_site?
|
||||
|
||||
before_action :ensure_signup_complete
|
||||
before_action :set_locale
|
||||
|
||||
check_authorization unless: :devise_controller?
|
||||
self.responder = ApplicationResponder
|
||||
|
||||
protect_from_forgery with: :exception
|
||||
|
||||
rescue_from CanCan::AccessDenied do |exception|
|
||||
redirect_to main_app.root_url, alert: exception.message
|
||||
end
|
||||
|
||||
layout :set_layout
|
||||
respond_to :html
|
||||
|
||||
private
|
||||
|
||||
def authenticate_http_basic
|
||||
|
||||
13
app/controllers/concerns/has_filters.rb
Normal file
13
app/controllers/concerns/has_filters.rb
Normal file
@@ -0,0 +1,13 @@
|
||||
module HasFilters
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
class_methods do
|
||||
def has_filters(valid_filters, *args)
|
||||
before_action(*args) do
|
||||
@valid_filters = valid_filters
|
||||
@current_filter = params[:filter]
|
||||
@current_filter = @valid_filters.first unless @valid_filters.include?(@current_filter)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,14 +1,16 @@
|
||||
class DebatesController < ApplicationController
|
||||
before_action :parse_order, :parse_tag_filter, only: :index
|
||||
before_action :parse_order, only: :index
|
||||
before_action :parse_tag_filter, only: :index
|
||||
before_action :authenticate_user!, except: [:index, :show]
|
||||
|
||||
load_and_authorize_resource
|
||||
respond_to :html, :js
|
||||
|
||||
def index
|
||||
@debates = Debate.search(params).page(params[:page]).for_render.send("sort_by_#{@order}")
|
||||
@tags = ActsAsTaggableOn::Tag.all
|
||||
@tag_cloud = Debate.tag_counts.order('count desc, name asc')
|
||||
@debates = Debate.all
|
||||
@debates = @debates.tagged_with(@tag_filter) if @tag_filter
|
||||
@debates = @debates.page(params[:page]).for_render.send("sort_by_#{@order}")
|
||||
@tag_cloud = Debate.tag_counts.order(taggings_count: :desc, name: :asc).limit(20)
|
||||
set_debate_votes(@debates)
|
||||
end
|
||||
|
||||
@@ -85,8 +87,9 @@ class DebatesController < ApplicationController
|
||||
end
|
||||
|
||||
def parse_tag_filter
|
||||
valid_tags = ActsAsTaggableOn::Tag.all.map(&:name)
|
||||
@tag_filter = params[:tag] if valid_tags.include?(params[:tag])
|
||||
if params[:tag].present?
|
||||
@tag_filter = params[:tag] if ActsAsTaggableOn::Tag.where(name: params[:tag]).exists?
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -2,9 +2,9 @@ class Moderation::BaseController < ApplicationController
|
||||
layout 'admin'
|
||||
|
||||
before_action :authenticate_user!
|
||||
before_action :verify_moderator
|
||||
|
||||
skip_authorization_check
|
||||
before_action :verify_moderator
|
||||
|
||||
private
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
class Moderation::CommentsController < Moderation::BaseController
|
||||
before_filter :set_valid_filters, only: :index
|
||||
before_filter :parse_filter, only: :index
|
||||
before_filter :load_comments, only: :index
|
||||
has_filters %w{all pending_flag_review with_ignored_flag}, only: :index
|
||||
|
||||
before_action :load_comments, only: :index
|
||||
|
||||
load_and_authorize_resource
|
||||
|
||||
def index
|
||||
@comments = @comments.send(@filter)
|
||||
@comments = @comments.send(@current_filter)
|
||||
@comments = @comments.page(params[:page])
|
||||
end
|
||||
|
||||
@@ -30,13 +30,4 @@ class Moderation::CommentsController < Moderation::BaseController
|
||||
@comments = Comment.accessible_by(current_ability, :hide).flagged.sorted_for_moderation.includes(:commentable)
|
||||
end
|
||||
|
||||
def set_valid_filters
|
||||
@valid_filters = %w{all pending_flag_review with_ignored_flag}
|
||||
end
|
||||
|
||||
def parse_filter
|
||||
@filter = params[:filter]
|
||||
@filter = 'all' unless @valid_filters.include?(@filter)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
class Moderation::DebatesController < Moderation::BaseController
|
||||
before_filter :set_valid_filters, only: :index
|
||||
before_filter :parse_filter, only: :index
|
||||
before_filter :load_debates, only: :index
|
||||
has_filters %w{all pending_flag_review with_ignored_flag}, only: :index
|
||||
|
||||
before_action :load_debates, only: :index
|
||||
|
||||
load_and_authorize_resource
|
||||
|
||||
def index
|
||||
@debates = @debates.send(@filter)
|
||||
@debates = @debates.page(params[:page])
|
||||
@debates = @debates.send(@current_filter).page(params[:page])
|
||||
end
|
||||
|
||||
def hide
|
||||
@@ -30,13 +29,4 @@ class Moderation::DebatesController < Moderation::BaseController
|
||||
@debates = Debate.accessible_by(current_ability, :hide).flagged.sorted_for_moderation
|
||||
end
|
||||
|
||||
def set_valid_filters
|
||||
@valid_filters = %w{all pending_flag_review with_ignored_flag}
|
||||
end
|
||||
|
||||
def parse_filter
|
||||
@filter = params[:filter]
|
||||
@filter = 'all' unless @valid_filters.include?(@filter)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class Organizations::RegistrationsController < Devise::RegistrationsController
|
||||
|
||||
def new
|
||||
super do |user|
|
||||
user.build_organization
|
||||
|
||||
@@ -1,25 +1,36 @@
|
||||
class PagesController < ApplicationController
|
||||
|
||||
skip_authorization_check
|
||||
|
||||
def help
|
||||
def census_terms
|
||||
end
|
||||
|
||||
def privacy
|
||||
def conditions
|
||||
end
|
||||
|
||||
def legal
|
||||
def cooming_soon
|
||||
end
|
||||
|
||||
def general_terms
|
||||
end
|
||||
|
||||
def census_terms
|
||||
def how_it_works
|
||||
end
|
||||
|
||||
def transparency
|
||||
def how_to_use
|
||||
end
|
||||
|
||||
def more_information
|
||||
end
|
||||
|
||||
def opendata
|
||||
end
|
||||
|
||||
def participation
|
||||
end
|
||||
|
||||
def privacy
|
||||
end
|
||||
|
||||
def transparency
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
class StatsController < ApplicationController
|
||||
skip_authorization_check
|
||||
before_action :verify_administrator
|
||||
skip_authorization_check
|
||||
|
||||
def show
|
||||
@event_types = Ahoy::Event.select(:name).uniq.pluck(:name)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
|
||||
|
||||
def self.provides_callback_for(provider)
|
||||
class_eval %Q{
|
||||
def #{provider}
|
||||
@@ -26,4 +27,5 @@ class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
|
||||
finish_signup_path
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class Users::RegistrationsController < Devise::RegistrationsController
|
||||
prepend_before_filter :authenticate_scope!, only: [:edit, :update, :destroy, :finish_signup, :do_finish_signup]
|
||||
prepend_before_action :authenticate_scope!, only: [:edit, :update, :destroy, :finish_signup, :do_finish_signup]
|
||||
|
||||
def create
|
||||
build_resource(sign_up_params)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class Verification::LetterController < ApplicationController
|
||||
before_action :authenticate_user!
|
||||
before_action :verify_resident!
|
||||
before_action :verify_phone_or_email!
|
||||
before_action :verify_phone!
|
||||
skip_authorization_check
|
||||
|
||||
def new
|
||||
@@ -11,22 +11,37 @@ class Verification::LetterController < ApplicationController
|
||||
def create
|
||||
@letter = Verification::Letter.new(user: current_user)
|
||||
if @letter.save
|
||||
redirect_to account_path, notice: t('verification.letter.create.flash.success')
|
||||
redirect_to edit_letter_path, notice: t('verification.letter.create.flash.success')
|
||||
else
|
||||
flash.now.alert = t('verification.letter.create.alert.failure')
|
||||
render :new
|
||||
end
|
||||
end
|
||||
|
||||
def edit
|
||||
@letter = Verification::Letter.new(user: current_user)
|
||||
end
|
||||
|
||||
def update
|
||||
@letter = Verification::Letter.new(letter_params.merge(user: current_user))
|
||||
if @letter.verify?
|
||||
current_user.update(verified_at: Time.now)
|
||||
redirect_to account_path, notice: t('verification.letter.update.flash.success')
|
||||
else
|
||||
@error = t('verification.letter.update.error')
|
||||
render :edit
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def letter_params
|
||||
params.require(:letter).permit()
|
||||
params.require(:letter).permit(:verification_code)
|
||||
end
|
||||
|
||||
def verify_phone_or_email!
|
||||
def verify_phone!
|
||||
unless current_user.confirmed_phone?
|
||||
redirect_to verified_user_path, alert: t('verification.letter.alert.unconfirmed_personal_data')
|
||||
redirect_to verified_user_path, alert: t('verification.letter.alert.unconfirmed_code')
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,5 @@
|
||||
module ApplicationHelper
|
||||
|
||||
def percentage(vote, debate)
|
||||
return "0%" if debate.total_votes == 0
|
||||
debate.send(vote).percent_of(debate.total_votes).to_s + "%"
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
module CacheKeysHelper
|
||||
|
||||
def locale_and_user_status
|
||||
@cache_key_user ||= calculate_user_status
|
||||
"#{I18n.locale}/#{@cache_key_user}"
|
||||
@@ -17,4 +18,5 @@ module CacheKeysHelper
|
||||
|
||||
user_status
|
||||
end
|
||||
|
||||
end
|
||||
@@ -1,4 +1,5 @@
|
||||
module FlagsHelper
|
||||
|
||||
def show_flag_action?(flaggable)
|
||||
current_user && !own_flaggable?(flaggable) && !flagged?(flaggable)
|
||||
end
|
||||
@@ -24,4 +25,5 @@ module FlagsHelper
|
||||
flaggable.author_id == current_user.id
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
module StatsHelper
|
||||
|
||||
def events_chart_tag(events, opt={})
|
||||
events = events.join(',') if events.is_a? Array
|
||||
opt[:data] ||= {}
|
||||
|
||||
@@ -35,14 +35,6 @@ class Debate < ActiveRecord::Base
|
||||
# Ahoy setup
|
||||
visitable # Ahoy will automatically assign visit_id on create
|
||||
|
||||
def self.search(params)
|
||||
if params[:tag]
|
||||
tagged_with(params[:tag])
|
||||
else
|
||||
all
|
||||
end
|
||||
end
|
||||
|
||||
def likes
|
||||
cached_votes_up
|
||||
end
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
class Flag < ActiveRecord::Base
|
||||
|
||||
belongs_to :user
|
||||
belongs_to :flaggable, polymorphic: true, counter_cache: true
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
class Organization < ActiveRecord::Base
|
||||
|
||||
belongs_to :user
|
||||
|
||||
validates :name, presence: true
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
class Setting < ActiveRecord::Base
|
||||
|
||||
validates :key, presence: true, uniqueness: true
|
||||
|
||||
default_scope { order(key: :desc) }
|
||||
|
||||
@@ -1,16 +1,12 @@
|
||||
class Verification::Letter
|
||||
include ActiveModel::Model
|
||||
|
||||
attr_accessor :user, :address
|
||||
attr_accessor :user, :address, :verification_code
|
||||
|
||||
validates :user, presence: true
|
||||
validates :address, presence: true
|
||||
validate :correct_address
|
||||
|
||||
def initialize(attrs={})
|
||||
@user = attrs[:user]
|
||||
end
|
||||
|
||||
def save
|
||||
valid? &&
|
||||
letter_requested! &&
|
||||
@@ -22,7 +18,11 @@ class Verification::Letter
|
||||
end
|
||||
|
||||
def letter_requested!
|
||||
user.update(letter_requested_at: Time.now)
|
||||
user.update(letter_requested_at: Time.now, letter_verification_code: four_digit_code)
|
||||
end
|
||||
|
||||
def verify?
|
||||
user.letter_verification_code == verification_code
|
||||
end
|
||||
|
||||
def update_user_address
|
||||
@@ -50,4 +50,8 @@ class Verification::Letter
|
||||
district: address[:nombre_distrito] }
|
||||
end
|
||||
|
||||
def four_digit_code
|
||||
rand.to_s[2..5]
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# make sure document_type is being stored and queried in the correct format (Is it DNI? a number, a string?)
|
||||
class VerifiedUser < ActiveRecord::Base
|
||||
scope :by_user, -> (user) { where(document_number: user.document_number,
|
||||
document_type: user.document_type) }
|
||||
|
||||
@@ -1,21 +1,26 @@
|
||||
<div class="row account">
|
||||
<div class="small-12 column">
|
||||
<%= link_to t("account.show.change_credentials_link"), edit_user_registration_path, class: 'button radius small secondary right' %>
|
||||
<%= link_to t("account.show.change_credentials_link"), edit_user_registration_path, class: "button radius small secondary right" %>
|
||||
|
||||
<span class="right verify-account">
|
||||
<% if current_user.level_three_verified? %>
|
||||
<p class="verified"><%= t("account.show.level_three_user") %></p>
|
||||
<% elsif current_user.level_two_verified? %>
|
||||
<p class="verified"><%= t("account.show.level_two_user") %></p>
|
||||
<% else %>
|
||||
<%= link_to t("account.show.verify_my_account"), new_residence_path, class: 'button radius small success right' %>
|
||||
<% end %>
|
||||
</span>
|
||||
<div class="verification">
|
||||
<span class="right verify-account">
|
||||
<% if current_user.level_three_verified? %>
|
||||
<p class="verified">
|
||||
<i class="icon-check"></i>
|
||||
<%= t("account.show.verified_account") %>
|
||||
</p>
|
||||
<% elsif current_user.level_two_verified? %>
|
||||
<%= link_to t("account.show.finish_verification"), new_letter_path, class: "button radius small success right" %>
|
||||
<% else %>
|
||||
<%= link_to t("account.show.verify_my_account"), new_residence_path, class: "button radius small success right" %>
|
||||
<% end %>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<h1 class="inline-block"><%= t("account.show.title") %></h1>
|
||||
|
||||
<%= form_for @account, as: :account, url: account_path do |f| %>
|
||||
<%= render 'shared/errors', resource: @account %>
|
||||
<%= render "shared/errors", resource: @account %>
|
||||
|
||||
<div class="row">
|
||||
<div class="small-12 column">
|
||||
|
||||
@@ -1,17 +1,6 @@
|
||||
<h2><%= t("admin.comments.index.title") %></h2>
|
||||
|
||||
<dl class="sub-nav">
|
||||
<dt><%= t("admin.comments.index.filter") %>:</dt>
|
||||
|
||||
<% @valid_filters.each do |filter| %>
|
||||
<% if @filter == filter %>
|
||||
<dd class="active"><%= t("admin.comments.index.filters.#{filter}") %></dd>
|
||||
<% else %>
|
||||
<dd><%= link_to t("admin.comments.index.filters.#{filter}"),
|
||||
current_path_with_query_params(filter: filter) %></dd>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</dl>
|
||||
<%= render 'shared/filter_subnav', i18n_namespace: "admin.comments.index" %>
|
||||
|
||||
<h3><%= page_entries_info @comments %></h3>
|
||||
|
||||
|
||||
@@ -1,17 +1,6 @@
|
||||
<h2><%= t("admin.debates.index.title") %></h2>
|
||||
|
||||
<dl class="sub-nav">
|
||||
<dt><%= t("admin.debates.index.filter") %>:</dt>
|
||||
|
||||
<% @valid_filters.each do |filter| %>
|
||||
<% if @filter == filter %>
|
||||
<dd class="active"><%= t("admin.debates.index.filters.#{filter}") %></dd>
|
||||
<% else %>
|
||||
<dd><%= link_to t("admin.debates.index.filters.#{filter}"),
|
||||
current_path_with_query_params(filter: filter) %></dd>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</dl>
|
||||
<%= render 'shared/filter_subnav', i18n_namespace: "admin.debates.index" %>
|
||||
|
||||
<h3><%= page_entries_info @debates %></h3>
|
||||
|
||||
|
||||
@@ -13,18 +13,7 @@
|
||||
<% end %>
|
||||
<!-- /. Search organizations -->
|
||||
|
||||
<dl class="sub-nav">
|
||||
<dt><%= t("admin.organizations.index.filter") %>:</dt>
|
||||
|
||||
<% @valid_filters.each do |filter| %>
|
||||
<% if @filter == filter %>
|
||||
<dd class="active"><%= t("admin.organizations.index.filters.#{filter}") %></dd>
|
||||
<% else %>
|
||||
<dd><%= link_to t("admin.organizations.index.filters.#{filter}"),
|
||||
current_path_with_query_params(filter: filter) %></dd>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</dl>
|
||||
<%= render 'shared/filter_subnav', i18n_namespace: "admin.organizations.index" %>
|
||||
|
||||
<h3><%= page_entries_info @organizations %></h3>
|
||||
|
||||
|
||||
@@ -1,17 +1,6 @@
|
||||
<h2><%= t("admin.users.index.title") %></h2>
|
||||
|
||||
<dl class="sub-nav">
|
||||
<dt><%= t("admin.users.index.filter") %>:</dt>
|
||||
|
||||
<% @valid_filters.each do |filter| %>
|
||||
<% if @filter == filter %>
|
||||
<dd class="active"><%= t("admin.users.index.filters.#{filter}") %></dd>
|
||||
<% else %>
|
||||
<dd><%= link_to t("admin.users.index.filters.#{filter}"),
|
||||
current_path_with_query_params(filter: filter) %></dd>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</dl>
|
||||
<%= render 'shared/filter_subnav', i18n_namespace: "admin.users.index" %>
|
||||
|
||||
<h3><%= page_entries_info @users %></h3>
|
||||
|
||||
|
||||
@@ -4,14 +4,12 @@
|
||||
<div class="row">
|
||||
<div class="small-12 column">
|
||||
<%= f.label :title, t("debates.form.debate_title") %>
|
||||
<span class="note"><%= t("debates.form.title_instructions") %></span>
|
||||
<%= f.text_field :title, maxlength: Debate::TITLE_LENGTH, placeholder: t("debates.form.debate_title") %>
|
||||
<%= f.text_field :title, maxlength: Debate::TITLE_LENGTH, placeholder: t("debates.form.debate_title"), label: false %>
|
||||
</div>
|
||||
|
||||
<div class="ckeditor small-12 column">
|
||||
<%= f.label :description, t("debates.form.debate_text") %>
|
||||
<span class="note"><%= t("debates.form.text_instructions") %></span>
|
||||
<%= f.cktext_area :description, ckeditor: { language: I18n.locale } %>
|
||||
<%= f.cktext_area :description, ckeditor: { language: I18n.locale }, label: false %>
|
||||
</div>
|
||||
|
||||
<div class="small-12 column">
|
||||
@@ -22,7 +20,7 @@
|
||||
<a class="js-add-tag-link"><%= tag.name %></a>
|
||||
<% end %>
|
||||
</span>
|
||||
<%= f.text_field :tag_list, value: @debate.tag_list.to_s %>
|
||||
<%= f.text_field :tag_list, value: @debate.tag_list.to_s, label: false %>
|
||||
</div>
|
||||
|
||||
<div class="small-12 column">
|
||||
@@ -36,7 +34,7 @@
|
||||
</div>
|
||||
|
||||
<div class="actions small-12 column">
|
||||
<%= f.submit(class: "button radius") %>
|
||||
<%= f.submit(class: "button radius", value: t("debates.form.start_debate")) %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
@@ -3,30 +3,24 @@
|
||||
<div class="filters row">
|
||||
<div class="small-9 column">
|
||||
|
||||
<div class="inline-block" >
|
||||
<% if @tag_filter %>
|
||||
<h2>
|
||||
<%= t("debates.index.filter_topic",
|
||||
number: @debates.size,
|
||||
topic: @tag_filter) %>
|
||||
</h2>
|
||||
<% else %>
|
||||
<h2><%= t("debates.index.select_topic") %></h2>
|
||||
<form class="inline-block">
|
||||
<select class="js-location-changer" name="tag-filter">
|
||||
<option value="/" selected="selected"><%= t("debates.index.all") %></option>
|
||||
<% @tags.each do |tag| %>
|
||||
<option value='<%= current_path_with_query_params(tag: tag.name) %>'>
|
||||
<%= tag.name %>
|
||||
</option>
|
||||
<% end %>
|
||||
</select>
|
||||
</form>
|
||||
<% end %>
|
||||
</div>
|
||||
<% if @tag_filter %>
|
||||
<div class="inline-block small-8" >
|
||||
<h2>
|
||||
<%= t("debates.index.filter_topic",
|
||||
count: @debates.size,
|
||||
topic: @tag_filter) %>
|
||||
</h2>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<div class="inline-block right">
|
||||
<h6 class="inline-block"><%= t("debates.index.select_order") %></h6>
|
||||
<div class="inline-block <%= 'right' if @tag_filter %>">
|
||||
<h6 class="inline-block">
|
||||
<% if @tag_filter %>
|
||||
<%= t("debates.index.select_order") %>
|
||||
<% else %>
|
||||
<%= t("debates.index.select_order_long") %>
|
||||
<% end %>
|
||||
</h6>
|
||||
<form class="inline-block">
|
||||
<select class="js-location-changer" name="order-selector">
|
||||
<% @valid_orders.each do |order| %>
|
||||
@@ -48,7 +42,7 @@
|
||||
</div>
|
||||
<div class="small-12 medium-3 column">
|
||||
<aside class="sidebar" role="complementary">
|
||||
<%= link_to t("debates.index.create_debate"), new_debate_path, class: 'button radius expand' %>
|
||||
<%= link_to t("debates.index.start_debate"), new_debate_path, class: 'button radius expand' %>
|
||||
<%= render "shared/tag_cloud" %>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<i class="icon-angle-left left"></i>
|
||||
<%= t("debates.new.back_link") %>
|
||||
<% end %>
|
||||
<h1><%= t("debates.new.publish_new") %></h1>
|
||||
<h1><%= t("debates.new.start_new") %></h1>
|
||||
<%= render "form" %>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -9,9 +9,13 @@
|
||||
|
||||
<p class="footer-description">
|
||||
<%= t("layouts.footer.description",
|
||||
open_source: link_to(t('layouts.footer.open_source'), t('layouts.footer.open_source_url'), target: 'blank'),
|
||||
github_url: link_to(t('layouts.footer.github_url'), t('layouts.footer.github_url'), target: 'blank')).html_safe
|
||||
more_info: link_to(t("layouts.footer.more_info"), t("layouts.footer.more_info_url")),
|
||||
open_source: link_to(t("layouts.footer.open_source"), t("layouts.footer.open_source_url"), target: "blank"),
|
||||
github: link_to(t("layouts.footer.github"), t("layouts.footer.github_url"), target: "blank")).html_safe
|
||||
%>
|
||||
<br>
|
||||
<%= t("layouts.footer.contact_us") %>
|
||||
<%= mail_to "web.gobiernoabierto@madrid.es" %>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -35,7 +39,9 @@
|
||||
|
||||
<div class="subfooter row">
|
||||
<div class="small-12 column">
|
||||
<%= t("layouts.footer.copyright", year: Time.now.year) %>
|
||||
<%= t("layouts.footer.copyright", year: Time.now.year) %> |
|
||||
<%= link_to t("layouts.footer.privacy"), "/privacy" %> |
|
||||
<%= link_to t("layouts.footer.conditions"), "/conditions" %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
<div class="row">
|
||||
<%= render "shared/locale_switcher" %>
|
||||
<div class="external-links">
|
||||
<%= link_to t("layouts.header.participation"), root_path, class: "selected" %> |
|
||||
<%= link_to t("layouts.header.external_link_transparency"), "/transparency" %> |
|
||||
<%= link_to t("layouts.header.external_link_opendata"), "/opendata" %>
|
||||
<%= link_to t("layouts.header.participation"), root_path, class: ("selected" unless current_page?("/transparency") || current_page?("/opendata")) %> |
|
||||
<%= link_to t("layouts.header.external_link_transparency"), "/transparency", class: ("selected" if current_page?("/transparency")) %> |
|
||||
<%= link_to t("layouts.header.external_link_opendata"), "/opendata", class: ("selected" if current_page?("/opendata")) %>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -38,10 +38,7 @@
|
||||
<%#= link_to t("layouts.header.initiatives"), "#" %>
|
||||
</div> -->
|
||||
<div class="small-12 medium-2 column end">
|
||||
<%= link_to t("layouts.header.how_it_works"), "/how_it_works" %>
|
||||
</div>
|
||||
<div class="small-12 medium-2 column end">
|
||||
<%= link_to t("layouts.header.help"), "/help" %>
|
||||
<%= link_to t("layouts.header.more_information"), "/more_information" %>
|
||||
</div>
|
||||
<div class="small-12 medium-2 column end">
|
||||
<%= link_to t("layouts.header.external_link_blog"), t("layouts.header.external_link_blog_url"), target: "_blank" %>
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
<%= javascript_include_tag "vendor/modernizr" %>
|
||||
<%= javascript_include_tag "application", 'data-turbolinks-track' => true %>
|
||||
<%= csrf_meta_tags %>
|
||||
<%= favicon_link_tag "favicon.ico" %>
|
||||
</head>
|
||||
|
||||
<body class="admin">
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
<%= javascript_include_tag "vendor/modernizr" %>
|
||||
<%= javascript_include_tag "application", 'data-turbolinks-track' => true %>
|
||||
<%= csrf_meta_tags %>
|
||||
<%= favicon_link_tag "favicon.ico" %>
|
||||
</head>
|
||||
|
||||
<body class="auth-page">
|
||||
|
||||
@@ -1,17 +1,6 @@
|
||||
<h2><%= t("moderation.comments.index.title") %></h2>
|
||||
|
||||
<dl class="sub-nav">
|
||||
<dt><%= t("moderation.comments.index.filter") %>:</dt>
|
||||
|
||||
<% @valid_filters.each do |filter| %>
|
||||
<% if @filter == filter %>
|
||||
<dd class="active"><%= t("moderation.comments.index.filters.#{filter}") %></dd>
|
||||
<% else %>
|
||||
<dd><%= link_to t("moderation.comments.index.filters.#{filter}"),
|
||||
current_path_with_query_params(filter: filter) %></dd>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</dl>
|
||||
<%= render 'shared/filter_subnav', i18n_namespace: "moderation.comments.index" %>
|
||||
|
||||
<h3><%= page_entries_info @comments %></h3>
|
||||
|
||||
|
||||
@@ -1,17 +1,6 @@
|
||||
<h2><%= t("moderation.debates.index.title") %></h2>
|
||||
|
||||
<dl class="sub-nav">
|
||||
<dt><%= t("moderation.debates.index.filter") %>:</dt>
|
||||
|
||||
<% @valid_filters.each do |filter| %>
|
||||
<% if @filter == filter %>
|
||||
<dd class="active"><%= t("moderation.debates.index.filters.#{filter}") %></dd>
|
||||
<% else %>
|
||||
<dd><%= link_to t("moderation.debates.index.filters.#{filter}"),
|
||||
current_path_with_query_params(filter: filter) %></dd>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</dl>
|
||||
<%= render 'shared/filter_subnav', i18n_namespace: "moderation.debates.index" %>
|
||||
|
||||
<h3><%= page_entries_info @debates %></h3>
|
||||
|
||||
|
||||
8
app/views/pages/coming_soon.html.erb
Normal file
8
app/views/pages/coming_soon.html.erb
Normal file
@@ -0,0 +1,8 @@
|
||||
<div class="page row-full">
|
||||
<div class="row">
|
||||
<div class="text small-12 column">
|
||||
<h1>Próximas novedades</h1>
|
||||
<p>En breve inauguraremos la sección de propuestas ciudadanas. Una sección que permitirá que entre todos decidamos qué debe ser Madrid. Cualquiera podrá presentar propuestas, que en caso de que sean aceptadas mayoritariamente se llevarán a cabo por parte del Ayuntamiento. Debate, propón, decide.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
96
app/views/pages/conditions.html.erb
Normal file
96
app/views/pages/conditions.html.erb
Normal file
@@ -0,0 +1,96 @@
|
||||
<div class="page row-full">
|
||||
<div class="row">
|
||||
<div class="text small-12 column">
|
||||
<h1><%= t("pages.conditions") %></h1>
|
||||
<h2>AVISO LEGAL SOBRE LAS CONDICIONES DE USO, PRIVACIDAD Y PROTECCIÓN DE DATOS PERSONALES DEL PORTAL DE GOBIERNO ABIERTO DEL AYUNTAMIENTO DE MADRID</h2>
|
||||
|
||||
<h3>1. Ámbito de aplicación de las condiciones de uso</h3>
|
||||
<p>La participación (entendiéndola como participación activa más allá de la lectura del contenido presente) en el Portal de Gobierno Abierto del Ayuntamiento de Madrid se regula por las presentes condiciones de uso que vinculan a todas las personas que participen en este sitio web. Por ello, cualquier persona que desee participar deberá registrarse, a cuyo fin se solicitará la aceptación de estas condiciones de uso.</p>
|
||||
<p>El Ayuntamiento de Madrid se reserva la facultad de modificar las presentes condiciones de uso para la participación en el Portal de Gobierno Abierto del Ayuntamiento de Madrid, cuya última versión se publicará en este sitio web.</p>
|
||||
<p>La participación en el Portal de Gobierno Abierto del Ayuntamiento de Madrid se regula por las presentes condiciones de uso que vinculan a todas las personas que participen en este sitio web. Cualquier persona que desee participar deberá registrarse, a cuyo fin se solicitará la aceptación de estas condiciones de uso.</p>
|
||||
<p>El Ayuntamiento de Madrid se reserva la facultad de modificar las presentes condiciones de uso del Portal de Gobierno Abierto del Ayuntamiento de Madrid cuya última versión se publicará en este sitio web.</p>
|
||||
|
||||
|
||||
<h3>2. Objetivo de la iniciativa</h3>
|
||||
<p>A través del Portal de Gobierno Abierto, el Ayuntamiento de Madrid quiere fomentar la participación de los ciudadanos en la gestión de la ciudad, implicándoles en la generación de ideas y propuestas novedosas y viables, con el objeto de mejorar su calidad de vida. Es una apuesta decidida por una gestión más cercana a los ciudadanos que permitirá recibir sus propuestas y además, crear canales directos de comunicación con el gobierno municipal, contribuyendo a tomar las decisiones más acertadas para el interés general.</p>
|
||||
<h3>3. Cuestiones generales sobre la participación en el Portal de Gobierno Abierto del Ayuntamiento de Madrid</h3>
|
||||
<p>Podrá participar cualquier persona física a partir de los 16 años que se haya registrado previamente en el Portal de Gobierno Abierto. Mediante la aceptación de estas condiciones de uso se declara tener 16 años o más. Los mayores de edad a cuyo cargo se encuentran los menores, son los plenos responsables de la actuación que tengan éstos en el Portal de Gobierno Abierto. No existe limitación en cuanto al número de debates, comentarios o propuestas a presentar por los participantes.</p>
|
||||
<p>Al introducir el título de las propuestas, se recomienda escribir una descripción breve y precisa con un máximo de 2000 caracteres. Para completar la argumentación se podrán asociar documentos adjuntos o de las Redes Sociales Vimeo, Youtube, Slideshare, Flickr o SoundCloud.</p>
|
||||
|
||||
<h3>4. Obligaciones de los usuarios del Portal de Gobierno Abierto</h3>
|
||||
<p>Al ser el Ayuntamiento de Madrid un punto de encuentro cuyo objetivo es debatir, y compartir y valorar propuestas relacionadas con la mejora de la ciudad, los usuarios están obligados a hacer un uso diligente y acorde a dicho objetivo.</p>
|
||||
<p>El Ayuntamiento de Madrid no es responsable del uso incorrecto del Portal de Gobierno Abierto por los usuarios o de los contenidos localizados en el mismo, siendo cada usuario responsable de su uso correcto y de la legalidad de los contenidos y opiniones que haya compartido.</p>
|
||||
<p>El Ayuntamiento de Madrid se reserva, por lo tanto, el derecho a limitar el acceso al Portal de Gobierno Abierto del Ayuntamiento de Madrid de opiniones, informaciones, comentarios o documentos que los usuarios quieran incorporar, pudiendo instalar filtros a tal efecto. Todo ello se realizará únicamente mientras tenga el fin de preservar el objetivo fundamental del Portal de Gobierno Abierto.</p>
|
||||
<p>De acuerdo a la normativa legal vigente queda prohibida la utilización del Portal de Gobierno Abierto del Ayuntamiento de Madrid con fines distintos a los de debatir, compartir y valorar propuestas, y específicamente:</p>
|
||||
<p>Compartir cualquier contenido que pueda ser considerado como una vulneración en cualquier forma de los derechos fundamentales al honor, imagen e intimidad personal y familiar de terceros o contra la dignidad de las personas.</p>
|
||||
<p>Compartir imágenes o fotografías que recojan imágenes o datos personales de terceros sin haber obtenido el oportuno consentimiento de sus titulares.</p>
|
||||
<p>Compartir cualquier contenido que vulnere el secreto en las comunicaciones, la infracción de derechos de propiedad industrial e intelectual o de las normas reguladoras de la protección de datos de carácter personal.</p>
|
||||
<p>Reproducir, distribuir, compartir contenidos, informaciones o imágenes que hayan sido puestas a disposición por otros usuarios sin la autorización expresa de estos.</p>
|
||||
<p>Su utilización con fines de publicidad.</p>
|
||||
<p>La realización de cualquiera de los anteriores comportamientos permitirá al Ayuntamiento de Madrid suspender temporalmente la actividad de un participante, inhabilitar su cuenta o borrar su contenido, sin perjuicio de otras responsabilidades que puedan ser reclamadas.</p>
|
||||
<p>En caso de que el contenido introducido por los usuarios incorpore un enlace a otro sitio web, el Ayuntamiento de Madrid no será responsable por los daños o perjuicios derivados del acceso al enlace o a sus contenidos.</p>
|
||||
<p>En caso de litigio de cualquier clase o por cualquier motivo entre los participantes en el sitio web y/o un tercero, el Ayuntamiento de Madrid quedará exento de cualquier responsabilidad por reclamaciones, demandas o daños de cualquier naturaleza relacionados o derivados del litigio.</p>
|
||||
|
||||
<h3>5. Uso del Portal de Gobierno Abierto</h3>
|
||||
<p>Los participantes podrán acceder y navegar por el Portal de Gobierno Abierto libremente y de forma anónima. Sólo cuando quieran realizar alguna acción que implique la creación, apoyo o comentario de una propuesta, o a la participación en un debate, se le solicitará que introduzca sus credenciales, para cuya obtención será necesario registrarse previamente. El registro que permitirá participar comentando en cualquiera de las secciones, creando debates o propuestas, se realizará introduciendo los siguientes datos:</p>
|
||||
<ul>
|
||||
<li>Nombre de usuario</li>
|
||||
<li>Correo electrónico</li>
|
||||
<li>Aceptación de las condiciones de uso de el Portal de Gobierno Abierto</li>
|
||||
</ul>
|
||||
<p>El Portal de Gobierno Abierto también permite la identificación mediante el usuario de Facebook, Twitter y Google+.</p>
|
||||
<p>Para participar apoyando propuestas, al usuario se le requerirá que verifique su cuenta cumpliendo que tiene 16 años o más y está empadronado en Madrid, para lo cual se le guiará a través de una serie de pasos donde se le solicitarán datos relativos al padrón y un medio de comunicación a través del cual facilitarle uno o dos códigos seguros para completar la verificación de su cuenta (dependiendo del medio de comunicación elegido por el usuario).</p>
|
||||
|
||||
<p>El usuario podrá interactuar con la herramienta interviniendo, al menos, de las siguientes formas:</p>
|
||||
<h4>1. DEBATES</h4>
|
||||
<p>En el apartado de debates el usuario podrá participar:</p>
|
||||
<ul>
|
||||
<li>Creando un debate. Cada usuario podrá abrir uno o más debates. Los debates serán publicados automáticamente.</li>
|
||||
<li>Votando de manera positiva o negativa a los debates creadas por los usuarios. Los debates aparecerán con los votos positivos y negativos recibidos. Cada usuario podrá exclusivamente votar o bien positivo o bien negativo, y una vez a un mismo debate.</li>
|
||||
<li> Comentando los debates del resto de usuarios. Cada debate podrá ser comentado por el resto de usuarios.</li>
|
||||
</ul>
|
||||
<h4>2. PROPUESTAS</h4>
|
||||
<p>En el apartado de propuestas ciudadanas el usuario podrá participar:</p>
|
||||
<ul>
|
||||
<li>Creando una propuesta. Cada usuario podrá dar de alta una o más propuestas. Las propuestas serán publicadas automáticamente.</li>
|
||||
<li>Apoyando las propuestas creadas por los usuarios. Las propuestas aparecerán con el número de apoyos recibidos. Cada usuario podrá exclusivamente apoyar una vez a una misma propuesta. Cuando una propuesta reciba apoyos equivalente al 2% del padrón de personas con 16 años o más, la propuesta pasará a una fase posterior donde durante una semana se invitará a la ciudadanía a aceptarla o rechazarla como propuesta colectiva.</li>
|
||||
<li>Comentando las propuestas del resto de usuarios. Cada propuesta podrá ser comentada por el resto de usuarios, pudiendo argumentar las razones del apoyo o introducir mejoras a la misma.</li>
|
||||
</ul>
|
||||
|
||||
<h3>6. Condiciones para el tratamiento de los contenidos proporcionados por los usuarios</h3>
|
||||
<p>Las presentes condiciones regulan los términos aplicables al contenido remitido por los usuarios de esta plataforma a través del formulario correspondiente (en adelante, el contenido). Estas condiciones se aplican tanto al contenido inicialmente remitido al Portal de Gobierno Abierto como a cualquier contenido que se envíe con posterioridad o se manifieste al Ayuntamiento de Madrid, debiendo significarse lo siguiente:</p>
|
||||
<ul>
|
||||
<li>A. No Confidencialidad: Todo el contenido remitido por el usuario al Ayuntamiento de Madrid deberá ser susceptible de ser conocido por el público en general. Por lo tanto, el Ayuntamiento de Madrid tratará el citado contenido como información no confidencial.</li>
|
||||
<li>B. Procedimiento: En el caso de que el Ayuntamiento de Madrid esté interesado en el contenido remitido por el usuario, se pondrá en contacto con él para solicitarle información adicional. Dicha información tendrá asimismo carácter de no confidencial, sin perjuicio de que en el caso de que las partes consideren la necesidad de intercambiarse información de carácter confidencial se firme el correspondiente Acuerdo de Confidencialidad.<br><br>
|
||||
El Ayuntamiento de Madrid se reserva el derecho de no contactar con los usuarios que le hubieran remitido el contenido. Todo ello sin perjuicio de lo establecido en el apartado relativo a "Derechos de Propiedad Intelectual e industrial".<br><br>
|
||||
En el supuesto que el Ayuntamiento de Madrid, a su entera discreción, decidiera contactar con determinados usuarios, éstos conocen y aceptan que por ello el Ayuntamiento de Madrid no adquiere compromiso alguno.</li>
|
||||
|
||||
<li>C. Publicidad o difusión de los contenidos presentados: Los participantes en el Portal de Gobierno Abierto del Ayuntamiento de Madrid declaran conocer y aceptar el hecho de que la información aportada podrá ser publicada en la web <a href="http://www.madrid.es" target="_blank">www.madrid.es</a>, así como a través de otros medios que la organización considere oportunos para dar a conocer esta iniciativa.</li>
|
||||
|
||||
<li>D. No devolución material: El Ayuntamiento de Madrid carece de obligación alguna de devolver el Contenido remitido por los usuarios.</li>
|
||||
<li>E. Procedimiento de aviso y retirada: El Ayuntamiento de Madrid procesará las peticiones de eliminación o retirada de contenidos que incumplan las condiciones de uso que hayan añadido los participantes. Asimismo, cualquier persona, con motivos razonados si existe incumplimiento de las presentes condiciones de uso, podrá solicitar la retirada de contenidos al Ayuntamiento de Madrid. El Ayuntamiento de Madrid se reserva el derecho de hacer las comprobaciones o verificaciones oportunas con carácter previo a la retirada de cualquier contenido.</li>
|
||||
</ul>
|
||||
|
||||
<h3>7. Política de privacidad y protección de datos</h3>
|
||||
<ul>
|
||||
<li>A. Titularidad de los derechos de propiedad intelectual e industrial: El usuario que aporta el Contenido declara, con la aceptación de las presentes Condiciones, ser titular de los derechos de propiedad intelectual y/o industrial u ostentar derechos suficientes sobre dicho contenido y que además lo remite al Ayuntamiento de Madrid de forma voluntaria para su divulgación en el Portal de Gobierno Abierto del Ayuntamiento de Madrid.<br><br>
|
||||
La titularidad de todos y cada uno de los Contenidos presentados que se encuentren protegidos o sean susceptibles de encontrarse protegidos, por el Derecho de la Propiedad Industrial e Intelectual, corresponde a los autores y/o titulares de los mencionados Contenidos.<br><br>
|
||||
El Ayuntamiento de Madrid no asume responsabilidad alguna, ya sea directa o indirecta, respecto de cualquier tipo de controversia, disputa y/o litigio que pudiera derivarse de la publicación, divulgación y/o difusión de los contenidos aportados sin el preceptivo consentimiento de sus legítimos titulares.<br><br>
|
||||
El Ayuntamiento de Madrid respetará todos los Derechos de Propiedad Intelectual o Industrial sobre el contenido remitido por los usuarios. Cualquier vulneración de los Derechos de Propiedad Intelectual o Industrial será responsabilidad de la persona que aporte el contenido.<br><br>
|
||||
El Ayuntamiento de Madrid, por la mera recepción del contenido, no recibe del usuario licencia alguna de propiedad intelectual o industrial, por lo que no hará uso del contenido salvo aceptación expresa de su titular.</li>
|
||||
<li>B. Protección de datos: Los datos personales aportados por los usuarios que se registren en el Portal de Gobierno Abierto, serán incorporados y tratados en el fichero Gestión de Procesos Participativos, cuya finalidad es gestionar los procesos participativos para el control de la habilitación de las personas que participan en los mismos y recuento meramente numérico y estadístico de los resultados derivados de los procesos de participación ciudadana. Gestión de Agendas para convocatorias y envío de información solicitada. El órgano responsable del fichero es la Dirección General competente en materia de Participación Ciudadana, ante la que la persona interesada podrá ejercer los derechos de acceso, rectificación, cancelación y oposición, todo lo cual se informa en cumplimiento del artículo 5 de la Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal.</li>
|
||||
</ul>
|
||||
|
||||
<p>Como principio general, los datos personales no serán comunicados a terceros, excepto cuando la comunicación haya sido autorizada por el usuario, o la información sea requerida por la autoridad judicial, ministerio fiscal o la policía judicial, o se de alguno de los supuestos regulados en el artículo 11 de la Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal.<p>
|
||||
<ul>
|
||||
<li>Los derechos de acceso, rectificación, cancelación y oposición, se podrán ejercitar dirigiendo una comunicación por escrito al Ayuntamiento de Madrid, Área de Gobierno de Participación Ciudadana, Transparencia y Gobierno Abierto, Dirección General de Participación Ciudadana.</li>
|
||||
</ul>
|
||||
|
||||
<h3>8. Normativa aplicable</h3>
|
||||
<p>Las normas del ordenamiento jurídico español rigen de manera exclusiva estas condiciones de uso. Cualquier disputa, controversia o reclamación derivada de estas condiciones de uso, o el incumplimiento, rescisión o invalidación de estas, se resolverán exclusivamente ante los juzgados competentes.</p>
|
||||
|
||||
<h3>9. Revisión de las condiciones de uso</h3>
|
||||
<p>El Ayuntamiento de Madrid se reserva el derecho de revisar las presentes condiciones de uso y la política de privacidad en cualquier momento y por cualquier razón. En dicho caso, los usuarios registrados serán avisados a través de este espacio en línea y, si continúan utilizando el Portal de Gobierno Abierto, se entenderán aceptadas las modificaciones introducidas.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,54 +0,0 @@
|
||||
<div class="row-full page">
|
||||
<div class="row">
|
||||
<div class="small-12 column">
|
||||
<div class="small-12 medium-3 column menu">
|
||||
<h1>Ayuda</h1>
|
||||
|
||||
<a href="#2">Utilízala en tu municipio libremente o ayúdanos a mejorarla, es software libre</a>
|
||||
<a href="#3">Próximas novedades</a>
|
||||
<a href="#4">El Área de Gobierno de Participación Ciudadana, Transparencia y Gobierno Abierto</a>
|
||||
</div>
|
||||
|
||||
<div class="small-12 medium-9 column text">
|
||||
|
||||
<h2 id="2">Utilízala en tu municipio libremente o ayúdanos a mejorarla, es software libre</h2>
|
||||
|
||||
<p>Este Portal de Gobierno Abierto es software libre, con licencia AGPLv3, esto significa en palabras sencillas, que cualquiera puede libremente usar el código, copiarlo, verlo en detalle, modificarlo, y redistribuirlo al mundo con las modificaciones que quiera (manteniendo el que otros puedan a su vez hacer lo mismo). Porque creemos que la cultura es mejor y más rica, cuando se libera.</p>
|
||||
|
||||
<p>No sólo puedes utilizar libremente este portal en tu municipio, sino que desde el Ayuntamiento de Madrid vamos a ayudarte todo lo posible a que lo hagas, así que si estás interesado, escríbenos a ag.gobiernoabierto@madrid.es [imagen o algo así del e-mail para que no nos troléen demasiado los spammers]</p>
|
||||
|
||||
<p>Si eres programador, puedes ver el código y ayudarnos a mejorarlo en https://github.com/ayuntamientomadrid</p>
|
||||
|
||||
<h2 id="3">Próximas novedades</h2>
|
||||
|
||||
<p>En breve inauguraremos la sección de propuestas ciudadanas. Una sección que permitirá que entre todos decidamos qué debe ser Madrid. Cualquiera podrá presentar propuestas, que en caso de que sean aceptadas mayoritariamente se llevarán a cabo por parte del Ayuntamiento. Debate, propón, decide.</p>
|
||||
|
||||
<h2 id="4">El Área de Gobierno de Participación Ciudadana, Transparencia y Gobierno Abierto.</h2>
|
||||
|
||||
<p>El nuevo gobierno del Ayuntamiento de Madrid ha creado un nuevo área de gobierno: Participación Ciudadana, Transparencia y Gobierno Abierto. El objetivo de este área es claro: que los madrileños puedan decidir directamente la política de la ciudad, y que todo lo que ocurra en el Ayuntamiento, hasta el último rincón, esté a la vista de todos.</p>
|
||||
|
||||
<p>Iremos publicando nuestros avances, las novedades y cualquier otra cosa que queramos compartir con vosotros en nuestro blog: [URL todavía pendiente]</p>
|
||||
|
||||
<p>Y podéis escribirnos para cualquier cosa a: ag.gobiernoabierto@madrid.es [imagen o algo así del e-mail para que no nos troléen demasiado los spammers]</p>
|
||||
|
||||
<p>A continuación os presentamos algunas de los principales novedades que tenemos planeadas poner en marcha, aparte de las que vayamos diseñando o se nos vayan proponiendo durante la legislatura:</p>
|
||||
|
||||
<h3>Participación.</h3>
|
||||
<ul>
|
||||
<li>Presupuestos participativos. Parte del presupuesto de inversión del Ayuntamiento (el que no está comprometido ya con necesidades básicas como pueden ser los servicios sociales o las emergencias), será reservado para ser decidido su uso por la ciudadanía. La gente hará propuestas, se tasarán las más apoyadas, y luego los ciudadanos decidirán en cuáles de esos proyectos priorizar el presupuesto reservado.</li>
|
||||
|
||||
<li> Legislacion colaborativa. A través de diferentes fases de participación, la ciudadanía tendrá un papel fundamental colaborando directamente en la elaboración de las propuestas, reglamentos, decretos o cualquier otro tipo de trabajo político desarrollado por el gobierno municipal. Una participación real desde el principio al fin del proceso legislativo, desde decidir los expertos en la materia, hasta revisar el texto final.</li>
|
||||
|
||||
<li> Co-gobierno ciudadano. Mediante este sistema la ciudadanía podrá decidir las líneas prioritarias de actuación del Ayuntamiento a medio plazo.</li>
|
||||
|
||||
<li>Participación sectorial. La participación ciudadana se va a tratar de manera transversal en todas las áreas de gobierno del Ayuntamiento, afectando a todos los procesos que se lleven a cabo. Un ejemplo de esto es el proceso de auditoría ciudadana de la deuda, que llevaremos a cabo con el Área de Gobierno de Economía y Hacienda.</li>
|
||||
|
||||
<li>Inclusión, neutralidad y privacidad. Una de las misiones principales del área será velar por la inclusión de todo el mundo en los procesos participativos, para que todas las voces y voluntades formen parte de ellos y no se quede nadie fuera. Para ello, desarrollaremos una mesa de inclusión a la que invitaremos a todos los expertos, colectivos y asociaciones que trabajen con colectivos excluidos, para diseñar las maneras adecuadas de superar estas brechas. La protección de la participación se complementará con la protección de la neutralidad y privacidad en todos los procesos, para asegurar su legitimidad y confianza.</li>
|
||||
|
||||
<li>Innovación social. Pretendemos crear un entorno que movilice la inteligencia colectiva existente en favor de una ciudad más hospitalaria e inclusiva. Espacios donde la sociedad se hable y piense con la administración, con la convicción de que son los ciudadanos quienes mejor conocen sus problemas, y es en lo colectivo donde están los expertos que pueden hallar las soluciones.</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,40 +1,43 @@
|
||||
<div class="row-full page">
|
||||
<div class="page row-full">
|
||||
<div class="row">
|
||||
<div class="small-12 column">
|
||||
<div class="small-12 medium-3 column menu">
|
||||
<h1>¿Cómo funciona esta página?</h1>
|
||||
|
||||
<a href="#1">¿Cómo funciona esta página?</a>
|
||||
<div class="menu small-12 medium-3 column">
|
||||
<p><strong>¿Cómo funciona este Portal de Gobierno Abierto?</strong></p>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="#">I. Participación</a>
|
||||
<ul>
|
||||
<li><a href="#">I.1. Espacio de debate</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="text small-12 medium-9 column">
|
||||
|
||||
<div class="small-12 medium-9 column text">
|
||||
|
||||
<h2 id="1">¿Cómo funciona esta página?</h2>
|
||||
<h1>¿Cómo funciona este Portal de Gobierno Abierto?</h1>
|
||||
|
||||
<p>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).</p>
|
||||
|
||||
<p>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)</p>
|
||||
<blockquote>
|
||||
<p><strong>I. Participación:</strong> 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)</p>
|
||||
|
||||
<p>Transparencia: El espacio para ejercer nuestro derecho de acceso a la información. El derecho a que cualquier persona pueda preguntar cualquier tipo de información sobre el Ayuntamiento, y se le deba responder, y de manera clara y satisfaciendo la pregunta.</p>
|
||||
<p><strong>II. Transparencia:</strong> El espacio para ejercer nuestro derecho de acceso a la información. El derecho a que cualquier persona pueda preguntar cualquier tipo de información sobre el Ayuntamiento, y se le deba responder de manera clara y satisfaciendo la pregunta.</p>
|
||||
|
||||
<p>Datos Abiertos: Aquí iremos colgando todas las bases de datos que tiene el Ayuntamiento, para que cualquiera pueda usar toda la información directamente, sin necesidad ni siquiera de preguntar.</p>
|
||||
<p><strong>III. Datos Abiertos:</strong> Aquí iremos colgando todas las bases de datos que tiene el Ayuntamiento, para que cualquiera pueda usar toda la información directamente, sin necesidad ni siquiera de preguntar.</p>
|
||||
</blockquote>
|
||||
|
||||
<p>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).</p>
|
||||
|
||||
<h3>Participación</h3>
|
||||
<h2>I. Participación</h2>
|
||||
|
||||
<p>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.</p>
|
||||
|
||||
<h4>Espacio de debate</h4>
|
||||
<h3>I.I. Espacio de debate</h3>
|
||||
|
||||
<p>En éste 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.</p>
|
||||
|
||||
<p>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.).</p>
|
||||
|
||||
<p>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 medidada, y respondiendo a un planteamiento claro por parte del nuevo gobierno de Madrid por el cual el Ayuntamiento trabaja para sus ciudadanos, y ante ellos debe responder.</p>
|
||||
|
||||
<p>[Puedes obtener información más detallada de cómo interactuar en el espacio de debate en este enlace] [no sé si es mejor el tutorial llevarlo a una página siguiente o que esté también aquí] [esto lo hacemos una vez esté lista la página]</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
14
app/views/pages/how_to_use.html.erb
Normal file
14
app/views/pages/how_to_use.html.erb
Normal file
@@ -0,0 +1,14 @@
|
||||
<div class="page row-full">
|
||||
<div class="row">
|
||||
<div class="text small-12 column">
|
||||
<h1>Utilízalo en tu municipio</h1>
|
||||
<p>Utilízalo en tu municipio libremente o ayúdanos a mejorarlo, es software libre.</p>
|
||||
|
||||
<p>Este Portal de Gobierno Abierto es software libre, con <a href="http://www.gnu.org/licenses/agpl-3.0.html" target="_blank">licencia AGPLv3</a>, esto significa en palabras sencillas, que cualquiera puede libremente usar el código, copiarlo, verlo en detalle, modificarlo, y redistribuirlo al mundo con las modificaciones que quiera (manteniendo el que otros puedan a su vez hacer lo mismo). Porque creemos que la cultura es mejor y más rica cuando se libera.</p>
|
||||
|
||||
<p>No sólo puedes utilizar libremente este portal en tu municipio, sino que desde el Ayuntamiento de Madrid vamos a ayudarte todo lo posible a que lo hagas, así que si estás interesado, escríbenos a <a href="mailto:ag.gobiernoabierto@madrid.es">ag.gobiernoabierto@madrid.es</a></p>
|
||||
|
||||
<p>Si eres programador, puedes ver el código y ayudarnos a mejorarlo en <a href="https://github.com/ayuntamientomadrid" target="_blank">github</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,7 +0,0 @@
|
||||
<div class="row-full page">
|
||||
<div class="row">
|
||||
<div class="small-12 column">
|
||||
<h1><%= t('pages.legal') %></h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
13
app/views/pages/more_information.html.erb
Normal file
13
app/views/pages/more_information.html.erb
Normal file
@@ -0,0 +1,13 @@
|
||||
<div class="page row-full">
|
||||
<div class="row">
|
||||
<div class="text small-12 column">
|
||||
<h1>Más información</h1>
|
||||
<ul>
|
||||
<li><a href="/how_it_works">¿Cómo funciona este Portal de Gobierno Abierto?</a></li>
|
||||
<li><a href="/how_to_use">Utilízalo en tu municipio libremente o ayúdanos a mejorarlo, es software libre</a></li>
|
||||
<li><a href="/coming_soon">Próximas novedades</a></li>
|
||||
<li><a href="/participation">El Área de Gobierno de Participación Ciudadana, Transparencia y Gobierno Abierto</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
47
app/views/pages/participation.html.erb
Normal file
47
app/views/pages/participation.html.erb
Normal file
@@ -0,0 +1,47 @@
|
||||
<div class="page row-full">
|
||||
<div class="row">
|
||||
<div class="menu small-12 medium-3 column">
|
||||
<p><strong>El Área de Gobierno de Participación Ciudadana, Transparencia y Gobierno Abierto</strong></p>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="#">I. Participación</a>
|
||||
<ul>
|
||||
<li><a href="#">I.1. Espacio de debate</a></li>
|
||||
<li><a href="#">I.2. Presupuestos participativos</a></li>
|
||||
<li><a href="#">I.3. Legislacion colaborativa</a></li>
|
||||
<li><a href="#">I.4. Co-gobierno ciudadano</a></li>
|
||||
<li><a href="#">I.5. Participación sectorial</a></li>
|
||||
<li><a href="#">I.6. Inclusión, neutralidad y privacidad</a></li>
|
||||
<li><a href="#">I.7. Innovación social</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="text small-12 medium-9 column">
|
||||
<h1>El Área de Gobierno de Participación Ciudadana, Transparencia y Gobierno Abierto</h1>
|
||||
|
||||
<p>El nuevo gobierno del Ayuntamiento de Madrid ha creado un nuevo área de gobierno: Participación Ciudadana, Transparencia y Gobierno Abierto. El objetivo de este área es claro: que los madrileños puedan decidir directamente la política de la ciudad, y que todo lo que ocurra en el Ayuntamiento, hasta el último rincón, esté a la vista de todos.</p>
|
||||
|
||||
<p>Iremos publicando nuestros avances, las novedades y cualquier otra cosa que queramos compartir con vosotros en <a href="http://diario.madrid.es/participa/" target="_blank">nuestro blog</a>.</p>
|
||||
|
||||
<p>Y podéis escribirnos para cualquier cosa a la dirección <a href="mailto:ag.gobiernoabierto@madrid.es">ag.gobiernoabierto@madrid.es</a></p>
|
||||
|
||||
<p>A continuación os presentamos algunas de los principales novedades que tenemos planeadas poner en marcha, aparte de las que vayamos diseñando o se nos vayan proponiendo durante la legislatura:</p>
|
||||
|
||||
<h3>I. Participación.</h3>
|
||||
<ul>
|
||||
<li><strong>I.1. Presupuestos participativos.</strong> Parte del presupuesto de inversión del Ayuntamiento (el que no está comprometido ya con necesidades básicas como pueden ser los servicios sociales o las emergencias), será reservado para ser decidido su uso por la ciudadanía. La gente hará propuestas, se tasarán las más apoyadas, y luego los ciudadanos decidirán en cuáles de esos proyectos priorizar el presupuesto reservado.</li>
|
||||
|
||||
<li><strong>I.2. Legislacion colaborativa.</strong> A través de diferentes fases de participación, la ciudadanía tendrá un papel fundamental colaborando directamente en la elaboración de las propuestas, reglamentos, decretos o cualquier otro tipo de trabajo político desarrollado por el gobierno municipal. Una participación real desde el principio al fin del proceso legislativo, desde decidir los expertos en la materia hasta revisar el texto final.</li>
|
||||
|
||||
<li><strong>I.3. Co-gobierno ciudadano.</strong> Mediante este sistema la ciudadanía podrá decidir las líneas prioritarias de actuación del Ayuntamiento a medio plazo.</li>
|
||||
|
||||
<li><strong>I.4. Participación sectorial.</strong> La participación ciudadana se va a tratar de manera transversal en todas las áreas de gobierno del Ayuntamiento, afectando a todos los procesos que se lleven a cabo. Un ejemplo de esto es el proceso de auditoría ciudadana de la deuda, que llevaremos a cabo con el Área de Gobierno de Economía y Hacienda.</li>
|
||||
|
||||
<li><strong>I.5. Inclusión, neutralidad y privacidad.</strong> Una de las misiones principales del área será velar por la inclusión de todo el mundo en los procesos participativos, para que todas las voces y voluntades formen parte de ellos y no se quede nadie fuera. Para ello, desarrollaremos una mesa de inclusión a la que invitaremos a todos los expertos, colectivos y asociaciones que trabajen con colectivos excluidos, para diseñar las maneras adecuadas de superar estas brechas. La protección de la participación se complementará con la protección de la neutralidad y privacidad en todos los procesos, para asegurar su legitimidad y confianza.</li>
|
||||
|
||||
<li><strong>I.6. Innovación social.</strong> Pretendemos crear un entorno que movilice la inteligencia colectiva existente en favor de una ciudad más hospitalaria e inclusiva. Espacios donde la sociedad se hable y piense con la administración, con la convicción de que son los ciudadanos quienes mejor conocen sus problemas, y es en lo colectivo donde están los expertos que pueden hallar las soluciones.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,7 +1,22 @@
|
||||
<div class="row-full page">
|
||||
<div class="page row-full">
|
||||
<div class="row">
|
||||
<div class="small-12 column">
|
||||
<h1><%= t('pages.privacy') %></h1>
|
||||
<div class="text small-12 column">
|
||||
<h1><%= t("pages.privacy") %></h1>
|
||||
|
||||
<h2>AVISO DE PROTECCIÓN DE DATOS</h2>
|
||||
<ol>
|
||||
<li>La navegación por la informacion disponible en el Portal de Gobierno Abierto del Ayuntamiento de Madrid es anónima.</li>
|
||||
<li>Para utilizar los servicios contenidos en el Portal de Gobierno Abierto del Ayuntamiento de Madrid el usuario deberá darse de alta y
proporcionar previamente los datos de carácter personal segun la informacion especifica que consta en cada tipo de alta.</li>
|
||||
<li>Los datos aportados serán incorporados y tratados por el Ayuntamiento de Madrid de acuerdo con la descripción del fichero siguiente:
|
||||
<ul>
|
||||
<li><strong>Nombre del fichero/tratamiento:</strong> GESTIÓN DE PROCESOS PARTICIPATIVOS</li>
|
||||
<li><strong>Finalidad del fichero/tratamiento:</strong> Gestionar los procesos participativos para el control de la habilitación de las personas que participan en los mismos y recuento meramente numérico y estadístico de los resultados derivados de los procesos de participación ciudadana</li>
|
||||
<li><strong>Órgano responsable:</strong> DIRECCIÓN GENERAL DE PARTICIPACIÓN CIUDADANA (c/ Alcalá 45, 28014-Madrid)</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>El interesado podrá ejercer los derechos de acceso, rectificación, cancelación y oposición, ante el órgano responsable indicado todo lo cual se informa en el cumplimiento del artículo 5 de la Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal.</li>
|
||||
<li>Como principio general, este sitio web no comparte ni revela información obtenida, excepto cuando haya sido autorizada por el usuario, o la informacion sea requerida por la autoridad judicial, ministerio fiscal o la policia judicial, o se de alguno de los supuestos regulados en el artículo 11 de la Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal.</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
17
app/views/shared/_filter_subnav.html.erb
Normal file
17
app/views/shared/_filter_subnav.html.erb
Normal file
@@ -0,0 +1,17 @@
|
||||
<% # Params:
|
||||
#
|
||||
# i18n_namespace: for example "moderation.debates.index"
|
||||
%>
|
||||
|
||||
<dl class="sub-nav">
|
||||
<dt><%= t("#{i18n_namespace}.filter") %>: </dt>
|
||||
|
||||
<% @valid_filters.each do |filter| %>
|
||||
<% if @current_filter == filter %>
|
||||
<dd class="active"><%= t("#{i18n_namespace}.filters.#{filter}") %></dd>
|
||||
<% else %>
|
||||
<dd><%= link_to t("#{i18n_namespace}.filters.#{filter}"),
|
||||
current_path_with_query_params(filter: filter) %></dd>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</dl>
|
||||
@@ -13,7 +13,11 @@
|
||||
|
||||
<div class="row">
|
||||
<div class="small-12 column">
|
||||
<%= f.text_field :username, placeholder: t("devise_views.users.registrations.new.username_label") %>
|
||||
|
||||
<%= f.label t("devise_views.users.registrations.new.username_label") %>
|
||||
<span class="note"><%= t("devise_views.users.registrations.new.username_note") %></span>
|
||||
<%= f.text_field :username, placeholder: t("devise_views.users.registrations.new.username_label"), label: false %>
|
||||
|
||||
<%= f.email_field :email, placeholder: t("devise_views.users.registrations.new.email_label") %>
|
||||
|
||||
<%= f.password_field :password, autocomplete: "off",
|
||||
|
||||
37
app/views/verification/letter/edit.html.erb
Normal file
37
app/views/verification/letter/edit.html.erb
Normal file
@@ -0,0 +1,37 @@
|
||||
<div class="verification account row">
|
||||
<div class="small-12 column">
|
||||
|
||||
<div class="text-center">
|
||||
<div class="small-4 column verification-step completed">
|
||||
<%= t("verification.step_1") %>
|
||||
</div>
|
||||
<div class="small-4 column verification-step completed">
|
||||
<%= t("verification.step_2") %>
|
||||
</div>
|
||||
<div class="small-4 column verification-step active">
|
||||
<%= t("verification.step_3") %>
|
||||
</div>
|
||||
|
||||
<div class="progress small-12 success round">
|
||||
<span class="meter" style="width: 100%"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="small-12 medium-12 column">
|
||||
|
||||
<h1 class="inline-block"><%= t("verification.letter.edit.title") %></h1>
|
||||
|
||||
<div class="small-12 medium-6">
|
||||
<%= form_for @letter, as: "letter", url: letter_path, method: :put do |f| %>
|
||||
<% if @error %>
|
||||
<div class="alert-box alert radius"><%= @error %></div>
|
||||
<% end %>
|
||||
|
||||
<%= f.text_field :verification_code, label: t("verification.letter.edit.confirmation_code") %>
|
||||
<%= f.submit t("verification.letter.new.send_code"), class: "button radius success" %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,15 +1,36 @@
|
||||
<div class="row account">
|
||||
<div class="verification account row">
|
||||
<div class="small-12 column">
|
||||
|
||||
<h1 class="inline-block"><%= t('verification.letter.new.title') %></h1>
|
||||
<div class="text-center">
|
||||
<div class="small-4 column verification-step completed">
|
||||
<%= t("verification.step_1") %>
|
||||
</div>
|
||||
<div class="small-4 column verification-step completed">
|
||||
<%= t("verification.step_2") %>
|
||||
</div>
|
||||
<div class="small-4 column verification-step active">
|
||||
<%= t("verification.step_3") %>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<%= t('verification.letter.new.explanation') %>
|
||||
<div class="progress small-12 success round">
|
||||
<span class="meter" style="width: 100%"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<%= form_for @letter, as: "letter", url: letter_path do |f| %>
|
||||
<%= render 'shared/errors', resource: @letter %>
|
||||
<%= f.submit t('verification.letter.new.submit_button') %>
|
||||
<% end %>
|
||||
<div class="small-12 medium-12 column">
|
||||
|
||||
<h1 class="inline-block"><%= t("verification.letter.new.title") %></h1>
|
||||
|
||||
<%= t("verification.letter.new.explanation_html") %>
|
||||
|
||||
<%= link_to t("verification.letter.new.offices"), t("verification.letter.new.offices_url"),
|
||||
target: "_blank", class: "button radius inline-block"
|
||||
%>
|
||||
|
||||
<%= form_for @letter, as: "letter", url: letter_path do |f| %>
|
||||
<%= f.submit t("verification.letter.new.send_letter"), class: "button radius secondary inline-block" %>
|
||||
<% end %>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<% if @residence.errors[:residence_in_madrid].present? %>
|
||||
|
||||
<div id="error_explanation" class="alert-box alert radius">
|
||||
<%= t('verification.residence.new.error_verifying_census') %>
|
||||
<%= mail_to "tec.gobiernoabierto@madrid.es" %>
|
||||
<%= t("verification.residence.new.error_verifying_census") %>
|
||||
<%= mail_to "web.gobiernoabierto@madrid.es" %>
|
||||
</div>
|
||||
|
||||
<% else %>
|
||||
<%= render 'shared/errors',
|
||||
<%= render "shared/errors",
|
||||
resource: @residence,
|
||||
message: t('verification.residence.new.form_errors') %>
|
||||
<% end %>
|
||||
message: t("verification.residence.new.form_errors") %>
|
||||
<% end %>
|
||||
|
||||
@@ -1,38 +1,64 @@
|
||||
<div class="row account">
|
||||
<div class="verification account row">
|
||||
<div class="small-12 column">
|
||||
|
||||
<h1 class="inline-block"><%= t('verification.residence.new.title') %></h1>
|
||||
<div class="text-center">
|
||||
<div class="small-4 column verification-step active">
|
||||
<%= t("verification.step_1") %>
|
||||
</div>
|
||||
<div class="small-4 column verification-step">
|
||||
<%= t("verification.step_2") %>
|
||||
</div>
|
||||
<div class="small-4 column verification-step">
|
||||
<%= t("verification.step_3") %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="progress small-12 success round">
|
||||
<span class="meter" style="width: 33%"></span>
|
||||
</div>
|
||||
|
||||
<h1 class="inline-block"><%= t("verification.residence.new.title") %></h1>
|
||||
|
||||
<%= form_for @residence, as: "residence", url: residence_path do |f| %>
|
||||
<%= render 'errors' %>
|
||||
<%= render "errors" %>
|
||||
|
||||
<div class="small-12 medium-6">
|
||||
<div class="small-6 medium-3">
|
||||
<%= f.select :document_type, document_types, prompt: "" %>
|
||||
<div class="small-12 medium-8">
|
||||
<div class="small-12 medium-4 left">
|
||||
<%= f.label t("verification.residence.new.document_type_label") %>
|
||||
<%= f.select :document_type, document_types, prompt: "", label: false %>
|
||||
</div>
|
||||
<div class="small-6 medium-8">
|
||||
<%= f.text_field :document_number %>
|
||||
<div class="small-12 medium-5 left">
|
||||
<%= f.label t("verification.residence.new.document_number") %>
|
||||
<%= f.text_field :document_number, label: false %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="date small-12 medium-6">
|
||||
<div class="date small-12 medium-6 clear">
|
||||
<%= f.label t("verification.residence.new.date_of_birth") %>
|
||||
<%= f.date_select :date_of_birth,
|
||||
prompt: true,
|
||||
start_year: 1900, end_year: 16.years.ago.year %>
|
||||
start_year: 1900, end_year: 16.years.ago.year,
|
||||
label: false %>
|
||||
</div>
|
||||
|
||||
<div class="small-12 medium-4 clear">
|
||||
<%= f.text_field :postal_code %>
|
||||
<%= f.label t("verification.residence.new.postal_code") %>
|
||||
<%= f.text_field :postal_code, label: false %>
|
||||
</div>
|
||||
|
||||
<div class="small-12">
|
||||
<%= f.check_box :terms_of_service, label: t("verification.residence.new.accept_terms_text") %>
|
||||
<%= link_to t("verification.residence.new.accept_terms_link"), '/census_terms', target: "_blank" %>
|
||||
<%= f.check_box :terms_of_service, label: false %>
|
||||
<%= f.label :terms_of_service do %>
|
||||
<%= t("verification.residence.new.accept_terms_text",
|
||||
terms_url: link_to(t("verification.residence.new.terms"), "/census_terms",
|
||||
target: "_blank")).html_safe
|
||||
%>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<div class="small-12 clear">
|
||||
<%= f.submit "Verify" %>
|
||||
<%= f.submit t("verification.residence.new.verify_residence") %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,16 +1,38 @@
|
||||
<div class="row account">
|
||||
<div class="verification account row">
|
||||
<div class="small-12 column">
|
||||
<div class="text-center">
|
||||
|
||||
<h1 class="inline-block"><%= t('verification.sms.edit.title') %></h1>
|
||||
<div class="small-4 column verification-step completed">
|
||||
<%= t("verification.step_1") %>
|
||||
</div>
|
||||
<div class="small-4 column verification-step active">
|
||||
<%= t("verification.step_2") %>
|
||||
</div>
|
||||
<div class="small-4 column verification-step">
|
||||
<%= t("verification.step_3") %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="progress small-12 success round">
|
||||
<span class="meter" style="width: 66%"></span>
|
||||
</div>
|
||||
|
||||
<h1 class="inline-block"><%= t("verification.sms.edit.title") %></h1>
|
||||
|
||||
<%= form_for @sms, as: "sms", url: sms_path, method: :put do |f| %>
|
||||
<p><%= @error %></p>
|
||||
<%= f.text_field :confirmation_code %>
|
||||
<% if @error %>
|
||||
<div class="alert-box alert radius"><%= @error %></div>
|
||||
<% end %>
|
||||
|
||||
<%= f.submit t('verification.sms.edit.submit_button') %>
|
||||
<div class="small-12 medium-6">
|
||||
<%= f.label t("verification.sms.edit.confirmation_code") %>
|
||||
<%= f.text_field :confirmation_code, label: false %>
|
||||
</div>
|
||||
|
||||
<%= f.submit t("verification.sms.edit.submit_button") %>
|
||||
<% end %>
|
||||
|
||||
<%= t('verification.sms.edit.resend_sms_text') %>
|
||||
<%= link_to t('verification.sms.edit.resend_sms_link'), verified_user_path %>
|
||||
<%= t("verification.sms.edit.resend_sms_text") %>
|
||||
<%= link_to t("verification.sms.edit.resend_sms_link"), verified_user_path %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,14 +1,33 @@
|
||||
<div class="row account">
|
||||
<div class="verification account row">
|
||||
<div class="small-12 column">
|
||||
<div class="text-center">
|
||||
|
||||
<h1 class="inline-block"><%= t('verification.sms.new.title') %></h1>
|
||||
<div class="small-4 column verification-step completed">
|
||||
<%= t("verification.step_1") %>
|
||||
</div>
|
||||
<div class="small-4 column verification-step active">
|
||||
<%= t("verification.step_2") %>
|
||||
</div>
|
||||
<div class="small-4 column verification-step">
|
||||
<%= t("verification.step_3") %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="progress small-12 success round">
|
||||
<span class="meter" style="width: 66%"></span>
|
||||
</div>
|
||||
|
||||
<h1 class="inline-block"><%= t("verification.sms.new.title") %></h1>
|
||||
|
||||
<%= form_for @sms, as: "sms", url: sms_path do |f| %>
|
||||
<%= render 'shared/errors', resource: @sms %>
|
||||
<%= render "shared/errors", resource: @sms %>
|
||||
|
||||
<%= f.text_field :phone %>
|
||||
<div class="small-12 medium-6">
|
||||
<%= f.label t("verification.sms.new.phone") %>
|
||||
<%= f.text_field :phone, label: false %>
|
||||
</div>
|
||||
|
||||
<%= f.submit t('verification.sms.new.submit_button') %>
|
||||
<%= f.submit t("verification.sms.new.submit_button") %>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<%= form_for verified_user, url: url, method: :post do |f| %>
|
||||
<%= f.hidden_field :id %>
|
||||
<%= f.submit t('verification.verified_user.form.submit_button') %>
|
||||
<% end %>
|
||||
<%= f.submit t("verification.verified_user.form.submit_button"), class: "button radius success tiny" %>
|
||||
<% end %>
|
||||
|
||||
@@ -1,49 +1,41 @@
|
||||
<div class="row account">
|
||||
<div class="verification account row">
|
||||
<div class="small-12 column">
|
||||
|
||||
<h1 class="inline-block"><%= t('verification.verified_user.show.title') %></h1>
|
||||
<h1 class="inline-block"><%= t("verification.verified_user.show.title") %></h1>
|
||||
|
||||
<p><%= t("verification.verified_user.show.explanation") %></p>
|
||||
|
||||
<% if @verified_users.map(&:email).any? %>
|
||||
<div><strong><%= t('verification.verified_user.show.email_title') %></strong></div>
|
||||
<ul>
|
||||
<h2><%= t("verification.verified_user.show.email_title") %></h2>
|
||||
<ul class="verification-list">
|
||||
<% @verified_users.each do |verified_user| %>
|
||||
<% if verified_user.email.present? %>
|
||||
<li id="<%= dom_id(verified_user) %>_email" style="float:left">
|
||||
<span style="float:left">
|
||||
<%= mask_email(verified_user.email) %>
|
||||
</span>
|
||||
<span style="float:left;padding-left:30px">
|
||||
<%= render 'form', url: email_path, verified_user: verified_user %>
|
||||
</span>
|
||||
<li id="<%= dom_id(verified_user) %>_email">
|
||||
<span><%= mask_email(verified_user.email) %></span>
|
||||
<span><%= render "form", url: email_path, verified_user: verified_user %></span>
|
||||
</li>
|
||||
<br/><br/><br/>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</ul>
|
||||
<% end %>
|
||||
|
||||
<% if @verified_users.map(&:phone).any? %>
|
||||
<div><strong><%= t('verification.verified_user.show.phone_title') %></strong></div>
|
||||
<ul style="padding-top:40px">
|
||||
<h2><%= t("verification.verified_user.show.phone_title") %></h2>
|
||||
<ul class="verification-list">
|
||||
<% @verified_users.each do |verified_user| %>
|
||||
<% if verified_user.phone.present? %>
|
||||
<li id="<%= dom_id(verified_user) %>_phone" style="float:left">
|
||||
<span style="float:left">
|
||||
<%= mask_phone(verified_user.phone) %>
|
||||
</span>
|
||||
<span style="float:left;padding-left:30px">
|
||||
<%= render 'form', url: sms_path, verified_user: verified_user %>
|
||||
</span>
|
||||
<span><%= mask_phone(verified_user.phone) %></span>
|
||||
<span><%= render "form", url: sms_path, verified_user: verified_user %></span>
|
||||
</li>
|
||||
<br/><br/><br/>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</ul>
|
||||
<% end %>
|
||||
|
||||
<div style="margin-top: 30px">
|
||||
<%= link_to t('verification.verified_user.show.use_another_phone'), new_sms_path %>
|
||||
<div class="margin clear">
|
||||
<%= link_to t("verification.verified_user.show.use_another_phone"), new_sms_path %>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -6,19 +6,21 @@ default: &default
|
||||
username:
|
||||
password:
|
||||
|
||||
development:
|
||||
development: &development
|
||||
<<: *default
|
||||
database: participacion_development
|
||||
|
||||
# The staging, preproduction and production dbs are only needed
|
||||
# for running rake assets:precompile locally before deploying
|
||||
staging:
|
||||
<<: *default
|
||||
<<: *development
|
||||
|
||||
preproduction:
|
||||
<<: *default
|
||||
<<: *development
|
||||
|
||||
production:
|
||||
<<: *default
|
||||
<<: *development
|
||||
|
||||
test:
|
||||
<<: *default
|
||||
database: participacion_test
|
||||
database: participacion_test
|
||||
|
||||
@@ -6,4 +6,5 @@ set :ssh_options, port: deploysecret(:ssh_port)
|
||||
set :stage, :production
|
||||
set :rails_env, :production
|
||||
|
||||
server deploysecret(:server), user: deploysecret(:user), roles: %w(web app db importer)
|
||||
server deploysecret(:server1), user: deploysecret(:user), roles: %w(web app db importer)
|
||||
server deploysecret(:server2), user: deploysecret(:user), roles: %w(web app db importer)
|
||||
|
||||
@@ -99,13 +99,18 @@ ignore_missing:
|
||||
ignore_unused:
|
||||
- 'activerecord.*'
|
||||
- 'activemodel.*'
|
||||
- 'admin.organizations.index.filter.*'
|
||||
- 'unauthorized.*'
|
||||
- 'simple_captcha.*'
|
||||
- 'admin.officials.level_*'
|
||||
- 'admin.comments.index.filter*'
|
||||
- 'admin.debates.index.filter*'
|
||||
- 'admin.organizations.index.filter*'
|
||||
- 'admin.users.index.filter*'
|
||||
- 'moderation.comments.index.filter*'
|
||||
- 'moderation.debates.index.filter*'
|
||||
- 'debates.index.orders.*'
|
||||
- 'helpers.page_entries_info.*' # kaminari
|
||||
- 'views.pagination.*' # kaminari
|
||||
- 'debates.index.orders.*' #order filters for debates
|
||||
# - '{devise,kaminari,will_paginate}.*'
|
||||
# - 'simple_form.{yes,no}'
|
||||
# - 'simple_form.{placeholders,hints,labels}.*'
|
||||
|
||||
@@ -53,7 +53,8 @@ en:
|
||||
back_link: "Back"
|
||||
new:
|
||||
title: "Sign up"
|
||||
username_label: "Username to use publicly"
|
||||
username_label: "Username"
|
||||
username_note: "Username which will appear in your publications"
|
||||
email_label: "Email"
|
||||
password_label: "Password"
|
||||
password_confirmation_label: "Confirm password"
|
||||
|
||||
@@ -53,7 +53,8 @@ es:
|
||||
back_link: "Atrás"
|
||||
new:
|
||||
title: "Registrarse"
|
||||
username_label: "Nombre a utilizar públicamente"
|
||||
username_label: "Nombre de usuario"
|
||||
username_note: "Nombre que aparecerá en tus publicaciones"
|
||||
email_label: "Email"
|
||||
password_label: "Contraseña"
|
||||
password_confirmation_label: "Confirmar contraseña"
|
||||
|
||||
@@ -16,10 +16,10 @@ en:
|
||||
open_city_slogan:
|
||||
"Start listening to Madrid.
|
||||
For that we open this digital Puerta del Sol, where all the locals can meet to discuss and share everything we want.
|
||||
Also a place where you can talk directly with all the employees of the City of Madrid, from the Mayor to any officer."
|
||||
Also a place where you can talk directly with all the employees of the City of Madrid, from the Mayor to any public employee of the City hall."
|
||||
open_city_text:
|
||||
"Here every voice has its place, and are citizens, and no one in their name, they decide to vote debates what issues are
|
||||
most important of every time. Officials have individual users with whom you may participate in the debates, and evaluated,
|
||||
"Here every voice has its place and are citizens, and no one in their name, they decide to vote debates what issues are
|
||||
most important of every time. Government officials have individual users with whom you may participate in the debates, and evaluated,
|
||||
the same level as everyone else. Because the Madrid City Council works for its citizens, and must respond to them."
|
||||
open_city_soon: "And soon... we opened the section of citizen proposals."
|
||||
see_all_debates: See all debates
|
||||
@@ -28,25 +28,30 @@ en:
|
||||
administration: Administration
|
||||
moderation: Moderation
|
||||
# welcome: Welcome
|
||||
how_it_works: How it works
|
||||
help: Help
|
||||
more_information: "More information"
|
||||
debates: Debates
|
||||
# initiatives: Initiatives
|
||||
footer:
|
||||
description:
|
||||
"The city you want, it will be the city you want. Get more information here on this page.
|
||||
This Open Government Portal is %{open_source}, and code is in %{github_url}.
|
||||
"The city you want, it will be the city you want. %{more_info} here on this page.
|
||||
This Open Government Portal is %{open_source}, and code is in %{github}.
|
||||
Madrid, for the whole world."
|
||||
more_info: Get more information
|
||||
more_info_url: "/more_information"
|
||||
open_source: "software libre AGPLv3"
|
||||
open_source_url: "http://www.gnu.org/licenses/agpl-3.0.html"
|
||||
github: "github"
|
||||
github_url: "https://github.com/ayuntamientomadrid"
|
||||
copyright: "Ayuntamiento de Madrid, 2015. All rights reserved"
|
||||
copyright: "Ayuntamiento de Madrid, %{year}"
|
||||
participation_title: "Participation"
|
||||
participation_text: Decide what should be the city of Madrid you want.
|
||||
transparency_title: Transparency
|
||||
transparency_text: Get any information on the City of Madrid.
|
||||
open_data_title: Open Data
|
||||
open_data_text: All City Council data are yours
|
||||
open_data_text: "All City Council data are yours."
|
||||
contact_us: "Contact us"
|
||||
privacy: "Privacy Policy"
|
||||
conditions: "Terms of use"
|
||||
form:
|
||||
error: error
|
||||
errors: errors
|
||||
@@ -54,21 +59,22 @@ en:
|
||||
accept_terms: I accept the privacy policy and the legal terms
|
||||
user: account
|
||||
debate: debate
|
||||
sms: phone
|
||||
verification::sms: phone
|
||||
application:
|
||||
alert:
|
||||
only_beta_testers: "Sorry only Beta Testers are allowed access at the moment"
|
||||
debates:
|
||||
index:
|
||||
create_debate: Create a debate
|
||||
start_debate: Start a debate
|
||||
select_order: Order by
|
||||
select_order_long: Order debates by
|
||||
orders:
|
||||
created_at: newest
|
||||
total_votes: most voted
|
||||
likes: best rated
|
||||
select_topic: "Filter by topic:"
|
||||
filter_topic: "You are seeing %{number} debates with the topic '%{topic}'"
|
||||
all: All
|
||||
filter_topic:
|
||||
one: "You are seeing one debate with the topic '%{topic}'"
|
||||
other: "You are seeing %{count} debates with the topic '%{topic}'"
|
||||
debate:
|
||||
debate: Debate
|
||||
comments:
|
||||
@@ -95,14 +101,13 @@ en:
|
||||
other: "%{count} votes"
|
||||
form:
|
||||
debate_title: Debate title
|
||||
title_instructions: "SBe clear and precise with the title, but make it informative"
|
||||
debate_text: Ellaborate your opinion
|
||||
text_instructions: "Explain your opinion, go into details, tell us what's the purpose of your idea"
|
||||
debate_text: Initial text for debate
|
||||
tags_label: Topics
|
||||
tags_instructions: >
|
||||
Tag this idea. You can choose among our proposals on the list or add any other topic you want by
|
||||
Tag this debate. You can choose among our proposals on the list or add any other topic you want by
|
||||
writing them separated by "," and then pressing "enter".
|
||||
Some suggestions:
|
||||
start_debate: Start a debate
|
||||
show:
|
||||
back_link: Back
|
||||
author_deleted: Deleted user
|
||||
@@ -119,7 +124,7 @@ en:
|
||||
show_link: Show debate
|
||||
back_link: Back
|
||||
new:
|
||||
publish_new: Publish new debate
|
||||
start_new: Start a debate
|
||||
back_link: Back
|
||||
recommendations_title: Tips for creating a debate
|
||||
recommendation_one: "On the Internet it is easy to say things you would not dare to say face to face. The tone of what you say you will be matched by a similar tone in the answers."
|
||||
@@ -160,12 +165,12 @@ en:
|
||||
phone_number_label: "Phone number"
|
||||
organization_name_label: "Organization name"
|
||||
notifications: Notifications
|
||||
level_two_user: You are a level 2 user
|
||||
level_three_user: You are a level 3 user
|
||||
finish_verification: "Finish verification"
|
||||
verified_account: Verified account
|
||||
verify_my_account: Verify my account
|
||||
simple_captcha:
|
||||
placeholder: "Enter the image value"
|
||||
label: "Enter the code in the box"
|
||||
label: "Enter the image value in the next form"
|
||||
refresh_button_text: "Refresh"
|
||||
message:
|
||||
user: "secret code did not match with the image"
|
||||
|
||||
@@ -16,10 +16,10 @@ es:
|
||||
open_city_slogan:
|
||||
"Empecemos escuchando qué tiene que decir Madrid.
|
||||
Para ello abrimos esta Puerta del Sol digital, donde todos los madrileños podemos encontrarnos para debatir y compartir todo lo que queramos.
|
||||
También un espacio donde poder hablar directamente con todos los trabajadores del Ayuntamiento de Madrid, desde la Alcaldesa hasta cualquier funcionario."
|
||||
También un espacio donde poder hablar directamente con todos los trabajadores del Ayuntamiento de Madrid, desde la Alcaldesa hasta cualquier trabajador público del Ayuntamiento."
|
||||
open_city_text:
|
||||
"Aquí cualquier voz tiene su espacio, y son los ciudadanos, y nadie en su nombre, los que deciden votando los debates cuáles son los temas
|
||||
más importantes de cada momento. Los funcionarios tienen usuarios propios con los que podrán participar en los debates, y ser evaluados,
|
||||
"Aquí cualquier voz tiene su espacio y son los ciudadanos, y nadie en su nombre, los que deciden votando los debates cuáles son los temas
|
||||
más importantes de cada momento. Los responsables del gobierno tienen usuarios propios con los que podrán participar en los debates, y ser evaluados,
|
||||
al mismo nivel que todos los demás. Porque el Ayuntamiento de Madrid trabaja para sus ciudadanos, y ante ellos debe responder."
|
||||
open_city_soon: "Y muy pronto... abrimos la sección de propuestas ciudadanas."
|
||||
see_all_debates: Ver todos los debates
|
||||
@@ -28,25 +28,30 @@ es:
|
||||
administration: Administrar
|
||||
moderation: Moderar
|
||||
# welcome: Portada
|
||||
how_it_works: "Cómo funciona"
|
||||
help: Ayuda
|
||||
more_information: "Más información"
|
||||
debates: Debates
|
||||
# initiatives: Iniciativas
|
||||
footer:
|
||||
description:
|
||||
"La ciudad que quieres, será la ciudad que quieras. Obtén aquí más información sobre esta página.
|
||||
Este Portal de Gobierno Abierto es %{open_source}, y su código se encuentra en %{github_url}.
|
||||
"La ciudad que quieres, será la ciudad que quieras. %{more_info} sobre esta página.
|
||||
Este Portal de Gobierno Abierto es %{open_source}, y su código se encuentra en %{github}.
|
||||
De Madrid, para el mundo entero."
|
||||
more_info: Obtén más información
|
||||
more_info_url: "/more_information"
|
||||
open_source: "software libre AGPLv3"
|
||||
open_source_url: "http://www.gnu.org/licenses/agpl-3.0.html"
|
||||
github: "github"
|
||||
github_url: "https://github.com/ayuntamientomadrid"
|
||||
copyright: "Ayuntamiento de Madrid, %{year}. Todos los derechos reservados"
|
||||
copyright: "Ayuntamiento de Madrid, %{year}"
|
||||
participation_title: "Participación"
|
||||
participation_text: "Decide cómo debe ser la ciudad de Madrid que quieres."
|
||||
transparency_title: Transparencia
|
||||
transparency_text: "Obtén cualquier información sobre el Ayuntamiento de Madrid."
|
||||
open_data_title: Datos Abiertos
|
||||
open_data_text: Todos los datos del Ayuntamiento son tuyos
|
||||
open_data_text: "Todos los datos del Ayuntamiento son tuyos."
|
||||
contact_us: "Contacta con nosotros en"
|
||||
privacy: "Política de privacidad"
|
||||
conditions: "Condiciones de uso"
|
||||
form:
|
||||
error: error
|
||||
errors: errores
|
||||
@@ -54,21 +59,22 @@ es:
|
||||
accept_terms: Acepto la política de privacidad y el aviso legal
|
||||
user: la cuenta
|
||||
debate: el debate
|
||||
sms: el teléfono
|
||||
verification::sms: el teléfono
|
||||
application:
|
||||
alert:
|
||||
only_beta_testers: "Lo sentimos sólo los usuarios de pruebas tienen acceso de momento"
|
||||
debates:
|
||||
index:
|
||||
create_debate: Crea un debate
|
||||
start_debate: Empieza un debate
|
||||
select_order: Ordenar por
|
||||
select_order_long: Estás viendo los debates
|
||||
orders:
|
||||
created_at: "más nuevos"
|
||||
total_votes: "más votados"
|
||||
likes: mejor valorados
|
||||
select_topic: "Filtrar por tema:"
|
||||
filter_topic: "Estás viendo %{number} debates con el tema '%{topic}'"
|
||||
all: Todos
|
||||
likes: "mejor valorados"
|
||||
filter_topic:
|
||||
one: "Estás viendo un debate con el tema ''%{topic}''"
|
||||
other: "Estás viendo %{count} debates con el tema '%{topic}'"
|
||||
debate:
|
||||
debate: Debate
|
||||
comments:
|
||||
@@ -95,14 +101,13 @@ es:
|
||||
other: "%{count} votos"
|
||||
form:
|
||||
debate_title: Título del debate
|
||||
title_instructions: "Sé claro y conciso a la hora de poner un título, pero recuerda que debe explicar bien tu idea, ¡es tu carta de entrada!"
|
||||
debate_text: Describe tu opinión
|
||||
text_instructions: "Explica con todo el detalle que puedas y de una manera sencilla la idea y que crees que conseguiríamos con ella"
|
||||
debate_text: Texto inicial del debate
|
||||
tags_label: Temas
|
||||
tags_instructions: >
|
||||
Etiqueta esta idea. Puedes elegir entre nuestras propuestas o introducir las que desees.
|
||||
Etiqueta este debate. Puedes elegir entre nuestras propuestas o introducir las que desees.
|
||||
Para ello solo tienes que escribir las etiquetas que desees separadas por "," y pulsar "intro".
|
||||
Algunas recomendaciones:
|
||||
start_debate: Empieza un debate
|
||||
show:
|
||||
back_link: Volver
|
||||
author_deleted: Usuario eliminado
|
||||
@@ -119,7 +124,7 @@ es:
|
||||
show_link: Ver debate
|
||||
back_link: Volver
|
||||
new:
|
||||
publish_new: Publicar debate nuevo
|
||||
start_new: Empezar un debate
|
||||
back_link: Volver
|
||||
recommendations_title: Recomendaciones para crear un debate
|
||||
recommendation_one: "En internet es fácil decir cosas que uno no se atrevería a decir cara a cara. El tono de lo que digas será correspondido con un tono similar en las respuestas."
|
||||
@@ -160,12 +165,12 @@ es:
|
||||
phone_number_label: "Teléfono"
|
||||
organization_name_label: "Nombre de la organización"
|
||||
notifications: Notificaciones
|
||||
level_two_user: Eres un usuario verificado de nivel 2
|
||||
level_three_user: Eres un usuario verificado de nivel 3
|
||||
finish_verification: "Finalizar verificación"
|
||||
verified_account: Cuenta verificada
|
||||
verify_my_account: Verificar mi cuenta
|
||||
simple_captcha:
|
||||
placeholder: "Introduce el texto de la imagen"
|
||||
label: "Introduce el texto en la caja"
|
||||
label: "Introduce el texto de la imagen en la siguiente caja"
|
||||
refresh_button_text: "Refrescar"
|
||||
message:
|
||||
user: "el código secreto no coincide con la imagen"
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
en:
|
||||
pages:
|
||||
legal:
|
||||
"Legal"
|
||||
conditions:
|
||||
"Terms of use"
|
||||
privacy:
|
||||
"Privacy"
|
||||
"Privacy Policy"
|
||||
general_terms:
|
||||
"Terms and Conditions"
|
||||
census_terms:
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
es:
|
||||
pages:
|
||||
legal:
|
||||
"Legal"
|
||||
conditions:
|
||||
"Condiciones de uso"
|
||||
privacy:
|
||||
"Privacidad"
|
||||
"Política de Privacidad"
|
||||
general_terms:
|
||||
"Términos y Condiciones"
|
||||
census_terms:
|
||||
|
||||
@@ -1,49 +1,59 @@
|
||||
en:
|
||||
verification:
|
||||
step_1: "1. Residence"
|
||||
step_2: "2. Confirmation code"
|
||||
step_3: "3. Final verification"
|
||||
residence:
|
||||
new:
|
||||
title: 'Verify residence'
|
||||
title: "Verify residence"
|
||||
document_type_label: "Document type"
|
||||
document_type:
|
||||
spanish_id: 'Spanish ID'
|
||||
passport: 'Passport'
|
||||
residence_card: 'Residence card'
|
||||
accept_terms_text: "I accept the terms to access the city Census"
|
||||
accept_terms_link: "Read terms"
|
||||
form_errors: 'prevented your residence verification'
|
||||
error_verifying_census: 'The census of the city of Madrid could not verify your information. Pero revise de information and try again or get in touch with us.'
|
||||
spanish_id: "Spanish ID"
|
||||
passport: "Passport"
|
||||
residence_card: "Residence card"
|
||||
document_number: "Document number"
|
||||
date_of_birth: "Date of birth"
|
||||
postal_code: "Postal code"
|
||||
accept_terms_text: "I accept %{terms_url} to access the city Census"
|
||||
terms: "the terms"
|
||||
verify_residence: "Verify residence"
|
||||
form_errors: "prevented your residence verification"
|
||||
error_verifying_census: "The census of the city of Madrid could not verify your information. Pero revise de information and try again or get in touch with us."
|
||||
create:
|
||||
flash:
|
||||
success: 'Residence verified'
|
||||
success: "Residence verified"
|
||||
alert:
|
||||
verify_attemps_left: 'You have reached the maximum number of Census verification tries'
|
||||
unconfirmed_residency: 'You have not yet confirmed your residence'
|
||||
verify_attemps_left: "You have reached the maximum number of Census verification tries"
|
||||
unconfirmed_residency: "You have not yet confirmed your residence"
|
||||
sms:
|
||||
new:
|
||||
title: Phone verification
|
||||
submit_button: Send
|
||||
title: "Phone verification"
|
||||
phone: "Enter your phone for recive the code"
|
||||
submit_button: "Send"
|
||||
create:
|
||||
flash:
|
||||
success: 'Enter the confirmation code we have sent your phone'
|
||||
success: "Enter the confirmation code we have sent your phone"
|
||||
edit:
|
||||
title: Security code confirmation
|
||||
resend_sms_text: You have not received the confirmation code in your phone?
|
||||
resend_sms_link: Click here to send the confirmation code again
|
||||
submit_button: Send
|
||||
title: "Security code confirmation"
|
||||
confirmation_code: "Code confirmation"
|
||||
resend_sms_text: "You have not received the confirmation code in your phone?"
|
||||
resend_sms_link: "Click here to send the confirmation code again"
|
||||
submit_button: "Send"
|
||||
update:
|
||||
error: 'Incorrect confirmation code'
|
||||
error: "Incorrect confirmation code"
|
||||
flash:
|
||||
level_three:
|
||||
success: 'Correct code. You are now a verified user'
|
||||
success: "Correct code. Your account is verified"
|
||||
level_two:
|
||||
success: 'Correct code'
|
||||
success: "Correct code"
|
||||
alert:
|
||||
verify_attemps_left: 'You have reached the maximum number of sms verification tries'
|
||||
verify_attemps_left: "You have reached the maximum number of sms verification tries"
|
||||
email:
|
||||
show:
|
||||
flash:
|
||||
success: 'You are now a verified user'
|
||||
success: "You are now a verified user"
|
||||
alert:
|
||||
failure: 'Incorrect verification code'
|
||||
failure: "Incorrect verification code"
|
||||
create:
|
||||
flash:
|
||||
success: "We have send you a confirmation email to your email account: %{email}"
|
||||
@@ -51,21 +61,33 @@ en:
|
||||
failure: "There was a problem sending you an email to your account"
|
||||
letter:
|
||||
new:
|
||||
title: Final Verification
|
||||
explanation: 'To completely verify your account we need to go to one of these offices or send you a letter with a special code to your home address'
|
||||
submit_button: 'Send me a letter'
|
||||
title: "Final Verification"
|
||||
explanation_html:
|
||||
"<p>Congratulations! You can now participate in discussions or support proposals of others.</p><p>To finish we need to verify your account completely provide you with a <b>maximum security code</b>, we ensure that no one is using your data on your behalf.</p><p>This requirement is essential to participate in final votes on motions. This can approach any <b>Office of Citizen</b> where you will verify in person, or in case you is impossible, we can send you a letter home with the code.</p>"
|
||||
offices: "See Office of Citizen"
|
||||
offices_url: "http://www.madrid.es/portales/munimadrid/es/Inicio/El-Ayuntamiento/Atencion-al-ciudadano/Oficinas-de-Atencion-al-Ciudadano?vgnextfmt=default&vgnextchannel=5b99cde2e09a4310VgnVCM1000000b205a0aRCRD"
|
||||
send_letter: "Send me a letter with the code"
|
||||
send_code: "Send"
|
||||
create:
|
||||
flash:
|
||||
success: "You will receive a letter to your home address in the next couple of days"
|
||||
success: "Thank you for requesting a maximum security code in a few days we will send it to the address on your census data. Remember that you can save shipping collecting your code in any of the Office of Citizen Services."
|
||||
alert:
|
||||
failure: "We could not verify your address with the Census please try again later"
|
||||
edit:
|
||||
title: "Security code confirmation"
|
||||
confirmation_code: "Enter the security code in your letter"
|
||||
update:
|
||||
error: "Incorrect confirmation code"
|
||||
flash:
|
||||
success: "Correct code. Your account is verified"
|
||||
alert:
|
||||
unconfirmed_personal_data: 'You have not yet confirmed your personal data'
|
||||
unconfirmed_code: "You have not yet enter the confirmation code"
|
||||
verified_user:
|
||||
show:
|
||||
title: Available information
|
||||
email_title: Emails
|
||||
phone_title: Phones
|
||||
use_another_phone: Use another phone
|
||||
title: "Available information"
|
||||
explanation: "We currently have the following data in the Census, choose where you want to send the confirmation code."
|
||||
email_title: "Emails"
|
||||
phone_title: "Phones"
|
||||
use_another_phone: "Use another phone"
|
||||
form:
|
||||
submit_button: Send
|
||||
submit_button: "Send code"
|
||||
@@ -1,49 +1,59 @@
|
||||
es:
|
||||
verification:
|
||||
step_1: "1. Residencia"
|
||||
step_2: "2. Código de confirmación"
|
||||
step_3: "3. Verificación final"
|
||||
residence:
|
||||
new:
|
||||
title: 'Verificar residencia'
|
||||
title: "Verificar residencia"
|
||||
document_type_label: "Tipo de documento"
|
||||
document_type:
|
||||
spanish_id: 'DNI'
|
||||
passport: 'Pasaporte'
|
||||
residence_card: 'Tarjeta de residencia'
|
||||
accept_terms_text: "Acepto los terminos de acceso al Padrón"
|
||||
accept_terms_link: "Leer términos"
|
||||
form_errors: 'evitaron verificar tu residencia'
|
||||
error_verifying_census: 'El Padrón de Madrid no pudo verificar tu información. Revisa la información ó ponte en contacto con nosotros.'
|
||||
spanish_id: "DNI"
|
||||
passport: "Pasaporte"
|
||||
residence_card: "Tarjeta de residencia"
|
||||
document_number: "Número de documento"
|
||||
date_of_birth: "Fecha de nacimiento"
|
||||
postal_code: "Código postal"
|
||||
accept_terms_text: "Acepto %{terms_url} al Padrón"
|
||||
terms: "los terminos de acceso"
|
||||
verify_residence: "Verificar residencia"
|
||||
form_errors: "evitaron verificar tu residencia"
|
||||
error_verifying_census: "El Padrón de Madrid no pudo verificar tu información. Revisa la información ó ponte en contacto con nosotros."
|
||||
create:
|
||||
flash:
|
||||
success: 'Residencia verificada'
|
||||
success: "Residencia verificada"
|
||||
alert:
|
||||
verify_attemps_left: 'Has llegado al máximo número de intentos de verificar tu residencia.'
|
||||
unconfirmed_residency: 'Aún no has verificado tu residencia'
|
||||
verify_attemps_left: "Has llegado al máximo número de intentos de verificar tu residencia."
|
||||
unconfirmed_residency: "Aún no has verificado tu residencia"
|
||||
sms:
|
||||
new:
|
||||
title: Verificación de teléfono móvil
|
||||
submit_button: Enviar
|
||||
title: "Recibir código de confirmación"
|
||||
phone: "Introduce tu teléfono móvil para recibir el código"
|
||||
submit_button: "Enviar"
|
||||
create:
|
||||
flash:
|
||||
success: 'Introduce el código de confirmación que te hemos enviado por mensaje de texto'
|
||||
success: "Introduce el código de confirmación que te hemos enviado por mensaje de texto"
|
||||
edit:
|
||||
title: 'Confirmación de código de seguridad'
|
||||
resend_sms_text: '¿No has recibido un mensaje de texto con tu código de confirmación?'
|
||||
resend_sms_link: 'Haz click aquí para volver a enviártelo'
|
||||
submit_button: Enviar
|
||||
title: "Confirmación de código de seguridad"
|
||||
confirmation_code: "Introduce el código que has recibido en tu móvil"
|
||||
resend_sms_text: "¿No has recibido un mensaje de texto con tu código de confirmación?"
|
||||
resend_sms_link: "Haz click aquí para volver a enviártelo"
|
||||
submit_button: "Enviar"
|
||||
update:
|
||||
error: 'Código de confirmación incorrecto'
|
||||
error: "Código de confirmación incorrecto"
|
||||
flash:
|
||||
level_three:
|
||||
success: 'Código correcto. Ya eres un usuario verificado'
|
||||
success: "Código correcto. Tu cuenta ya está verificada"
|
||||
level_two:
|
||||
success: 'Código incorrecto'
|
||||
success: "Código correcto"
|
||||
alert:
|
||||
verify_attemps_left: 'Has llegado al máximo número de intentos de verificar tu teléfono.'
|
||||
verify_attemps_left: "Has llegado al máximo número de intentos de verificar tu teléfono."
|
||||
email:
|
||||
show:
|
||||
flash:
|
||||
success: 'Eres un usuario verificado'
|
||||
success: "Eres un usuario verificado"
|
||||
alert:
|
||||
failure: 'Código de verificación incorrecto'
|
||||
failure: "Código de verificación incorrecto"
|
||||
create:
|
||||
flash:
|
||||
success: "Te hemos enviado un email de confirmación a tu cuenta: %{email}"
|
||||
@@ -51,21 +61,33 @@ es:
|
||||
failure: "Hubo un problema enviándote un email a tu cuenta"
|
||||
letter:
|
||||
new:
|
||||
title: Final Verification
|
||||
explanation: 'To completely verify your account we need to go to one of these offices or send you a letter with a special code to your home address'
|
||||
submit_button: 'Send me a letter'
|
||||
title: "Verificación Final"
|
||||
explanation_html:
|
||||
"<p>¡Felicidades! Ya puedes participar en debates o apoyar propuestas de otras personas.</p><p>Para terminar de verificar tu cuenta completamente necesitamos proporcionarte un <b>código de máxima seguridad</b>, que nos asegure que nadie está utilizando tus datos en tu nombre.</p><p>Este requerimiento es esencial para participar en las votaciones finales de las propuestas. Para ello puedes acercarte a cualquier <b>Oficina de Atención al Ciudadano</b> donde te verificarán presencialmente, o en caso de que te sea imposible, podemos mandarte una carta a casa con el código.</p>"
|
||||
offices: "Ver Oficinas de Atención al Ciudadano"
|
||||
offices_url: "http://www.madrid.es/portales/munimadrid/es/Inicio/El-Ayuntamiento/Atencion-al-ciudadano/Oficinas-de-Atencion-al-Ciudadano?vgnextfmt=default&vgnextchannel=5b99cde2e09a4310VgnVCM1000000b205a0aRCRD"
|
||||
send_letter: "Enviarme una carta con el código"
|
||||
send_code: "Enviar"
|
||||
create:
|
||||
flash:
|
||||
success: "You will receive a letter to your home address in the next couple of days"
|
||||
success: "Gracias por solicitar tu código de máxima seguridad, en unos días te lo enviaremos a la dirección que figura en tus datos del padrón. Recuerda que puedes ahorrar el envío recogiendo tu código en cualquiera de las Oficinas de Atención al Ciudadano."
|
||||
alert:
|
||||
failure: "We could not verify your address with the Census please try again later"
|
||||
failure: "No podemos verificar tu dirección con el Padrón, por favor inténtalo otra vez más tarde"
|
||||
edit:
|
||||
title: "Confirmación de código de seguridad"
|
||||
confirmation_code: "Introduce el código que has recibido en tu carta"
|
||||
update:
|
||||
error: "Código de verificación incorrecto"
|
||||
flash:
|
||||
success: "Código correcto. Tu cuenta ya está verificada"
|
||||
alert:
|
||||
unconfirmed_personal_data: 'You have not yet confirmed your personal data'
|
||||
unconfirmed_code: "Todavía no has introducido el código de confirmación"
|
||||
verified_user:
|
||||
show:
|
||||
title: Información disponible
|
||||
email_title: Emails
|
||||
phone_title: Teléfonos
|
||||
use_another_phone: Utilizar otro teléfono
|
||||
title: "Información disponible"
|
||||
explanation: "Actualmente disponemos de los siguientes datos en el Padrón, selecciona donde quieres que enviemos el código de confirmación."
|
||||
email_title: "Emails"
|
||||
phone_title: "Teléfonos"
|
||||
use_another_phone: "Utilizar otro teléfono"
|
||||
form:
|
||||
submit_button: Enviar
|
||||
submit_button: "Enviar código"
|
||||
|
||||
@@ -48,7 +48,7 @@ Rails.application.routes.draw do
|
||||
resource :sms, controller: "sms", only: [:new, :create, :edit, :update]
|
||||
resource :verified_user, controller: "verified_user", only: [:show]
|
||||
resource :email, controller: "email", only: [:new, :show, :create]
|
||||
resource :letter, controller: "letter", only: [:new, :create]
|
||||
resource :letter, controller: "letter", only: [:new, :create, :edit, :update]
|
||||
end
|
||||
|
||||
namespace :admin do
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
class AddLetterVerificationCodeToUsers < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :users, :letter_verification_code, :string
|
||||
end
|
||||
end
|
||||
10
db/schema.rb
10
db/schema.rb
@@ -65,6 +65,7 @@ ActiveRecord::Schema.define(version: 20150903142924) do
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.datetime "hidden_at"
|
||||
t.integer "children_count", default: 0
|
||||
t.integer "flags_count", default: 0
|
||||
t.datetime "ignored_flag_at"
|
||||
t.integer "moderator_id"
|
||||
@@ -90,8 +91,8 @@ ActiveRecord::Schema.define(version: 20150903142924) do
|
||||
t.integer "author_id"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.datetime "hidden_at"
|
||||
t.string "visit_id"
|
||||
t.datetime "hidden_at"
|
||||
t.integer "flags_count", default: 0
|
||||
t.datetime "ignored_flag_at"
|
||||
t.integer "cached_votes_total", default: 0
|
||||
@@ -198,13 +199,12 @@ ActiveRecord::Schema.define(version: 20150903142924) do
|
||||
t.string "unconfirmed_email"
|
||||
t.boolean "email_on_debate_comment", default: false
|
||||
t.boolean "email_on_comment_reply", default: false
|
||||
t.string "phone_number", limit: 30
|
||||
t.string "official_position"
|
||||
t.integer "official_level", default: 0
|
||||
t.datetime "hidden_at"
|
||||
t.string "phone_number", limit: 30
|
||||
t.string "username"
|
||||
t.datetime "confirmed_hide_at"
|
||||
t.string "sms_confirmation_code"
|
||||
t.string "username"
|
||||
t.string "document_number"
|
||||
t.string "document_type"
|
||||
t.datetime "residence_verified_at"
|
||||
@@ -216,6 +216,8 @@ ActiveRecord::Schema.define(version: 20150903142924) do
|
||||
t.string "unconfirmed_phone"
|
||||
t.string "confirmed_phone"
|
||||
t.datetime "letter_requested_at"
|
||||
t.datetime "confirmed_hide_at"
|
||||
t.string "letter_verification_code"
|
||||
end
|
||||
|
||||
add_index "users", ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true, using: :btree
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
# Default admin user (change password after first deploy to a server!)
|
||||
admin = User.create!(username: 'admin', email: 'admin@madrid.es', password: '12345678', password_confirmation: '12345678', confirmed_at: Time.now)
|
||||
admin.create_administrator
|
||||
|
||||
# Names for the moderation console, as a hint for moderators
|
||||
# to know better how to assign users with official positions
|
||||
Setting.create(key: 'official_level_1_name', value: 'Empleados públicos')
|
||||
@@ -7,4 +11,4 @@ Setting.create(key: 'official_level_4_name', value: 'Concejales')
|
||||
Setting.create(key: 'official_level_5_name', value: 'Alcaldesa')
|
||||
|
||||
# Max percentage of allowed anonymous votes on a debate
|
||||
Setting.create(key: 'max_ratio_anon_votes_on_debates', value: '50')
|
||||
Setting.create(key: 'max_ratio_anon_votes_on_debates', value: '50')
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
class ApplicationResponder < ActionController::Responder
|
||||
include Responders::FlashResponder
|
||||
include Responders::HttpCacheResponder
|
||||
|
||||
# Redirects resources to the collection path (index action) instead
|
||||
# of the resource path (show action) for POST/PUT/DELETE requests.
|
||||
# include Responders::CollectionResponder
|
||||
end
|
||||
|
||||
37
spec/controllers/concerns/has_filters_spec.rb
Normal file
37
spec/controllers/concerns/has_filters_spec.rb
Normal file
@@ -0,0 +1,37 @@
|
||||
require 'rails_helper'
|
||||
|
||||
describe 'HasFilters' do
|
||||
|
||||
class FakeController < ActionController::Base; end
|
||||
|
||||
controller(FakeController) do
|
||||
include HasFilters
|
||||
has_filters ['all', 'pending', 'reviewed'], only: :index
|
||||
|
||||
def index
|
||||
render text: "#{@current_filter} (#{@valid_filters.join(' ')})"
|
||||
end
|
||||
end
|
||||
|
||||
it "has the valid filters set up" do
|
||||
get :index
|
||||
expect(response.body).to eq('all (all pending reviewed)')
|
||||
end
|
||||
|
||||
describe "the current filter" do
|
||||
it "defaults to the first one on the list" do
|
||||
get :index
|
||||
expect(response.body).to eq('all (all pending reviewed)')
|
||||
end
|
||||
|
||||
it "can be changed by the filter param" do
|
||||
get :index, filter: 'pending'
|
||||
expect(response.body).to eq('pending (all pending reviewed)')
|
||||
end
|
||||
|
||||
it "defaults to the first one on the list if given a bogus filter" do
|
||||
get :index, filter: 'foobar'
|
||||
expect(response.body).to eq('all (all pending reviewed)')
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -8,8 +8,8 @@ describe PagesController do
|
||||
expect(response).to be_ok
|
||||
end
|
||||
|
||||
it 'should include a legal page' do
|
||||
get :legal
|
||||
it 'should include a conditions page' do
|
||||
get :conditions
|
||||
expect(response).to be_ok
|
||||
end
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ feature 'Admin officials' do
|
||||
expect(page).to have_content @official.email
|
||||
|
||||
fill_in 'user_official_position', with: 'School Teacher'
|
||||
select '3', from: 'user_official_level'
|
||||
select '3', from: 'user_official_level', exact: false
|
||||
click_button 'Update User'
|
||||
|
||||
expect(page).to have_content 'Official position saved!'
|
||||
@@ -52,7 +52,7 @@ feature 'Admin officials' do
|
||||
click_link @citizen.name
|
||||
|
||||
fill_in 'user_official_position', with: 'Hospital manager'
|
||||
select '4', from: 'user_official_level'
|
||||
select '4', from: 'user_official_level', exact: false
|
||||
click_button 'Update User'
|
||||
|
||||
expect(page).to have_content 'Official position saved!'
|
||||
@@ -75,4 +75,4 @@ feature 'Admin officials' do
|
||||
expect(page).to_not have_content @citizen.name
|
||||
expect(page).to_not have_content @official.name
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -31,7 +31,7 @@ feature 'Comments' do
|
||||
expect(page).to have_content("1")
|
||||
expect(page).to have_content("2")
|
||||
expect(page).to_not have_content("3")
|
||||
click_link "Next"
|
||||
click_link "Next", exact: false
|
||||
end
|
||||
|
||||
expect(page).to have_css('.comment', count: 2)
|
||||
|
||||
@@ -28,7 +28,7 @@ feature 'Debates' do
|
||||
expect(page).to have_content("1")
|
||||
expect(page).to have_content("2")
|
||||
expect(page).to_not have_content("3")
|
||||
click_link "Next"
|
||||
click_link "Next", exact: false
|
||||
end
|
||||
|
||||
expect(page).to have_selector('#debates .debate', count: 2)
|
||||
@@ -60,7 +60,7 @@ feature 'Debates' do
|
||||
fill_in 'debate_captcha', with: correct_captcha_text
|
||||
check 'debate_terms_of_service'
|
||||
|
||||
click_button 'Create Debate'
|
||||
click_button 'Start a debate'
|
||||
|
||||
expect(page).to have_content 'Debate was successfully created.'
|
||||
expect(page).to have_content 'Acabar con los desahucios'
|
||||
@@ -78,13 +78,13 @@ feature 'Debates' do
|
||||
fill_in 'debate_captcha', with: "wrongText!"
|
||||
check 'debate_terms_of_service'
|
||||
|
||||
click_button "Create Debate"
|
||||
click_button "Start a debate"
|
||||
|
||||
expect(page).to_not have_content "Debate was successfully created."
|
||||
expect(page).to have_content "1 error"
|
||||
|
||||
fill_in 'debate_captcha', with: correct_captcha_text
|
||||
click_button "Create Debate"
|
||||
click_button "Start a debate"
|
||||
|
||||
expect(page).to have_content "Debate was successfully created."
|
||||
end
|
||||
@@ -100,7 +100,7 @@ feature 'Debates' do
|
||||
fill_in 'debate_captcha', with: correct_captcha_text
|
||||
check 'debate_terms_of_service'
|
||||
|
||||
click_button "Create Debate"
|
||||
click_button "Start a debate"
|
||||
|
||||
expect(page).to_not have_content "Debate was successfully created."
|
||||
expect(page).to have_content "1 error"
|
||||
@@ -115,7 +115,7 @@ feature 'Debates' do
|
||||
login_as(author)
|
||||
|
||||
visit new_debate_path
|
||||
click_button 'Create Debate'
|
||||
click_button 'Start a debate'
|
||||
expect(page).to have_content error_message
|
||||
end
|
||||
|
||||
@@ -129,7 +129,7 @@ feature 'Debates' do
|
||||
fill_in 'debate_captcha', with: correct_captcha_text
|
||||
check 'debate_terms_of_service'
|
||||
|
||||
click_button 'Create Debate'
|
||||
click_button 'Start a debate'
|
||||
|
||||
expect(page).to have_content 'Debate was successfully created.'
|
||||
expect(page).to have_content 'A test'
|
||||
@@ -161,7 +161,7 @@ feature 'Debates' do
|
||||
find('.js-add-tag-link', text: tag_name).click
|
||||
end
|
||||
|
||||
click_button 'Create Debate'
|
||||
click_button 'Start a debate'
|
||||
|
||||
expect(page).to have_content 'Debate was successfully created.'
|
||||
['Medio Ambiente', 'Ciencia'].each do |tag_name|
|
||||
@@ -179,7 +179,7 @@ feature 'Debates' do
|
||||
|
||||
fill_in 'debate_tag_list', with: 'user_id=1, &a=3, <script>alert("hey");</script>'
|
||||
|
||||
click_button 'Create Debate'
|
||||
click_button 'Start a debate'
|
||||
|
||||
expect(page).to have_content 'Debate was successfully created.'
|
||||
expect(page).to have_content 'user_id1'
|
||||
@@ -222,7 +222,7 @@ feature 'Debates' do
|
||||
fill_in 'debate_description', with: "Let's..."
|
||||
fill_in 'debate_captcha', with: correct_captcha_text
|
||||
|
||||
click_button "Update Debate"
|
||||
click_button "Start a debate"
|
||||
|
||||
expect(page).to have_content "Debate was successfully updated."
|
||||
expect(page).to have_content "End child poverty"
|
||||
@@ -235,7 +235,7 @@ feature 'Debates' do
|
||||
|
||||
visit edit_debate_path(debate)
|
||||
fill_in 'debate_title', with: ""
|
||||
click_button 'Update Debate'
|
||||
click_button 'Start a debate'
|
||||
|
||||
expect(page).to have_content error_message
|
||||
end
|
||||
@@ -249,13 +249,13 @@ feature 'Debates' do
|
||||
|
||||
fill_in 'debate_title', with: "New title"
|
||||
fill_in 'debate_captcha', with: "wrong!"
|
||||
click_button "Update Debate"
|
||||
click_button "Start a debate"
|
||||
|
||||
expect(page).to_not have_content "Debate was successfully updated."
|
||||
expect(page).to have_content "1 error"
|
||||
|
||||
fill_in 'debate_captcha', with: correct_captcha_text
|
||||
click_button "Update Debate"
|
||||
click_button "Start a debate"
|
||||
|
||||
expect(page).to have_content "Debate was successfully updated."
|
||||
end
|
||||
@@ -271,7 +271,7 @@ feature 'Debates' do
|
||||
|
||||
fill_in 'debate_title', with: ""
|
||||
fill_in 'debate_captcha', with: correct_captcha_text
|
||||
click_button "Update Debate"
|
||||
click_button "Start a debate"
|
||||
|
||||
expect(page).to_not have_content "Debate was successfully updated."
|
||||
expect(page).to have_content "1 error"
|
||||
@@ -407,34 +407,4 @@ feature 'Debates' do
|
||||
expect(@most_liked_debate.title).to appear_before(@most_voted_debate.title)
|
||||
end
|
||||
end
|
||||
|
||||
feature 'Debates can be filtered by tags', :js do
|
||||
let!(:debate1) { create(:debate, tag_list: ["Deporte", "Corrupción"]) }
|
||||
let!(:debate2) { create(:debate, tag_list: ["Deporte", "Fiestas populares"]) }
|
||||
let!(:debate3) { create(:debate, tag_list: ["Corrupción", "Fiestas populares"]) }
|
||||
|
||||
scenario 'By default no tag filter is applied' do
|
||||
visit debates_path
|
||||
|
||||
expect(page).to have_content('Filter by topic')
|
||||
expect(page).not_to have_content('with the topic')
|
||||
expect(page).to have_selector('#debates .debate', count: 3)
|
||||
end
|
||||
|
||||
scenario 'Debates are filtered by single tag' do
|
||||
visit debates_path
|
||||
|
||||
select('Deporte', from: 'tag-filter')
|
||||
|
||||
expect(page).not_to have_content('Filter by topic')
|
||||
expect(page).not_to have_select('tag-filter')
|
||||
expect(page).to have_content('with the topic')
|
||||
expect(current_url).to include('tag=Deporte')
|
||||
|
||||
expect(page).to have_selector('#debates .debate', count: 2)
|
||||
expect(page).to_not have_content(debate3.title)
|
||||
expect(page).to have_content(debate1.title)
|
||||
expect(page).to have_content(debate2.title)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -32,7 +32,7 @@ feature 'Organizations' do
|
||||
|
||||
scenario 'Shared links' do
|
||||
visit new_user_registration_path
|
||||
expect(page).to have_link "Sign up as an organization"
|
||||
expect(page).to have_link "Sign up as an organization / collective"
|
||||
|
||||
visit new_organization_registration_path
|
||||
expect(page).to have_link "Sign up"
|
||||
|
||||
@@ -72,7 +72,7 @@ feature 'Tags' do
|
||||
|
||||
fill_in 'debate_tag_list', with: "Impuestos, Economía, Hacienda"
|
||||
|
||||
click_button 'Create Debate'
|
||||
click_button 'Start a debate'
|
||||
|
||||
expect(page).to have_content 'Debate was successfully created.'
|
||||
expect(page).to have_content 'Economía'
|
||||
@@ -90,7 +90,7 @@ feature 'Tags' do
|
||||
|
||||
fill_in 'debate_tag_list', with: "Economía, Hacienda"
|
||||
fill_in 'debate_captcha', with: correct_captcha_text
|
||||
click_button 'Update Debate'
|
||||
click_button 'Start a debate'
|
||||
|
||||
expect(page).to have_content 'Debate was successfully updated.'
|
||||
within('.tags') do
|
||||
@@ -107,7 +107,7 @@ feature 'Tags' do
|
||||
|
||||
fill_in 'debate_tag_list', with: ""
|
||||
fill_in 'debate_captcha', with: correct_captcha_text
|
||||
click_button 'Update Debate'
|
||||
click_button 'Start a debate'
|
||||
|
||||
expect(page).to have_content 'Debate was successfully updated.'
|
||||
expect(page).to_not have_content 'Economía'
|
||||
|
||||
@@ -19,7 +19,7 @@ feature 'Verify email' do
|
||||
|
||||
within("#verified_user_#{verified_user.id}_email") do
|
||||
expect(page).to have_content 'roc*@example.com'
|
||||
click_button "Send"
|
||||
click_button "Send code"
|
||||
end
|
||||
|
||||
expect(page).to have_content 'We have send you a confirmation email to your email account: rock@example.com'
|
||||
@@ -30,7 +30,7 @@ feature 'Verify email' do
|
||||
expect(page).to have_content "You are now a verified user"
|
||||
|
||||
expect(page).to_not have_link "Verify my account"
|
||||
expect(page).to have_content "You are a level 3 user"
|
||||
expect(page).to have_content "Verified account"
|
||||
end
|
||||
|
||||
scenario "Errors on token verification" do
|
||||
@@ -58,7 +58,7 @@ feature 'Verify email' do
|
||||
visit verified_user_path
|
||||
|
||||
verified_user.destroy
|
||||
click_button "Send"
|
||||
click_button "Send code"
|
||||
|
||||
expect(page).to have_content "There was a problem sending you an email to your account"
|
||||
end
|
||||
|
||||
@@ -2,15 +2,45 @@ require 'rails_helper'
|
||||
|
||||
feature 'Verify Letter' do
|
||||
|
||||
scenario 'Send letter level 2 verified with phone' do
|
||||
scenario 'Verify' do
|
||||
user = create(:user, residence_verified_at: Time.now, confirmed_phone: "611111111")
|
||||
|
||||
login_as(user)
|
||||
visit new_letter_path
|
||||
|
||||
click_button "Send me a letter"
|
||||
click_button "Send me a letter with the code"
|
||||
|
||||
expect(page).to have_content "You will receive a letter to your home address"
|
||||
expect(page).to have_content "Thank you for requesting a maximum security code in a few days we will send it to the address on your census data."
|
||||
|
||||
user.reload
|
||||
fill_in "letter_verification_code", with: user.letter_verification_code
|
||||
click_button "Send"
|
||||
|
||||
expect(page).to have_content "Correct code. Your account is verified"
|
||||
end
|
||||
|
||||
scenario 'Go to office instead of send letter' do
|
||||
user = create(:user, residence_verified_at: Time.now, confirmed_phone: "611111111")
|
||||
|
||||
login_as(user)
|
||||
visit new_letter_path
|
||||
|
||||
expect(page).to have_link "See Office of Citizen", href: "http://www.madrid.es/portales/munimadrid/es/Inicio/El-Ayuntamiento/Atencion-al-ciudadano/Oficinas-de-Atencion-al-Ciudadano?vgnextfmt=default&vgnextchannel=5b99cde2e09a4310VgnVCM1000000b205a0aRCRD"
|
||||
end
|
||||
|
||||
scenario 'Errors on verification code' do
|
||||
user = create(:user, residence_verified_at: Time.now, confirmed_phone: "611111111")
|
||||
|
||||
login_as(user)
|
||||
visit new_letter_path
|
||||
|
||||
click_button "Send me a letter with the code"
|
||||
expect(page).to have_content "Thank you for requesting a maximum security code in a few days we will send it to the address on your census data."
|
||||
|
||||
fill_in "letter_verification_code", with: "1"
|
||||
click_button "Send"
|
||||
|
||||
expect(page).to have_content "Incorrect confirmation code"
|
||||
end
|
||||
|
||||
scenario "Error accessing address from CensusApi" do
|
||||
@@ -21,22 +51,11 @@ feature 'Verify Letter' do
|
||||
|
||||
allow_any_instance_of(CensusApi).to receive(:address).and_return(nil)
|
||||
|
||||
click_button "Send me a letter"
|
||||
click_button "Send me a letter with the code"
|
||||
|
||||
expect(page).to have_content "We could not verify your address with the Census please try again later"
|
||||
end
|
||||
|
||||
scenario 'Send letter level 2 user verified with email' do
|
||||
user = create(:user, residence_verified_at: Time.now, confirmed_phone: "611111111")
|
||||
|
||||
login_as(user)
|
||||
visit new_letter_path
|
||||
|
||||
click_button "Send me a letter"
|
||||
|
||||
expect(page).to have_content "You will receive a letter to your home address"
|
||||
end
|
||||
|
||||
scenario "Deny access unless verified residence" do
|
||||
user = create(:user)
|
||||
|
||||
@@ -53,7 +72,7 @@ feature 'Verify Letter' do
|
||||
login_as(user)
|
||||
visit new_letter_path
|
||||
|
||||
expect(page).to have_content 'You have not yet confirmed your personal data'
|
||||
expect(page).to have_content 'You have not yet enter the confirmation code'
|
||||
expect(URI.parse(current_url).path).to eq(new_sms_path)
|
||||
end
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ feature 'Level three verification' do
|
||||
verify_residence
|
||||
|
||||
within("#verified_user_#{verified_user.id}_phone") do
|
||||
click_button "Send"
|
||||
click_button "Send code"
|
||||
end
|
||||
|
||||
expect(page).to have_content 'Security code confirmation'
|
||||
@@ -26,12 +26,10 @@ feature 'Level three verification' do
|
||||
fill_in 'sms_confirmation_code', with: user.sms_confirmation_code
|
||||
click_button 'Send'
|
||||
|
||||
expect(page).to have_content 'Correct code'
|
||||
|
||||
expect(page).to have_content "You are now a verified user"
|
||||
expect(page).to have_content "Correct code. Your account is verified"
|
||||
|
||||
expect(page).to_not have_link "Verify my account"
|
||||
expect(page).to have_content "You are a level 3 user"
|
||||
expect(page).to have_content "Verified account"
|
||||
end
|
||||
|
||||
scenario 'Verification with residency and verified email' do
|
||||
@@ -50,7 +48,7 @@ feature 'Level three verification' do
|
||||
verify_residence
|
||||
|
||||
within("#verified_user_#{verified_user.id}_email") do
|
||||
click_button "Send"
|
||||
click_button "Send code"
|
||||
end
|
||||
|
||||
expect(page).to have_content 'We have send you a confirmation email to your email account: rock@example.com'
|
||||
@@ -61,7 +59,7 @@ feature 'Level three verification' do
|
||||
expect(page).to have_content "You are now a verified user"
|
||||
|
||||
expect(page).to_not have_link "Verify my account"
|
||||
expect(page).to have_content "You are a level 3 user"
|
||||
expect(page).to have_content "Verified account"
|
||||
end
|
||||
|
||||
scenario 'Verification with residency and sms and letter' do
|
||||
@@ -85,8 +83,14 @@ feature 'Level three verification' do
|
||||
|
||||
expect(page).to have_content 'Correct code'
|
||||
|
||||
click_button "Send me a letter"
|
||||
click_button "Send me a letter with the code"
|
||||
|
||||
expect(page).to have_content "You will receive a letter to your home address"
|
||||
expect(page).to have_content "Thank you for requesting a maximum security code in a few days we will send it to the address on your census data."
|
||||
|
||||
user.reload
|
||||
fill_in "letter_verification_code", with: user.letter_verification_code
|
||||
click_button "Send"
|
||||
|
||||
expect(page).to have_content "Correct code. Your account is verified"
|
||||
end
|
||||
end
|
||||
@@ -15,7 +15,7 @@ feature 'Residence' do
|
||||
fill_in 'residence_postal_code', with: '28013'
|
||||
check 'residence_terms_of_service'
|
||||
|
||||
click_button 'Verify'
|
||||
click_button 'Verify residence'
|
||||
|
||||
expect(page).to have_content 'Residence verified'
|
||||
end
|
||||
@@ -27,7 +27,7 @@ feature 'Residence' do
|
||||
visit account_path
|
||||
click_link 'Verify my account'
|
||||
|
||||
click_button 'Verify'
|
||||
click_button 'Verify residence'
|
||||
|
||||
expect(page).to have_content /\d errors? prevented your residence verification/
|
||||
end
|
||||
@@ -47,7 +47,7 @@ feature 'Residence' do
|
||||
fill_in 'residence_postal_code', with: '28013'
|
||||
check 'residence_terms_of_service'
|
||||
|
||||
click_button 'Verify'
|
||||
click_button 'Verify residence'
|
||||
|
||||
expect(page).to have_content 'The census of the city of Madrid could not verify your information'
|
||||
end
|
||||
@@ -68,11 +68,11 @@ feature 'Residence' do
|
||||
fill_in 'residence_postal_code', with: '28013'
|
||||
check 'residence_terms_of_service'
|
||||
|
||||
click_button 'Verify'
|
||||
click_button 'Verify residence'
|
||||
expect(page).to have_content 'The census of the city of Madrid could not verify your information'
|
||||
end
|
||||
|
||||
click_button 'Verify'
|
||||
click_button 'Verify residence'
|
||||
expect(page).to have_content 'You have reached the maximum number of Census verification tries'
|
||||
expect(URI.parse(current_url).path).to eq(account_path)
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ feature 'Verified users' do
|
||||
visit verified_user_path
|
||||
|
||||
within("#verified_user_#{verified_user.id}_email") do
|
||||
click_button "Send"
|
||||
click_button "Send code"
|
||||
end
|
||||
|
||||
expect(page).to have_content 'We have send you a confirmation email to your email account: rock@example.com'
|
||||
@@ -95,7 +95,7 @@ feature 'Verified users' do
|
||||
visit verified_user_path
|
||||
|
||||
within("#verified_user_#{verified_user.id}_phone") do
|
||||
click_button "Send"
|
||||
click_button "Send code"
|
||||
end
|
||||
|
||||
expect(page).to have_content 'Enter the confirmation code'
|
||||
|
||||
@@ -174,21 +174,6 @@ describe Debate do
|
||||
end
|
||||
end
|
||||
|
||||
describe "#search" do
|
||||
let!(:economy) { create(:debate, tag_list: "Economy") }
|
||||
let!(:health) { create(:debate, tag_list: "Health") }
|
||||
|
||||
it "returns debates tagged with params tag" do
|
||||
params = {tag: "Economy"}
|
||||
expect(Debate.search(params)).to match_array([economy])
|
||||
end
|
||||
|
||||
it "returns all debates if no parameters" do
|
||||
params = {}
|
||||
expect(Debate.search(params)).to match_array([economy, health])
|
||||
end
|
||||
end
|
||||
|
||||
describe '#default_order' do
|
||||
let!(:economy) { create(:debate) }
|
||||
let!(:health) { create(:debate) }
|
||||
|
||||
@@ -22,5 +22,6 @@ RSpec.configure do |config|
|
||||
end
|
||||
|
||||
Capybara.javascript_driver = :poltergeist
|
||||
Capybara.exact = true
|
||||
|
||||
OmniAuth.config.test_mode = true
|
||||
|
||||
@@ -106,7 +106,7 @@ module CommonActions
|
||||
fill_in 'residence_postal_code', with: '28013'
|
||||
check 'residence_terms_of_service'
|
||||
|
||||
click_button 'Verify'
|
||||
click_button 'Verify residence'
|
||||
expect(page).to have_content 'Residence verified'
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user