diff --git a/.gitignore b/.gitignore index f4b9c99fb..35f5651a4 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,5 @@ # Mac finder artifacts .DS_Store .ruby-gemset + +public/sitemap.xml \ No newline at end of file diff --git a/CUSTOMIZE_ES.md b/CUSTOMIZE_ES.md index f7af01649..09fdfe62c 100644 --- a/CUSTOMIZE_ES.md +++ b/CUSTOMIZE_ES.md @@ -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 diff --git a/Gemfile b/Gemfile index 1ce218638..07b629886 100644 --- a/Gemfile +++ b/Gemfile @@ -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 diff --git a/Gemfile.lock b/Gemfile.lock index 50ab5bb9d..fe1948752 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -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 diff --git a/README.md b/README.md index 8c95f3648..c62fcfeec 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ Citizen Participation and Open Government Application +[](https://gitter.im/consul/consul?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](https://travis-ci.org/consul/consul) [](https://codeclimate.com/github/consul/consul) [](https://gemnasium.com/consul/consul) diff --git a/README_ES.md b/README_ES.md index a18b7d241..1b197e983 100644 --- a/README_ES.md +++ b/README_ES.md @@ -5,6 +5,7 @@ Aplicación de Participación Ciudadana y Gobierno Abierto +[](https://gitter.im/consul/consul?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](https://travis-ci.org/consul/consul) [](https://codeclimate.com/github/consul/consul) [](https://gemnasium.com/consul/consul) diff --git a/app/assets/javascripts/comments.js.coffee b/app/assets/javascripts/comments.js.coffee index 876a89b20..fefe85544 100644 --- a/app/assets/javascripts/comments.js.coffee +++ b/app/assets/javascripts/comments.js.coffee @@ -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 ) diff --git a/app/assets/stylesheets/_settings.scss b/app/assets/stylesheets/_settings.scss index 4149020fa..3821f22c7 100644 --- a/app/assets/stylesheets/_settings.scss +++ b/app/assets/stylesheets/_settings.scss @@ -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; diff --git a/app/assets/stylesheets/layout.scss b/app/assets/stylesheets/layout.scss index 2d0de02e3..4add38b19 100644 --- a/app/assets/stylesheets/layout.scss +++ b/app/assets/stylesheets/layout.scss @@ -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; } } diff --git a/app/assets/stylesheets/participation.scss b/app/assets/stylesheets/participation.scss index 4f203044c..9bcf391e7 100644 --- a/app/assets/stylesheets/participation.scss +++ b/app/assets/stylesheets/participation.scss @@ -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 { diff --git a/app/views/comments/_comment.html.erb b/app/views/comments/_comment.html.erb index 98a0154cc..94df7c7a3 100644 --- a/app/views/comments/_comment.html.erb +++ b/app/views/comments/_comment.html.erb @@ -75,7 +75,8 @@ <% if comment.children.size > 0 %> <%= link_to "", class: "js-toggle-children relative", data: {'id': "#{dom_id(comment)}"} do %> - <%= t("shared.show") %> + + <%= t("shared.hide") %> <%= t("comments.comment.responses", count: comment.children.size) %> <% end %> <% else %> diff --git a/app/views/debates/_debate.html.erb b/app/views/debates/_debate.html.erb index fdb975c79..d084a0241 100644 --- a/app/views/debates/_debate.html.erb +++ b/app/views/debates/_debate.html.erb @@ -41,7 +41,7 @@