From 2e6328d50235f4673df3b549860581fbc11a01b1 Mon Sep 17 00:00:00 2001 From: Jaime Iniesta Date: Tue, 6 Sep 2016 18:21:15 +0200 Subject: [PATCH 01/18] fixes a few typos --- config/locales/pages.es.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/locales/pages.es.yml b/config/locales/pages.es.yml index c9f282a4f..3876e8a1b 100644 --- a/config/locales/pages.es.yml +++ b/config/locales/pages.es.yml @@ -33,13 +33,13 @@ es: 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.). - 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 por el cual el Ayuntamiento trabaja para la ciudadanía, y ante ella debe responder. + Cada uno de los trabajadores del Ayuntamiento tiene un usuario propio, que será resaltado como tal, permitiendo que participen en los debates al mismo nivel que todos los demás ciudadanos. Esto permitirá crear espacios de comunicación directos entre unos y otros, evitando los inconvenientes que implica la comunicación mediada, y respondiendo a un planteamiento claro por parte del nuevo gobierno por el cual el Ayuntamiento trabaja para la ciudadanía, y ante ella debe responder. ## I.I. Espacio de propuestas - En este espacio, cualquier persona puede proponer una iniciativa con la intención de recabar los suficientes apoyos como para que la idea pase a ser consultada a toda la ciudadanía con caracter vinculante. + En este espacio, cualquier persona puede proponer una iniciativa con la intención de recabar los suficientes apoyos como para que la idea pase a ser consultada a toda la ciudadanía con carácter vinculante. Las propuestas pueden ser apoyadas por ciudadanos empadronados que hayan verificado su cuenta en la plataforma de participación, de tal manera que será la propia ciudadanía, y nadie en su nombre, la que decida cuáles son las propuestas que merecen la pena ser llevadas a cabo. - Una vez que una propuesta alcance una cantidad de apoyos equivalente al 2% del censo, automaticamente pasa a ser estudiada por un grupo de trabajo del Ayuntamiento y pasará a la siguiente fase de consulta popular, en la que la ciudadanía votará si se lleva a cabo o no. El plazo máximo para recabar los apoyos necesarios será de 12 meses. + Una vez que una propuesta alcance una cantidad de apoyos equivalente al 2% del censo, automáticamente pasa a ser estudiada por un grupo de trabajo del Ayuntamiento y pasará a la siguiente fase de consulta popular, en la que la ciudadanía votará si se lleva a cabo o no. El plazo máximo para recabar los apoyos necesarios será de 12 meses. how_to_use: text: |- Utilízalo en tu municipio libremente o ayúdanos a mejorarlo, es software libre. From 8af944ce56b4ad91cf3c9ccc3c07da557c4d6b14 Mon Sep 17 00:00:00 2001 From: Jaime Iniesta Date: Wed, 7 Sep 2016 13:13:06 +0200 Subject: [PATCH 02/18] Fixes failing spec for badges. spec/features/official_positions_spec.rb:56 was failing because the expected badge was not being shown in featured proposals. --- app/views/proposals/_featured_proposal.html.erb | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/views/proposals/_featured_proposal.html.erb b/app/views/proposals/_featured_proposal.html.erb index 623932c38..90cff6da4 100644 --- a/app/views/proposals/_featured_proposal.html.erb +++ b/app/views/proposals/_featured_proposal.html.erb @@ -7,7 +7,14 @@ <% else %> <%= proposal.author.name %> <% end %> -  •  + + <% if proposal.author.display_official_position_badge? %> +  •  + + <%= proposal.author.official_position %> + + <% end %> + <%= t("proposals.proposal.supports", count: proposal.total_votes) %> From 9c48a46f0a6a2a358041d503e04d453b0b29ac34 Mon Sep 17 00:00:00 2001 From: Jaime Iniesta Date: Wed, 7 Sep 2016 13:22:52 +0200 Subject: [PATCH 03/18] adjusts style for badge in featured proposals --- app/views/proposals/_featured_proposal.html.erb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/views/proposals/_featured_proposal.html.erb b/app/views/proposals/_featured_proposal.html.erb index 90cff6da4..5500b2418 100644 --- a/app/views/proposals/_featured_proposal.html.erb +++ b/app/views/proposals/_featured_proposal.html.erb @@ -8,11 +8,13 @@ <%= proposal.author.name %> <% end %> +  •  + <% if proposal.author.display_official_position_badge? %> -  •  <%= proposal.author.official_position %> +  •  <% end %> <%= t("proposals.proposal.supports", count: proposal.total_votes) %> From 56b7474f6802982bff847886249ad06f1ff33880 Mon Sep 17 00:00:00 2001 From: Jaime Iniesta Date: Wed, 7 Sep 2016 14:21:44 +0200 Subject: [PATCH 04/18] fixes typos in docs --- doc/README.md | 71 +++++++++++++++++++++++++-------------------------- 1 file changed, 35 insertions(+), 36 deletions(-) diff --git a/doc/README.md b/doc/README.md index 89e43aad5..c588b82b8 100644 --- a/doc/README.md +++ b/doc/README.md @@ -1,21 +1,21 @@ # Funcionalidades -Actualmente Consul soporta: +Actualmente Consul soporta: -* Registro y verificación de usuarios tanto en la misma aplicación como con distintos proveedores (Twitter, Facebook, Google) -* Distintos perfiles de usuario, tanto ciudadanos individuales como organizaciones. -* Distintos perfiles de administración, gestión y moderación. -* Espacio permanente de debates y propuestas. -* Comentarios anidados en debates y propuestas. -* Presupuestos participativos a través de distintas fases. +* Registro y verificación de usuarios tanto en la misma aplicación como con distintos proveedores (Twitter, Facebook, Google). +* Distintos perfiles de usuario, tanto ciudadanos individuales como organizaciones. +* Distintos perfiles de administración, gestión y moderación. +* Espacio permanente de debates y propuestas. +* Comentarios anidados en debates y propuestas. +* Presupuestos participativos a través de distintas fases. # Usuario -Para registrar un usuario nuevo es posible hacerlo en la propia aplicación, dando un nombre de usuario (Nombre público que aparecerá en tus publicaciones), un correo electrónico y una contraseña con la que se accederá a la web. Se deben aceptar las condiciones de uso. El usuario debe confirmar su correo electrónico para poder iniciar sesión +Para registrar un usuario nuevo es posible hacerlo en la propia aplicación, dando un nombre de usuario (nombre público que aparecerá en tus publicaciones), un correo electrónico y una contraseña con la que se accederá a la web. Se deben aceptar las condiciones de uso. El usuario debe confirmar su correo electrónico para poder iniciar sesión. ![Registro de usuario](imgs/user_registration.png "Registro de usuario") -Por otro lado también se puede habilitar el registro a través de servicios externos como Twitter, Facebook y Google. Para esto hace falta tener la configuración habilitada en Settings y las claves y secretos de estos servicios en el fichero *config/secrets.yml*. +Por otro lado también se puede habilitar el registro a través de servicios externos como Twitter, Facebook y Google. Para esto hace falta tener la configuración habilitada en Settings y las claves y secretos de estos servicios en el fichero *config/secrets.yml*. ``` twitter_key: "" @@ -26,7 +26,7 @@ Por otro lado también se puede habilitar el registro a través de servicios ext google_oauth2_secret: "" ``` -Una vez el usuario ha iniciado sesión le aparecerá la posibilidad de verificar su cuenta, a través de una conexión con el padrón municipal. +Una vez el usuario ha iniciado sesión le aparecerá la posibilidad de verificar su cuenta, a través de una conexión con el padrón municipal. ![Verificación de usuario](imgs/user_preverification.png?raw=true "Verificación de usuario") @@ -36,17 +36,17 @@ Para esta funcionalidad hace falta que el padrón municipal soporte la posibilid # Perfil de usuario -Dentro de su perfil cada usuario puede configurar si quiere mostrar públicamente su lista de actividades, así como las notificaciones que le enviará la aplicación a través de correo electrónico. Estas notificiaciones pueden ser: +Dentro de su perfil cada usuario puede configurar si quiere mostrar públicamente su lista de actividades, así como las notificaciones que le enviará la aplicación a través de correo electrónico. Estas notificiaciones pueden ser: -* Recibir un email cuando alguien comenta en sus propuestas o debates -* Recibir un email cuando alguien contesta a sus comentarios -* Recibir emails con información interesante sobre la web -* Recibir resumen de notificaciones sobre propuestas -* Recibir emails con mensajes privados +* Recibir un email cuando alguien comenta en sus propuestas o debates. +* Recibir un email cuando alguien contesta a sus comentarios. +* Recibir emails con información interesante sobre la web. +* Recibir resumen de notificaciones sobre propuestas. +* Recibir emails con mensajes privados. -# Paneles de administración, gestión y moderación +# Paneles de administración, gestión y moderación -Consul cuenta con tres perfiles de usuario diferenciados para hacer tareas de revisión y moderación de los contenidos. Se detallan a continuación: +Consul cuenta con tres perfiles de usuario diferenciados para hacer tareas de revisión y moderación de los contenidos. Se detallan a continuación: ## Administración @@ -56,7 +56,7 @@ Desde aquí puedes administrar el sistema, a través de las siguientes acciones: ### Temas de debate -Los temas (también llamadas tags, o etiquetas) de debate son palabras que definen los usuarios al crear debates, para catalogarlos (ej: sanidad, movilidad, arganzuela, ...). Aquí se pueden eliminar temas inapropiados, o marcarlos para ser propuestos al crear debates (cada usuario puede definir los que quiera, pero se le sugieren algunos que nos parecen útiles como catalogación por defecto; aquí se puede cambiar cuáles se sugieren) +Los temas (también llamadas tags, o etiquetas) de debate son palabras que definen los usuarios al crear debates, para catalogarlos (ej: sanidad, movilidad, arganzuela, ...). Aquí se pueden eliminar temas inapropiados, o marcarlos para ser propuestos al crear debates (cada usuario puede definir los que quiera, pero se le sugieren algunos que nos parecen útiles como catalogación por defecto; aquí se puede cambiar cuáles se sugieren). ### Propuestas/Debates/Comentarios ocultos @@ -77,8 +77,6 @@ En la web hay dos tipos de usuarios: individuales y organizaciones. Cualquier pe En caso de que el proceso de verificación haya sido negativo, se pulsa el botón "Rechazar". Para editar alguno de los datos de la organización, se pulsa el botón "Editar". -En caso de que el proceso de verificación haya sido negativo, se pulsa el botón "Rechazar". Para editar alguno de los datos de la organización, se pulsa el botón "Editar". - Las organizaciones que no aparecen en la lista pueden ser encontradas para actuar sobre ellas por medio del buscador en la parte superior. Para facilitar la gestión, arriba encontramos un filtro con las secciones: "pendientes" (las organizaciones que todavía no han sido verificadas o rechazadas), "verificadas", "rechazadas" y "todas". Es recomendable revisar regularmente la sección "pendientes". @@ -89,7 +87,7 @@ En la web, los usuarios individuales pueden ser usuarios normales, o cargos púb ### Moderadores -Mediante el buscador de la parte superior se pueden buscar usuarios, para activarlos o desactivarlos como moderadores de la web. Los moderadores al acceder a la web con su usuario ven en la parte superior una nueva sección llamada "Moderar" +Mediante el buscador de la parte superior se pueden buscar usuarios, para activarlos o desactivarlos como moderadores de la web. Los moderadores al acceder a la web con su usuario ven en la parte superior una nueva sección llamada "Moderar". ### Actividad de moderadores @@ -103,7 +101,7 @@ Opciones generales de configuración del sistema. Estadísticas generales del sistema. -## Moderación +## Moderación ![Panel de moderación](imgs/panel_moderation.png?raw=true "Panel de moderación") @@ -116,13 +114,14 @@ Cuando un usuario marca en una Propuesta/Debate/Comentario la opción de "denunc A la derecha de cada elemento aparece una caja que podemos marcar para seleccionar todos los que queramos de la lista. Una vez seleccionados uno o varios, encontramos al final de la página tres botones para realizar acciones sobre ellos: * Ocultar: hará que esos elementos dejen de mostrarse en la web. -* Bloquear autores: hará que el autor de ese elemento deje de poder acceder a la web, y que además todos las Propuestas/Debates/Comentarios de ese usuario dejen de mostrarse en la web. +* Bloquear autores: hará que el autor de ese elemento deje de poder acceder a la web, y que además todas las Propuestas/Debates/Comentarios de ese usuario dejen de mostrarse en la web. * Marcar como revisados cuando consideramos que esos elementos no deben ser moderados, que su contenido es correcto, y que por lo tanto deben dejar de ser mostrados en esta lista de elementos inapropiados. Para facilitar la gestión, arriba encontramos un filtro con las secciones: -Pendientes: las Propuestas/Debates/Comentarios sobre los que todavía no se ha pulsado "ocultar", "bloquear" o "marcar como revisados", y que por lo tanto deberían ser revisados todavía -Todos: mostrando todos las Propuestas/Debates/Comentarios de la web, y no sólo los marcados como inapropiados. -Marcados como revisados: los que algún moderador ha marcado como revisados y por lo tanto parecen correctos. + +* Pendientes: las Propuestas/Debates/Comentarios sobre los que todavía no se ha pulsado "ocultar", "bloquear" o "marcar como revisados", y que por lo tanto deberían ser revisados todavía. +* Todos: mostrando todos las Propuestas/Debates/Comentarios de la web, y no sólo los marcados como inapropiados. +* Marcados como revisados: los que algún moderador ha marcado como revisados y por lo tanto parecen correctos. Es recomendable revisar regularmente la sección "pendientes". @@ -136,12 +135,12 @@ Un buscador nos permite encontrar cualquier usuario introduciendo su nombre de u Desde aquí puedes gestionar usuarios a través de las siguientes acciones: -* Usuarios -* Editar cuenta de usuario -* Crear propuesta -* Apoyar propuestas -* Crear propuesta de inversión -* Apoyar propts. de inversión -* Imprimir propuestas -* Imprimir propts. de inversión -* Invitaciones para usuarios +* Usuarios. +* Editar cuenta de usuario. +* Crear propuesta. +* Apoyar propuestas. +* Crear propuesta de inversión. +* Apoyar propts. de inversión. +* Imprimir propuestas. +* Imprimir propts. de inversión. +* Invitaciones para usuarios. From 41312ca2a56b5f26d4628b2ed09b2ca1e9289236 Mon Sep 17 00:00:00 2001 From: Alberto Garcia Cabeza Date: Fri, 9 Sep 2016 17:31:05 +0200 Subject: [PATCH 05/18] Creates archived proposals method --- app/controllers/proposals_controller.rb | 2 +- app/models/proposal.rb | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/controllers/proposals_controller.rb b/app/controllers/proposals_controller.rb index 578395ab3..1bfed0aa9 100644 --- a/app/controllers/proposals_controller.rb +++ b/app/controllers/proposals_controller.rb @@ -12,7 +12,7 @@ class ProposalsController < ApplicationController invisible_captcha only: [:create, :update], honeypot: :subtitle - has_orders %w{hot_score confidence_score created_at relevance}, only: :index + has_orders %w{hot_score confidence_score created_at relevance archival_date}, only: :index has_orders %w{most_voted newest oldest}, only: :show load_and_authorize_resource diff --git a/app/models/proposal.rb b/app/models/proposal.rb index 9a92a8d18..d558fdfa7 100644 --- a/app/models/proposal.rb +++ b/app/models/proposal.rb @@ -44,6 +44,8 @@ class Proposal < ActiveRecord::Base scope :sort_by_random, -> { reorder("RANDOM()") } scope :sort_by_relevance, -> { all } scope :sort_by_flags, -> { order(flags_count: :desc, updated_at: :desc) } + scope :sort_by_archival_date, -> { archived.order(created_at: :desc) } + scope :archived, -> { where("proposals.created_at <= ?", 12.months.ago)} scope :last_week, -> { where("proposals.created_at >= ?", 7.days.ago)} scope :retired, -> { where.not(retired_at: nil) } scope :not_retired, -> { where(retired_at: nil) } @@ -155,6 +157,10 @@ class Proposal < ActiveRecord::Base Setting['votes_for_proposal_success'].to_i end + def archived? + self.created_at <= 12.months.ago + end + def notifications proposal_notifications end From e8b70a48fa4ebcb574acb60cdc0671732f0dda9b Mon Sep 17 00:00:00 2001 From: Alberto Garcia Cabeza Date: Fri, 9 Sep 2016 17:32:03 +0200 Subject: [PATCH 06/18] Adds tab in index & removes support button in index/show --- app/assets/stylesheets/participation.scss | 15 +++++++++++++++ app/views/proposals/_proposal.html.erb | 14 +++++++++++--- app/views/proposals/show.html.erb | 14 +++++++++----- config/locales/en.yml | 2 ++ config/locales/es.yml | 2 ++ 5 files changed, 39 insertions(+), 8 deletions(-) diff --git a/app/assets/stylesheets/participation.scss b/app/assets/stylesheets/participation.scss index ffe08617f..2ab28f52d 100644 --- a/app/assets/stylesheets/participation.scss +++ b/app/assets/stylesheets/participation.scss @@ -269,6 +269,21 @@ } } +.message { + @include supports; + background: none; + border-top: 0; + + @include breakpoint(medium) { + border-left: 1px solid $border; + margin: $line-height rem-calc(-25) 0 rem-calc(12); + } + + p { + font-size: $small-font-size; + } +} + // 02. New participation // --------------------- diff --git a/app/views/proposals/_proposal.html.erb b/app/views/proposals/_proposal.html.erb index 70c2b9c89..07ece36ed 100644 --- a/app/views/proposals/_proposal.html.erb +++ b/app/views/proposals/_proposal.html.erb @@ -50,9 +50,17 @@ -
- <%= render 'votes', - { proposal: proposal, vote_url: vote_proposal_path(proposal, value: 'yes') } %> +
+ <% if proposal.archived? %> +
+

<%= t("proposals.proposal.archived") %>

+
+ <% else %> +
+ <%= render 'votes', + { proposal: proposal, vote_url: vote_proposal_path(proposal, value: 'yes') } %> +
+ <% end %>
diff --git a/app/views/proposals/show.html.erb b/app/views/proposals/show.html.erb index 3a9869d83..01310455e 100644 --- a/app/views/proposals/show.html.erb +++ b/app/views/proposals/show.html.erb @@ -102,12 +102,16 @@