merge with master

This commit is contained in:
kikito
2016-12-12 16:09:05 +01:00
43 changed files with 381 additions and 254 deletions

2
.gitignore vendored
View File

@@ -29,3 +29,5 @@
# Mac finder artifacts
.DS_Store
.ruby-gemset
public/sitemap.xml

View File

@@ -1,6 +1,6 @@
# Personalización
Puedes modificar consul y ponerle tu propia imagen, para esto debes primero hacer un fork de https://github.com/consul/consul creando un repositorio nuevo en Github. Puedes usar otro servicio como Gitlab, pero no te olvides de poner el enlace en el footer a tu repositorio en cumplimiento con la licencia de este proyecto (GPL Affero 3).
Puedes modificar consul y ponerle tu propia imagen, para esto debes primero hacer un fork de [https://github.com/consul/consul](https://github.com/consul/consul) creando un repositorio nuevo en Github. Puedes usar otro servicio como Gitlab, pero no te olvides de poner el enlace en el footer a tu repositorio en cumplimiento con la licencia de este proyecto (GPL Affero 3).
Hemos creado una estructura específica donde puedes sobreescribir y personalizar la aplicación para que puedas actualizar sin que tengas problemas al hacer merge y se sobreescriban por error tus cambios. Intentamos que Consul sea una aplicación Ruby on Rails lo más plain vanilla posible para facilitar el acceso de nuevas desarrolladoras.
@@ -8,31 +8,32 @@ Hemos creado una estructura específica donde puedes sobreescribir y personaliza
Para adaptarlo puedes hacerlo a través de los directorios que están en custom dentro de:
* config/locales/custom/
* app/assets/images/custom/
* app/views/custom/
* app/controllers/custom/
* app/models/custom/
* `config/locales/custom/`
* `app/assets/images/custom/`
* `app/views/custom/`
* `app/controllers/custom/`
* `app/models/custom/`
Aparte de estos directorios también cuentas con ciertos ficheros para:
* app/assets/stylesheets/custom.css
* app/assets/javascripts/custom.js
* Gemfile_custom
* config/application.custom.rb
* `app/assets/stylesheets/custom.css`
* `app/assets/javascripts/custom.js`
* `Gemfile_custom`
* `config/application.custom.rb`
### Internacionalización
Si quieres modificar algún texto de la web deberías encontrarlos en los ficheros formato YML disponibles en *config/locales/*. Puedes leer la [guía de internacionalización](http://guides.rubyonrails.org/i18n.html) de Ruby on Rails sobre como funciona este sistema.
Si quieres modificar algún texto de la web deberías encontrarlos en los ficheros formato YML disponibles en `config/locales/`. Puedes leer la [guía de internacionalización](http://guides.rubyonrails.org/i18n.html) de Ruby on Rails sobre como funciona este sistema.
Las adaptaciones los debes poner en el directorio *config/locales/custom/*, recomendamos poner solo los textos que quieras personalizar. Por ejemplo si quieres personalizar el texto de "Ayuntamiento de Madrid, 2016" que se encuentra en el footer en todas las páginas, primero debemos ubicar en que plantilla se encuentra (app/views/layouts/_footer.html.erb), vemos que en el código pone lo siguiente:
```
Las adaptaciones los debes poner en el directorio `config/locales/custom/`, recomendamos poner solo los textos que quieras personalizar. Por ejemplo si quieres personalizar el texto de "Ayuntamiento de Madrid, 2016" que se encuentra en el footer en todas las páginas, primero debemos ubicar en que plantilla se encuentra (`app/views/layouts/_footer.html.erb`), vemos que en el código pone lo siguiente:
```ruby
<%= t("layouts.footer.copyright", year: Time.current.year) %>
```
Y que en el fichero config/locales/es.yml sigue esta estructura (solo ponemos lo relevante para este caso):
Y que en el fichero `config/locales/es.yml` sigue esta estructura (solo ponemos lo relevante para este caso):
```
```yml
es:
layouts:
footer:
@@ -40,11 +41,11 @@ es:
```
Si creamos el fichero config/locales/custom/es.yml y modificamos "Ayuntamiento de Madrid" por el nombre de la organización que se este haciendo la modificación. Recomendamos directamente copiar los ficheros config/locales/ e ir revisando y corrigiendo las que querramos, borrando las líneas que no querramos traducir.
Si creamos el fichero `config/locales/custom/es.yml` y modificamos "Ayuntamiento de Madrid" por el nombre de la organización que se este haciendo la modificación. Recomendamos directamente copiar los ficheros `config/locales/` e ir revisando y corrigiendo las que querramos, borrando las líneas que no querramos traducir.
### Imágenes
Si quieres sobreescribir alguna imagen debes primero fijarte el nombre que tiene, por defecto se encuentran en *app/assets/images*. Por ejemplo si quieres modificar *app/assets/images/logo_header.png* debes poner otra con ese mismo nombre en el directorio app/assets/images/custom. Los iconos que seguramente quieras modificar son:
Si quieres sobreescribir alguna imagen debes primero fijarte el nombre que tiene, por defecto se encuentran en `app/assets/images`. Por ejemplo si quieres modificar `app/assets/images/logo_header.png` debes poner otra con ese mismo nombre en el directorio `app/assets/images/custom`. Los iconos que seguramente quieras modificar son:
* apple-touch-icon-200.png
* icon_home.png
@@ -55,13 +56,13 @@ Si quieres sobreescribir alguna imagen debes primero fijarte el nombre que tiene
### Vistas (HTML)
Si quieres modificar el HTML de alguna página puedes hacerlo copiando el HTML de *app/views* y poniendolo en *app/views/custom* respetando los subdirectorios que encuentres ahí. Por ejemplo si quieres modificar *app/views/pages/conditions.html* debes copiarlo y modificarla en app/views/custom/pages/conditions.html.erb
Si quieres modificar el HTML de alguna página puedes hacerlo copiando el HTML de `app/views` y poniendolo en `app/views/custom` respetando los subdirectorios que encuentres ahí. Por ejemplo si quieres modificar `app/views/pages/conditions.html` debes copiarlo y modificarla en `app/views/custom/pages/conditions.html.erb`
### CSS
Si quieres cambiar algun selector CSS (de las hojas de estilo) puedes hacerlo en el fichero *app/assets/stylesheets/custom.scss*. Por ejemplo si quieres cambiar el color del header (.top-links) puedes hacerlo agregando:
Si quieres cambiar algun selector CSS (de las hojas de estilo) puedes hacerlo en el fichero `app/assets/stylesheets/custom.scss`. Por ejemplo si quieres cambiar el color del header (`.top-links`) puedes hacerlo agregando:
```
```css
.top-links {
background: red;
}
@@ -71,9 +72,9 @@ Usamos un preprocesador de CSS, [SASS, con la sintaxis SCSS](http://sass-lang.co
### Javascript
Si quieres agregar código Javascript puedes hacerlo en el fichero *app/assets/javascripts/custom.js". Por ejemplo si quieres que salga una alerta puedes poner lo siguiente:
Si quieres agregar código Javascript puedes hacerlo en el fichero `app/assets/javascripts/custom.js`. Por ejemplo si quieres que salga una alerta puedes poner lo siguiente:
```
```js
$(function(){
alert('foobar');
});
@@ -81,11 +82,11 @@ $(function(){
### Modelos
Si quieres agregar modelos nuevos, o modificar o agregar métodos a uno ya existente puedes hacerlo en *app/models/custom*. En el caso de los modelos antiguos debes primero hacer un require de la dependencia.
Si quieres agregar modelos nuevos, o modificar o agregar métodos a uno ya existente puedes hacerlo en `app/models/custom`. En el caso de los modelos antiguos debes primero hacer un require de la dependencia.
Por ejemplo en el caso del Ayuntamiento de Madrid se requiere comprobar que el código postal durante la verificación sigue un cierto formato (empieza con 280). Esto se realiza creando este fichero en *app/models/custom/verification/residence.rb*:
Por ejemplo en el caso del Ayuntamiento de Madrid se requiere comprobar que el código postal durante la verificación sigue un cierto formato (empieza con 280). Esto se realiza creando este fichero en `app/models/custom/verification/residence.rb`:
```
```ruby
require_dependency Rails.root.join('app', 'models', 'verification', 'residence').to_s
class Verification::Residence
@@ -116,10 +117,10 @@ class Verification::Residence
end
```
No olvides poner los tests relevantes en *spec/models/custom*, siguiendo con el ejemplo pondriamos lo siguiente en *spec/models/custom/residence_spec.rb*:
No olvides poner los tests relevantes en `spec/models/custom`, siguiendo con el ejemplo pondriamos lo siguiente en `spec/models/custom/residence_spec.rb`:
```
```ruby
require 'rails_helper'
describe Verification::Residence do
@@ -162,20 +163,20 @@ TODO
### Gemfile
Para agregar librerías (gems) nuevas puedes hacerlo en el fichero *Gemfile_custom*. Por ejemplo si quieres agregar la gema [rails-footnotes](https://github.com/josevalim/rails-footnotes) debes hacerlo agregandole
Para agregar librerías (gems) nuevas puedes hacerlo en el fichero `Gemfile_custom`. Por ejemplo si quieres agregar la gema [rails-footnotes](https://github.com/josevalim/rails-footnotes) debes hacerlo agregandole
```
```ruby
gem 'rails-footnotes', '~> 4.0'
```
Y siguiendo el flujo clásico en Ruby on Rails (bundle install y seguir con los pasos específicos de la gema en la documentación)
Y siguiendo el flujo clásico en Ruby on Rails (`bundle install` y seguir con los pasos específicos de la gema en la documentación)
### application.rb
Cuando necesites extender o modificar el *config/application.rb* puedes hacerlo a través del fichero *config/application_custom.rb*. Por ejemplo si quieres modificar el idioma por defecto al inglés pondrías lo siguiente:
Cuando necesites extender o modificar el `config/application.rb` puedes hacerlo a través del fichero `config/application_custom.rb`. Por ejemplo si quieres modificar el idioma por defecto al inglés pondrías lo siguiente:
```
```ruby
module Consul
class Application < Rails::Application
config.i18n.default_locale = :en

View File

@@ -7,7 +7,7 @@ gem 'pg', '~> 0.19.0'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0', '>= 5.0.4'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 3.0.3'
gem 'uglifier', '>= 3.0.4'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2.1'
# See https://github.com/rails/execjs#readme for more supported runtimes
@@ -52,9 +52,10 @@ gem 'rollbar', '~> 2.13.3'
gem 'delayed_job_active_record', '~> 4.1.0'
gem 'daemons'
gem 'devise-async'
gem 'newrelic_rpm', '~> 3.17.0.325'
gem 'newrelic_rpm', '~> 3.17.1.326'
gem 'whenever', require: false
gem 'pg_search'
gem 'sitemap_generator'
gem 'ahoy_matey', '~> 1.4.2'
gem 'groupdate', '~> 3.1.0' # group temporary data

View File

@@ -67,7 +67,7 @@ GEM
bcrypt (3.1.11)
browser (2.3.0)
builder (3.2.2)
bullet (5.2.0)
bullet (5.4.2)
activesupport (>= 3.0.0)
uniform_notifier (~> 1.10.0)
byebug (9.0.6)
@@ -111,12 +111,12 @@ GEM
execjs
coffee-script-source (1.10.0)
concurrent-ruby (1.0.2)
coveralls (0.8.15)
coveralls (0.8.17)
json (>= 1.8, < 3)
simplecov (~> 0.12.0)
term-ansicolor (~> 1.3)
thor (~> 0.19.1)
tins (>= 1.6.0, < 2)
tins (~> 1.6)
daemons (1.2.4)
dalli (2.7.6)
database_cleaner (1.5.3)
@@ -170,8 +170,8 @@ GEM
activesupport (>= 4.1)
railties (>= 4.1)
tzinfo (~> 1.2, >= 1.2.2)
fuubar (2.1.1)
rspec (~> 3.0)
fuubar (2.2.0)
rspec-core (~> 3.0)
ruby-progressbar (~> 1.4)
geocoder (1.4.0)
globalid (0.3.7)
@@ -186,7 +186,7 @@ GEM
httpi (2.4.1)
rack
i18n (0.7.0)
i18n-tasks (0.9.5)
i18n-tasks (0.9.6)
activesupport (>= 4.0.2)
ast (>= 2.1.0)
easy_translate (>= 0.5.0)
@@ -212,7 +212,7 @@ GEM
actionpack (>= 3.0.0)
activesupport (>= 3.0.0)
kgio (2.10.0)
knapsack (1.13.0)
knapsack (1.13.1)
rake
timecop (>= 0.1.0)
launchy (2.4.3)
@@ -231,14 +231,14 @@ GEM
mime-types-data (~> 3.2015)
mime-types-data (3.2016.0521)
mini_portile2 (2.1.0)
minitest (5.9.1)
minitest (5.10.1)
multi_json (1.12.1)
multi_xml (0.5.5)
multipart-post (2.0.0)
net-scp (1.2.1)
net-ssh (>= 2.6.5)
net-ssh (3.2.0)
newrelic_rpm (3.17.0.325)
newrelic_rpm (3.17.1.326)
nokogiri (1.6.8.1)
mini_portile2 (~> 2.1.0)
nori (2.6.0)
@@ -271,7 +271,7 @@ GEM
orm_adapter (0.5.0)
paranoia (2.2.0)
activerecord (>= 4.0, < 5.1)
parser (2.3.1.4)
parser (2.3.3.1)
ast (~> 2.2)
pg (0.19.0)
pg_search (1.0.6)
@@ -318,7 +318,7 @@ GEM
thor (>= 0.18.1, < 2.0)
rainbow (2.1.0)
raindrops (0.17.0)
rake (11.3.0)
rake (12.0.0)
redcarpet (3.3.4)
referer-parser (0.3.0)
request_store (1.3.1)
@@ -327,10 +327,6 @@ GEM
rinku (2.0.2)
rollbar (2.13.3)
multi_json
rspec (3.5.0)
rspec-core (~> 3.5.0)
rspec-expectations (~> 3.5.0)
rspec-mocks (~> 3.5.0)
rspec-core (3.5.4)
rspec-support (~> 3.5.0)
rspec-expectations (3.5.0)
@@ -381,6 +377,8 @@ GEM
json (>= 1.8, < 3)
simplecov-html (~> 0.10.0)
simplecov-html (0.10.0)
sitemap_generator (5.2.0)
builder (~> 3.0)
social-share-button (0.3.1)
coffee-rails
sass-rails
@@ -401,15 +399,16 @@ GEM
sshkit (1.11.4)
net-scp (>= 1.1.2)
net-ssh (>= 2.8.0)
term-ansicolor (1.3.2)
term-ansicolor (1.4.0)
tins (~> 1.0)
terminal-table (1.5.2)
thor (0.19.1)
terminal-table (1.7.3)
unicode-display_width (~> 1.1.1)
thor (0.19.4)
thread (0.2.2)
thread_safe (0.3.5)
tilt (2.0.5)
timecop (0.8.1)
tins (1.11.0)
tins (1.13.0)
tolk (2.0.0)
rails (>= 4.0)
safe_yaml (>= 0.8.6)
@@ -422,7 +421,7 @@ GEM
tilt (>= 1.4, < 3)
tzinfo (1.2.2)
thread_safe (~> 0.1)
uglifier (3.0.3)
uglifier (3.0.4)
execjs (>= 0.3.0, < 3)
unicode-display_width (1.1.1)
unicorn (5.1.0)
@@ -491,7 +490,7 @@ DEPENDENCIES
knapsack
launchy
letter_opener_web (~> 1.3.0)
newrelic_rpm (~> 3.17.0.325)
newrelic_rpm (~> 3.17.1.326)
omniauth
omniauth-facebook (~> 3.0.0)
omniauth-google-oauth2 (~> 0.4.0)
@@ -511,6 +510,7 @@ DEPENDENCIES
rvm1-capistrano3
sass-rails (~> 5.0, >= 5.0.4)
savon
sitemap_generator
social-share-button
spring
spring-commands-rspec
@@ -518,7 +518,10 @@ DEPENDENCIES
tolk (~> 2.0.0)
turbolinks
turnout (~> 2.4.0)
uglifier (>= 3.0.3)
uglifier (>= 3.0.4)
unicorn (~> 5.1.0)
web-console (= 3.3.0)
whenever
BUNDLED WITH
1.13.6

View File

@@ -5,6 +5,7 @@
Citizen Participation and Open Government Application
[![Join the chat at https://gitter.im/consul/consul](https://badges.gitter.im/consul/consul.svg)](https://gitter.im/consul/consul?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Build Status](https://travis-ci.org/consul/consul.svg?branch=master)](https://travis-ci.org/consul/consul)
[![Code Climate](https://codeclimate.com/github/consul/consul/badges/gpa.svg)](https://codeclimate.com/github/consul/consul)
[![Dependency Status](https://gemnasium.com/consul/consul.svg)](https://gemnasium.com/consul/consul)

View File

@@ -5,6 +5,7 @@
Aplicación de Participación Ciudadana y Gobierno Abierto
[![Join the chat at https://gitter.im/consul/consul](https://badges.gitter.im/consul/consul.svg)](https://gitter.im/consul/consul?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Build Status](https://travis-ci.org/consul/consul.svg?branch=master)](https://travis-ci.org/consul/consul)
[![Code Climate](https://codeclimate.com/github/consul/consul/badges/gpa.svg)](https://codeclimate.com/github/consul/consul)
[![Dependency Status](https://gemnasium.com/consul/consul.svg)](https://gemnasium.com/consul/consul)

View File

@@ -52,5 +52,6 @@ App.Comments =
children_container_id = "#{$(this).data().id}_children"
$("##{children_container_id}").toggle('slow')
App.Comments.toggle_arrow(children_container_id)
$(this).children('.js-child-toggle').toggle()
false
)

View File

@@ -57,15 +57,15 @@ $brand: #004A83;
$dark: darken($brand, 10%);
$text: #222222;
$text-medium: #999999;
$text-light: #CCCCCC;
$text-medium: #515151;
$text-light: #BFBFBF;
$border: #DEE0E3;
$link: #2895F1;
$link: $brand;
$link-hover: darken($link, 20%);
$debates: #008CCF;
$debates: $brand;
$like: #7BD2A8;
$unlike: #EF8585;
@@ -74,6 +74,7 @@ $delete: #F04124;
$check: #46DB91;
$proposals: #FFA42D;
$proposals-dark: #794500;
$budget: #454372;
$budget-hover: #7571BF;

View File

@@ -56,6 +56,7 @@ a {
}
&:focus {
color: $link-hover;
outline: 3px solid #ffbf47;
}
}
@@ -263,6 +264,10 @@ a {
//>>>>>>> budget
//}
.pagination .current {
background: $brand;
}
// 02. Header
// ----------
@@ -371,6 +376,10 @@ header {
text-decoration: underline;
}
}
ul {
margin-bottom: 0;
}
}
.subnavigation {
@@ -514,7 +523,7 @@ footer {
p {
font-size: $small-font-size;
.info a {
&.info a {
text-decoration: underline;
}
}
@@ -551,6 +560,7 @@ footer {
.subfooter {
border-top: 1px solid $text-light;
font-size: $small-font-size;
padding-top: $line-height/2;
}
@@ -582,7 +592,7 @@ footer {
}
}
h3.sidebar-title {
h2.sidebar-title {
border-top: 2px solid $brand;
display: inline-block;
font-size: rem-calc(16);
@@ -1160,7 +1170,7 @@ table {
top: 0;
}
&:hover {
&:hover, &:focus {
background: white;
color: #40A2D1;
}
@@ -1200,7 +1210,7 @@ table {
top: 0;
}
&:hover {
&:hover, &:focus {
background: white;
color: #354F88;
}
@@ -1240,7 +1250,7 @@ table {
top: 0;
}
&:hover {
&:hover, &:focus {
background: white;
color: #CE3E26;
}
@@ -1284,7 +1294,8 @@ table {
top: 0;
}
&:hover {
&:hover, &:focus {
background: white;
color: #40A2D1;
}
}
@@ -1307,7 +1318,8 @@ table {
top: 0;
}
&:hover {
&:hover, &:focus {
background: white;
color: #354F88;
}
}
@@ -1330,7 +1342,8 @@ table {
top: 0;
}
&:hover {
&:hover, &:focus {
background: white;
color: #CE3E26;
}
}

View File

@@ -363,6 +363,13 @@
font-size: rem-calc(15);
margin-bottom: rem-calc(15);
}
&.tags, &.geozone {
li {
margin-bottom: 0;
}
}
}
.author-photo {
@@ -386,7 +393,7 @@
aside {
h3 {
h2 {
border-top: 2px solid $brand;
display: inline-block;
font-size: rem-calc(16);
@@ -524,7 +531,7 @@
}
.label-proposal {
color: $proposals;
color: $proposals-dark;
}
.label-investment-project {
@@ -566,7 +573,7 @@
}
.icon-proposals {
color: $proposals;
color: $proposals-dark;
}
.icon-budget {
@@ -1122,11 +1129,15 @@ ul.ballot-list {
}
p {
margin-bottom: 0;
&.title {
color: #FFD200;
}
&.title-date {
font-size: rem-calc(24);
font-weight: bold;
}
}
.info {

View File

@@ -75,7 +75,8 @@
<% if comment.children.size > 0 %>
<%= link_to "", class: "js-toggle-children relative", data: {'id': "#{dom_id(comment)}"} do %>
<span class="sr-only"><%= t("shared.show") %></span>
<span class="sr-only js-child-toggle" style="display: none;"><%= t("shared.show") %></span>
<span class="sr-only js-child-toggle"><%= t("shared.hide") %></span>
<span id="<%= dom_id(comment) %>_children_arrow" class="icon-arrow-down"></span> <%= t("comments.comment.responses", count: comment.children.size) %>
<% end %>
<% else %>

View File

@@ -41,7 +41,7 @@
</p>
<div class="debate-description">
<%= link_to debate.description, debate %>
<%= debate.description %>
<div class="truncate"></div>
</div>
<%= render "shared/tags", taggable: debate, limit: 5 %>

View File

@@ -1,23 +1,41 @@
<% voted_classes = css_classes_for_vote(@debate_votes, debate) %>
<div class="votes">
<div class="in-favor inline-block">
<%= link_to vote_debate_path(debate, value: 'yes'),
class: "like #{voted_classes[:in_favor]}", title: t('votes.agree'), method: "post", remote: true do %>
<span class="icon-like">
<span class="sr-only"><%= t('votes.agree') %></span>
</span>
<span class="percentage"><%= votes_percentage('likes', debate) %></span>
<% if user_signed_in? %>
<%= link_to vote_debate_path(debate, value: 'yes'),
class: "like #{voted_classes[:in_favor]}", title: t('votes.agree'), method: "post", remote: true do %>
<span class="icon-like">
<span class="sr-only"><%= t('votes.agree') %></span>
</span>
<span class="percentage"><%= votes_percentage('likes', debate) %></span>
<% end %>
<% else %>
<div class="like">
<span class="icon-like">
<span class="sr-only"><%= t('votes.agree') %></span>
</span>
<span class="percentage"><%= votes_percentage('likes', debate) %></span>
</div>
<% end %>
</div>
<span class="divider"></span>
<div class="against inline-block">
<%= link_to vote_debate_path(debate, value: 'no'), class: "unlike #{voted_classes[:against]}", title: t('votes.disagree'), method: "post", remote: true do %>
<span class="icon-unlike">
<span class="sr-only"><%= t('votes.disagree') %></span>
</span>
<span class="percentage"><%= votes_percentage('dislikes', debate) %></span>
<% if user_signed_in? %>
<%= link_to vote_debate_path(debate, value: 'no'), class: "unlike #{voted_classes[:against]}", title: t('votes.disagree'), method: "post", remote: true do %>
<span class="icon-unlike">
<span class="sr-only"><%= t('votes.disagree') %></span>
</span>
<span class="percentage"><%= votes_percentage('dislikes', debate) %></span>
<% end %>
<% else %>
<div class="unlike">
<span class="icon-unlike">
<span class="sr-only"><%= t('votes.disagree') %></span>
</span>
<span class="percentage"><%= votes_percentage('dislikes', debate) %></span>
</div>
<% end %>
</div>
@@ -39,10 +57,12 @@
</p>
</div>
<% elsif !user_signed_in? %>
<div class="participation-not-allowed" style='display:none' aria-hidden="false">
<%= t("votes.unauthenticated",
signin: link_to(t("votes.signin"), new_user_session_path),
signup: link_to(t("votes.signup"), new_user_registration_path)).html_safe %>
<div tabindex="0">
<div class="participation-not-allowed" style='display:none' aria-hidden="false">
<%= t("votes.unauthenticated",
signin: link_to(t("votes.signin"), new_user_session_path),
signup: link_to(t("votes.signup"), new_user_registration_path)).html_safe %>
</div>
</div>
<% end %>
</div>

View File

@@ -44,12 +44,12 @@
<aside class="small-12 medium-3 column">
<div class="sidebar-divider"></div>
<h3><%= t("votes.supports") %></h3>
<h2><%= t("votes.supports") %></h2>
<div id="<%= dom_id(@debate) %>_votes">
<%= render 'debates/votes', debate: @debate %>
</div>
<div class="sidebar-divider"></div>
<h3><%= t("debates.show.share") %></h3>
<h2><%= t("debates.show.share") %></h2>
<div class="social-share-full">
<%= social_share_button_tag("#{@debate.title} #{setting['twitter_hashtag']}") %>
<% if browser.device.mobile? %>

View File

@@ -1,22 +1,19 @@
<%= paginator.render do -%>
<div class="pagination-centered">
<nav>
<h1 class="sr-only"><%= t("shared.outline.pagination") %></h1>
<ul class="pagination text-center margin-top" aria-label="Pagination">
<%= first_page_tag unless current_page.first? %>
<%= prev_page_tag unless current_page.first? %>
<ul class="pagination text-center margin-top" aria-label="Pagination">
<%= first_page_tag unless current_page.first? %>
<%= prev_page_tag unless current_page.first? %>
<% each_page do |page| -%>
<% if page.left_outer? || page.right_outer? || page.inside_window? -%>
<%= page_tag page %>
<% elsif !page.was_truncated? -%>
<%= gap_tag %>
<% end -%>
<% each_page do |page| -%>
<% if page.left_outer? || page.right_outer? || page.inside_window? -%>
<%= page_tag page %>
<% elsif !page.was_truncated? -%>
<%= gap_tag %>
<% end -%>
<% end -%>
<%= next_page_tag unless current_page.last? %>
<%= last_page_tag unless current_page.last? %>
</ul>
</nav>
<%= next_page_tag unless current_page.last? %>
<%= last_page_tag unless current_page.last? %>
</ul>
</div>
<% end -%>

View File

@@ -41,13 +41,13 @@
<div class="subfooter row">
<div class="small-12 medium-8 column">
<p>
<%= t("layouts.footer.copyright", year: Time.current.year) %>&nbsp;|&nbsp;
<%= link_to t("layouts.footer.more_info"), page_path('more_information') %>&nbsp;|&nbsp;
<%= link_to t("layouts.footer.privacy"), page_path('privacy') %>&nbsp;|&nbsp;
<%= link_to t("layouts.footer.conditions"), page_path('conditions') %>&nbsp;|&nbsp;
<%= link_to t("layouts.footer.accessibility"), page_path('accessibility') %>
</p>
<%= t("layouts.footer.copyright", year: Time.current.year) %>&nbsp;|
<ul class="no-bullet inline-block">
<li class="inline-block"><%= link_to t("layouts.footer.more_info"), page_path('more_information') %>&nbsp;|</li>
<li class="inline-block"><%= link_to t("layouts.footer.privacy"), page_path('privacy') %>&nbsp;|</li>
<li class="inline-block"><%= link_to t("layouts.footer.conditions"), page_path('conditions') %>&nbsp;|</li>
<li class="inline-block"><%= link_to t("layouts.footer.accessibility"), page_path('accessibility') %></li>
</ul>
</div>
<div class="small-12 medium-4 column social">

View File

@@ -40,7 +40,7 @@
</tr>
<tr>
<td class="text-center">S</td>
<td>Presupuestos ciudadanos</td>
<td>Presupuestos participativos</td>
</tr>
<tr>
<td class="text-center">I</td>

View File

@@ -8,8 +8,8 @@
</div>
<div class="small-12 medium-9 column">
<h1>¿Cómo funcionan los presupuestos ciudadanos?</h1>
<h1>¿Cómo funcionan los Presupuestos participativos?</h1>
<h2 id="i">Explicación detallada del proceso</h2>
<p>Próximamente se podrá encontrar aquí una descripción del proceso de participación ciudadana en los presupuestos.</p>
<p>Descripción del proceso de participación ciudadana en los presupuestos.</p>
</div>
</div>

View File

@@ -1,3 +1,4 @@
<% provide :title do %><%= t("proposal_ballots.title") %><% end %>
<div class="expanded no-margin-top margin-bottom dark-heading">
<div class="row" data-equalizer>
<div class="small-12 medium-6 column padding" data-equalizer-watch>
@@ -11,7 +12,7 @@
<div class="small-12 medium-4 column info" data-equalizer-watch>
<p class="title"><strong><%= t("proposal_ballots.date_title") %></strong></p>
<h3><%= t("proposal_ballots.date") %></h3>
<p class="title-date"><%= t("proposal_ballots.date") %></p>
</div>
</div>
</div>

View File

@@ -1,9 +1,9 @@
<div class="sidebar-divider"></div>
<h3 class="sidebar-title"><%= t("shared.tags_cloud.categories") %></h3>
<h2 class="sidebar-title"><%= t("shared.tags_cloud.categories") %></h2>
<br>
<div id="categories" class="categories">
<ul id="categories" class="no-bullet categories">
<% @categories.each do |category| %>
<%= link_to category.name, proposals_path(search: category.name) %>
<li class="inline-block"><%= link_to category.name, proposals_path(search: category.name) %></li>
<% end %>
</div>
</ul>

View File

@@ -1,5 +1,5 @@
<div class="sidebar-divider"></div>
<h3 class="sidebar-title"><%= t("shared.tags_cloud.districts") %></h3>
<h2 class="sidebar-title"><%= t("shared.tags_cloud.districts") %></h2>
<br>
<%= link_to map_proposals_path, id: 'map', title: t("shared.tags_cloud.districts_list") do %>
<%= image_tag("map.jpg", alt: t("shared.tags_cloud.districts_list")) %>

View File

@@ -1,5 +1,5 @@
<div class="sidebar-divider"></div>
<h3 class="sidebar-title"><%= t("proposals.index.top") %></h3>
<h2 class="sidebar-title"><%= t("proposals.index.top") %></h2>
<p>
<%= link_to t("proposals.index.top_link_proposals"), summary_proposals_path, class: "small" %><br>

View File

@@ -44,7 +44,7 @@
<% end %>
</p>
<div class="proposal-description">
<p><%= link_to proposal.summary, namespaced_proposal_path(proposal) %></p>
<p><%= proposal.summary %></p>
<div class="truncate"></div>
</div>
<% end %>
@@ -53,20 +53,22 @@
</div>
<div id="<%= dom_id(proposal) %>_votes" class="small-12 medium-3 column supports-container">
<div class="supports text-center">
<% if proposal.successfull? %>
<% if proposal.successfull? %>
<div class="padding text-center">
<p>
<%= t("proposal_ballots.successfull",
voting: link_to(t("proposal_ballots.voting"), proposal_ballots_path)).html_safe %>
</p>
<% elsif proposal.archived? %>
</div>
<% elsif proposal.archived? %>
<div class="padding text-center">
<strong><%= t("proposals.proposal.supports", count: proposal.total_votes) %></strong>
<p><%= t("proposals.proposal.archived") %></p>
<% else %>
<%= render 'votes',
{ proposal: proposal, vote_url: vote_proposal_path(proposal, value: 'yes') } %>
<% end %>
</div>
</div>
<% else %>
<%= render 'votes',
{ proposal: proposal, vote_url: vote_proposal_path(proposal, value: 'yes') } %>
<% end %>
</div>
</div>
</div>

View File

@@ -1,5 +1,5 @@
<div class="sidebar-divider"></div>
<h3 class="sidebar-title"><%= t("proposals.index.retired_proposals") %></h3>
<h2 class="sidebar-title"><%= t("proposals.index.retired_proposals") %></h2>
<% if params[:retired].blank? %>
<p><%= link_to t("proposals.index.retired_proposals_link"), proposals_path(retired: 'all'), class: "small" %></p>

View File

@@ -1,56 +1,66 @@
<div class="progress small-12 round">
<span class="meter" style="width: <%= progress_bar_percentage(proposal) %>%;"></span>
<span class="percentage">
<%= supports_percentage(proposal) %>&nbsp;/&nbsp;<%= t("proposals.proposal.total_percent") %>
</span>
</div>
<div class="supports text-center">
<div class="progress small-12 round">
<span class="meter" style="width: <%= progress_bar_percentage(proposal) %>%;"></span>
<span class="percentage">
<%= supports_percentage(proposal) %>&nbsp;/&nbsp;<%= t("proposals.proposal.total_percent") %>
</span>
</div>
<span class="total-supports">
<%= t("proposals.proposal.supports", count: proposal.total_votes) %>&nbsp;
<span>
<abbr title="<%= t("proposals.proposal.reason_for_supports_necessary") %>">
<%= t("proposals.proposal.supports_necessary", number: number_with_delimiter(Proposal.votes_needed_for_success)) %>
</abbr>
<span class="total-supports">
<%= t("proposals.proposal.supports", count: proposal.total_votes) %>&nbsp;
<span>
<abbr title="<%= t("proposals.proposal.reason_for_supports_necessary") %>">
<%= t("proposals.proposal.supports_necessary", number: number_with_delimiter(Proposal.votes_needed_for_success)) %>
</abbr>
</span>
</span>
</span>
<div class="in-favor">
<% if voted_for?(@proposal_votes, proposal) %>
<div class="supported callout success">
<%= t("proposals.proposal.already_supported") %>
</div>
<% else %>
<%= link_to vote_url,
class: "button button-support small expanded",
title: t('proposals.proposal.support_title'), method: "post", remote: true do %>
<%= t("proposals.proposal.support") %>
<div class="in-favor">
<% if voted_for?(@proposal_votes, proposal) %>
<div class="supported callout success">
<%= t("proposals.proposal.already_supported") %>
</div>
<% elsif user_signed_in? && proposal.votable_by?(current_user) %>
<%= link_to vote_url,
class: "button button-support small expanded",
title: t('proposals.proposal.support_title'), method: "post", remote: true do %>
<%= t("proposals.proposal.support") %>
<% end %>
<% else %>
<div class="button button-support small expanded">
<%= t("proposals.proposal.support") %>
</div>
<% end %>
</div>
<% if user_signed_in? && current_user.organization? %>
<div class="participation-not-allowed" style='display:none' aria-hidden="false">
<p>
<%= t("votes.organizations") %>
</p>
</div>
<% elsif user_signed_in? && !proposal.votable_by?(current_user) %>
<div tabindex="0">
<div class="participation-not-allowed" style='display:none' aria-hidden="false">
<p>
<%= t("votes.verified_only",
verify_account: link_to(t("votes.verify_account"), verification_path )).html_safe %>
</p>
</div>
</div>
<% elsif !user_signed_in? %>
<div tabindex="0">
<div class="participation-not-allowed" style='display:none' aria-hidden="false">
<%= t("votes.unauthenticated",
signin: link_to(t("votes.signin"), new_user_session_path),
signup: link_to(t("votes.signup"), new_user_registration_path)).html_safe %>
</div>
</div>
<% end %>
<% if voted_for?(@proposal_votes, proposal) && setting['twitter_handle'] %>
<div class="share-supported">
<%= social_share_button_tag("#{proposal.title} #{setting['twitter_hashtag']}", url: proposal_url(proposal), via: setting['twitter_handle']) %>
</div>
<% end %>
</div>
<% if user_signed_in? && current_user.organization? %>
<div class="participation-not-allowed" style='display:none' aria-hidden="false">
<p>
<%= t("votes.organizations") %>
</p>
</div>
<% elsif user_signed_in? && !proposal.votable_by?(current_user)%>
<div class="participation-not-allowed" style='display:none' aria-hidden="false">
<p>
<%= t("votes.verified_only",
verify_account: link_to(t("votes.verify_account"), verification_path )).html_safe %>
</p>
</div>
<% elsif !user_signed_in? %>
<div class="participation-not-allowed" style='display:none' aria-hidden="false">
<%= t("votes.unauthenticated",
signin: link_to(t("votes.signin"), new_user_session_path),
signup: link_to(t("votes.signup"), new_user_registration_path)).html_safe %>
</div>
<% end %>
<% if voted_for?(@proposal_votes, proposal) && setting['twitter_handle'] %>
<div class="share-supported">
<%= social_share_button_tag("#{proposal.title} #{setting['twitter_hashtag']}", url: proposal_url(proposal), via: setting['twitter_handle']) %>
</div>
<% end %>

View File

@@ -101,25 +101,29 @@
<aside class="small-12 medium-3 column">
<div class="sidebar-divider"></div>
<h3><%= t("votes.supports") %></h3>
<div id="<%= dom_id(@proposal) %>_votes" class="supports text-center">
<h2><%= t("votes.supports") %></h2>
<div id="<%= dom_id(@proposal) %>_votes">
<% if @proposal.successfull? %>
<p>
<%= t("proposal_ballots.successfull",
voting: link_to(t("proposal_ballots.voting"), proposal_ballots_path)).html_safe %>
</p>
<div class="padding text-center">
<p>
<%= t("proposal_ballots.successfull",
voting: link_to(t("proposal_ballots.voting"), proposal_ballots_path)).html_safe %>
</p>
</div>
<% elsif @proposal.archived? %>
<p>
<strong><%= t("proposals.proposal.supports", count: @proposal.total_votes) %></strong>
</p>
<p><%= t("proposals.proposal.archived") %></p>
<div class="padding text-center">
<p>
<strong><%= t("proposals.proposal.supports", count: @proposal.total_votes) %></strong>
</p>
<p><%= t("proposals.proposal.archived") %></p>
</div>
<% else %>
<%= render 'votes',
{ proposal: @proposal, vote_url: vote_proposal_path(@proposal, value: 'yes') } %>
<% end %>
</div>
<div id="social-share" class="sidebar-divider"></div>
<h3><%= t("proposals.show.share") %></h3>
<h2><%= t("proposals.show.share") %></h2>
<div class="social-share-full">
<%= social_share_button_tag("#{@proposal.title} #{setting['twitter_hashtag']}") %>
<% if browser.device.mobile? %>

View File

@@ -2,12 +2,14 @@
<%= link_to t("shared.advanced_search.title"), "#", id: 'js-advanced-search-title', class: "advanced-search small" %>
</div>
<div class="advanced-search-form clear">
<div class="row advanced-search-form">
<%= form_tag search_path, method: :get do %>
<div id='js-advanced-search' data-advanced-search-terms=<%= @advanced_search_terms.present? %> style="display: none">
<div class="small-12 column">
<label><%= t("shared.advanced_search.general") %></label>
<label for="search">
<%= t("shared.advanced_search.general") %>
</label>
<%= text_field_tag "search", params[:search],
placeholder: t("shared.advanced_search.general_placeholder") %>
</div>
@@ -27,19 +29,21 @@
</div>
<div id='js-custom-date' class='small-12 large-8 column' style="display: none">
<div class='small-12 large-6 column'>
<label><%= t("shared.advanced_search.from") %></label>
<%= text_field_tag 'advanced_search[date_min]',
params[:advanced_search].try(:[], :date_min),
placeholder: t("shared.advanced_search.date_placeholder"),
class: 'js-calendar' %>
</div>
<div class='small-12 large-6 column'>
<label><%= t("shared.advanced_search.to") %></label>
<%= text_field_tag 'advanced_search[date_max]',
params[:advanced_search].try(:[], :date_max),
placeholder: t("shared.advanced_search.date_placeholder"),
class: 'js-calendar' %>
<div class="row">
<div class='small-12 large-6 column'>
<label><%= t("shared.advanced_search.from") %> (<%= t("shared.advanced_search.date_placeholder") %>)</label>
<%= text_field_tag 'advanced_search[date_min]',
params[:advanced_search].try(:[], :date_min),
placeholder: t("shared.advanced_search.date_placeholder"),
class: 'js-calendar' %>
</div>
<div class='small-12 large-6 column'>
<label><%= t("shared.advanced_search.to") %> (<%= t("shared.advanced_search.date_placeholder") %>)</label>
<%= text_field_tag 'advanced_search[date_max]',
params[:advanced_search].try(:[], :date_max),
placeholder: t("shared.advanced_search.date_placeholder"),
class: 'js-calendar' %>
</div>
</div>
</div>
</div>

View File

@@ -1,3 +1,5 @@
<span id="geozone" class="geozone">
<%= link_to geozone_name(geozonable), proposals_path(search: geozone_name(geozonable)) %>
</span>
<ul id="geozone" class="no-bullet geozone">
<li class="inline-block">
<%= link_to geozone_name(geozonable), proposals_path(search: geozone_name(geozonable)) %>
</li>
</ul>

View File

@@ -5,12 +5,14 @@
<%= t("layouts.header.locale") %>
</label>
<select class="js-location-changer locale-switcher inline-block" name="locale-switcher" id="locale-switcher">
<% I18n.available_locales.map do |loc| %>
<option <%= "selected" if loc == I18n.locale %>
value="<%= current_path_with_query_params(locale: loc) %>">
<%= name_for_locale(loc) %>
</option>
<% end %>
<optgroup label="<%= t('layouts.header.available_locales') %>">
<% I18n.available_locales.map do |loc| %>
<option <%= "selected" if loc == I18n.locale %>
value="<%= current_path_with_query_params(locale: loc) %>">
<%= name_for_locale(loc) %>
</option>
<% end %>
</optgroup>
</select>
</form>
</div>

View File

@@ -2,8 +2,8 @@
<h1 class="sr-only"><%= t("shared.outline.searcher") %></h1>
<%= form_tag search_path, method: :get do %>
<div class="input-group">
<label class="sr-only"><%= t("#{i18n_namespace}.title") %></label>
<input type="text" name="search" placeholder="<%= t("#{i18n_namespace}.placeholder") %>" class="input-group-field" value="<%= params[:search] %>">
<label for="search_text" class="sr-only"><%= t("#{i18n_namespace}.title") %></label>
<input type="text" name="search" placeholder="<%= t("#{i18n_namespace}.placeholder") %>" class="input-group-field" value="<%= params[:search] %>" id="search_text">
<div class="input-group-button">
<button type="submit" class="button" title="<%= t("#{i18n_namespace}.button") %>">
<span class="sr-only"><%= t("#{i18n_namespace}.button") %></span>

View File

@@ -1,12 +1,14 @@
<div id="tag-cloud" class="tag-cloud">
<div id="tag-cloud">
<div class="sidebar-divider"></div>
<h3 class="sidebar-title"><%= t("shared.tags_cloud.tags") %></h3>
<h2 class="sidebar-title"><%= t("shared.tags_cloud.tags") %></h2>
<br>
<% @tag_cloud.tags.each do |tag| %>
<%= link_to taggable_path(taggable, tag.name) do %>
<span class="tag"><%= tag.name %></span>
<ul class="no-bullet tag-cloud">
<% @tag_cloud.tags.each do |tag| %>
<li class="inline-block">
<%= link_to taggable_path(taggable, tag.name) do %>
<span class="tag"><%= tag.name %></span>
<% end %>
</li>
<% end %>
<% end %>
</ul>
</div>

View File

@@ -1,14 +1,16 @@
<%- limit ||= nil %>
<% if taggable.tags.any? %>
<span id="tags" class='tags'>
<ul id="tags" class="no-bullet tags">
<% taggable.tag_list_with_limit(limit).each do |tag| %>
<%= link_to sanitize(tag.name), send("#{taggable.class.name.underscore.pluralize}_path", search: tag.name) %>
<li class="inline-block"><%= link_to sanitize(tag.name), send("#{taggable.class.name.underscore.pluralize}_path", search: tag.name) %></li>
<% end %>
<% if taggable.tags_count_out_of_limit(limit) > 0 %>
<%= link_to "#{taggable.tags_count_out_of_limit(limit)}+",
send("#{taggable.class.name.underscore}_path", taggable) %>
<li class="inline-block">
<%= link_to "#{taggable.tags_count_out_of_limit(limit)}+",
send("#{taggable.class.name.underscore}_path", taggable) %>
</li>
<% end %>
</span>
</ul>
<% end %>

View File

@@ -1,15 +1,16 @@
<div class="top-links hide-for-small-only">
<div class="row">
<%= render "shared/locale_switcher" %>
<div class="external-links">
<%= link_to t("layouts.header.external_link_transparency"), t("layouts.header.external_link_transparency_url") %>&nbsp;|
<%= link_to t("layouts.header.external_link_opendata"), "/opendata", class: ("selected" if current_page?("/opendata")) %>
<ul class="no-bullet external-links">
<li class="inline-block"><%= link_to t("layouts.header.external_link_transparency"), t("layouts.header.external_link_transparency_url") %>&nbsp;|</li>
<li class="inline-block"><%= link_to t("layouts.header.external_link_opendata"), "/opendata", class: ("selected" if current_page?("/opendata")) %></li>
<% if setting['blog_url'] %>
&nbsp;|
<%= link_to setting['blog_url'], title: t('shared.target_blank_html'), target: "_blank" do %>
<%= t("layouts.header.external_link_blog") %>
<% end %>
<li class="inline-block">|&nbsp;
<%= link_to setting['blog_url'], title: t('shared.target_blank_html'), target: "_blank" do %>
<%= t("layouts.header.external_link_blog") %>
<% end %>
</li>
<% end %>
</div>
</ul>
</div>
</div>

View File

@@ -1,5 +1,5 @@
<div class="sidebar-divider"></div>
<h3 class="sidebar-title"><%= t("spending_proposals.index.sidebar.geozones") %></h3>
<h2 class="sidebar-title"><%= t("spending_proposals.index.sidebar.geozones") %></h2>
<br>
<div class="geozone">
<%= link_to t('geozones.all'), spending_proposals_path(geozone: nil) %>
@@ -10,6 +10,6 @@
</div>
<div class="sidebar-divider"></div>
<h3 class="sidebar-title"><%= t("spending_proposals.index.sidebar.feasibility") %></h3>
<h2 class="sidebar-title"><%= t("spending_proposals.index.sidebar.feasibility") %></h2>
<br>
<%= link_to t('spending_proposals.index.sidebar.unfeasible'), spending_proposals_path(unfeasible: '1') %>

View File

@@ -38,7 +38,7 @@ set(:config_files, %w(
unicorn.rb
))
set :whenever_roles, -> { :cron }
set :whenever_roles, -> { :app }
namespace :deploy do
before :starting, 'rvm1:install:rvm' # install/update RVM

View File

@@ -198,6 +198,7 @@ en:
transparency_url: https://transparency.consul
header:
administration: Administration
available_locales: Available languages
debates: Debates
external_link_blog: Blog
external_link_opendata: Open data
@@ -439,6 +440,7 @@ en:
check_none: None
collective: Collective
flag: Flag as inappropriate
hide: Hide
print:
print_button: Print this info
search: Search
@@ -467,7 +469,6 @@ en:
debates: Debates
proposals: Proposals
budget: Participatory budget
pagination: Pagination
searcher: Searcher
social:
blog: Blog

View File

@@ -198,6 +198,7 @@ es:
transparency_url: https://transparency.consul
header:
administration: Administrar
available_locales: Idiomas disponibles
debates: Debates
external_link_blog: Blog
external_link_opendata: Datos abiertos
@@ -225,6 +226,7 @@ es:
proposal_ballot: Votaciones
see_all: Ver propuestas
budgets: Presupuestos ciudadanos
spending_proposals: Presupuestos participativos
legislation:
help:
alt: Selecciona el texto que quieres comentar y pulsa en el botón con el lápiz.
@@ -439,6 +441,7 @@ es:
check_none: Ninguno
collective: Colectivo
flag: Denunciar como inapropiado
hide: Ocultar
print:
print_button: Imprimir esta información
search: Buscar
@@ -466,8 +469,7 @@ es:
outline:
debates: Debates
proposals: Propuestas
budget: Presupuestos ciudadanos
pagination: Paginación
budget: Presupuestos participativos
searcher: Buscador
social:
blog: Blog

View File

@@ -22,3 +22,7 @@
every 1.minute do
command "date > ~/cron-test.txt"
end
every 1.day, at: '5:00 am' do
rake "-s sitemap:refresh"
end

36
config/sitemap.rb Normal file
View File

@@ -0,0 +1,36 @@
# not use compression
class SitemapGenerator::FileAdapter
def gzip(stream, data); stream.write(data); stream.close end
end
SitemapGenerator::Sitemap.namer = SitemapGenerator::SimpleNamer.new(:sitemap, extension: '.xml')
# default host
SitemapGenerator::Sitemap.default_host = Setting["url"]
# sitemap generator
SitemapGenerator::Sitemap.create do
pages = Dir.entries(File.join(Rails.root,"app","views","pages"))
pages.each do |page|
page_name = page.split(".").first
add page_name if page_name.present?
end
add "help_translate"
add debates_path, priority: 0.7, changefreq: "daily"
Debate.find_each do |debate|
add debate_path(debate), lastmod: debate.updated_at
end
add proposals_path, priority: 0.7, changefreq: "daily"
Proposal.find_each do |proposal|
add proposal_path(proposal), lastmod: proposal.updated_at
end
add proposal_ballots_path
add spending_proposals_path, priority: 0.7, changefreq: "daily"
SpendingProposal.find_each do |spending_proposal|
add spending_proposal_path(spending_proposal), lastmod: spending_proposal.updated_at
end
end

View File

@@ -17,7 +17,8 @@ feature 'Debates' do
debates.each do |debate|
within('#debates') do
expect(page).to have_content debate.title
expect(page).to have_css("a[href='#{debate_path(debate)}']", text: debate.description)
expect(page).to have_content debate.description
expect(page).to have_css("a[href='#{debate_path(debate)}']", text: debate.title)
end
end
end

View File

@@ -100,9 +100,9 @@ feature 'Proposals' do
within("#proposals") do
expect(page).to have_css('.proposal', count: 1)
expect(page).to have_content(proposal1.title)
expect(page).to have_content(proposal1.summary)
expect(page).to_not have_content(proposal2.title)
expect(page).to have_css("a[href='#{management_proposal_path(proposal1)}']", text: proposal1.title)
expect(page).to have_css("a[href='#{management_proposal_path(proposal1)}']", text: proposal1.summary)
end
end
@@ -127,9 +127,9 @@ feature 'Proposals' do
within("#proposals") do
expect(page).to have_css('.proposal', count: 2)
expect(page).to have_css("a[href='#{management_proposal_path(proposal1)}']", text: proposal1.title)
expect(page).to have_css("a[href='#{management_proposal_path(proposal1)}']", text: proposal1.summary)
expect(page).to have_content(proposal1.summary)
expect(page).to have_css("a[href='#{management_proposal_path(proposal2)}']", text: proposal2.title)
expect(page).to have_css("a[href='#{management_proposal_path(proposal2)}']", text: proposal2.summary)
expect(page).to have_content(proposal2.summary)
end
end

View File

@@ -22,8 +22,8 @@ feature 'Proposals' do
proposals.each do |proposal|
within('#proposals') do
expect(page).to have_content proposal.title
expect(page).to have_content proposal.summary
expect(page).to have_css("a[href='#{proposal_path(proposal)}']", text: proposal.title)
expect(page).to have_css("a[href='#{proposal_path(proposal)}']", text: proposal.summary)
end
end
end

View File

@@ -156,7 +156,7 @@ module CommonActions
def expect_message_you_need_to_sign_in
expect(page).to have_content 'You must Sign in or Sign up to continue'
expect(page).to have_selector('.in-favor a', visible: false)
expect(page).to have_selector('.in-favor', visible: false)
end
def expect_message_you_need_to_sign_in_to_ballot
@@ -177,7 +177,7 @@ module CommonActions
def expect_message_only_verified_can_vote_proposals
expect(page).to have_content 'Only verified users can vote on proposals'
expect(page).to have_selector('.in-favor a', visible: false)
expect(page).to have_selector('.in-favor', visible: false)
end
def expect_message_only_verified_can_vote_investments