diff --git a/.gitignore b/.gitignore index 06e2d86..41c1d7d 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,8 @@ /tmp/* !/log/.keep !/tmp/.keep +*~ +._* /node_modules /yarn-error.log @@ -28,13 +30,28 @@ capybara-*.html /vendor/bundle config/config.yml* +config/initializers/smtp_settings.rb config/database.yml* dump.rdb* +config/environment.rb +config/initializers/devise.rb +config/initializers/carrierwave-aws.rb + public/fontello-demo.html public/javascripts public/assets/ +public/media log nohup.out .ruby-version + +# Ignore encrypted secrets key file. +config/secrets.yml.key +config/secrets.yml + +.DS_STORE +public/uploads + + diff --git a/Gemfile b/Gemfile index 5bd3991..f5b4239 100644 --- a/Gemfile +++ b/Gemfile @@ -54,6 +54,8 @@ gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] gem 'ancestry' gem 'bootstrap', '~> 4.5.0' +gem 'carrierwave' +gem 'carrierwave-aws' gem 'cocoon' gem 'devise' gem 'font-awesome-rails' @@ -61,3 +63,4 @@ gem 'fontello_rails_converter', git: 'https://github.com/railslove/fontello_rail gem 'jquery-rails' gem 'rails', '5.1.6.2' gem 'simple_form' + diff --git a/Gemfile.lock b/Gemfile.lock index 0742f72..e132192 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -55,6 +55,22 @@ GEM arel (8.0.0) autoprefixer-rails (10.2.5.1) execjs (> 0) + aws-eventstream (1.2.0) + aws-partitions (1.535.0) + aws-sdk-core (3.123.0) + aws-eventstream (~> 1, >= 1.0.2) + aws-partitions (~> 1, >= 1.525.0) + aws-sigv4 (~> 1.1) + jmespath (~> 1.0) + aws-sdk-kms (1.51.0) + aws-sdk-core (~> 3, >= 3.122.0) + aws-sigv4 (~> 1.1) + aws-sdk-s3 (1.107.0) + aws-sdk-core (~> 3, >= 3.122.0) + aws-sdk-kms (~> 1) + aws-sigv4 (~> 1.4) + aws-sigv4 (1.4.0) + aws-eventstream (~> 1, >= 1.0.2) bcrypt (3.1.16) bindex (0.8.1) bootstrap (4.5.3) @@ -70,6 +86,17 @@ GEM rack (>= 1.0.0) rack-test (>= 0.5.4) xpath (>= 2.0, < 4.0) + carrierwave (2.2.2) + activemodel (>= 5.0.0) + activesupport (>= 5.0.0) + addressable (~> 2.6) + image_processing (~> 1.1) + marcel (~> 1.0.0) + mini_mime (>= 0.1.3) + ssrf_filter (~> 1.0) + carrierwave-aws (1.5.0) + aws-sdk-s3 (~> 1.0) + carrierwave (~> 2.0) childprocess (3.0.0) cocoon (1.2.15) coffee-rails (4.2.2) @@ -101,8 +128,12 @@ GEM domain_name (~> 0.5) i18n (1.8.10) concurrent-ruby (~> 1.0) + image_processing (1.12.1) + mini_magick (>= 4.9.5, < 5) + ruby-vips (>= 2.0.17, < 3) jbuilder (2.11.2) activesupport (>= 5.0.0) + jmespath (1.4.0) jquery-rails (4.4.0) rails-dom-testing (>= 1, < 3) railties (>= 4.2.0) @@ -118,10 +149,12 @@ GEM nokogiri (>= 1.5.9) mail (2.7.1) mini_mime (>= 0.1.1) + marcel (1.0.2) method_source (1.0.0) mime-types (3.3.1) mime-types-data (~> 3.2015) mime-types-data (3.2021.0225) + mini_magick (4.11.0) mini_mime (1.1.0) mini_portile2 (2.5.3) minitest (5.14.4) @@ -174,6 +207,8 @@ GEM http-cookie (>= 1.0.2, < 2.0) mime-types (>= 1.16, < 4.0) netrc (~> 0.8) + ruby-vips (2.1.3) + ffi (~> 1.12) ruby_dep (1.5.0) rubyzip (1.3.0) sass (3.7.4) @@ -212,6 +247,7 @@ GEM actionpack (>= 4.0) activesupport (>= 4.0) sprockets (>= 3.0.0) + ssrf_filter (1.0.7) thor (1.1.0) thread_safe (0.3.6) tilt (2.0.10) @@ -247,6 +283,8 @@ DEPENDENCIES bootstrap (~> 4.5.0) byebug capybara (~> 2.13) + carrierwave + carrierwave-aws cocoon coffee-rails (~> 4.2) devise @@ -269,4 +307,4 @@ DEPENDENCIES web-console (>= 3.3.0) BUNDLED WITH - 2.0.1 + 2.2.9 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..06967a9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 CONABIO + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 7db80e4..a5d74f6 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,8 @@ # README -This README would normally document whatever steps are necessary to get the -application up and running. +Esta aplicación es la base para los concursos de dibujo y de fotografía que realiza anualmente la CONABIO -Things you may want to cover: +TODO: * Ruby version diff --git a/app/assets/fonts/chicken-pie/chicken-pie-height.otf b/app/assets/fonts/chicken-pie/chicken-pie-height.otf new file mode 100644 index 0000000..8bd8ad1 Binary files /dev/null and b/app/assets/fonts/chicken-pie/chicken-pie-height.otf differ diff --git a/app/assets/fonts/chicken-pie/chicken-pie-height.ttf b/app/assets/fonts/chicken-pie/chicken-pie-height.ttf new file mode 100644 index 0000000..c6a0026 Binary files /dev/null and b/app/assets/fonts/chicken-pie/chicken-pie-height.ttf differ diff --git a/app/assets/fonts/chicken-pie/chicken-pie.otf b/app/assets/fonts/chicken-pie/chicken-pie.otf new file mode 100644 index 0000000..b80d9b1 Binary files /dev/null and b/app/assets/fonts/chicken-pie/chicken-pie.otf differ diff --git a/app/assets/fonts/chicken-pie/chicken-pie.ttf b/app/assets/fonts/chicken-pie/chicken-pie.ttf new file mode 100644 index 0000000..c37c33c Binary files /dev/null and b/app/assets/fonts/chicken-pie/chicken-pie.ttf differ diff --git a/app/assets/images/entre_azul_y_verde/AngelicaSanchez.jpg b/app/assets/images/entre_azul_y_verde/AngelicaSanchez.jpg new file mode 100644 index 0000000..fa4b08b Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/AngelicaSanchez.jpg differ diff --git a/app/assets/images/entre_azul_y_verde/AnuncioFB-2021.jpg b/app/assets/images/entre_azul_y_verde/AnuncioFB-2021.jpg new file mode 100755 index 0000000..ec4d8ce Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/AnuncioFB-2021.jpg differ diff --git a/app/assets/images/entre_azul_y_verde/AnuncioFBlogos-2021.jpg b/app/assets/images/entre_azul_y_verde/AnuncioFBlogos-2021.jpg new file mode 100755 index 0000000..e023feb Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/AnuncioFBlogos-2021.jpg differ diff --git a/app/assets/images/entre_azul_y_verde/Convocatoria-Entre_azul_y_verde-2021.pdf b/app/assets/images/entre_azul_y_verde/Convocatoria-Entre_azul_y_verde-2021.pdf new file mode 100755 index 0000000..1e4863c Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/Convocatoria-Entre_azul_y_verde-2021.pdf differ diff --git a/app/assets/images/entre_azul_y_verde/Entre_azul_y_verde_19seg.mp3 b/app/assets/images/entre_azul_y_verde/Entre_azul_y_verde_19seg.mp3 new file mode 100644 index 0000000..f229ae5 Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/Entre_azul_y_verde_19seg.mp3 differ diff --git a/app/assets/images/entre_azul_y_verde/Entre_azul_y_verde_32seg.mp3 b/app/assets/images/entre_azul_y_verde/Entre_azul_y_verde_32seg.mp3 new file mode 100644 index 0000000..c29ec65 Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/Entre_azul_y_verde_32seg.mp3 differ diff --git a/app/assets/images/entre_azul_y_verde/JoelRodriguez.jpg b/app/assets/images/entre_azul_y_verde/JoelRodriguez.jpg new file mode 100644 index 0000000..1a5daf4 Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/JoelRodriguez.jpg differ diff --git a/app/assets/images/entre_azul_y_verde/MontserratGarcia.jpg b/app/assets/images/entre_azul_y_verde/MontserratGarcia.jpg new file mode 100644 index 0000000..b0a5b06 Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/MontserratGarcia.jpg differ diff --git a/app/assets/images/entre_azul_y_verde/SPOT-entreAzulyVerde2021.mp4 b/app/assets/images/entre_azul_y_verde/SPOT-entreAzulyVerde2021.mp4 new file mode 100644 index 0000000..36aacb1 Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/SPOT-entreAzulyVerde2021.mp4 differ diff --git a/app/assets/images/entre_azul_y_verde/SPOT-entreAzulyVerde2022.mp4 b/app/assets/images/entre_azul_y_verde/SPOT-entreAzulyVerde2022.mp4 new file mode 100644 index 0000000..ccab040 Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/SPOT-entreAzulyVerde2022.mp4 differ diff --git a/app/assets/images/entre_azul_y_verde/bases-06.png b/app/assets/images/entre_azul_y_verde/bases-06.png new file mode 100644 index 0000000..1d35654 Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/bases-06.png differ diff --git a/app/assets/images/entre_azul_y_verde/bases-07.png b/app/assets/images/entre_azul_y_verde/bases-07.png new file mode 100644 index 0000000..c3de837 Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/bases-07.png differ diff --git a/app/assets/images/entre_azul_y_verde/bases-08.png b/app/assets/images/entre_azul_y_verde/bases-08.png new file mode 100644 index 0000000..a917a04 Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/bases-08.png differ diff --git a/app/assets/images/entre_azul_y_verde/bases.png b/app/assets/images/entre_azul_y_verde/bases.png index 009a294..3ec0da9 100644 Binary files a/app/assets/images/entre_azul_y_verde/bases.png and b/app/assets/images/entre_azul_y_verde/bases.png differ diff --git a/app/assets/images/entre_azul_y_verde/faq-01.png b/app/assets/images/entre_azul_y_verde/faq-01.png new file mode 100644 index 0000000..d772a3a Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/faq-01.png differ diff --git a/app/assets/images/entre_azul_y_verde/fondo.jpg b/app/assets/images/entre_azul_y_verde/fondo.jpg index f4bcf96..127997d 100644 Binary files a/app/assets/images/entre_azul_y_verde/fondo.jpg and b/app/assets/images/entre_azul_y_verde/fondo.jpg differ diff --git a/app/assets/images/entre_azul_y_verde/ganadores.png b/app/assets/images/entre_azul_y_verde/ganadores.png new file mode 100644 index 0000000..04a3196 Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/ganadores.png differ diff --git a/app/assets/images/entre_azul_y_verde/inscripcion-der.png b/app/assets/images/entre_azul_y_verde/inscripcion-der.png new file mode 100644 index 0000000..e421c7e Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/inscripcion-der.png differ diff --git a/app/assets/images/entre_azul_y_verde/inscripcion-izq.png b/app/assets/images/entre_azul_y_verde/inscripcion-izq.png new file mode 100644 index 0000000..a74c1d6 Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/inscripcion-izq.png differ diff --git a/app/assets/images/entre_azul_y_verde/inscripcion.png b/app/assets/images/entre_azul_y_verde/inscripcion.png deleted file mode 100644 index 6a6cd5f..0000000 Binary files a/app/assets/images/entre_azul_y_verde/inscripcion.png and /dev/null differ diff --git a/app/assets/images/entre_azul_y_verde/intro-logos.png b/app/assets/images/entre_azul_y_verde/intro-logos.png new file mode 100644 index 0000000..3790d28 Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/intro-logos.png differ diff --git a/app/assets/images/entre_azul_y_verde/intro.png b/app/assets/images/entre_azul_y_verde/intro.png index 0b5c3b8..6a7443c 100644 Binary files a/app/assets/images/entre_azul_y_verde/intro.png and b/app/assets/images/entre_azul_y_verde/intro.png differ diff --git a/app/assets/images/entre_azul_y_verde/jurado.png b/app/assets/images/entre_azul_y_verde/jurado.png new file mode 100644 index 0000000..acd25a0 Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/jurado.png differ diff --git a/app/assets/images/entre_azul_y_verde/logotipompm-2.png b/app/assets/images/entre_azul_y_verde/logotipompm-2.png new file mode 100644 index 0000000..29948b5 Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/logotipompm-2.png differ diff --git a/app/assets/images/entre_azul_y_verde/menciones.png b/app/assets/images/entre_azul_y_verde/menciones.png new file mode 100644 index 0000000..14892d0 Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/menciones.png differ diff --git a/app/assets/images/entre_azul_y_verde/pais_maravillas.png b/app/assets/images/entre_azul_y_verde/pais_maravillas.png new file mode 100644 index 0000000..4506856 Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/pais_maravillas.png differ diff --git a/app/assets/images/entre_azul_y_verde/pasos1.png b/app/assets/images/entre_azul_y_verde/pasos1.png new file mode 100644 index 0000000..3049d79 Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/pasos1.png differ diff --git a/app/assets/images/entre_azul_y_verde/pasos2.png b/app/assets/images/entre_azul_y_verde/pasos2.png new file mode 100644 index 0000000..909a2e9 Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/pasos2.png differ diff --git a/app/assets/images/entre_azul_y_verde/pasos3.png b/app/assets/images/entre_azul_y_verde/pasos3.png new file mode 100644 index 0000000..2c1a4b8 Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/pasos3.png differ diff --git a/app/assets/images/entre_azul_y_verde/pasos4.png b/app/assets/images/entre_azul_y_verde/pasos4.png new file mode 100644 index 0000000..c16c509 Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/pasos4.png differ diff --git a/app/assets/images/entre_azul_y_verde/pasos5.png b/app/assets/images/entre_azul_y_verde/pasos5.png new file mode 100644 index 0000000..821282a Binary files /dev/null and b/app/assets/images/entre_azul_y_verde/pasos5.png differ diff --git a/app/assets/images/mosaico_natura/.keep b/app/assets/images/mosaico_natura/.keep new file mode 100644 index 0000000..e69de29 diff --git a/app/assets/images/mosaico_natura/AVISO-DE-PRIVACIDAD-7oConcursoMosaicoNatura.pdf b/app/assets/images/mosaico_natura/AVISO-DE-PRIVACIDAD-7oConcursoMosaicoNatura.pdf new file mode 100755 index 0000000..d7bb719 Binary files /dev/null and b/app/assets/images/mosaico_natura/AVISO-DE-PRIVACIDAD-7oConcursoMosaicoNatura.pdf differ diff --git a/app/assets/images/mosaico_natura/Invitacion1.jpg b/app/assets/images/mosaico_natura/Invitacion1.jpg new file mode 100644 index 0000000..027477c Binary files /dev/null and b/app/assets/images/mosaico_natura/Invitacion1.jpg differ diff --git a/app/assets/images/mosaico_natura/Invitacion2.jpg b/app/assets/images/mosaico_natura/Invitacion2.jpg new file mode 100644 index 0000000..f86efef Binary files /dev/null and b/app/assets/images/mosaico_natura/Invitacion2.jpg differ diff --git a/app/assets/images/mosaico_natura/Invitacion3.jpg b/app/assets/images/mosaico_natura/Invitacion3.jpg new file mode 100644 index 0000000..0f2623a Binary files /dev/null and b/app/assets/images/mosaico_natura/Invitacion3.jpg differ diff --git a/app/assets/images/mosaico_natura/Licencia-de-uso-7oConcursoMosaicoNatura.pdf b/app/assets/images/mosaico_natura/Licencia-de-uso-7oConcursoMosaicoNatura.pdf new file mode 100755 index 0000000..398327b Binary files /dev/null and b/app/assets/images/mosaico_natura/Licencia-de-uso-7oConcursoMosaicoNatura.pdf differ diff --git a/app/assets/images/mosaico_natura/PortadaWeb6to.jpg b/app/assets/images/mosaico_natura/PortadaWeb6to.jpg new file mode 100755 index 0000000..bc101d0 Binary files /dev/null and b/app/assets/images/mosaico_natura/PortadaWeb6to.jpg differ diff --git a/app/assets/images/mosaico_natura/PortadaWeb7to-logos.jpg b/app/assets/images/mosaico_natura/PortadaWeb7to-logos.jpg new file mode 100644 index 0000000..a4316eb Binary files /dev/null and b/app/assets/images/mosaico_natura/PortadaWeb7to-logos.jpg differ diff --git a/app/assets/images/mosaico_natura/PortadaWeb7to-v2.jpg b/app/assets/images/mosaico_natura/PortadaWeb7to-v2.jpg new file mode 100644 index 0000000..7e810fb Binary files /dev/null and b/app/assets/images/mosaico_natura/PortadaWeb7to-v2.jpg differ diff --git a/app/assets/images/mosaico_natura/PortadaWeb7to-v3.jpg b/app/assets/images/mosaico_natura/PortadaWeb7to-v3.jpg new file mode 100644 index 0000000..e53fb33 Binary files /dev/null and b/app/assets/images/mosaico_natura/PortadaWeb7to-v3.jpg differ diff --git a/app/assets/images/mosaico_natura/PortadaWeb7to.jpg b/app/assets/images/mosaico_natura/PortadaWeb7to.jpg new file mode 100644 index 0000000..762d2e3 Binary files /dev/null and b/app/assets/images/mosaico_natura/PortadaWeb7to.jpg differ diff --git a/app/assets/images/mosaico_natura/SpotConcursoMN6.mp3 b/app/assets/images/mosaico_natura/SpotConcursoMN6.mp3 new file mode 100644 index 0000000..78d4154 Binary files /dev/null and b/app/assets/images/mosaico_natura/SpotConcursoMN6.mp3 differ diff --git a/app/assets/images/mosaico_natura/Termino-y-Condiciones-7oConcursoMosaicoNatura.pdf b/app/assets/images/mosaico_natura/Termino-y-Condiciones-7oConcursoMosaicoNatura.pdf new file mode 100755 index 0000000..6e927d0 Binary files /dev/null and b/app/assets/images/mosaico_natura/Termino-y-Condiciones-7oConcursoMosaicoNatura.pdf differ diff --git a/app/assets/images/mosaico_natura/bases_CoSMoS.png b/app/assets/images/mosaico_natura/bases_CoSMoS.png new file mode 100755 index 0000000..0c87be0 Binary files /dev/null and b/app/assets/images/mosaico_natura/bases_CoSMoS.png differ diff --git a/app/assets/images/mosaico_natura/bases_cineminuto.png b/app/assets/images/mosaico_natura/bases_cineminuto.png new file mode 100755 index 0000000..3cdc12c Binary files /dev/null and b/app/assets/images/mosaico_natura/bases_cineminuto.png differ diff --git a/app/assets/images/mosaico_natura/bases_fauna.png b/app/assets/images/mosaico_natura/bases_fauna.png new file mode 100755 index 0000000..4c7a4f8 Binary files /dev/null and b/app/assets/images/mosaico_natura/bases_fauna.png differ diff --git "a/app/assets/images/mosaico_natura/bases_fotograf\303\255a_a\303\251rea.png" "b/app/assets/images/mosaico_natura/bases_fotograf\303\255a_a\303\251rea.png" new file mode 100755 index 0000000..e24aff2 Binary files /dev/null and "b/app/assets/images/mosaico_natura/bases_fotograf\303\255a_a\303\251rea.png" differ diff --git "a/app/assets/images/mosaico_natura/bases_fotograf\303\255a_subacu\303\241tica.png" "b/app/assets/images/mosaico_natura/bases_fotograf\303\255a_subacu\303\241tica.png" new file mode 100755 index 0000000..0b7b14e Binary files /dev/null and "b/app/assets/images/mosaico_natura/bases_fotograf\303\255a_subacu\303\241tica.png" differ diff --git a/app/assets/images/mosaico_natura/bases_naturaleza_al_alcance_de_tu_mano.png b/app/assets/images/mosaico_natura/bases_naturaleza_al_alcance_de_tu_mano.png new file mode 100755 index 0000000..9996961 Binary files /dev/null and b/app/assets/images/mosaico_natura/bases_naturaleza_al_alcance_de_tu_mano.png differ diff --git a/app/assets/images/mosaico_natura/bases_naturaleza_y_ser_humano.png b/app/assets/images/mosaico_natura/bases_naturaleza_y_ser_humano.png new file mode 100755 index 0000000..8af9cf0 Binary files /dev/null and b/app/assets/images/mosaico_natura/bases_naturaleza_y_ser_humano.png differ diff --git a/app/assets/images/mosaico_natura/bases_paisajes_con_ecosistemas.png b/app/assets/images/mosaico_natura/bases_paisajes_con_ecosistemas.png new file mode 100755 index 0000000..f441171 Binary files /dev/null and b/app/assets/images/mosaico_natura/bases_paisajes_con_ecosistemas.png differ diff --git "a/app/assets/images/mosaico_natura/bases_peque\303\261os_gigantes.png" "b/app/assets/images/mosaico_natura/bases_peque\303\261os_gigantes.png" new file mode 100755 index 0000000..1fb990c Binary files /dev/null and "b/app/assets/images/mosaico_natura/bases_peque\303\261os_gigantes.png" differ diff --git a/app/assets/images/mosaico_natura/bases_plantas_y_hongos.png b/app/assets/images/mosaico_natura/bases_plantas_y_hongos.png new file mode 100755 index 0000000..44fcb51 Binary files /dev/null and b/app/assets/images/mosaico_natura/bases_plantas_y_hongos.png differ diff --git a/app/assets/images/mosaico_natura/bases_tema_libre.png b/app/assets/images/mosaico_natura/bases_tema_libre.png new file mode 100755 index 0000000..7f8e299 Binary files /dev/null and b/app/assets/images/mosaico_natura/bases_tema_libre.png differ diff --git a/app/assets/images/mosaico_natura/bg-concurso.jpg b/app/assets/images/mosaico_natura/bg-concurso.jpg new file mode 100755 index 0000000..42e62b8 Binary files /dev/null and b/app/assets/images/mosaico_natura/bg-concurso.jpg differ diff --git a/app/assets/images/mosaico_natura/bg-exposiciones.jpg b/app/assets/images/mosaico_natura/bg-exposiciones.jpg new file mode 100755 index 0000000..eb6b7ec Binary files /dev/null and b/app/assets/images/mosaico_natura/bg-exposiciones.jpg differ diff --git a/app/assets/images/mosaico_natura/bg-ganadores.jpg b/app/assets/images/mosaico_natura/bg-ganadores.jpg new file mode 100755 index 0000000..65a47a4 Binary files /dev/null and b/app/assets/images/mosaico_natura/bg-ganadores.jpg differ diff --git a/app/assets/images/mosaico_natura/bg-legales.jpg b/app/assets/images/mosaico_natura/bg-legales.jpg new file mode 100755 index 0000000..f048dde Binary files /dev/null and b/app/assets/images/mosaico_natura/bg-legales.jpg differ diff --git a/app/assets/images/mosaico_natura/bg-medios.jpg b/app/assets/images/mosaico_natura/bg-medios.jpg new file mode 100755 index 0000000..5f6db8f Binary files /dev/null and b/app/assets/images/mosaico_natura/bg-medios.jpg differ diff --git a/app/assets/images/mosaico_natura/bg-quienesSomos.jpg b/app/assets/images/mosaico_natura/bg-quienesSomos.jpg new file mode 100755 index 0000000..420ee00 Binary files /dev/null and b/app/assets/images/mosaico_natura/bg-quienesSomos.jpg differ diff --git a/app/assets/images/mosaico_natura/colaboradoresplecaLogos-v2.jpg b/app/assets/images/mosaico_natura/colaboradoresplecaLogos-v2.jpg new file mode 100644 index 0000000..12612bb Binary files /dev/null and b/app/assets/images/mosaico_natura/colaboradoresplecaLogos-v2.jpg differ diff --git a/app/assets/images/mosaico_natura/colaboradoresplecaLogos-v3.jpg b/app/assets/images/mosaico_natura/colaboradoresplecaLogos-v3.jpg new file mode 100644 index 0000000..8dd436b Binary files /dev/null and b/app/assets/images/mosaico_natura/colaboradoresplecaLogos-v3.jpg differ diff --git a/app/assets/images/mosaico_natura/colaboradoresplecaLogos.jpg b/app/assets/images/mosaico_natura/colaboradoresplecaLogos.jpg new file mode 100755 index 0000000..1376c8d Binary files /dev/null and b/app/assets/images/mosaico_natura/colaboradoresplecaLogos.jpg differ diff --git a/app/assets/images/mosaico_natura/ganadores.jpg b/app/assets/images/mosaico_natura/ganadores.jpg new file mode 100644 index 0000000..3f55676 Binary files /dev/null and b/app/assets/images/mosaico_natura/ganadores.jpg differ diff --git a/app/assets/images/mosaico_natura/logo-mosaiconatura.png b/app/assets/images/mosaico_natura/logo-mosaiconatura.png new file mode 100755 index 0000000..340099e Binary files /dev/null and b/app/assets/images/mosaico_natura/logo-mosaiconatura.png differ diff --git a/app/assets/images/mosaico_natura/logo-mosaiconaturav_gris.png b/app/assets/images/mosaico_natura/logo-mosaiconaturav_gris.png new file mode 100755 index 0000000..7c54052 Binary files /dev/null and b/app/assets/images/mosaico_natura/logo-mosaiconaturav_gris.png differ diff --git a/app/assets/images/mosaico_natura/menciones.jpg b/app/assets/images/mosaico_natura/menciones.jpg new file mode 100644 index 0000000..5fb621d Binary files /dev/null and b/app/assets/images/mosaico_natura/menciones.jpg differ diff --git a/app/assets/images/mosaico_natura/participa-01.png b/app/assets/images/mosaico_natura/participa-01.png new file mode 100755 index 0000000..cb62ae3 Binary files /dev/null and b/app/assets/images/mosaico_natura/participa-01.png differ diff --git a/app/assets/images/mosaico_natura/participa-02.png b/app/assets/images/mosaico_natura/participa-02.png new file mode 100755 index 0000000..4ffcca4 Binary files /dev/null and b/app/assets/images/mosaico_natura/participa-02.png differ diff --git a/app/assets/images/mosaico_natura/participa-03.png b/app/assets/images/mosaico_natura/participa-03.png new file mode 100755 index 0000000..bca01fc Binary files /dev/null and b/app/assets/images/mosaico_natura/participa-03.png differ diff --git a/app/assets/images/mosaico_natura/participa-04.png b/app/assets/images/mosaico_natura/participa-04.png new file mode 100755 index 0000000..1188d47 Binary files /dev/null and b/app/assets/images/mosaico_natura/participa-04.png differ diff --git a/app/assets/images/mosaico_natura/participa-05.png b/app/assets/images/mosaico_natura/participa-05.png new file mode 100755 index 0000000..d2c60e2 Binary files /dev/null and b/app/assets/images/mosaico_natura/participa-05.png differ diff --git a/app/assets/images/mosaico_natura/participa-flecha.png b/app/assets/images/mosaico_natura/participa-flecha.png new file mode 100755 index 0000000..e231223 Binary files /dev/null and b/app/assets/images/mosaico_natura/participa-flecha.png differ diff --git a/app/assets/images/mosaico_natura/premios-1o.png b/app/assets/images/mosaico_natura/premios-1o.png new file mode 100755 index 0000000..2885d91 Binary files /dev/null and b/app/assets/images/mosaico_natura/premios-1o.png differ diff --git a/app/assets/images/mosaico_natura/premios-2o.png b/app/assets/images/mosaico_natura/premios-2o.png new file mode 100755 index 0000000..e981544 Binary files /dev/null and b/app/assets/images/mosaico_natura/premios-2o.png differ diff --git a/app/assets/images/mosaico_natura/tutorial_foto.pdf b/app/assets/images/mosaico_natura/tutorial_foto.pdf new file mode 100755 index 0000000..9d7e633 Binary files /dev/null and b/app/assets/images/mosaico_natura/tutorial_foto.pdf differ diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index b3c9bab..e90d764 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -11,8 +11,9 @@ // about supported directives. // //= require jquery3 +//= require rails-ujs +//= require cocoon //= require popper //= require bootstrap-sprockets -// require rails-ujs //= require turbolinks // require_tree . diff --git a/app/assets/javascripts/entre_azul_y_verde/entre_azul_y_verde.js b/app/assets/javascripts/entre_azul_y_verde/entre_azul_y_verde.js index ea7521b..082ee5a 100644 --- a/app/assets/javascripts/entre_azul_y_verde/entre_azul_y_verde.js +++ b/app/assets/javascripts/entre_azul_y_verde/entre_azul_y_verde.js @@ -11,8 +11,9 @@ // about supported directives. // //= require jquery3 +//= require rails-ujs +//= require cocoon //= require popper //= require bootstrap-sprockets -// require rails-ujs //= require turbolinks //= require entre_azul_y_verde/entre_azul_y_verde_extra diff --git a/app/assets/javascripts/entre_azul_y_verde/entre_azul_y_verde_extra.js b/app/assets/javascripts/entre_azul_y_verde/entre_azul_y_verde_extra.js index b3c9bab..3388210 100644 --- a/app/assets/javascripts/entre_azul_y_verde/entre_azul_y_verde_extra.js +++ b/app/assets/javascripts/entre_azul_y_verde/entre_azul_y_verde_extra.js @@ -1,18 +1,4 @@ -// This is a manifest file that'll be compiled into application.js, which will include all the files -// listed below. -// -// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, or any plugin's -// vendor/assets/javascripts directory can be referenced here using a relative path. -// -// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the -// compiled file. JavaScript code in this file should be added after the last require_* statement. -// -// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details -// about supported directives. -// -//= require jquery3 -//= require popper -//= require bootstrap-sprockets -// require rails-ujs -//= require turbolinks -// require_tree . +$(document).ready(function(){ + +}); + diff --git a/app/assets/javascripts/mosaico_natura/inicio.js b/app/assets/javascripts/mosaico_natura/inicio.js deleted file mode 100644 index 24f83d1..0000000 --- a/app/assets/javascripts/mosaico_natura/inicio.js +++ /dev/null @@ -1,3 +0,0 @@ -# Place all the behaviors and hooks related to the matching controller here. -# All this logic will automatically be available in application.js. -# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/javascripts/mosaico_natura/mosaico_natura.js b/app/assets/javascripts/mosaico_natura/mosaico_natura.js new file mode 100644 index 0000000..a601d2d --- /dev/null +++ b/app/assets/javascripts/mosaico_natura/mosaico_natura.js @@ -0,0 +1,19 @@ +// This is a manifest file that'll be compiled into application.js, which will include all the files +// listed below. +// +// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, or any plugin's +// vendor/assets/javascripts directory can be referenced here using a relative path. +// +// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the +// compiled file. JavaScript code in this file should be added after the last require_* statement. +// +// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details +// about supported directives. +// +//= require jquery3 +//= require rails-ujs +//= require cocoon +//= require popper +//= require bootstrap-sprockets +//= require turbolinks +//= require mosaico_natura/mosaico_natura_extra diff --git a/app/assets/javascripts/mosaico_natura/mosaico_natura_extra.js b/app/assets/javascripts/mosaico_natura/mosaico_natura_extra.js new file mode 100644 index 0000000..dd890c5 --- /dev/null +++ b/app/assets/javascripts/mosaico_natura/mosaico_natura_extra.js @@ -0,0 +1,70 @@ +$(document).ready(function(){ + $('[data-toggle="tooltip"]').tooltip(); + $('.toast').toast('show'); + + //Coloca los nested-fields despues de los botones (.links) + $("#medias a.add_fields").data("association-insertion-method", 'after'); + + + // limits the number of categories + check_to_hide_or_show_add_link(); + + $('#medias').on('cocoon:after-insert', function() { + check_to_hide_or_show_add_link(); + }); + + $('#medias').on('cocoon:after-remove', function() { + check_to_hide_or_show_add_link(); + }); + + function check_to_hide_or_show_add_link() { + $("#medias a.add_fields").each(function () { + link = $(this); + nestedClass = $('.nested-fields-for-'+link.data('categoria')+':visible'); + link.attr('data-after',link.data('maximos') - nestedClass.length); + if (nestedClass.length == link.data('maximos')) { + link.removeClass('d-inline-flex').addClass('disabled'); + } else { + link.addClass('d-inline-flex').removeClass('disabled'); + } + }); + } + + $("#medias").on('change', '.file-to-upload', function(e) { + + if(this.files[0].type.indexOf('video') == 0){ + return true; + } + + var reader = new FileReader(); + //Read the contents of Image File. + reader.readAsDataURL(this.files[0]); + reader.onload = function (e) { + + //Initiate the JavaScript Image object. + var image = new Image(); + + //Set the Base64 string return from FileReader as source. + image.src = e.target.result; + + //Validate the File Height and Width. + image.onload = function () { + var h = this.height; + var w = this.width; + console.log(h + " - " + w); + var largerSide = h > w ? h : w; + console.log(largerSide); + if (largerSide > 3000 && largerSide < 4500) { + console.log("Imagen con medidas adecuadas"); + return true; + }else { + alert("Cambia tu foto, no cumple con las medidas mínimas/máximas especificadas en las bases del concurso:\n(Tamaño mínimo: 3,000 pixeles por lado más grande\nTamaño máximo: 4,500 pixeles por lado más grande)\nde subirla sera descalificada."); + return false; + } + + }; + }; + }); + +}); + diff --git a/app/assets/stylesheets/entre_azul_y_verde/bootstrap-variable-overrides.scss b/app/assets/stylesheets/entre_azul_y_verde/bootstrap-variable-overrides.scss index 936bcd8..7af3ed3 100644 --- a/app/assets/stylesheets/entre_azul_y_verde/bootstrap-variable-overrides.scss +++ b/app/assets/stylesheets/entre_azul_y_verde/bootstrap-variable-overrides.scss @@ -3,15 +3,15 @@ $enable-gradients: true !default; /* Font para biomex más las default de Bootstrap */ -$font-size-base: .85rem !default; -$font-family-sans-serif: opensans, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;; +$font-size-base: 1.25rem !default; +$font-family-sans-serif: 'McLaren', cursive, opensans, -apple-system, BlinkMacSystemFont !default;; -$h1-font-size: $font-size-base * 2 !default; -$h2-font-size: $font-size-base * 1.75 !default; -$h3-font-size: $font-size-base * 1.5 !default; -$h4-font-size: $font-size-base * 1.25 !default; -$h5-font-size: $font-size-base * 1 !default; -$h6-font-size: $font-size-base * 0.9 !default; +/*$h1-font-size: $font-size-base * 2 !default;*/ +/*$h2-font-size: $font-size-base * 1.75 !default;*/ +/*$h3-font-size: $font-size-base * 1.5 !default;*/ +/*$h4-font-size: $font-size-base * 1.25 !default;*/ +/*$h5-font-size: $font-size-base * 1 !default;*/ +/*$h6-font-size: $font-size-base * 0.9 !default;*/ /* Breadcrumbs overrides! */ $breadcrumb-padding-y: .5rem !default; @@ -25,10 +25,12 @@ $breadcrumb-border-radius: 0 !default; $enable-responsive-font-sizes: true !default; //$primary: #bd0016; -$primary: #800000; -$success: #A0C11F; -$info: #104C5B; -$warning: #ea9028; -$danger: #C77878; +$primary: #fc6042; +//$success: #A0C11F; +$info: #ffaa00; +//$warning: #ea9028; +//$danger: #C77878; -$embed-responsive-aspect-ratios: ((21 9), (23 9), (16 9), (11 4), (4 3), (1 1)) !default; \ No newline at end of file +$link-color: #eabd0d !default; + +$embed-responsive-aspect-ratios: ((21 9), (23 9), (16 9), (11 4), (4 3), (1 1)) !default; diff --git a/app/assets/stylesheets/entre_azul_y_verde/entre_azul_y_verde.scss b/app/assets/stylesheets/entre_azul_y_verde/entre_azul_y_verde.scss index 00a9b75..7c7c45f 100644 --- a/app/assets/stylesheets/entre_azul_y_verde/entre_azul_y_verde.scss +++ b/app/assets/stylesheets/entre_azul_y_verde/entre_azul_y_verde.scss @@ -1,4 +1,6 @@ +@import url('https://fonts.googleapis.com/css2?family=McLaren&display=swap'); +@import "font-awesome"; @import 'entre_azul_y_verde/bootstrap-variable-overrides'; @import 'bootstrap'; @import "entre_azul_y_verde/entre_azul_y_verde_extra"; -//@import "font-awesome"; + diff --git a/app/assets/stylesheets/entre_azul_y_verde/entre_azul_y_verde_extra.scss b/app/assets/stylesheets/entre_azul_y_verde/entre_azul_y_verde_extra.scss index a5917fe..6370f41 100644 --- a/app/assets/stylesheets/entre_azul_y_verde/entre_azul_y_verde_extra.scss +++ b/app/assets/stylesheets/entre_azul_y_verde/entre_azul_y_verde_extra.scss @@ -1,31 +1,7 @@ -header{ - background-color: #333333; - color: #fafafa; -} -header img{ - max-width: 3rem; -} -#menu-header{ - list-style-type: none; - overflow: hidden; -} -#menu-header li { - float: left; -} +.dropdown-menu{right: 0; left: unset!important;} -#menu-header li a { - display: block; - // color: white; - // text-align: center; - // padding: 16px; - text-decoration: none; -} - -#menu-header li a:hover { - background-color: #111111; -} -#inscripcion, #intro{ - background-image: url('/assets/entre_azul_y_verde/fondo.jpg'); +#intro{ + background-image: url('/concursos_assets/entre_azul_y_verde/fondo.jpg'); background-attachment: fixed; background-position: center center; background-repeat: no-repeat; @@ -34,3 +10,81 @@ header img{ background-size: cover; -o-background-size: cover; } + +/* ¿Que es?*/ +#queEs{ + background-color: #0c434c; +} +#queEs .sub-header{ + background-color: #39868f; +} + +/* ¿Que es?*/ +#jurado{ + background-color: #4f786a; +} +#jurado .sub-header{ + background-color: #1d4437; +} + +/* Categorías */ +#categorias{ + background-color: #675f00; +} +#categorias .sub-header{ + background-color: #acbf55; +} +.pleca_ama { + font-size: 22px; + vertical-align: top; + line-height: 33px; +} +.tabla-premios-adulto table{ + margin-bottom:5px; + font-size:18px; + line-height:1.2; + text-align:center; + background-color:transparent; + color: #FFCA84; + } +.tabla-premios-adulto img{ + margin-bottom:10px; + } + +/* Bases */ +#bases, .bases{ + background-color: #402400; +} +#bases .sub-header{ + background-color: #b96800; +} + +/* Medios */ +#medios{ + background-color: #51786a; +} +#medios .sub-header{ + background-color: #1f4747; +} +.icono-fa{ + color: #b7d891; +} + +/* Inscripcion */ +#inscripcion{ background-color: #621a5e;} +#inscripcion .sub-header{ background-color: #bf5555; font-family: 'CHICKEN Pie Height'; color: white;} +#inscripcion .sub-header img{ height: 9rem;} +#inscripcion .form-control, #inscripcion .form-check-inline{ + background-color: #3d0c49; + border: none; +} +#inscripcion, #inscripcion .form-control, #inscripcion .form-check-inline{ color: #ffaa00;} +#inscripcion ::placeholder{ color: rgba(255, 170, 0, 0.8); font-size: .8em} + +@font-face { + font-family: 'CHICKEN Pie Height'; + src: url('/concursos_assets/chicken-pie/chicken-pie-height.otf'), + url('/concursos_assets/chicken-pie/chicken-pie-height.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} \ No newline at end of file diff --git a/app/assets/stylesheets/mosaico_natura/bootstrap-variable-overrides.scss b/app/assets/stylesheets/mosaico_natura/bootstrap-variable-overrides.scss new file mode 100644 index 0000000..e685e72 --- /dev/null +++ b/app/assets/stylesheets/mosaico_natura/bootstrap-variable-overrides.scss @@ -0,0 +1,35 @@ +// Options +// Quickly modify global styling by enabling or disabling optional features. +$enable-gradients: true !default; + +/* Font para biomex más las default de Bootstrap */ +$font-size-base: 1rem !default; +$font-family-sans-serif: 'Montserrat', sans-serif, -apple-system, BlinkMacSystemFont !default; + +/*$h1-font-size: $font-size-base * 2 !default;*/ +/*$h2-font-size: $font-size-base * 1.75 !default;*/ +/*$h3-font-size: $font-size-base * 1.5 !default;*/ +/*$h4-font-size: $font-size-base * 1.25 !default;*/ +/*$h5-font-size: $font-size-base * 1 !default;*/ +/*$h6-font-size: $font-size-base * 0.9 !default;*/ + +/* Breadcrumbs overrides! */ +/*$breadcrumb-padding-y: .5rem !default;*/ + +/*$breadcrumb-item-padding: .25rem !default;*/ +/*$breadcrumb-margin-bottom: 1rem !default;*/ +/*$breadcrumb-bg: #d0d0d0 !default;*/ + +$breadcrumb-border-radius: 0 !default; + +$enable-responsive-font-sizes: true !default; + +$primary: #800000; +//$success: #A0C11F; +//$info: #ffaa00; +//$warning: #ea9028; +//$danger: #C77878; + +$link-color: #800000 !default; + +$embed-responsive-aspect-ratios: ((21 9), (23 9), (16 9), (11 4), (4 3), (1 1)) !default; diff --git a/app/assets/stylesheets/mosaico_natura/inicio.scss b/app/assets/stylesheets/mosaico_natura/inicio.scss deleted file mode 100644 index a220724..0000000 --- a/app/assets/stylesheets/mosaico_natura/inicio.scss +++ /dev/null @@ -1,3 +0,0 @@ -// Place all the styles related to the mosaicoNatura/inicio controller here. -// They will automatically be included in application.scss. -// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/mosaico_natura/mosaico_natura.scss b/app/assets/stylesheets/mosaico_natura/mosaico_natura.scss new file mode 100644 index 0000000..c48b419 --- /dev/null +++ b/app/assets/stylesheets/mosaico_natura/mosaico_natura.scss @@ -0,0 +1,6 @@ +//@import url('https://fonts.googleapis.com/css2?family=McLaren&display=swap'); +@import "font-awesome"; +@import 'mosaico_natura/bootstrap-variable-overrides'; +@import 'bootstrap'; +@import "mosaico_natura/mosaico_natura_extra"; +@import url('https://fonts.googleapis.com/css2?family=Montserrat+Alternates:ital,wght@0,100;0,500;0,700;1,100;1,500;1,700&family=Montserrat:ital,wght@0,100;0,500;0,700;1,100;1,500;1,700&display=swap'); \ No newline at end of file diff --git a/app/assets/stylesheets/mosaico_natura/mosaico_natura_extra.scss b/app/assets/stylesheets/mosaico_natura/mosaico_natura_extra.scss new file mode 100755 index 0000000..edaa7fb --- /dev/null +++ b/app/assets/stylesheets/mosaico_natura/mosaico_natura_extra.scss @@ -0,0 +1,112 @@ +body{} +.dropdown-menu{right: 0; left: unset!important;} + +#intro{ + /*background-image: url();*/ + background-attachment: fixed; + background-position: center center; + background-repeat: no-repeat; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + -o-background-size: cover; + background-color: #000a1e; +} + +/* ¿Quiénes somos?*/ +#quienesSomos .sub-header{ + background-image: url('/concursos_assets/mosaico_natura/bg-quienesSomos.jpg'); +} + +/* Concurso */ +#concurso .sub-header{ + background-image: url('/concursos_assets/mosaico_natura/bg-concurso.jpg'); +} + +/* Exposiciones */ +#exposiciones .sub-header{ + background-image: url('/concursos_assets/mosaico_natura/bg-exposiciones.jpg'); +} + +/* Medios */ +#medios .sub-header{ + background-image: url('/concursos_assets/mosaico_natura/bg-medios.jpg'); +} + +/* Términos y conidciones */ +#terminos-condiciones .sub-header{ + background-image: url('/concursos_assets/mosaico_natura/bg-legales.jpg'); +} + +/* Galería de ganadores */ +#galeria-ganadores .sub-header{ + background-image: url('/concursos_assets/mosaico_natura/ganadores.jpg'); +} + +/* Galería de menciones honoríficas */ +#galeria-menciones .sub-header{ + background-image: url('/concursos_assets/mosaico_natura/menciones.jpg'); +} + +/* Background de subheaders */ +#quienesSomos .sub-header, #concurso .sub-header, #exposiciones .sub-header, #medios .sub-header, #terminos-condiciones .sub-header, #galeria-ganadores .sub-header, #galeria-menciones .sub-header{ + background-position: center center; + background-repeat: no-repeat; + background-size: cover; + height: 300px; + padding: 60px 0; + margin:0; + text-shadow: 2px 2px 5px #000; +} + +/* Colaboradores */ +#colaboradores{background-color: #2d2c27;} +#colaboradores .sub-header{ + padding: 60px 0; + margin:0; +} + +/* Inscripcion */ +#inscripcion{ + font-family: 'Montserrat Alternates'; +} +#inscripcion div[class*="nested-fields-for-"]{ + min-height: 600px; +} +#inscripcion .bg-gradient-light{ + box-shadow: 0 1rem 3rem rgb(0, 0, 0,)!important; +} +footer #copyright p{ + font-size:12px; + line-height:1; + margin:0; + color: gray; + padding: 15px; +} + +#imgmosaicosomos { + vertical-align: baseline; +} + +.conabio { + font-variant: small-caps; +} + +.bg-dark { + background-color: #2d2c27 !important; +} + +footer ul { + padding: 0; + list-style-type: none; + text-decoration: none; + line-height: 1.15; +} + +footer a { + color: #fff !important; +} + +footer a:hover { + color: #ffc107 !important; +} diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 1c07694..042b973 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,3 +1,40 @@ class ApplicationController < ActionController::Base - protect_from_forgery with: :exception + protect_from_forgery with: :exception + + protected + + # Limita la aplicacion a un usuario y contrasenia general + def authenticate + @juez = nil + if params['calificacion']['concurso'] == '2' + authenticate_mn + else + authenticate_ayv + end + end + + def authenticate_ayv + authorized = false + authenticate_or_request_with_http_basic do |username, password| + Rails.application.secrets.entre_azul_y_verde.each do |k,v| + authorized = (v[:usuario] == username && v[:password] == password) + @juez = v if authorized + return if authorized + end + end + end + + def authenticate_mn + authorized = false + authenticate_or_request_with_http_basic do |username, password| + Rails.application.secrets.mosaico_natura.each do |k,v| + authorized = (v[:usuario] == username && v[:password] == password) + @juez = v if authorized + @juez[:tipo] = k if authorized + return if authorized + end + end + end + end + diff --git a/app/controllers/calificaciones_controller.rb b/app/controllers/calificaciones_controller.rb new file mode 100644 index 0000000..684f3eb --- /dev/null +++ b/app/controllers/calificaciones_controller.rb @@ -0,0 +1,66 @@ +class CalificacionesController < ApplicationController + before_action :set_calificacion, only: %i[ update destroy ] + before_action :authenticate, only: %i[ create update destroy ] + + # POST /calificaciones or /calificaciones.json + def create + @calificacion = Calificacion.new(calificacion_params) + + respond_to do |format| + if @calificacion.save + #format.html { redirect_to @calificacion, notice: "Calificacion was successfully created." } + format.json { render json: {status: :created, location: @calificacion } } + else + #format.html { render :new, status: :unprocessable_entity } + format.json { render json: @calificacion.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /calificaciones/1 or /calificaciones/1.json + def update + unless(@juez.nil?) + #Jalo la calificacion entera a tres digitos en la base + cal_global = @calificacion.calificacion.to_s + #cambio solo lacalificacion determinada por la posicion del juez + cal_global[@juez[:posicion]] = calificacion_params[:calificacion] + #Como era string, pues la calificacion ya cambada a 3 digitos la sustituyo en los params para q el modelo la reciba peladita + params[:calificacion][:calificacion] = cal_global + end + + respond_to do |format| + if @calificacion.update(calificacion_params) + #format.html { redirect_to @calificacion, notice: "Calificacion was successfully updated." } + format.json { render json: {status: :updated, location: @calificacion } } + else + #format.html { render :edit, status: :unprocessable_entity } + format.json { render json: @calificacion.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /calificaciones/1 or /calificaciones/1.json + def destroy + @calificacion.destroy + respond_to do |format| + format.html { redirect_to calificaciones_url, notice: "Calificacion was successfully destroyed." } + format.json { head :no_content } + end + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_calificacion + id = params[:id] + if params['calificacion']['concurso'] == '2' + @calificacion = Calificacion.find_by_media_id(id) + else + @calificacion = Calificacion.find_by_usuario_id(id) + end + end + + # Only allow a list of trusted parameters through. + def calificacion_params + params.fetch(:calificacion, {}).permit(:usuario_id, :medias_id, :calificacion ) + end +end diff --git a/app/controllers/entre_azul_y_verde/devise/confirmations_controller.rb b/app/controllers/entre_azul_y_verde/devise/confirmations_controller.rb new file mode 100644 index 0000000..71dd460 --- /dev/null +++ b/app/controllers/entre_azul_y_verde/devise/confirmations_controller.rb @@ -0,0 +1,3 @@ +class EntreAzulYVerde::Devise::ConfirmationsController < ::Devise::ConfirmationsController + layout 'entre_azul_y_verde' +end diff --git a/app/controllers/entre_azul_y_verde/devise/mailer_controller.rb b/app/controllers/entre_azul_y_verde/devise/mailer_controller.rb new file mode 100644 index 0000000..68ef453 --- /dev/null +++ b/app/controllers/entre_azul_y_verde/devise/mailer_controller.rb @@ -0,0 +1,4 @@ +class EntreAzulYVerde::Devise::Mailer < ::Devise::Mailer + default from: 'noreply@conabio.gob.mx' + layout 'entre_azul_y_verde' +end diff --git a/app/controllers/entre_azul_y_verde/devise/passwords_controller.rb b/app/controllers/entre_azul_y_verde/devise/passwords_controller.rb new file mode 100644 index 0000000..9735f9b --- /dev/null +++ b/app/controllers/entre_azul_y_verde/devise/passwords_controller.rb @@ -0,0 +1,3 @@ +class EntreAzulYVerde::Devise::PasswordsController < ::Devise::PasswordsController + layout 'entre_azul_y_verde' +end diff --git a/app/controllers/entre_azul_y_verde/devise/registrations_controller.rb b/app/controllers/entre_azul_y_verde/devise/registrations_controller.rb new file mode 100644 index 0000000..24ef553 --- /dev/null +++ b/app/controllers/entre_azul_y_verde/devise/registrations_controller.rb @@ -0,0 +1,7 @@ +class EntreAzulYVerde::Devise::RegistrationsController < ::Devise::RegistrationsController + layout 'entre_azul_y_verde' + + def after_sign_up_path_for(resource) + new_entre_azul_y_verde_registro_path + end +end diff --git a/app/controllers/entre_azul_y_verde/devise/sessions_controller.rb b/app/controllers/entre_azul_y_verde/devise/sessions_controller.rb new file mode 100644 index 0000000..c669198 --- /dev/null +++ b/app/controllers/entre_azul_y_verde/devise/sessions_controller.rb @@ -0,0 +1,16 @@ +class EntreAzulYVerde::Devise::SessionsController < ::Devise::SessionsController + layout 'entre_azul_y_verde' + + private + + def after_sign_in_path_for(resource) + @registro = UsuarioAyv.where(user_id: resource.id).first + + if @registro.present? + edit_entre_azul_y_verde_registro_path(@registro) + else # Es nuevo usuario + new_entre_azul_y_verde_registro_path + end + end + +end \ No newline at end of file diff --git a/app/controllers/entre_azul_y_verde/devise/unlocks_controller.rb b/app/controllers/entre_azul_y_verde/devise/unlocks_controller.rb new file mode 100644 index 0000000..491447b --- /dev/null +++ b/app/controllers/entre_azul_y_verde/devise/unlocks_controller.rb @@ -0,0 +1,3 @@ +class EntreAzulYVerde::Devise::UnlocksController < ::Devise::UnlocksController + layout 'entre_azul_y_verde' +end diff --git a/app/controllers/entre_azul_y_verde/entre_azul_y_verde_controller.rb b/app/controllers/entre_azul_y_verde/entre_azul_y_verde_controller.rb new file mode 100644 index 0000000..7ff247d --- /dev/null +++ b/app/controllers/entre_azul_y_verde/entre_azul_y_verde_controller.rb @@ -0,0 +1,10 @@ +class EntreAzulYVerde::EntreAzulYVerdeController < ApplicationController + layout 'entre_azul_y_verde' + + protected + + def authenticate + @juez = nil + authenticate_ayv + end +end \ No newline at end of file diff --git a/app/controllers/entre_azul_y_verde/galerias_controller.rb b/app/controllers/entre_azul_y_verde/galerias_controller.rb index b6c47d3..e691ce3 100644 --- a/app/controllers/entre_azul_y_verde/galerias_controller.rb +++ b/app/controllers/entre_azul_y_verde/galerias_controller.rb @@ -1,71 +1,18 @@ -class EntreAzulYVerde::GaleriasController < ApplicationController - layout 'entre_azul_y_verde' - - before_action :set_entre_azul_y_verde_galeria, only: %i[ show edit update destroy ] +class EntreAzulYVerde::GaleriasController < EntreAzulYVerde::EntreAzulYVerdeController - # GET /entre_azul_y_verde/galerias or /entre_azul_y_verde/galerias.json def index - @entre_azul_y_verde_galerias = EntreAzulYVerde::Galeria.all - end - - # GET /entre_azul_y_verde/galerias/1 or /entre_azul_y_verde/galerias/1.json - def show - end - - # GET /entre_azul_y_verde/galerias/new - def new - @entre_azul_y_verde_galeria = EntreAzulYVerde::Galeria.new - end - - # GET /entre_azul_y_verde/galerias/1/edit - def edit - end - - # POST /entre_azul_y_verde/galerias or /entre_azul_y_verde/galerias.json - def create - @entre_azul_y_verde_galeria = EntreAzulYVerde::Galeria.new(entre_azul_y_verde_galeria_params) - - respond_to do |format| - if @entre_azul_y_verde_galeria.save - format.html { redirect_to @entre_azul_y_verde_galeria, notice: "Galeria was successfully created." } - format.json { render :show, status: :created, location: @entre_azul_y_verde_galeria } - else - format.html { render :new, status: :unprocessable_entity } - format.json { render json: @entre_azul_y_verde_galeria.errors, status: :unprocessable_entity } - end + @ganadores = {} + @ganadores[:de_6_a_8] = UsuarioAyv.dibujos_ganadores.menores_a_9 + @ganadores[:de_9_a_11] = UsuarioAyv.dibujos_ganadores.de_9_a_11 + @ganadores[:de_12_a_14] = UsuarioAyv.dibujos_ganadores.de_12_a_14 + @ganadores[:de_15_a_17] = UsuarioAyv.dibujos_ganadores.mayores_a_14 + + @menciones = {} + Direccion::ESTADOS.each do |x| + mencion = UsuarioAyv.dibujos_para_menciones(x[1]) + next unless mencion.present? + @menciones[x[0]] = mencion end + end - - # PATCH/PUT /entre_azul_y_verde/galerias/1 or /entre_azul_y_verde/galerias/1.json - def update - respond_to do |format| - if @entre_azul_y_verde_galeria.update(entre_azul_y_verde_galeria_params) - format.html { redirect_to @entre_azul_y_verde_galeria, notice: "Galeria was successfully updated." } - format.json { render :show, status: :ok, location: @entre_azul_y_verde_galeria } - else - format.html { render :edit, status: :unprocessable_entity } - format.json { render json: @entre_azul_y_verde_galeria.errors, status: :unprocessable_entity } - end - end - end - - # DELETE /entre_azul_y_verde/galerias/1 or /entre_azul_y_verde/galerias/1.json - def destroy - @entre_azul_y_verde_galeria.destroy - respond_to do |format| - format.html { redirect_to entre_azul_y_verde_galerias_url, notice: "Galeria was successfully destroyed." } - format.json { head :no_content } - end - end - - private - # Use callbacks to share common setup or constraints between actions. - def set_entre_azul_y_verde_galeria - @entre_azul_y_verde_galeria = EntreAzulYVerde::Galeria.find(params[:id]) - end - - # Only allow a list of trusted parameters through. - def entre_azul_y_verde_galeria_params - params.fetch(:entre_azul_y_verde_galeria, {}) - end end diff --git a/app/controllers/entre_azul_y_verde/inicio_controller.rb b/app/controllers/entre_azul_y_verde/inicio_controller.rb index 145926d..1ef07c7 100644 --- a/app/controllers/entre_azul_y_verde/inicio_controller.rb +++ b/app/controllers/entre_azul_y_verde/inicio_controller.rb @@ -1,7 +1,10 @@ -class EntreAzulYVerde::InicioController < ApplicationController - layout 'entre_azul_y_verde' +class EntreAzulYVerde::InicioController < EntreAzulYVerde::EntreAzulYVerdeController def index end + def bases + render partial: 'bases' + end + end diff --git a/app/controllers/entre_azul_y_verde/panel_controller.rb b/app/controllers/entre_azul_y_verde/panel_controller.rb index 64390fc..3b88df9 100644 --- a/app/controllers/entre_azul_y_verde/panel_controller.rb +++ b/app/controllers/entre_azul_y_verde/panel_controller.rb @@ -1,4 +1,29 @@ -class EntreAzulYVerde::PanelController < ApplicationController - layout 'entre_azul_y_verde' +class EntreAzulYVerde::PanelController < EntreAzulYVerde::EntreAzulYVerdeController + before_action :authenticate, only: %i[ precalificacion calificacion desempate] + def precalificacion + @dibujos = {} + @dibujos[:de_6_a_8] = UsuarioAyv.dibujos.de_6_a_8 + @dibujos[:de_9_a_11] = UsuarioAyv.dibujos.de_9_a_11 + @dibujos[:de_12_a_14] = UsuarioAyv.dibujos.de_12_a_14 + @dibujos[:de_15_a_17] = UsuarioAyv.dibujos.de_15_a_17 + @dibujos[:menores_a_6] = UsuarioAyv.dibujos.menores_a_6 + @dibujos[:mayores_a_17] = UsuarioAyv.dibujos.mayores_a_17 + end + + def calificacion + @dibujos = {} + @dibujos[:menores_a_9] = UsuarioAyv.dibujos_finalistas.menores_a_9 + @dibujos[:de_9_a_11] = UsuarioAyv.dibujos_finalistas.de_9_a_11 + @dibujos[:de_12_a_14] = UsuarioAyv.dibujos_finalistas.de_12_a_14 + @dibujos[:mayores_a_14] = UsuarioAyv.dibujos_finalistas.mayores_a_14 + end + + def desempate + @dibujos = {} + @dibujos[:menores_a_9] = UsuarioAyv.dibujos_desempate.menores_a_9 + @dibujos[:de_9_a_11] = UsuarioAyv.dibujos_desempate.de_9_a_11 + @dibujos[:de_12_a_14] = UsuarioAyv.dibujos_desempate.de_12_a_14 + @dibujos[:mayores_a_14] = UsuarioAyv.dibujos_desempate.mayores_a_14 + end end diff --git a/app/controllers/entre_azul_y_verde/registro_controller.rb b/app/controllers/entre_azul_y_verde/registro_controller.rb index b91b85e..7997dfb 100644 --- a/app/controllers/entre_azul_y_verde/registro_controller.rb +++ b/app/controllers/entre_azul_y_verde/registro_controller.rb @@ -1,70 +1,77 @@ -class EntreAzulYVerde::RegistroController < ApplicationController - layout 'entre_azul_y_verde' +class EntreAzulYVerde::RegistroController < EntreAzulYVerde::EntreAzulYVerdeController before_action :set_registro, only: %i[ show edit update destroy ] + before_action :authenticate_user_ayv! - # GET /usuarios or /usuarios.json - def index - end - - # GET /usuarios/1 or /usuarios/1.json - def show - end - - # GET /usuarios/new + # GET /registro/new def new - @registro = EntreAzulYVerde::EayvUsuario.new + @registro = UsuarioAyv.where(user_id: current_user_ayv.id).first + + if @registro.present? + redirect_to edit_entre_azul_y_verde_registro_path(@registro) + else # Es nuevo usuario + @form_params = { url: '/entre_azul_y_verde/registro', method: 'post' } + @registro = UsuarioAyv.new + @registro.build_direccion + @registro.build_tutor + @registro.media.build(posicion: 1) + @registro.media.build(posicion: 2).build_media_metadato # Solo la foto final tiene asociado los metadatos + end end - # GET /usuarios/1/edit + # GET /registro/1/edit def edit + @form_params = { url: entre_azul_y_verde_registro_path(@registro), method: 'put' } end - # POST /usuarios or /usuarios.json + # POST /registro or /registro.json def create - @registro = EntreAzulYVerde::EayvUsuario.new(registro_params) + @registro = UsuarioAyv.new(registro_params) + + # Asigna le concurso + concurso = CatConcurso.where(nombre_concurso: UsuarioAyv::CONCURSO).first + @registro.concurso_id = concurso.id respond_to do |format| if @registro.save - format.html { redirect_to @registro, notice: "Usuario was successfully created." } + format.html { redirect_to edit_entre_azul_y_verde_registro_path(@registro), notice: "Tu registro fue creado exitosamente." } format.json { render :show, status: :created, location: @registro } else - format.html { render :new, status: :unprocessable_entity } + @form_params = { url: '/entre_azul_y_verde/registro', method: 'post' } + format.html { render :new, locals: { notice: "Hubo un problema al guardar tus datos. Por favor verifica los campos en rojo"} } format.json { render json: @registro.errors, status: :unprocessable_entity } end end end - # PATCH/PUT /usuarios/1 or /usuarios/1.json + # PATCH/PUT /registro/1 or /registro/1.json def update respond_to do |format| - if @registro.update(usuario_params) - format.html { redirect_to @registro, notice: "Usuario was successfully updated." } + if @registro.update(registro_params) + @form_params = { url: entre_azul_y_verde_registro_path(@registro), method: 'put' } + format.html { redirect_to edit_entre_azul_y_verde_registro_path(@registro), notice: "Tu registro fue actualizado exitosamente." } format.json { render :show, status: :ok, location: @registro } else - format.html { render :edit, status: :unprocessable_entity } + @form_params = { url: entre_azul_y_verde_registro_path(@registro), method: 'put' } + format.html { render :edit, locals: { notice: "Hubo un problema al guardar tus datos. Por favor verifica los campos en rojo"} } format.json { render json: @registro.errors, status: :unprocessable_entity } end end end - - # DELETE /usuarios/1 or /usuarios/1.json - def destroy - @registro.destroy - respond_to do |format| - format.html { redirect_to usuarios_url, notice: "Usuario was successfully destroyed." } - format.json { head :no_content } - end - end + private # Use callbacks to share common setup or constraints between actions. def set_registro - @registro = EntreAzulYVerde::EayvUsuario.find(params[:id]) + @registro = UsuarioAyv.find(params[:id]) end # Only allow a list of trusted parameters through. def registro_params - params.require(:usuario).permit(:email, :nombre, :apellido_paterno, :apellido_materno, :fecha_nacimiento_nac, :lugar_nacimiento, :curp, :password, :password_confirmation) + params.require(:usuario_ayv).permit(:nombre, :apellido_paterno, :apellido_materno, :fecha_nacimiento, :lugar_nacimiento, :medio, :otro_medio, :user_id, + tutor_attributes: [:id, :nombre, :apellido_paterno, :apellido_materno, :telefono_contacto, :usuario_id, :_destroy], + direccion_attributes: [:id, :calle, :numero, :interior, :colonia, :municipio, :cp, :estado, :usuario_id, :_destroy], + media_attributes: [:id, :original_filename, :posicion, :filename, :titulo, :fecha_subida, :ruta, :size, :usuario_id, :_destroy, media_metadato_attributes: [:id, :titulo, :descripcion, :tecnica, :compromiso, :media_id, :destroy]], + ) end end diff --git a/app/controllers/mosaico_natura/devise/confirmations_controller.rb b/app/controllers/mosaico_natura/devise/confirmations_controller.rb new file mode 100644 index 0000000..5bccb9a --- /dev/null +++ b/app/controllers/mosaico_natura/devise/confirmations_controller.rb @@ -0,0 +1,3 @@ +class MosaicoNatura::Devise::ConfirmationsController < ::Devise::ConfirmationsController + layout 'mosaico_natura' +end diff --git a/app/controllers/mosaico_natura/devise/mailer_controller.rb b/app/controllers/mosaico_natura/devise/mailer_controller.rb new file mode 100644 index 0000000..e7f5082 --- /dev/null +++ b/app/controllers/mosaico_natura/devise/mailer_controller.rb @@ -0,0 +1,4 @@ +class MosaicoNatura::Devise::Mailer < ::Devise::Mailer + default from: 'noreply@conabio.gob.mx' + layout 'mosaico_natura' +end diff --git a/app/controllers/mosaico_natura/devise/passwords_controller.rb b/app/controllers/mosaico_natura/devise/passwords_controller.rb new file mode 100644 index 0000000..1769949 --- /dev/null +++ b/app/controllers/mosaico_natura/devise/passwords_controller.rb @@ -0,0 +1,3 @@ +class MosaicoNatura::Devise::PasswordsController < ::Devise::PasswordsController + layout 'mosaico_natura' +end diff --git a/app/controllers/mosaico_natura/devise/registrations_controller.rb b/app/controllers/mosaico_natura/devise/registrations_controller.rb new file mode 100644 index 0000000..951cb4f --- /dev/null +++ b/app/controllers/mosaico_natura/devise/registrations_controller.rb @@ -0,0 +1,21 @@ +class MosaicoNatura::Devise::RegistrationsController < ::Devise::RegistrationsController + layout 'mosaico_natura' + + def after_sign_up_path_for(resource) + new_mosaico_natura_registro_path + end + + def after_sign_up_path_for(resource) + new_mosaico_natura_registro_path + end + protected + + def configure_sign_up_params + devise_parameter_sanitizer.permit(:sign_up, keys: [:terms]) + end + private + + def sign_up_params + params.require(:user_mn).permit(:email, :password, :password_confirmation, :terms) + end +end diff --git a/app/controllers/mosaico_natura/devise/sessions_controller.rb b/app/controllers/mosaico_natura/devise/sessions_controller.rb new file mode 100644 index 0000000..3b10e37 --- /dev/null +++ b/app/controllers/mosaico_natura/devise/sessions_controller.rb @@ -0,0 +1,16 @@ +class MosaicoNatura::Devise::SessionsController < ::Devise::SessionsController + layout 'mosaico_natura' + + private + + def after_sign_in_path_for(resource) + @registro = MosaicoNatura::UsuarioMn.where(user_id: resource.id).first + + if @registro.present? + edit_user_mn_registration_path(@registro) + else # Es nuevo usuario + new_mosaico_natura_registro_path + end + end + +end \ No newline at end of file diff --git a/app/controllers/mosaico_natura/devise/unlocks_controller.rb b/app/controllers/mosaico_natura/devise/unlocks_controller.rb new file mode 100644 index 0000000..b640aa0 --- /dev/null +++ b/app/controllers/mosaico_natura/devise/unlocks_controller.rb @@ -0,0 +1,3 @@ +class MosaicoNatura::Devise::UnlocksController < ::Devise::UnlocksController + layout 'mosaico_natura' +end diff --git a/app/controllers/mosaico_natura/galerias_controller.rb b/app/controllers/mosaico_natura/galerias_controller.rb new file mode 100644 index 0000000..b3c942c --- /dev/null +++ b/app/controllers/mosaico_natura/galerias_controller.rb @@ -0,0 +1,24 @@ +class MosaicoNatura::GaleriasController < MosaicoNatura::MosaicoNaturaController + + layout "mosaico_natura" + + # GET /mosaico_natura/galerias + def index + ganadores = MosaicoNatura::MediaMn.ganadores + @ganadores = {} + @menciones = {} + + ganadores.each_with_index do |ganador, index| + if ((index + 1) % 3) == 0 # Es modulo 3, i.e. la mencion + # Crear la categoria si aun no existe en el hash + @menciones[ganador.nombre_categoria] = [] if !@menciones[ganador.nombre_categoria] + @menciones[ganador.nombre_categoria] << ganador + else + # Crear la categoria si aun no existe en el hash + @ganadores[ganador.nombre_categoria] = [] if !@ganadores[ganador.nombre_categoria] + @ganadores[ganador.nombre_categoria] << ganador + end + end # end each + end + +end \ No newline at end of file diff --git a/app/controllers/mosaico_natura/inicio_controller.rb b/app/controllers/mosaico_natura/inicio_controller.rb index d6a27c9..b604eed 100644 --- a/app/controllers/mosaico_natura/inicio_controller.rb +++ b/app/controllers/mosaico_natura/inicio_controller.rb @@ -1,2 +1,13 @@ -class MosaicoNatura::InicioController < ApplicationController +class MosaicoNatura::InicioController < MosaicoNatura::MosaicoNaturaController + + def index + @categorias = Categoria::CategoriasMN + end + + def bases + render partial: 'bases' + end + + def terminos_condiciones + end end diff --git a/app/controllers/mosaico_natura/mosaico_natura_controller.rb b/app/controllers/mosaico_natura/mosaico_natura_controller.rb new file mode 100644 index 0000000..2a2ba4a --- /dev/null +++ b/app/controllers/mosaico_natura/mosaico_natura_controller.rb @@ -0,0 +1,10 @@ +class MosaicoNatura::MosaicoNaturaController < ApplicationController + layout 'mosaico_natura' + + protected + + def authenticate + @juez = nil + authenticate_mn + end +end \ No newline at end of file diff --git a/app/controllers/mosaico_natura/panel_controller.rb b/app/controllers/mosaico_natura/panel_controller.rb new file mode 100644 index 0000000..d6101dc --- /dev/null +++ b/app/controllers/mosaico_natura/panel_controller.rb @@ -0,0 +1,58 @@ +class MosaicoNatura::PanelController < MosaicoNatura::MosaicoNaturaController + before_action :authenticate, only: %i[ calificacion desempate todos] + + def calificacion + @fotos = {} + MosaicoNatura::CategoriaMn.all.each do |c| + @fotos[c.nombre_categoria] = MosaicoNatura::MediaMn.finalistas.where(categoria_id: c.id) + end + + end + + def desempate + @medias = {} + if params[:categoria].present? + categoria = params[:categoria] + @medias[categoria] = (categoria == 'cineminuto') ? MosaicoNatura::MediaMn.desempate_video_con_datos : MosaicoNatura::MediaMn.desempate_foto_con_datos.where("nombre_categoria = '#{categoria}'") + else + MosaicoNatura::CategoriaMn.all.each do |c| + unless c.id==8 + @medias[c.nombre_categoria] = MosaicoNatura::MediaMn.desempate_foto_con_datos.where(categoria_id: c.id).limit(10) + else + @medias[c.nombre_categoria] = MosaicoNatura::MediaMn.desempate_video_con_datos + end + end + end + + respond_to do |format| + format.html + format.json { render json: @medias.to_json } + end + end + + def ganadores + @medias = {} + MosaicoNatura::CategoriaMn.all.each do |c| + @medias[c.nombre_categoria] = MosaicoNatura::MediaMn.ganadores.where(categoria_id: c.id) + end + + respond_to do |format| + format.html + format.json { render json: @medias.to_json, status: :ok} + end + end + + def todos + @medias = {} + if params[:categoria].present? + categoria = params[:categoria] + @medias[categoria] = MosaicoNatura::MediaMn.todo_de_todos.where("nombre_categoria = '#{categoria}'") + else + MosaicoNatura::CategoriaMn.all.each do |c| + @medias[c.nombre_categoria] = MosaicoNatura::MediaMn.todo_de_todos.where(categoria_id: c.id) + end + end + render json: @medias.to_json + + end +end diff --git a/app/controllers/mosaico_natura/registro_controller.rb b/app/controllers/mosaico_natura/registro_controller.rb new file mode 100644 index 0000000..ba8bddc --- /dev/null +++ b/app/controllers/mosaico_natura/registro_controller.rb @@ -0,0 +1,87 @@ +class MosaicoNatura::RegistroController < MosaicoNatura::MosaicoNaturaController + before_action :set_registro, only: %i[ show edit update destroy ] + before_action :set_categorias, only: %i[ edit update ] + before_action :authenticate_user_mn! + + # GET /registro/new + def new + @registro = MosaicoNatura::UsuarioMn.where(user_id: current_user_mn.id).first + + if @registro.present? + redirect_to edit_mosaico_natura_registro_path(@registro) + else # Es nuevo usuario + @form_params = { url: '/mosaico_natura/registro', method: 'post' } + @registro = MosaicoNatura::UsuarioMn.new + @registro.build_direccion + #@registro.media.build + #@registro.media.build(posicion: 2).build_media_metadato # Solo la foto final tiene asociado los metadatos + end + end + + # GET /registro/1/edit + def edit + @form_params = { url: mosaico_natura_registro_path(@registro), method: 'put' } + end + + # POST /registro or /registro.json + def create + @registro = MosaicoNatura::UsuarioMn.new(registro_params) + + # Asigna le concurso +concurso = CatConcurso.where(nombre_concurso: "mn").first + @registro.concurso_id = concurso.id + + respond_to do |format| + if @registro.save + format.html { redirect_to edit_mosaico_natura_registro_path(@registro), notice: "Tu registro fue creado exitosamente." } + format.json { render :show, status: :created, location: @registro } + else + @form_params = { url: '/mosaico_natura/registro', method: 'post' } + format.html { render :new, locals: { notice: "Hubo un problema al guardar tus datos. Verifica que todos los campos esten completos"} } + format.json { render json: @registro.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /registro/1 or /registro/1.json + def update + respond_to do |format| + if @registro.update(registro_params) + @form_params = { url: mosaico_natura_registro_path(@registro), method: 'put' } + format.html { redirect_to edit_mosaico_natura_registro_path(@registro), notice: "Tu registro fue actualizado exitosamente." } + format.json { render :show, status: :ok, location: @registro } + else + @form_params = { url: mosaico_natura_registro_path(@registro), method: 'put' } + format.html { redirect_to edit_mosaico_natura_registro_path(@registro), notice: "Hubo un problema al guardar tus datos. Verifica haber llenado todos los campos"} + format.json { render json: @registro.errors, status: :unprocessable_entity } + end + end + end + + + private + # Use callbacks to share common setup or constraints between actions. + def set_registro + @registro = MosaicoNatura::UsuarioMn.find(params[:id]) + end + + def set_categorias + if @registro.present? + if @registro.fecha_nacimiento < MosaicoNatura::UsuarioMn::FECHA_NAC_MIN_ADULTOS + @categorias = Categoria.where(cat_concurso_id: 2).where.not(nombre_categoria: ["tema_libre"]).map{|c|[c.nombre_categoria, c.id]} + else + @categorias = Categoria.where(cat_concurso_id: 2).where(nombre_categoria: ["tema_libre"]).map{|c|[c.nombre_categoria, c.id]} + end + end + end + + # Only allow a list of trusted parameters through. + def registro_params + params.require(:mosaico_natura_usuario_mn).permit(:nombre, :apellido_paterno, :apellido_materno, :fecha_nacimiento, :lugar_nacimiento, :medio, :otro_medio, :user_id, + direccion_attributes: [:id, :calle, :numero, :interior, :colonia, :municipio, :cp, :estado, :usuario_id, :_destroy], + media_attributes: [:id, :original_filename, :posicion, :filename, :titulo, :fecha_subida, :ruta, :size, :usuario_id, :categoria_id, :_destroy, + media_metadato_attributes: [:id, :titulo, :descripcion, :marca, :otra_marca, :localidad, :media_id, :destroy]], + ) + end +end + diff --git a/app/controllers/usuarios_controller.rb b/app/controllers/usuarios_controller.rb index ecc86db..48d3023 100644 --- a/app/controllers/usuarios_controller.rb +++ b/app/controllers/usuarios_controller.rb @@ -1,5 +1,5 @@ class UsuariosController < ApplicationController - before_action :set_usuario, only: %i[ show edit update destroy ] + before_action :set_usuario, only: %i[ show edit update destroy ] # GET /usuarios or /usuarios.json def index @@ -64,6 +64,10 @@ def set_usuario # Only allow a list of trusted parameters through. def usuario_params - params.require(:usuario).permit(:email, :nombre, :apellido_paterno, :apellido_materno, :fecha_nacimiento_nac, :lugar_nacimiento, :curp, :password, :password_confirmation) + params.require(:usuario).permit(:email, :nombre, :apellido_paterno, :apellido_materno, :fecha_nacimiento, :lugar_nacimiento, :password, :password_confirmation, + direccion_attributes: [:id, :calle, :numero, :interior, :colonia, :municipio, :cp, :estado, :usuario_id, :_destroy], + medias_attributes: [:id, :original_filename, :filename, :titulo, :fecha_subida, :ruta, :size, :usuario_id, :categoria_id, :_destroy], + usuario_metadatos_attributes: [:id, :id_metadato, :id_usuario, :valor_metadato, :_destroy] + ) end end diff --git a/app/models/calificacion.rb b/app/models/calificacion.rb new file mode 100644 index 0000000..ae86669 --- /dev/null +++ b/app/models/calificacion.rb @@ -0,0 +1,2 @@ +class Calificacion < ApplicationRecord +end diff --git a/app/models/cat_metadato.rb b/app/models/cat_metadato.rb index 5b644f3..f893fca 100644 --- a/app/models/cat_metadato.rb +++ b/app/models/cat_metadato.rb @@ -1,6 +1,6 @@ class CatMetadato < ApplicationRecord - belongs_to :media_metadato - belongs_to :usuario_metadato + has_many :media_metadatos, foreign_key: :metadato_id + has_many :usuario_metadatos, foreign_key: :metadato_id end diff --git a/app/models/categoria.rb b/app/models/categoria.rb index c7d476b..8dbf4f1 100644 --- a/app/models/categoria.rb +++ b/app/models/categoria.rb @@ -1,5 +1,19 @@ class Categoria < ApplicationRecord - belongs_to :media + #belongs_to :media + #Momentaneamente las pondre aquí ya luego las paso a la base con el crud listo + +CategoriasMN = [{pequeños_gigantes: "La naturaleza en detalle (Fotografía Macro). Imágenes que resalten la belleza de los detalles diminutos de la naturaleza: Texturas, colores, formas y patrones (insectos, flores, líquenes, semillas, gotas de agua, entre otros) pueden ser tu fuente de inspiración.", + fauna: "Latidos de la vida silvestre (Fauna). Animales nativos de México en vida silvestre, desde ambientes marinos hasta las altas montañas. No se aceptan animales en cautiverio, domésticos y/o mascotas.", + plantas_y_hongos: "El mundo secreto de plantas y hongos. Incluye toda clase de especies vegetales y hongos nativos de México en vida silvestre. No se aceptarán fotografías de plantas u hongos cultivados, de maceta o jardín."}, + {naturaleza_y_ser_humano: "Ecosistemas y su gente. Imágenes aéreas o terrestres de ecosistemas que destaquen su belleza paisajística o los cambios e impactos que experimentan. También se aceptan fotografías que muestren la interacción entre las personas y la naturaleza, incluyendo los usos tradicionales, expresiones culturales, prácticas sustentables, impactos al entorno y formas de vida vinculadas con la biodiversidad. +*En el caso de que fotos que tengan imágenes en donde se pueda distinguir a la persona o personas, se deberá contar con la autorización de uso de imagen y en caso de menores de edad deberá contar con la autorización por escrito de los padres o tutores.", + paisajes_con_ecosistemas: "Incluye cualquier fotografía tomada con equipos moviles (celulares) relacionada con la riqueza natural de México, es decir, animales o plantas en su ambiente natural, paisajes naturales, actividades relacionadas con el hombre y la naturaleza. No se aceptarán fotografías de plantas cultivadas, animales en cautiverio o cualquier otro ambiente controlado."}, + {tema_libre: "(Jóvenes) Cualquier fotografía relacionada con la riqueza natural de México, en condiciones silvestres: es decir, animales o plantas en su ambiente natural, paisajes naturales, actividades relacionadas con el hombre y la naturaleza, impactos y expresiones bioculturales. No se aceptarán fotografías de plantas cultivadas, animales en cautiverio o cualquier otro ambiente controlado. +En el caso de que la(s) foto(s) tenga(n) imágenes en donde se pueda distinguir a la persona o personas, se deberá contar con la autorización de uso de imagen y en caso de menores de edad deberá contar con la autorización por escrito de los padres o tutores.", +CoSMoS: "CoSMoS. Montañas y Sierras del centro de México. Fotografías de biodiversidad (animales, plantas, hongos y paisajes representativa del lugar), paisajes, actividades productivas sostenibles, cultura local y problemáticas ambientales que enfrentan las comunidades cercanas a Áreas Naturales Protegidas del centro del país", +naturaleza_al_alcance_de_tu_mano: "La naturaleza al alcance de tu mano. Con el objetivo de fomentar la creatividad y accesibilidad en la fotografía, el concurso incluye la Categoría Especial: Fotografía con dispositivo móvil (celular, tableta electrónica u otro dispositivo), que refleje la riqueza natural de México, particularmente en las cercanías de las ANPs del proyecto CoSMoS arriba mencionadas. Las imágenes pueden incluir: animales, plantas, hongos en su entorno natural, paisajes y escenas que muestren la relación entre el ser humano y la naturaleza. No se aceptarán fotografías de organismos en cautiverio ni ambientes controlados, fotografías de plantas cultivadas, animales en cautiverio o cualquier otro ambiente controlado."}].freeze + end + \ No newline at end of file diff --git a/app/models/direccion.rb b/app/models/direccion.rb index dde66f3..2083bda 100644 --- a/app/models/direccion.rb +++ b/app/models/direccion.rb @@ -1,5 +1,6 @@ class Direccion < ApplicationRecord belongs_to :usuario + ESTADOS = [["Aguascalientes", "aguascalientes"], ["Baja California", "baja-california"], ["Baja California Sur", "baja-california-sur"], ["Campeche", "campeche"], ["Chiapas", "chiapas"], ["Chihuahua", "chihuahua"], ["Ciudad de México", "ciudad-de-mexico"], ["Coahuila", "coahuila"], ["Colima", "colima"], ["Durango", "durango"], ["Estado de México", "estado-de-mexico"], ["Guanajuato", "guanajuato"], ["Guerrero", "guerrero"], ["Hidalgo", "hidalgo"], ["Jalisco", "jalisco"], ["Michoacán", "michoacan"], ["Morelos", "morelos"], ["Nayarit", "nayarit"], ["Nuevo León", "nuevo-leon"], ["Oaxaca", "oaxaca"], ["Puebla", "puebla"], ["Querétaro", "queretaro"], ["Quintana Roo", "quintana-roo"], ["San Luis Potosí", "san-luis-potosi"], ["Sinaloa", "sinaloa"], ["Sonora", "sonora"], ["Tabasco", "tabasco"], ["Tamaulipas", "tamaulipas"], ["Tlaxcala", "tlaxcala"], ["Veracruz", "veracruz"], ["Yucatán", "yucatan"], ["Zacatecas", "zacatecas"]] end diff --git a/app/models/entre_azul_y_verde.rb b/app/models/entre_azul_y_verde.rb index f0635b9..53d0fbb 100644 --- a/app/models/entre_azul_y_verde.rb +++ b/app/models/entre_azul_y_verde.rb @@ -2,4 +2,11 @@ module EntreAzulYVerde #def self.table_name_prefix # 'entre_azul_y_verde_' #end + class Galeria + def self.todos + [1,2,3,4,5] + end + end + end + diff --git a/app/models/entre_azul_y_verde/calificacion_ayv.rb b/app/models/entre_azul_y_verde/calificacion_ayv.rb new file mode 100644 index 0000000..711d022 --- /dev/null +++ b/app/models/entre_azul_y_verde/calificacion_ayv.rb @@ -0,0 +1,7 @@ +class CalificacionAyv < Calificacion + + belongs_to :usuario, class_name: "UsuarioAyv" + belongs_to :media, class_name: "MediaAyv" + validates_presence_of :calificacion, :media_id, :usuario_id + +end \ No newline at end of file diff --git a/app/models/entre_azul_y_verde/direccion_ayv.rb b/app/models/entre_azul_y_verde/direccion_ayv.rb new file mode 100644 index 0000000..bc37182 --- /dev/null +++ b/app/models/entre_azul_y_verde/direccion_ayv.rb @@ -0,0 +1,6 @@ +class DireccionAyv < Direccion + + belongs_to :usuario, class_name: "UsuarioAyv" + validates_presence_of :calle, :numero, :colonia, :municipio, :cp, :estado + +end diff --git a/app/models/entre_azul_y_verde/eayv_cat_concurso.rb b/app/models/entre_azul_y_verde/eayv_cat_concurso.rb deleted file mode 100644 index def9b2a..0000000 --- a/app/models/entre_azul_y_verde/eayv_cat_concurso.rb +++ /dev/null @@ -1,2 +0,0 @@ -class EntreAzulYVerde::EayvCatConcurso < CatConcurso -end diff --git a/app/models/entre_azul_y_verde/eayv_cat_metadato.rb b/app/models/entre_azul_y_verde/eayv_cat_metadato.rb deleted file mode 100644 index 82ab38b..0000000 --- a/app/models/entre_azul_y_verde/eayv_cat_metadato.rb +++ /dev/null @@ -1,2 +0,0 @@ -class EntreAzulYVerde::EayvCatMetadato < CatMetadato -end diff --git a/app/models/entre_azul_y_verde/eayv_categoria.rb b/app/models/entre_azul_y_verde/eayv_categoria.rb deleted file mode 100644 index 74157d3..0000000 --- a/app/models/entre_azul_y_verde/eayv_categoria.rb +++ /dev/null @@ -1,2 +0,0 @@ -class EntreAzulYVerde::EayvCategoria < Categoria -end diff --git a/app/models/entre_azul_y_verde/eayv_direccion.rb b/app/models/entre_azul_y_verde/eayv_direccion.rb deleted file mode 100644 index 98a1b02..0000000 --- a/app/models/entre_azul_y_verde/eayv_direccion.rb +++ /dev/null @@ -1,2 +0,0 @@ -class EntreAzulYVerde::EayvDireccion < Direccion -end diff --git a/app/models/entre_azul_y_verde/eayv_media.rb b/app/models/entre_azul_y_verde/eayv_media.rb deleted file mode 100644 index 55f7fb9..0000000 --- a/app/models/entre_azul_y_verde/eayv_media.rb +++ /dev/null @@ -1,2 +0,0 @@ -class EntreAzulYVerde::EayvMedia < Media -end diff --git a/app/models/entre_azul_y_verde/eayv_media_metadato.rb b/app/models/entre_azul_y_verde/eayv_media_metadato.rb deleted file mode 100644 index b953428..0000000 --- a/app/models/entre_azul_y_verde/eayv_media_metadato.rb +++ /dev/null @@ -1,2 +0,0 @@ -class EntreAzulYVerde::EayvMediaMetadato < MediaMetadato -end diff --git a/app/models/entre_azul_y_verde/eayv_usuario.rb b/app/models/entre_azul_y_verde/eayv_usuario.rb deleted file mode 100644 index db8aeef..0000000 --- a/app/models/entre_azul_y_verde/eayv_usuario.rb +++ /dev/null @@ -1,2 +0,0 @@ -class EntreAzulYVerde::EayvUsuario < Usuario -end diff --git a/app/models/entre_azul_y_verde/eayv_usuario_metadato.rb b/app/models/entre_azul_y_verde/eayv_usuario_metadato.rb deleted file mode 100644 index 517d898..0000000 --- a/app/models/entre_azul_y_verde/eayv_usuario_metadato.rb +++ /dev/null @@ -1,2 +0,0 @@ -class EntreAzulYVerde::EayvUsuarioMetadato < UsuarioMetadato -end diff --git a/app/models/entre_azul_y_verde/media_ayv.rb b/app/models/entre_azul_y_verde/media_ayv.rb new file mode 100644 index 0000000..5839b38 --- /dev/null +++ b/app/models/entre_azul_y_verde/media_ayv.rb @@ -0,0 +1,17 @@ +class MediaAyv < Media + + #belongs_to :categoria + belongs_to :usuario, class_name: "UsuarioAyv" + has_one :media_metadato, inverse_of: :media, foreign_key: :media_id, class_name: "MediaMetadatoAyv", dependent: :destroy + accepts_nested_attributes_for :media_metadato, allow_destroy: true + + has_one :calificacion, inverse_of: :media, foreign_key: :media_id, class_name: "CalificacionAyv" + accepts_nested_attributes_for :calificacion, allow_destroy: true + + validates_presence_of :original_filename + + mount_uploader :original_filename, MediaUploader + + scope :where_basico, -> { where('categoria_id is null') } + scope :por_posicion, ->(posicion) { where(posicion: posicion) } +end diff --git a/app/models/entre_azul_y_verde/media_metadato_ayv.rb b/app/models/entre_azul_y_verde/media_metadato_ayv.rb new file mode 100644 index 0000000..4cde2cc --- /dev/null +++ b/app/models/entre_azul_y_verde/media_metadato_ayv.rb @@ -0,0 +1,7 @@ +class MediaMetadatoAyv < MediaMetadato + + belongs_to :media, class_name: "MediaAyv" + belongs_to :usuario + validates_presence_of :titulo, :descripcion, :tecnica, :compromiso + +end diff --git a/app/models/entre_azul_y_verde/tutor_ayv.rb b/app/models/entre_azul_y_verde/tutor_ayv.rb new file mode 100644 index 0000000..24cd87d --- /dev/null +++ b/app/models/entre_azul_y_verde/tutor_ayv.rb @@ -0,0 +1,6 @@ +class TutorAyv < Tutor + + belongs_to :usuario, class_name: "UsuarioAyv" + validates_presence_of :nombre, :apellido_paterno, :apellido_materno + +end diff --git a/app/models/entre_azul_y_verde/usuario_ayv.rb b/app/models/entre_azul_y_verde/usuario_ayv.rb new file mode 100644 index 0000000..3c61e98 --- /dev/null +++ b/app/models/entre_azul_y_verde/usuario_ayv.rb @@ -0,0 +1,75 @@ +class UsuarioAyv < Usuario + + CONCURSO = "ayv".freeze + MEDIO = [["Redes sociales", "redes-sociales"], ["Radio", "radio"], ["Televisión", "television"], ["En la escuela", "escuela"], ["Otro", "otro"]] + FECHA_NAC_MIN = "2003-01-01" + FECHA_NAC_MAX = "2016-01-01" + FECHA_TERMINO = Date.new(2022,02,28) + + #alias_attribute :edad, :edad + + validates_presence_of :nombre, :apellido_paterno, :apellido_materno, :fecha_nacimiento, :lugar_nacimiento, :medio + #validates_presence_of :nombre + + has_one :direccion, inverse_of: :usuario, foreign_key: :usuario_id, class_name: "DireccionAyv", dependent: :destroy + accepts_nested_attributes_for :direccion, allow_destroy: true + + has_one :tutor, inverse_of: :usuario, foreign_key: :usuario_id, class_name: "TutorAyv", dependent: :destroy + accepts_nested_attributes_for :tutor, allow_destroy: true + + has_many :media, -> { order("posicion ASC") }, inverse_of: :usuario, foreign_key: :usuario_id, class_name: "MediaAyv", dependent: :destroy + accepts_nested_attributes_for :media, allow_destroy: true + + has_many :media_bis, inverse_of: :usuario, foreign_key: :usuario_id, class_name: "MediaAyv" + + has_many :media_metadato, through: :media_bis, source: :media_metadato + + has_many :calificaciones, inverse_of: :usuario, foreign_key: :usuario_id, class_name: "CalificacionAyv" + + scope :select_dibujo, -> { select(:id, :fecha_nacimiento, "medias.id as media1_id", "medias.original_filename as proceso", "media_bis_usuarios_join.id as media2_id", "media_bis_usuarios_join.original_filename as terminado", "media_metadatos.titulo", :descripcion, :tecnica, :compromiso, :calificacion) } + scope :select_promedio, -> { select("(substr(cast(calificacion as char),1,1) + substr(cast(calificacion as char),2,1) + substr(cast(calificacion as char),3,1))/3 as promedio") } + scope :select_datos_usuario, -> { select_dibujo.select(:nombre, :apellido_paterno, :apellido_materno, :estado) } #must join direcciones + scope :select_lugar, -> { select("(substr(cast(calificacion as char),4,1)) as lugar") } + scope :select_ganadores, -> { select_datos_usuario.select_lugar } + scope :select_menciones, -> { select_datos_usuario.select_promedio } + + scope :joins_dibujos_todos, -> { left_joins(:media, :media_metadato, :calificaciones) } + scope :joins_con_calificacion, -> { left_joins(:media, :media_metadato).joins(:calificaciones) } + scope :joins_con_calificacion_direccion, -> { joins_con_calificacion.joins(:direccion) } + + scope :where_dibujos, -> { where('medias.posicion = 1').where('media_bis_usuarios_join.posicion = 2').where(concurso_id: 1) } + + scope :dibujos, -> { select_dibujo.joins_dibujos_todos.where_dibujos.order('usuarios.id ASC') } # All los dibujos, por eso el left join + scope :dibujos_finalistas, -> { select_dibujo.joins_con_calificacion.where_dibujos.order('usuarios.id ASC') } # Solo los finalistas, por eso el inner join + scope :dibujos_desempate, -> { select_dibujo.select_promedio.joins_con_calificacion.where_dibujos.order('promedio DESC').limit(6) } # Sólo los q se tienen q desempatar + scope :dibujos_ganadores, -> { select_ganadores.joins_con_calificacion_direccion.where_dibujos.where("calificacion not like '%0'").order('lugar ASC') } # Los elegidos por los dioses... (del dibujo :P) + scope :dibujos_para_menciones, -> (estado) { select_menciones.joins_con_calificacion_direccion.where_dibujos.where("calificacion like '%0'").where('direcciones.estado' => estado ).order('estado', 'promedio DESC').limit(1) } # Los "gracias por participar" i.e. las menciones horroríficas (falta escoger los máximos por promedio, no se pudo hacer con sql) + + scope :menores_a_6, -> { where("usuarios.fecha_nacimiento > \"#{Date.new(2016,2,28)}\"") } #estos en teoria no son categoria + scope :de_6_a_8, -> { where("usuarios.fecha_nacimiento <= \"#{Date.new(2016,2,28)}\" and usuarios.fecha_nacimiento > \"#{Date.new(2013,2,28)}\"") } + scope :menores_a_9, -> { where("usuarios.fecha_nacimiento > \"#{Date.new(2013,2,28)}\"") } #Para fusionar ambas "categorias" + + scope :de_9_a_11, -> { where("usuarios.fecha_nacimiento <= \"#{Date.new(2013,2,28)}\" and usuarios.fecha_nacimiento > \"#{Date.new(2010,2,28)}\"") } + + scope :de_12_a_14, -> { where("usuarios.fecha_nacimiento <= \"#{Date.new(2010,2,28)}\" and usuarios.fecha_nacimiento > \"#{Date.new(2007,2,28)}\"") } + + scope :de_15_a_17, -> { where("usuarios.fecha_nacimiento <= \"#{Date.new(2007,2,28)}\" and usuarios.fecha_nacimiento > \"#{Date.new(2004,2,28)}\"") } + scope :mayores_a_17, -> { where("usuarios.fecha_nacimiento <= \"#{Date.new(2004,2,28)}\"") } #estos en teoria no son categoria + scope :mayores_a_14, -> { where("usuarios.fecha_nacimiento <= \"#{Date.new(2007,2,28)}\"") } #Para fusionar ambas "categorias" + + + def age_in_completed_years(bd) + # Difference in years, less one if you have not had a birthday this year. + a = FECHA_TERMINO.year - bd.year + a = a - 1 if ( + bd.month > FECHA_TERMINO.month or + (bd.month >= FECHA_TERMINO.month and bd.day > FECHA_TERMINO.day) + ) + a + end + + def edad + age_in_completed_years(self.fecha_nacimiento) + end + +end diff --git a/app/models/media.rb b/app/models/media.rb index 565075c..a644076 100644 --- a/app/models/media.rb +++ b/app/models/media.rb @@ -1,7 +1,11 @@ class Media < ApplicationRecord - has_one :media_metadato - has_one :categoria - belongs_to :usuario + def genera_filename_anonimo + [self.usuario_id, self.categoria_id, self.id, self.created_at.strftime('%Y%m%d%H%M%S'),dame_extension(self.original_filename)].join('_') + end + def dame_extension(filename) + "." << filename.split(".")[-1].to_s.downcase.gsub('e','') + end + end diff --git a/app/models/media_metadato.rb b/app/models/media_metadato.rb index 2c94c83..8bd6ed1 100644 --- a/app/models/media_metadato.rb +++ b/app/models/media_metadato.rb @@ -1,6 +1,3 @@ class MediaMetadato < ApplicationRecord - belongs_to :media - belongs_to :cat_metadato - end diff --git a/app/models/mosaico_natura.rb b/app/models/mosaico_natura.rb new file mode 100644 index 0000000..4d2d710 --- /dev/null +++ b/app/models/mosaico_natura.rb @@ -0,0 +1,8 @@ +module MosaicoNatura + class Galeria + def self.todos + end + end + +end + diff --git a/app/models/mosaico_natura/calificacion_mn.rb b/app/models/mosaico_natura/calificacion_mn.rb new file mode 100644 index 0000000..bbedcc6 --- /dev/null +++ b/app/models/mosaico_natura/calificacion_mn.rb @@ -0,0 +1,7 @@ +class MosaicoNatura::CalificacionMn < Calificacion + + belongs_to :usuario, class_name: "UsuarioMn" + belongs_to :media, class_name: "MediaMn" + validates_presence_of :calificacion, :media_id, :usuario_id + +end \ No newline at end of file diff --git a/app/models/mosaico_natura/categoria_mn.rb b/app/models/mosaico_natura/categoria_mn.rb new file mode 100644 index 0000000..1411a20 --- /dev/null +++ b/app/models/mosaico_natura/categoria_mn.rb @@ -0,0 +1,5 @@ +class MosaicoNatura::CategoriaMn < Categoria + + has_many :media, inverse_of: :media, foreign_key: :categoria_id, class_name: "MediaMn" + +end diff --git a/app/models/mosaico_natura/direccion_mn.rb b/app/models/mosaico_natura/direccion_mn.rb new file mode 100644 index 0000000..271023a --- /dev/null +++ b/app/models/mosaico_natura/direccion_mn.rb @@ -0,0 +1,6 @@ +class MosaicoNatura::DireccionMn < Direccion + + belongs_to :usuario, class_name: "UsuarioMn" + validates_presence_of :calle, :numero, :colonia, :municipio, :cp, :estado + +end diff --git a/app/models/mosaico_natura/media_metadato_mn.rb b/app/models/mosaico_natura/media_metadato_mn.rb new file mode 100644 index 0000000..318b9f3 --- /dev/null +++ b/app/models/mosaico_natura/media_metadato_mn.rb @@ -0,0 +1,8 @@ +class MosaicoNatura::MediaMetadatoMn < MediaMetadato + + MARCA = [['Canon','canon'],['Nikon','nikon'],['Olympus','olympus'],['Sony','sony'],['Fuji','fuji'],['Panasonic','panasonic'],['Otro','otro']] + + belongs_to :media, class_name: "MediaMn" + validates_presence_of :titulo, :descripcion, :marca, :localidad + +end diff --git a/app/models/mosaico_natura/media_mn.rb b/app/models/mosaico_natura/media_mn.rb new file mode 100644 index 0000000..7640b2d --- /dev/null +++ b/app/models/mosaico_natura/media_mn.rb @@ -0,0 +1,71 @@ +class MosaicoNatura::MediaMn < Media + + #attr_accessor :filename + FECHA_TERMINO_INICIAL = Date.new(2022, 01, 16) + + belongs_to :usuario, class_name: "UsuarioMn" + has_one :direccion, through: :usuario, source: :direccion + has_one :user, through: :usuario, source: :user + + belongs_to :categoria, class_name: "CategoriaMn" + has_one :media_metadato, inverse_of: :media, foreign_key: :media_id, class_name: "MediaMetadatoMn", dependent: :destroy + accepts_nested_attributes_for :media_metadato, allow_destroy: true + + has_many :calificaciones, inverse_of: :media, foreign_key: :media_id, class_name: "CalificacionMn" + + validates_presence_of :original_filename, :categoria_id + + mount_uploader :original_filename, MediaAwsUploader + + scope :mosaico, -> { where(categoria: (1..9))} + scope :where_fotos, -> { where('posicion IS NULL').where('usuarios.concurso_id' => 2) } + + + scope :select_medias, -> { select(:id, "original_filename as archivo_original", :filename, 'media_metadatos.titulo', :descripcion, :marca, :localidad, :otra_marca, :calificacion, :usuario_id, "usuarios.fecha_nacimiento", :categoria_id, :created_at, :nombre_categoria) } + scope :select_promedio_fotos, -> { select("(substr(cast(calificacion as char),1,1) + substr(cast(calificacion as char),2,1) + substr(cast(calificacion as char),3,1) + substr(cast(calificacion as char),4,1))/4 as promedio") } + scope :select_promedio_videos, -> { select("(substr(cast(calificacion as char),1,1) + substr(cast(calificacion as char),2,1))/2 as promedio") } + scope :select_promedio_comparativo_fotos, -> { select_promedio_fotos.select("(substr(cast(calificacion as char),2,1) + substr(cast(calificacion as char),3,1) + substr(cast(calificacion as char),4,1))/3 as promedio_sin_juez01", "(substr(cast(calificacion as char),1,1) + substr(cast(calificacion as char),3,1) + substr(cast(calificacion as char),4,1))/3 as promedio_sin_juez02", "(substr(cast(calificacion as char),1,1) + substr(cast(calificacion as char),2,1) + substr(cast(calificacion as char),4,1))/3 as promedio_sin_juez03", "(substr(cast(calificacion as char),1,1) + substr(cast(calificacion as char),2,1) + substr(cast(calificacion as char),3,1))/3 as promedio_sin_juez04") } + scope :select_promedio_comparativo_videos, -> { select_promedio_videos.select("substr(cast(calificacion as char),2,1) as promedio_sin_juez01", "substr(cast(calificacion as char),1,1) as promedio_sin_juez02", "'' as promedio_sin_juez03", "'' as promedio_sin_juez04") } + scope :select_datos_usuario, -> { select("usuarios.nombre", "usuarios.apellido_paterno", "usuarios.apellido_materno")} + scope :select_datos_direccion, -> { select(:calle, :numero, :interior, :colonia, :municipio, :cp, :estado) } + + scope :select_ganadores, -> { select_medias.select_datos_usuario.select(:estado, :municipio).select("substr(cast(calificacion as char),5,1) as lugar")} + scope :select_todo, -> { select_medias.select_datos_usuario.select_datos_direccion.select("substr(cast(calificacion as char),5,1) as lugar").select( :email, "usuarios.medio", "usuarios.otro_medio" ) } + + scope :joins_con_calificacion, -> { joins(:media_metadato, :categoria, :usuario).left_joins(:calificaciones) } + scope :joins_con_calificacion_direccion, -> { joins_con_calificacion.joins(:direccion) } + + scope :finalistas, -> { select_medias.joins_con_calificacion.where_fotos } + scope :desempate_foto, -> { select_medias.select_promedio_comparativo_fotos.joins_con_calificacion.where('categoria_id != 8').order('lugar ASC, promedio DESC') } + scope :desempate_video, -> { select_medias.select_promedio_comparativo_videos.joins_con_calificacion.where('categoria_id' => 8).order('lugar ASC, promedio DESC') } + scope :desempate_foto_con_datos, -> { select_ganadores.select_promedio_comparativo_fotos.joins_con_calificacion_direccion.where('categoria_id != 8').order('promedio DESC') } + scope :desempate_video_con_datos, -> { select_ganadores.select_promedio_comparativo_videos.joins_con_calificacion_direccion.where('categoria_id' => 8).order('promedio DESC') } + + scope :ganadores, -> { select_ganadores.joins_con_calificacion_direccion.where_fotos.where("calificacion not like '%0'").order("categoria_id ASC, lugar ASC") } + + scope :todo_de_todos, -> { select_todo.left_joins(:media_metadato, :categoria, :user, :direccion, :calificaciones).where_fotos } + + + def filename + [self.usuario_id, self.categoria_id, self.id, self.created_at.strftime('%Y%m%d%H%M%S'),dame_extension(self.archivo_original)].join('_') + end + + def genera_filename_anonimo + filename + end + + def age_in_completed_years(bd) + # Difference in years, less one if you have not had a birthday this year. + a = FECHA_TERMINO_INICIAL.year - bd.year + a = a - 1 if ( + bd.month > FECHA_TERMINO_INICIAL.month or + (bd.month >= FECHA_TERMINO_INICIAL.month and bd.day > FECHA_TERMINO_INICIAL.day) + ) + a + end + + def edad + age_in_completed_years(self.fecha_nacimiento) + end + +end diff --git a/app/models/mosaico_natura/usuario_mn.rb b/app/models/mosaico_natura/usuario_mn.rb new file mode 100644 index 0000000..272ccf6 --- /dev/null +++ b/app/models/mosaico_natura/usuario_mn.rb @@ -0,0 +1,18 @@ +class MosaicoNatura::UsuarioMn < Usuario + + CONCURSO = "mn".freeze + MEDIO = [["Redes sociales", "redes-sociales"], ["Radio", "radio"], ["Televisión", "television"], ["En la escuela", "escuela"], ["Otro", "otro"]] + FECHA_NAC_MIN = "2012-12-31" + FECHA_NAC_MIN_ADULTOS = Date.new(2004, 01, 16) + FECHA_NAC_MAX = "1904-16-01" + + validates_presence_of :nombre, :apellido_paterno, :apellido_materno, :fecha_nacimiento, :lugar_nacimiento, :medio + #validates_presence_of :nombre + + has_one :direccion, inverse_of: :usuario, foreign_key: :usuario_id, class_name: "DireccionMn", dependent: :destroy + accepts_nested_attributes_for :direccion, allow_destroy: true + + has_many :media, inverse_of: :usuario, foreign_key: :usuario_id, class_name: "MediaMn", dependent: :destroy + accepts_nested_attributes_for :media, allow_destroy: true + +end diff --git a/app/models/tutor.rb b/app/models/tutor.rb new file mode 100644 index 0000000..15d2235 --- /dev/null +++ b/app/models/tutor.rb @@ -0,0 +1,5 @@ +class Tutor < ApplicationRecord + + self.table_name = :tutores + +end diff --git a/app/models/user.rb b/app/models/user.rb new file mode 100644 index 0000000..0e19c4e --- /dev/null +++ b/app/models/user.rb @@ -0,0 +1,8 @@ +class User < ApplicationRecord + # Include default devise modules. Others available are: + # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable + devise :database_authenticatable, :registerable, + :recoverable, :rememberable, :validatable + + has_many :usuarios, dependent: :destroy +end diff --git a/app/models/user_ayv.rb b/app/models/user_ayv.rb new file mode 100644 index 0000000..113f35c --- /dev/null +++ b/app/models/user_ayv.rb @@ -0,0 +1,2 @@ +class UserAyv < User +end diff --git a/app/models/user_mn.rb b/app/models/user_mn.rb new file mode 100644 index 0000000..6587ac9 --- /dev/null +++ b/app/models/user_mn.rb @@ -0,0 +1,2 @@ +class UserMn < User +end diff --git a/app/models/usuario.rb b/app/models/usuario.rb index f3e435d..5b3756b 100644 --- a/app/models/usuario.rb +++ b/app/models/usuario.rb @@ -1,9 +1,5 @@ class Usuario < ApplicationRecord - has_secure_password - has_one :direccion - has_many :media - has_many :usuario_metadatos - + belongs_to :user end diff --git a/app/models/usuario_metadato.rb b/app/models/usuario_metadato.rb index 438b5dd..6d093c5 100644 --- a/app/models/usuario_metadato.rb +++ b/app/models/usuario_metadato.rb @@ -1,6 +1,6 @@ class UsuarioMetadato < ApplicationRecord belongs_to :usuario - belongs_to :cat_metadato + belongs_to :cat_metadato, foreign_key: :metadato_id end diff --git a/app/uploaders/media_aws_uploader.rb b/app/uploaders/media_aws_uploader.rb new file mode 100644 index 0000000..5a4e6e7 --- /dev/null +++ b/app/uploaders/media_aws_uploader.rb @@ -0,0 +1,23 @@ +class MediaAwsUploader < CarrierWave::Uploader::Base + # Storage configuration within the uploader supercedes the global CarrierWave + # config, so either comment out `storage :file`, or remove that line, otherwise + # AWS will not be used. + storage :aws + + # You can find a full list of custom headers in AWS SDK documentation on + # AWS::S3::S3Object + def download_url(filename) + url(response_content_disposition: %Q{attachment; filename="#{filename}"}) + end + + # Override the directory where uploaded files will be stored. + # This is a sensible default for uploaders that are meant to be mounted: + def store_dir + concurso = model.class.to_s.underscore.split("_").last + "media/#{concurso}/#{model.usuario.id}" + end + + def extension_allowlist + %w(jpg jpeg png mp4) + end +end \ No newline at end of file diff --git a/app/uploaders/media_uploader.rb b/app/uploaders/media_uploader.rb new file mode 100644 index 0000000..a2cc54b --- /dev/null +++ b/app/uploaders/media_uploader.rb @@ -0,0 +1,48 @@ +class MediaUploader < CarrierWave::Uploader::Base + # Include RMagick or MiniMagick support: + # include CarrierWave::RMagick + # include CarrierWave::MiniMagick + + # Choose what kind of storage to use for this uploader: + storage :file + # storage :fog + + # Override the directory where uploaded files will be stored. + # This is a sensible default for uploaders that are meant to be mounted: + def store_dir + concurso = model.class.to_s.underscore.split("_").last + "media/#{concurso}/#{model.usuario.id}" + end + + # Provide a default URL as a default if there hasn't been a file uploaded: + # def default_url(*args) + # # For Rails 3.1+ asset pipeline compatibility: + # # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_')) + # + # "/images/fallback/" + [version_name, "default.png"].compact.join('_') + # end + + # Process files as they are uploaded: + # process scale: [200, 300] + # + # def scale(width, height) + # # do something + # end + + # Create different versions of your uploaded files: + # version :thumb do + # process resize_to_fit: [50, 50] + # end + + # Add an allowlist of extensions which are allowed to be uploaded. + # For images you might use something like this: + def extension_allowlist + %w(jpg jpeg png) + end + + # Override the filename of the uploaded files: + # Avoid using model.id or version_name here, see uploader/store.rb for details. + # def filename + # "something.jpg" if original_filename + # end +end diff --git a/app/views/direcciones/_form_direccion.html.erb b/app/views/direcciones/_form_direccion.html.erb deleted file mode 100644 index 50a2e8f..0000000 --- a/app/views/direcciones/_form_direccion.html.erb +++ /dev/null @@ -1,10 +0,0 @@ -
- <%= f.input :calle %> - <%= f.input :numero %> - <%= f.input :interior %> - <%= f.input :colonia %> - <%= f.input :municipio %> - <%= f.input :cp %> - <%= f.input :estado %> - <%= f.input :id_usuario %> -
diff --git a/app/views/entre_azul_y_verde/_footer.erb b/app/views/entre_azul_y_verde/_footer.erb new file mode 100755 index 0000000..101c355 --- /dev/null +++ b/app/views/entre_azul_y_verde/_footer.erb @@ -0,0 +1,46 @@ +
+
+

NUESTROS COLABORADORES

+ +
+
+

SÍGUENOS

+ + +
+
+

CONOCE

+ +
+
+ +
+
diff --git a/app/views/entre_azul_y_verde/_header.erb b/app/views/entre_azul_y_verde/_header.erb new file mode 100644 index 0000000..53a9d63 --- /dev/null +++ b/app/views/entre_azul_y_verde/_header.erb @@ -0,0 +1,66 @@ + \ No newline at end of file diff --git a/app/views/entre_azul_y_verde/devise/confirmations/new.html.erb b/app/views/entre_azul_y_verde/devise/confirmations/new.html.erb new file mode 100644 index 0000000..a9a4d65 --- /dev/null +++ b/app/views/entre_azul_y_verde/devise/confirmations/new.html.erb @@ -0,0 +1,20 @@ +

Resend confirmation instructions

+ +<%= simple_form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post }) do |f| %> + <%= f.error_notification %> + <%= f.full_error :confirmation_token %> + +
+ <%= f.input :email, + required: true, + autofocus: true, + value: (resource.pending_reconfirmation? ? resource.unconfirmed_email : resource.email), + input_html: { autocomplete: "email" } %> +
+ +
+ <%= f.button :submit, "Resend confirmation instructions" %> +
+<% end %> + +<%= render "entre_azul_y_verde/devise/shared/links" %> diff --git a/app/views/entre_azul_y_verde/devise/mailer/confirmation_instructions.html.erb b/app/views/entre_azul_y_verde/devise/mailer/confirmation_instructions.html.erb new file mode 100644 index 0000000..dc55f64 --- /dev/null +++ b/app/views/entre_azul_y_verde/devise/mailer/confirmation_instructions.html.erb @@ -0,0 +1,5 @@ +

Welcome <%= @email %>!

+ +

You can confirm your account email through the link below:

+ +

<%= link_to 'Confirm my account', confirmation_url(@resource, confirmation_token: @token) %>

diff --git a/app/views/entre_azul_y_verde/devise/mailer/email_changed.html.erb b/app/views/entre_azul_y_verde/devise/mailer/email_changed.html.erb new file mode 100644 index 0000000..32f4ba8 --- /dev/null +++ b/app/views/entre_azul_y_verde/devise/mailer/email_changed.html.erb @@ -0,0 +1,7 @@ +

Hello <%= @email %>!

+ +<% if @resource.try(:unconfirmed_email?) %> +

We're contacting you to notify you that your email is being changed to <%= @resource.unconfirmed_email %>.

+<% else %> +

We're contacting you to notify you that your email has been changed to <%= @resource.email %>.

+<% end %> diff --git a/app/views/entre_azul_y_verde/devise/mailer/password_change.html.erb b/app/views/entre_azul_y_verde/devise/mailer/password_change.html.erb new file mode 100644 index 0000000..b41daf4 --- /dev/null +++ b/app/views/entre_azul_y_verde/devise/mailer/password_change.html.erb @@ -0,0 +1,3 @@ +

Hello <%= @resource.email %>!

+ +

We're contacting you to notify you that your password has been changed.

diff --git a/app/views/entre_azul_y_verde/devise/mailer/reset_password_instructions.html.erb b/app/views/entre_azul_y_verde/devise/mailer/reset_password_instructions.html.erb new file mode 100644 index 0000000..0db0fe8 --- /dev/null +++ b/app/views/entre_azul_y_verde/devise/mailer/reset_password_instructions.html.erb @@ -0,0 +1,8 @@ +

¡Hola <%= @resource.email %>!

+ +

Has solicitado cambiar tu contraseña. Puedes hacerlo en el siguiente enlace.

+ +

<%= link_to 'Cambiar mi contraseña', edit_password_url(@resource, reset_password_token: @token) %>

+ +

Si no solicitaste cambiar tu contraseña, por favor ignora este correo.

+

Tu contraseña no cambiará hasta que accedas al enlace y asignes una nueva.

diff --git a/app/views/entre_azul_y_verde/devise/mailer/unlock_instructions.html.erb b/app/views/entre_azul_y_verde/devise/mailer/unlock_instructions.html.erb new file mode 100644 index 0000000..41e148b --- /dev/null +++ b/app/views/entre_azul_y_verde/devise/mailer/unlock_instructions.html.erb @@ -0,0 +1,7 @@ +

Hello <%= @resource.email %>!

+ +

Your account has been locked due to an excessive number of unsuccessful sign in attempts.

+ +

Click the link below to unlock your account:

+ +

<%= link_to 'Unlock my account', unlock_url(@resource, unlock_token: @token) %>

diff --git a/app/views/entre_azul_y_verde/devise/passwords/edit.html.erb b/app/views/entre_azul_y_verde/devise/passwords/edit.html.erb new file mode 100644 index 0000000..b1a9a37 --- /dev/null +++ b/app/views/entre_azul_y_verde/devise/passwords/edit.html.erb @@ -0,0 +1,36 @@ +
+ <%= render partial: "entre_azul_y_verde/shared/sub-header", locals: { title: "CAMBIA TU CONTRASEÑA" } %> + +

<%= notice %>

+ +
+ + <%= simple_form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f| %> + <%= f.error_notification %> + + <%= f.input :reset_password_token, as: :hidden %> + <%= f.full_error :reset_password_token %> + +
+ <%= f.input :password, + label: "Nueva contraseña", + required: true, + autofocus: true, + hint: ("#{@minimum_password_length} caracteres minimo" if @minimum_password_length), + input_html: { autocomplete: "new-password" } %> + <%= f.input :password_confirmation, + label: "Confirma la nueva contraseña", + required: true, + input_html: { autocomplete: "new-password" } %> +
+ +
+ <%= f.button :submit, "Cambiar mi contraseña", class: "btn btn-success mb-4" %> +
+ <% end %> + + <%= render "entre_azul_y_verde/devise/shared/links" %> + +
+ +
\ No newline at end of file diff --git a/app/views/entre_azul_y_verde/devise/passwords/new.html.erb b/app/views/entre_azul_y_verde/devise/passwords/new.html.erb new file mode 100644 index 0000000..30b376a --- /dev/null +++ b/app/views/entre_azul_y_verde/devise/passwords/new.html.erb @@ -0,0 +1,28 @@ +
+ <%= render partial: "entre_azul_y_verde/shared/sub-header", locals: { title: "RECUPERAR CONTRASEÑA" } %> + +

<%= notice %>

+ +
+ + <%= simple_form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f| %> + <%= f.error_notification %> + +
+ <%= f.input :email, + required: true, + autofocus: true, + label: "Correo", + input_html: { autocomplete: "email" } %> +
+ +
+ <%= f.button :submit, "Enviarme instruciones", class: "btn btn-success mb-4" %> +
+ <% end %> + + <%= render "entre_azul_y_verde/devise/shared/links" %> + +
+ +
\ No newline at end of file diff --git a/app/views/entre_azul_y_verde/devise/registrations/edit.html.erb b/app/views/entre_azul_y_verde/devise/registrations/edit.html.erb new file mode 100644 index 0000000..2a6ffd6 --- /dev/null +++ b/app/views/entre_azul_y_verde/devise/registrations/edit.html.erb @@ -0,0 +1,46 @@ +
+ <%= render partial: "entre_azul_y_verde/shared/sub-header", locals: { title: "MODIFICAR CUENTA" } %> + +

<%= notice %>

+ +
+ + <%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %> + <%= f.error_notification %> + +
+ <%= f.input :email, required: true, autofocus: true, label: "Correo" %> + + <% if devise_mapping.confirmable? && resource.pending_reconfirmation? %> +

Currently waiting confirmation for: <%= resource.unconfirmed_email %>

+ <% end %> + + <%= f.input :password, + hint: "Dejar vacío si no se desea cambiar la contraseña", + required: false, + label: "Nueva contraseña", + input_html: { autocomplete: "new-password" } %> + <%= f.input :password_confirmation, + hint: "Dejar vacío si no se desea cambiar la contraseña", + required: false, + label: "Confrima la nueva contraseña", + input_html: { autocomplete: "new-password" } %> + <%= f.input :current_password, + hint: "Es necesaria tu contraseña actual para confirmar los cambios", + required: true, + label: "Contraseña actual", + input_html: { autocomplete: "current-password" } %> +
+ +
+ <%= f.button :submit, "Actualizar", class: "btn btn-success mb-4" %> +
+ <% end %> + +
+ +

¿No estás a gusto? <%= link_to "Cancelar mi cuenta", registration_path(resource_name), data: { confirm: "Una vez que se cancele la cuenta se borrarán tus datos personales, así como las fotos que hayas subido. Este proceso no se puede revertir, ¿estás seguro?" }, method: :delete %>

+ +
+ +
\ No newline at end of file diff --git a/app/views/entre_azul_y_verde/devise/registrations/new.html.erb b/app/views/entre_azul_y_verde/devise/registrations/new.html.erb new file mode 100644 index 0000000..b117f40 --- /dev/null +++ b/app/views/entre_azul_y_verde/devise/registrations/new.html.erb @@ -0,0 +1,37 @@ +
+ <%= render partial: "entre_azul_y_verde/shared/sub-header", locals: { title: "CREAR CUENTA" } %> + +

<%= notice %>

+ +
+ + <%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> + <%= f.error_notification %> + +
+ <%= f.input :email, + required: true, + autofocus: true, + label: "Correo", + input_html: { autocomplete: "email" }%> + <%= f.input :password, + required: true, + label: "Contraseña", + hint: ("#{@minimum_password_length} caracteres mínimo" if @minimum_password_length), + input_html: { autocomplete: "new-password" } %> + <%= f.input :password_confirmation, + required: true, + label: "Confirma la contraseña", + input_html: { autocomplete: "new-password" } %> +
+ +
+ <%= f.button :submit, "Crear cuenta", class: "btn btn-success mb-4" %> +
+ <% end %> + + <%= render "entre_azul_y_verde/devise/shared/links" %> + +
+ +
\ No newline at end of file diff --git a/app/views/entre_azul_y_verde/devise/sessions/new.html.erb b/app/views/entre_azul_y_verde/devise/sessions/new.html.erb new file mode 100644 index 0000000..7abe3a2 --- /dev/null +++ b/app/views/entre_azul_y_verde/devise/sessions/new.html.erb @@ -0,0 +1,32 @@ +
+ <%= render partial: "entre_azul_y_verde/shared/sub-header", locals: { title: "INICIA SESIÓN" } %> + +

<%= notice %>

+ +
+ + <%= simple_form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %> +
+ <%= f.input :email, + required: false, + autofocus: true, + label: "Correo", + input_html: { autocomplete: "email"} %> + <%= f.input :password, + required: false, + label: "Contraseña", + input_html: { autocomplete: "current-password" } %> + <%= f.input :remember_me, as: :boolean, label: "Recordarme" if devise_mapping.rememberable? %> +
+ +
+ <%= f.button :submit, "Inicia sesión", class: "btn btn-md btn-success mb-4" %> +
+ <% end %> + + <%= render "entre_azul_y_verde/devise/shared/links" %> +
+ +
+ + diff --git a/app/views/entre_azul_y_verde/devise/shared/_error_messages.html.erb b/app/views/entre_azul_y_verde/devise/shared/_error_messages.html.erb new file mode 100644 index 0000000..ba7ab88 --- /dev/null +++ b/app/views/entre_azul_y_verde/devise/shared/_error_messages.html.erb @@ -0,0 +1,15 @@ +<% if resource.errors.any? %> +
+

+ <%= I18n.t("errors.messages.not_saved", + count: resource.errors.count, + resource: resource.class.model_name.human.downcase) + %> +

+ +
+<% end %> diff --git a/app/views/entre_azul_y_verde/devise/shared/_links.html.erb b/app/views/entre_azul_y_verde/devise/shared/_links.html.erb new file mode 100644 index 0000000..98d32c4 --- /dev/null +++ b/app/views/entre_azul_y_verde/devise/shared/_links.html.erb @@ -0,0 +1,25 @@ +<%- if controller_name != 'sessions' %> + <%= link_to "¿Ya tienes cuenta? Inicia sesión", new_session_path(resource_name) %>
+<% end %> + +<%- if devise_mapping.registerable? && controller_name != 'registrations' %> + <%= link_to "¿Aún no tienes cuenta? Regístrate", new_registration_path(resource_name) %>
+<% end %> + +<%- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' %> + <%= link_to "¿Olvidaste tu contraseña?", new_password_path(resource_name), class: "h6" %>
+<% end %> + +<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %> + <%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name) %>
+<% end %> + +<%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %> + <%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name) %>
+<% end %> + +<%- if devise_mapping.omniauthable? %> + <%- resource_class.omniauth_providers.each do |provider| %> + <%= link_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider), method: :post %>
+ <% end %> +<% end %> diff --git a/app/views/entre_azul_y_verde/devise/unlocks/new.html.erb b/app/views/entre_azul_y_verde/devise/unlocks/new.html.erb new file mode 100644 index 0000000..c42de17 --- /dev/null +++ b/app/views/entre_azul_y_verde/devise/unlocks/new.html.erb @@ -0,0 +1,19 @@ +

Resend unlock instructions

+ +<%= simple_form_for(resource, as: resource_name, url: unlock_path(resource_name), html: { method: :post }) do |f| %> + <%= f.error_notification %> + <%= f.full_error :unlock_token %> + +
+ <%= f.input :email, + required: true, + autofocus: true, + input_html: { autocomplete: "email" } %> +
+ +
+ <%= f.button :submit, "Resend unlock instructions" %> +
+<% end %> + +<%= render "devise/shared/links" %> diff --git a/app/views/entre_azul_y_verde/galerias/2022/_ganadores.erb b/app/views/entre_azul_y_verde/galerias/2022/_ganadores.erb new file mode 100644 index 0000000..0736861 --- /dev/null +++ b/app/views/entre_azul_y_verde/galerias/2022/_ganadores.erb @@ -0,0 +1,41 @@ +
+ +
+
+ <% @ganadores.each do |categorias, dibujos| %> +
+

<%= categorias.to_s.humanize %>

+
+ +
+ <% dibujos.each_with_index do |d, i| %> + <% nombre_completo, estado = [d.nombre, d.apellido_paterno, d.apellido_materno].join(' ').titleize, d.estado.titleize %> + +
+
+ <%= nombre_completo %> > +
"> + <%= d.lugar %> +
"<%= d.titulo %>"
+

+ <%= nombre_completo %> +

+

<%= d.edad %> años

+

<%= estado%>

+
+
+
+ + <% end %> +
+ <% end %> +
diff --git a/app/views/entre_azul_y_verde/galerias/2022/_menciones_honorificas.erb b/app/views/entre_azul_y_verde/galerias/2022/_menciones_honorificas.erb new file mode 100644 index 0000000..9c3b9be --- /dev/null +++ b/app/views/entre_azul_y_verde/galerias/2022/_menciones_honorificas.erb @@ -0,0 +1,37 @@ +
+ +
+<% @menciones.each do |categorias, dibujos| %> +
+
+

<%= categorias.to_s.humanize %>

+
+ +
+ <% dibujos.each_with_index do |d, i| %> + <% nombre_completo, estado = [d.nombre, d.apellido_paterno, d.apellido_materno].join(' ').titleize, d.estado.titleize %> + +
+ <%= nombre_completo %> > +
+
"<%= d.titulo %>"
+

+ <%= nombre_completo %> +

+

<%= d.edad %> años

+

<%= estado%>

+
+
+ <% end %> +
+
+<% end %> \ No newline at end of file diff --git a/app/views/entre_azul_y_verde/galerias/_form.html.erb b/app/views/entre_azul_y_verde/galerias/_form.html.erb deleted file mode 100644 index 6b8a0d6..0000000 --- a/app/views/entre_azul_y_verde/galerias/_form.html.erb +++ /dev/null @@ -1,12 +0,0 @@ - -<%= simple_form_for(@entre_azul_y_verde_galeria) do |f| %> - <%= f.error_notification %> - <%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %> - -
-
- -
- <%= f.button :submit %> -
-<% end %> diff --git a/app/views/entre_azul_y_verde/galerias/edit.html.erb b/app/views/entre_azul_y_verde/galerias/edit.html.erb deleted file mode 100644 index 7bb269b..0000000 --- a/app/views/entre_azul_y_verde/galerias/edit.html.erb +++ /dev/null @@ -1,6 +0,0 @@ -

Editing Entre Azul Y Verde Galeria

- -<%= render 'form', entre_azul_y_verde_galeria: @entre_azul_y_verde_galeria %> - -<%= link_to 'Show', @entre_azul_y_verde_galeria %> | -<%= link_to 'Back', entre_azul_y_verde_galerias_path %> diff --git a/app/views/entre_azul_y_verde/galerias/index.erb b/app/views/entre_azul_y_verde/galerias/index.erb new file mode 100644 index 0000000..a72d7db --- /dev/null +++ b/app/views/entre_azul_y_verde/galerias/index.erb @@ -0,0 +1,70 @@ +<% content_for(:delayedjs) do %> + +<% end %> + +<% content_for(:delayedcss) do %> + +<% end %> + + +
+ <%= render partial: 'entre_azul_y_verde/galerias/2022/ganadores' %> +
+
+ <%= render partial: 'entre_azul_y_verde/galerias/2022/menciones_honorificas' %> +
+ +<%= render :partial => "entre_azul_y_verde/shared/modal" %> diff --git a/app/views/entre_azul_y_verde/galerias/index.html.erb b/app/views/entre_azul_y_verde/galerias/index.html.erb deleted file mode 100644 index 2ab8cec..0000000 --- a/app/views/entre_azul_y_verde/galerias/index.html.erb +++ /dev/null @@ -1,25 +0,0 @@ -

<%= notice %>

- -

Entre Azul Y Verde Galerias

- - - - - - - - - - <% @entre_azul_y_verde_galerias.each do |entre_azul_y_verde_galeria| %> - - - - - - <% end %> - -
<%= link_to 'Show', entre_azul_y_verde_galeria %><%= link_to 'Edit', edit_entre_azul_y_verde_galeria_path(entre_azul_y_verde_galeria) %><%= link_to 'Destroy', entre_azul_y_verde_galeria, method: :delete, data: { confirm: 'Are you sure?' } %>
- -
- -<%= link_to 'New Entre Azul Y Verde Galeria', new_entre_azul_y_verde_galeria_path %> diff --git a/app/views/entre_azul_y_verde/galerias/new.html.erb b/app/views/entre_azul_y_verde/galerias/new.html.erb deleted file mode 100644 index 847cfcf..0000000 --- a/app/views/entre_azul_y_verde/galerias/new.html.erb +++ /dev/null @@ -1,5 +0,0 @@ -

New Entre Azul Y Verde Galeria

- -<%= render 'form', entre_azul_y_verde_galeria: @entre_azul_y_verde_galeria %> - -<%= link_to 'Back', entre_azul_y_verde_galerias_path %> diff --git a/app/views/entre_azul_y_verde/galerias/show.html.erb b/app/views/entre_azul_y_verde/galerias/show.html.erb deleted file mode 100644 index af15b31..0000000 --- a/app/views/entre_azul_y_verde/galerias/show.html.erb +++ /dev/null @@ -1,4 +0,0 @@ -

<%= notice %>

- -<%= link_to 'Edit', edit_entre_azul_y_verde_galeria_path(@entre_azul_y_verde_galeria) %> | -<%= link_to 'Back', entre_azul_y_verde_galerias_path %> diff --git a/app/views/entre_azul_y_verde/inicio/_bases.erb b/app/views/entre_azul_y_verde/inicio/_bases.erb index cdb9bf5..30096ca 100644 --- a/app/views/entre_azul_y_verde/inicio/_bases.erb +++ b/app/views/entre_azul_y_verde/inicio/_bases.erb @@ -1,8 +1,42 @@ -
-
- Bases del concurso -
-
- -
-
\ No newline at end of file +

Podrán participar todos los dibujos y pinturas realizados por niños y jóvenes mexicanos de 6 a 17 años, que vivan en México o en el extranjero (que acrediten la nacionalidad mexicana).

+

Serán candidatos a participar todos los dibujos y pinturas enviados que cumplan estrictamente con los siguientes requisitos:

+ +

Condiciones legales

+ +
Asuntos no contemplados en esta Convocatoria
+

Cualquier asunto o base no establecido en el presente documento, será resuelto por la CONABIO, quien será la máxima autoridad en relación con la presente convocatoria.

+
Aviso de datos personales
+
Datos personales que se recaban y su finalidad
+

Cuando usted se registra en el 3erº Concurso Nacional Infantil y Juvenil de Dibujo y Pintura de la Naturaleza de la Conabio, se requiere que nos proporcione el nombre y apellidos del padre, madre o tutor legal del menor de edad participante, así como el nombre, apellidos y nacionalidad del menor participante, un correo electrónico, domicilio y teléfono.

+

Los datos personales de nombre y apellidos del padre, madre o tutor legal del menor de edad participante, así como el nombre, apellidos y nacionalidad del menor participante, el correo electrónico, domicilio y teléfono, que se solicitan tienen como finalidad el registro de los participantes del concurso.

+

De igual forma, los datos personales de nombre y apellidos del padre, madre o tutor legal, el correo electrónico, domicilio y teléfono, se usarán para ponernos en contacto para cualquier tema relacionado con el concurso o bien para informarle que el menor de edad ha sido ganador de alguna categoría del concurso, según corresponda.

+

Asimismo, el nombre y apellidos del menor de edad participante son usados para el registro de la categoría en que participará el menor de edad dentro del concurso y en caso de resultar ganador, se utilizará su nombre para dar el reconocimiento correspondiente y para dar el crédito autoral, en términos de la Ley Federal del Derecho de Autor.

+

No recabamos datos personales sensibles* y en caso de recibirlos no se usarán para ningún fin ni se conservarán en nuestros archivos.

+
Fundamento para el tratamiento de datos personales
+

El fundamento para el tratamiento de los datos personales son los artículos 121, 123, 124, 125, 128 de la Ley General de Transparencia y Acceso a la Información Pública; 121, 123, 124, 125, 129, del 130 al 144, 146, 151, 152 de la Ley Federal de Transparencia y Acceso a la Información Pública; 25, 26, 27 y 28 de la Ley General de Protección de Datos Personales en posesión de Sujetos Obligados, según aplique.

+
Transferencia de datos personales
+

Se podrá realizar transferencia de sus datos en caso de resultar ganador y solo para dar el debido reconocimiento y crédito autoral en términos de la Ley Federal del Derecho de autor.

+

Fuera de los fines mencionados en el párrafo anterior no se realizará transferencia de sus datos a terceros, salvo aquéllas que sean necesarias para atender requerimientos de información de una autoridad competente, en ejercicio de sus atribuciones cuando estén debidamente fundadas y motivadas.

diff --git a/app/views/entre_azul_y_verde/inicio/_categorias.erb b/app/views/entre_azul_y_verde/inicio/_categorias.erb old mode 100644 new mode 100755 index 6434efa..76dc31d --- a/app/views/entre_azul_y_verde/inicio/_categorias.erb +++ b/app/views/entre_azul_y_verde/inicio/_categorias.erb @@ -1,8 +1,92 @@ -
-
- Categorías del concurso -
-
+
+

ATENCIÓN si vives en México y tienes entre 6 y 17 años, o si eres mexicano, pero vives en otro país, puedes participar en las siguientes categorías:

+

Niños de 6 a 8 años

+

Niños de 9 a 11 años

+

Niños de 12 a 14 años

+

Niños de 15 a 17 años

+

Premios

+

Para cada categoría de edad

+ + + + + + +
+ + + + +
Materiales para artista de naturaleza, (colores, pinturas y 2 colecciones de 6 libros.)
+
+ + + + +
Materiales para artista de naturaleza (colores, pinturas y 3 series de 6 libros)
+
+ + + + +
Materiales para artista de naturaleza (colores, pinturas y 1 serie de 6 libros)
+
+

Además, será seleccionada la mejor ilustración de cada estado. Las 12 ilustraciones ganadoras más las 32 seleccionadas de los estados formarán parte de la exposición digital “Entre azul y verde: Somos parte de la solución”, que podrás ver en las páginas de internet: México, país de las maravillas. Así como en el Museo de Historia Natural y Cultura Ambiental de la Ciudad de México que se inaugurará en Julio del 2022.

-
-
\ No newline at end of file +

¿Quieres participar? Es muy sencillo, sigue estos 5 pasos:

+
+
+ +

¿Qué puedo hacer?

+

Muchas personas consideran que no tienen responsabilidad sobre el deterioro del ambiente (contaminación, pérdida de ecosistemas y de especies). Sin embargo, todos contribuimos y todos podemos contribuir a su restauración.

+

Piensa en tus actividades diarias y cómo puedes reducir tu impacto o “huella ecológica”. Millones de mexicanos podemos hacer la diferencia si cada uno somos conscientes de nuestras decisiones y acciones para vivir en armonía con la naturaleza. Por ejemplo, puedes empezar ahorrando agua cuando te bañas, alimentándote de productos sanos para ti y para el ambiente. La comida chatarra además de que no es buena para tu salud tiene un impacto muy grande por su proceso, empaque, transporte, refrigeración, etc.

+
+
+ +

¿Cómo ser un consumidor responsable?

+

Los consumidores podemos reducir nuestro impacto en el ambiente seleccionando responsablemente los productos alimenticios que compramos. La producción de alimentos, verduras, frutas, derivados de animales (carne, leche, huevos) y la pesca de productos marinos tiene serias consecuencias ambientales. El uso desmedido de agroquímicos e insecticidas en la agricultura, la producción confinada, el uso de anabólicos en el ganado, la sobrepesca y contaminación en el mar son algunas de las amenazas a nuestra salud y a la de los ecosistemas naturales.

+

Existen alternativas de producción que resultan en alimentos sanos y sustentables. Conócelas y apoya a los productores que hacen un esfuerzo por reducir su impacto en la naturaleza y proteger nuestra salud.

+

Estos 10 videos te pueden dar algunas ideas.

+

¿Por qué es importante conservar y cuidar nuestra naturaleza?

+

Hay muchas razones. Revisa algunas. ¿Cuál te convence más?

+
+
+ +

¿Qué propones?

+

Cuéntanos en un dibujo o pintura tu propuesta:

+ +

¡Recuerda! Todos Somos parte de la solución para reducir el impacto ambiental y vivir en armonía con la naturaleza.

+
+
+ +

Requisitos del dibujo o pintura

+

Debes elaborar tu dibujo o pintura de los siguientes tamaños:

+ +
+
+ +

Envía las fotos (2) y tus datos

+

Toma dos fotos

+
    +
  1. Primera foto: Foto al iniciar con los primeros trazos.
  2. +
  3. Segunda foto: Foto al finalizar tu obra de arte.
  4. +
+

Las fotos no deben incluir marcas de agua, ni alteraciones digitales.

+

Envía las dos fotos digitalmente. ¡Es muy sencillo! <%# link_to 'Regístrate aquí', new_user_ayv_registration_path, class: 'btn btn-info' %>

+

Recepción de trabajos del 5 de noviembre del 2021 al 28 de febrero de 2022, después de esta fecha no se recibirán más trabajos y la plataforma quedará cerrada. La plataforma a donde puedes enviar tu dibujo es Entre Azul y Verde www.entreazulyverde.mx

+
+1 diff --git a/app/views/entre_azul_y_verde/inicio/_jurado.erb b/app/views/entre_azul_y_verde/inicio/_jurado.erb new file mode 100755 index 0000000..8215364 --- /dev/null +++ b/app/views/entre_azul_y_verde/inicio/_jurado.erb @@ -0,0 +1,31 @@ +
+
+
+
Angélica Sánchez

+

Angélica Sánchez

+

Angélica ha participado en más de 25 muestras colectivas a nivel estatal, nacional e internacional. Tras titularse de la Escuela Nacional de Pintura, Escultura y Grabado, La Esmeralda, CDMX; hoy radica en la ciudad de Puebla. Ha sido becaria en Artes visuales por el Fondo Estatal para la Cultura y las Artes, Puebla, así como también ha sido galardonada por el XXI Encuentro Nacional de Arte Joven, Aguascalientes, Ags. México.

+

Su obra multimedia ha sido seleccionada en el 8e Festival des Arts Multi-média: Rencontres Internationales des étudiants & des artistes independents. Bourges, France.

+

Su obra pictórica adquirió el 3er lugar en la convocatoria para la Campaña Nacional Anticautiverio de Mamíferos Acuáticos en México por Empty the Tanks México.

+

Angélica forma parte del catálogo digital de IMACP, Instituto Municipal de Arte y Cultura Puebla, su ciudad natal. +Sus piezas han sido adquiridas por compradores y coleccionistas tanto en México como en lo internacional.

+
+ +
+
Joel Rodríguez

+

Joel Rodríguez Palomares

+

Biólogo egresado de la Universidad de Guadalajara del Centro Universitario de Ciencias Biológico-Agropecuarias (CUCBA), apasionado por la ilustración científica a través de esta disciplina busco contribuir a que la sociedad conozca más sobre la naturaleza, la biología y el medio ambiente.

+

Desde el 2019 tengo un proyecto llamado JRP BIO-ILUSTRACIÓN el cual tiene como objetivo hacer divulgación de ciencia a través de ilustraciones científicas y naturalistas plasmadas en playeras, pretende dar a conocer la biodiversidad local y regional, esto para crear conciencia sobre la conservación de especies y hacer educación ambiental.

+

He tenido algunas colaboraciones de ilustraciones con diversas instituciones como REDTOX, CONAFOR, Colegio de Biólogos de Jalisco, ALUXES-PALENQUE Refugio de Animales, entre otras.

+

He tenido exposición de mi proyecto en diferentes ferias ambientales, exposiciones, talleres, coloquios, congresos y simposios en materia de educación ambiental y biología.

+
+ +
+
Montserrat García

+

Alejandra Montserrat García Díaz

+

Bióloga egresada de la Universidad Autónoma del Estado de Hidalgo (UAEH), quien en 2018 comenzó un proyecto de divulgación científica a través del arte, que lleva como nombre Explorando con Ale Montse, en donde con ayuda de ilustraciones científicas y naturalistas, vídeos informativos, y entrevistas a personas con proyectos en pro de la conservación, tiene como objetivo dar a conocer la importancia que tienen los organismos que nos rodean, principalmente algunos artrópodos como insectos y arácnidos; además de dar a conocer la biodiversidad y tradiciones de los lugares que visita.

+

Desde 2018 ha estudiado diversos cursos de ilustración científica con expertos en la materia, como Cecilia Santamaría Mandujano y los profesores del Colectivo de Ilustradores Científicos y de la Naturaleza de México (CICYNM). Actualmente es miembro fundador del Colectivo Arte Naturaleza, en donde se tiene como objetivo, dar a conocer la importancia de la ilustración como herramienta de la ciencia y la conservación de la biodiversidad.

+

Además, es miembro del nodo hidalgo de la Red Mexicana de Periodistas de Ciencia (REDMPC); de la Red Nacional de Divulgadores de Ciencia y Tecnología México (Renadicyt MX); y colabora con Ecoydes A. C. en proyectos de divulgación científica y educación ambiental; así como en TV Cable Hidalguense Canal 6, con cápsulas de divulgación científica.

+

Junto con otros colectivos del estado de Hidalgo, está llevando a cabo un proyecto sobre “Comunidades ecológicas” en El Bordo, Pachuca, el cual forma parte de los grupos Roots & Shoots por parte del Instituto Jane Goodall Argentina.

+
+
+
\ No newline at end of file diff --git a/app/views/entre_azul_y_verde/inicio/_medios.erb b/app/views/entre_azul_y_verde/inicio/_medios.erb old mode 100644 new mode 100755 index cca870a..53d5449 --- a/app/views/entre_azul_y_verde/inicio/_medios.erb +++ b/app/views/entre_azul_y_verde/inicio/_medios.erb @@ -1,8 +1,37 @@ -
-
- Información para medios +
+
+
+ +

Convocatoria

+
+ PDF +
+
+
+ +

Video

+ +
+
+ +

Audio

+
+
+
+
+
+
+ +

Anuncios

+ +
-
- -
-
\ No newline at end of file +
diff --git a/app/views/entre_azul_y_verde/inicio/_queEs.erb b/app/views/entre_azul_y_verde/inicio/_queEs.erb old mode 100644 new mode 100755 index 8b77db7..809d590 --- a/app/views/entre_azul_y_verde/inicio/_queEs.erb +++ b/app/views/entre_azul_y_verde/inicio/_queEs.erb @@ -1,23 +1,18 @@ -
-
- ¿Qué es? -
-
-

La salud de los seres humanos depende de la salud del planeta. Muchas personas consideran que no tienen responsabilidad sobre el impacto a la naturaleza, sin embargo, todos contribuimos pero también todos podemos ser parte de la solución. - Llevamos más de un año sufriendo las consecuencias de la pandemia, encerrados, sin socializar con la familia, los amigos y con la naturaleza. Nosotros mismos causamos el deterioro del ambiente mediante nuestro consumo y desperdicio. Piensa en tus actividades diarias ¿qué podemos hacer para mejorar el ambiente?

-
-
- -
-
-

¿Has imaginado cómo sería el lugar donde vives si convivieras más con las plantas y animales silvestres?

-

¿Conoces a las plantas y animales de nuestro país?

-

¿Qué debemos hacer para que todos vivamos en armonía?

-

OBJETIVO

-

Que los niños y jóvenes, mediante una pintura o dibujo, expresen sus ideas sobre cómo todos podemos contribuir a vivir en armonía con la naturaleza.

-

FECHA

-

Convocatoria abierta a partir del 1 de julio

-

Cierre 31 de agosto

-

Premiación segunda quincena de septiembre

-
-
\ No newline at end of file +
+

+ La salud de los seres humanos depende de la salud del planeta. Muchas personas consideran que no tienen responsabilidad sobre el impacto a la naturaleza, sin embargo, todos contribuimos pero también todos podemos ser parte de la solución. +

+

+ Llevamos más de un año sufriendo las consecuencias de la pandemia, encerrados, sin socializar con la familia, los amigos y con la naturaleza. Nosotros mismos causamos el deterioro del ambiente mediante nuestro consumo y desperdicio. Piensa en tus actividades diarias ¿qué podemos hacer para mejorar el ambiente? +

+
+
+

OBJETIVO

+

Que los niños y jóvenes, mediante una pintura o dibujo, expresen sus ideas sobre cómo todos podemos contribuir a vivir en armonía con la naturaleza.

+

FECHA

+

Convocatoria abierta a partir del 5 de noviembre del 2021

+

Cierre 28 de febrero de 2022

+

Anuncio de ganadores y menciones honoríficas 30 de abril de 2022

+

Premiación segunda quincena de mayo del 2022

+ <%# link_to 'Regístrate aquí', new_user_ayv_registration_path, class: 'btn btn-info' %> +
diff --git a/app/views/entre_azul_y_verde/inicio/index.erb b/app/views/entre_azul_y_verde/inicio/index.erb index 807d56d..0f90d7a 100644 --- a/app/views/entre_azul_y_verde/inicio/index.erb +++ b/app/views/entre_azul_y_verde/inicio/index.erb @@ -1,14 +1,67 @@ -
-
- +<% content_for(:delayedjs) do %> + +<% end %> + +

<%= notice %>

+ +
+
+ Entre Azul y Verde + Entre Azul y Verde
-
-
- Entre Azul y Verde +
+ +
+
+ ¿Qué es? +
+ <%= render :partial => 'queEs' %> +
+ +
+
+ Jurado +
+ <%= render :partial => 'jurado' %> +
+ +
+
+ Categorías del concurso +
+ <%= render :partial => 'categorias' %> +
+ +
+
+ Bases del concurso +
+
+

+ +

+ <%#= render :partial => 'bases' %> +
+
+ +
+
+ Información para medios
-
+ <%= render :partial => 'medios' %>
-<%= render :partial => 'queEs' %> -<%= render :partial => 'categorias' %> -<%= render :partial => 'bases' %> -<%= render :partial => 'medios' %> \ No newline at end of file + + +<%= render :partial => 'entre_azul_y_verde/shared/modal' %> diff --git a/app/views/entre_azul_y_verde/panel/_extemporaneos.erb b/app/views/entre_azul_y_verde/panel/_extemporaneos.erb new file mode 100644 index 0000000..722c86d --- /dev/null +++ b/app/views/entre_azul_y_verde/panel/_extemporaneos.erb @@ -0,0 +1,54 @@ +
+ +
+
+
+
ID
+
Primeros trazos
Dibujo finalizado
+
Descripción del dibujo
Compromiso del participante
+
¿Pasa a finalista?
+
+
+
+ 99999 +
+
+ + +
+
+
Capto y Aprovecho La Lluvia (DE 6 A 8 AÑOS)
+

Descripción: LO MANDÓ COMO TEMA(?):
es necesario que aprovechemos la lluvia captando a través de nuestros techos y usándola para llegar nuestras plantas

+

Compromiso: NO MANDÓ

+
+
+ > + +
+
+
+
+ 99998 +
+
+ + +
+
+
Sembrando y Cuidando Vamos Avanzando (DE 12 A 14 AÑOS)
+

Descripción: LO MANDÓ COMO TEMA(?):
las grandes ciudades acaban con el medio ambiente y es necesario hacer un esfuerzo para mantener verde nuestro planeta.

+

Compromiso: NO MANDÓ

+
+
+ > + +
+
+
\ No newline at end of file diff --git a/app/views/entre_azul_y_verde/panel/_extemporaneos_finalistas.erb b/app/views/entre_azul_y_verde/panel/_extemporaneos_finalistas.erb new file mode 100644 index 0000000..23d0f3d --- /dev/null +++ b/app/views/entre_azul_y_verde/panel/_extemporaneos_finalistas.erb @@ -0,0 +1,13 @@ +<% calificacion = CalificacionAyv.find_by_usuario_id(99998).calificacion %> +
+ +
diff --git a/app/views/entre_azul_y_verde/panel/_tabla_categoria.erb b/app/views/entre_azul_y_verde/panel/_tabla_categoria.erb new file mode 100644 index 0000000..716244c --- /dev/null +++ b/app/views/entre_azul_y_verde/panel/_tabla_categoria.erb @@ -0,0 +1,50 @@ +
+ <% @dibujos.each do |categorias, dibujos| %> +
+ +
+ +
+
+
ID
+
Primeros trazos
Dibujo finalizado
+
Descripción del dibujo
Compromiso del participante
+
¿Pasa a finalista?
+
+ <% dibujos.each do |d| %> +
+
+ <%= d.id %> +
+
+ + +
+
+
<%=d.titulo %>
+

Descripción: <%= d.descripcion %>

+

Compromiso: <%= d.compromiso %>

+
+
+ > + +
+
+ <% end %> +
+ <% end %> + <%= render partial: 'entre_azul_y_verde/panel/extemporaneos' %> +
\ No newline at end of file diff --git a/app/views/entre_azul_y_verde/panel/_tabla_desempate.erb b/app/views/entre_azul_y_verde/panel/_tabla_desempate.erb new file mode 100644 index 0000000..00d1c71 --- /dev/null +++ b/app/views/entre_azul_y_verde/panel/_tabla_desempate.erb @@ -0,0 +1,37 @@ +
+ <% @dibujos.each do |categorias, dibujos| %> +
+ +
+ +
+
+ <% dibujos.each_with_index do |d, i| %> +
+

<%= d.titulo %>

+

Promedio: <%= d.promedio.round(2) %>

+ +

Lugar asignado: <%= d.calificacion.to_s[@juez[:posicion]].to_i %>

+
+
+ > +
+ <% end %> +
+
+ <% end %> +
\ No newline at end of file diff --git a/app/views/entre_azul_y_verde/panel/_tabla_finalistas.erb b/app/views/entre_azul_y_verde/panel/_tabla_finalistas.erb new file mode 100644 index 0000000..7e2751b --- /dev/null +++ b/app/views/entre_azul_y_verde/panel/_tabla_finalistas.erb @@ -0,0 +1,33 @@ +
+ <% @dibujos.each do |categorias, dibujos| %> +
+ +
+ +
+
+ <% dibujos.each_with_index do |d, i| %> +
+ +
+ <% end %> + <%= render partial: 'entre_azul_y_verde/panel/extemporaneos_finalistas', locals: {dgcc: dgcc} if categorias == :de_12_a_14 %> +
+
+ <% end %> +
\ No newline at end of file diff --git a/app/views/entre_azul_y_verde/panel/calificacion.erb b/app/views/entre_azul_y_verde/panel/calificacion.erb new file mode 100644 index 0000000..4591df3 --- /dev/null +++ b/app/views/entre_azul_y_verde/panel/calificacion.erb @@ -0,0 +1,177 @@ +<% dgcc = (@juez.nil? || @juez[:posicion] == 3) %> +<% content_for(:delayedjs) do %> + +<% end %> + +<% content_for(:delayedcss) do %> + +<% end %> + +
+
+
    +
  • Instrucciones: (Actualizadas al 27-04-2022) Bienvenido:<%= @juez[:posicion] %> - <%= @juez[:usuario] %>
  • +
  • Dar click en la categoría deseada para mostrar los dibujos finalistass.
  • +
  • Pasar el mouse encima (hover) de los botones (el número es el id del concursante) para ver un preview de la foto del dibujo.
  • +
  • Dar click sobre cualquier botón para ver el registro del concursante en un modal (dibujos, proceso, compromiso, título, técnica, etc.)
  • +
  • Si se desea ver cualquier imagen en otra ventana, al dar click sobre cualquier imagen dentro del modal se abrirá dicha imagen en una nueva ventana.
  • +
  • Una vez inspeccionadas las imagenes con los criterios a considerar, hay que realizar la calificacion en el slider qeu se muestra en la parte inferior del modal.
  • +
  • La calificación va del '1' al '9', siendo '1' la peor calificación y '9' el máximo puntaje posible.
  • +
  • Es necesario GUARDAR los cambios, esto se realiza dando click en el botón verde que dice CONFIRMAR, al realizarse la calificación el botón cambiara de color y se mostrara la leyenda "Confirmado" junto con la califiación dada.
  • +
  • Al entrar y salir del modal de un dibujo ya calificado, se puede volver a cambiar la calificación.
  • +
  • A manera de ayuda visual, existe un contador que va cambiando conforme al número de calificaciones distintas a "1".
  • +
  • Así mismo, los botones cuyos dibujos ya se hayan calificado (cuya calificación sea distinta de "1") se veran de color verde con una palomita, esto servira para identificar si falta algún dibujo por calificar.
  • +
  • Es importante recalcar que TODOS los dibujos deben ser calificados sin excepción, esto es debido a que con ello tambien se obtienen los mejores por estado (el cual no esta mostrado en los datos para preservar el anonimato).
  • +
  • Cualquier duda que tengan, favor de remitirla a ggonzalez@conabio.gob.mx o con Ivette Mota.
  • +
  • Es todo.
  • +
+
+ <%= render partial: "entre_azul_y_verde/panel/tabla_finalistas", locals: {dgcc: dgcc} %> +
+ +<%= render :partial => "entre_azul_y_verde/shared/modal" %> diff --git a/app/views/entre_azul_y_verde/panel/desempate.erb b/app/views/entre_azul_y_verde/panel/desempate.erb new file mode 100644 index 0000000..38a3eb9 --- /dev/null +++ b/app/views/entre_azul_y_verde/panel/desempate.erb @@ -0,0 +1,168 @@ +<% dgcc = (@juez.nil? || @juez[:posicion] == 3) %> +<% content_for(:delayedjs) do %> + +<% end %> + +<% content_for(:delayedcss) do %> + +<% end %> + +
+
+
    +
  • Instrucciones: (Actualizadas al 30-04-2022)
  • +
  • El listado de dibujos por categoría esta ordenado de mayor a menor de acuerdo al promedio.
  • +
  • Se muestran los primeros 6 lugares apra poder decidir en caso de multiple empate
  • +
  • Dar click en el botón de datos para ver el resto de información, técnica, compromiso, etc.
  • +
  • Dentro del modal, anotar EL LUGAR que se desea establecer como definitivo.
  • +
  • Es todo.
  • +
+
+ <%= render partial: "entre_azul_y_verde/panel/tabla_desempate", locals: {dgcc: dgcc} %> +
+ +<%= render :partial => "entre_azul_y_verde/shared/modal" %> diff --git a/app/views/entre_azul_y_verde/panel/precalificacion.erb b/app/views/entre_azul_y_verde/panel/precalificacion.erb new file mode 100644 index 0000000..6f5c3ed --- /dev/null +++ b/app/views/entre_azul_y_verde/panel/precalificacion.erb @@ -0,0 +1,107 @@ +<% content_for(:delayedjs) do %> + +<% end %> + +<% content_for(:delayedcss) do %> + +<% end %> + +
+
+
    +
  • Instrucciones: (Actualizadas al 16-03-2022)
  • +
  • Dar click en la categoría deseada para mostrar los dibujos concursantes.
  • +
  • Pasar el mouse encima (hover) de los botones (Proceso/Terminado) para ver un preview de la foto del dibujo.
  • +
  • Dar click sobre cualquier botón para ver AMBAS imagenes en grande en un modal.
  • +
  • Si se desea ver cualquier imagen en otra ventana, dar click sobre la imagen dentro del modal abrira dicha imagen en una nueva ventana.
  • +
  • Una vez inspeccionada las imagenes, SÓLO si se desea que dicho dibujo NO pase a ser finalista (i.e. ser calificado por jueces) se debe desactivar el switch de la cuarta columna.
  • +
  • No es necesario guardar los cambios, al momento de interactuar con cada switch se guarda el estado del mismo.
  • +
  • Es todo.
  • +
+
+ <%= render partial: "entre_azul_y_verde/panel/tabla_categoria" %> +
+ +<%= render :partial => "entre_azul_y_verde/shared/modal" %> diff --git a/app/views/entre_azul_y_verde/registro/_form.html.erb b/app/views/entre_azul_y_verde/registro/_form.html.erb index 7141b9e..174b087 100644 --- a/app/views/entre_azul_y_verde/registro/_form.html.erb +++ b/app/views/entre_azul_y_verde/registro/_form.html.erb @@ -1,6 +1,45 @@ -<%= simple_form_for @registro do |f| %> - <%= f.input :nombre %> - <%= f.association :direccion %> - <%= f.association :media %> - <%= f.button :submit %> +<%= simple_form_for @registro, **@form_params, :html => {:multipart => true} do |f| %> +
+
+

Datos del concursante

+
+ <%= f.input_field :nombre, class: 'form-control my-2', placeholder: 'Nombre(s)'%> + <%= f.input_field :apellido_paterno, class: 'form-control my-2', placeholder: 'Apellido Paterno' %> + <%= f.input_field :apellido_materno, class: 'form-control my-2', placeholder: 'Apellido Materno' %> + + <%= f.date_field :fecha_nacimiento, min: UsuarioAyv::FECHA_NAC_MIN, max: UsuarioAyv::FECHA_NAC_MAX, class: 'form-check-inline my-2' %> + <%= f.input_field :lugar_nacimiento, class: 'form-control my-2', placeholder: 'Lugar de nacimiento' %> + + <%= f.select :medio, options_for_select(UsuarioAyv::MEDIO, f.object.medio), { prompt: "--- Selecciona ---" }, { class: 'form-check-inline my-2' } %> + <%= f.input_field :otro_medio, class: 'form-control my-2', placeholder: 'Otro medio (opcional)' %> + <%= f.hidden_field :user_id, value: current_user_ayv.id %> +
+ +

Datos del tutor

+
+ <%= f.fields_for :tutor do |tutor_form| %> + <%= render "entre_azul_y_verde/registro/form_tutor", f: tutor_form %> + <% end %> +
+ +

Dirección

+
+ <%= f.fields_for :direccion do |direccion_form| %> + <%= render "entre_azul_y_verde/registro/form_direccion", f: direccion_form %> + <% end %> +
+
+ +
+

Dibujos

+
+ <%= f.simple_fields_for :media do |media_form| %> + <%= render "entre_azul_y_verde/registro/form_media", f: media_form %> + <% end %> +
+
+ +
+ + <%= f.button :submit, @registro.new_record? ? 'Guardar registro' : 'Actualizar registro', class: 'btn btn-success btn-sm mb-4' %> <% end %> \ No newline at end of file diff --git a/app/views/entre_azul_y_verde/registro/_form_direccion.html.erb b/app/views/entre_azul_y_verde/registro/_form_direccion.html.erb new file mode 100644 index 0000000..5fb654f --- /dev/null +++ b/app/views/entre_azul_y_verde/registro/_form_direccion.html.erb @@ -0,0 +1,10 @@ +
+ <%= f.input_field :calle, class: 'form-control my-2', placeholder: 'Calle' %> + <%= f.input_field :numero, class: 'form-control my-2', placeholder: 'Número' %> + <%#= f.input_field :interior, class: 'form-control my-2', placeholder: 'Interior' %> + <%= f.input_field :colonia, class: 'form-control my-2', placeholder: 'Colonia' %> + <%= f.input_field :municipio, class: 'form-control my-2', placeholder: 'Municipio/Alcaldía' %> + <%= f.input_field :cp, class: 'form-control my-2', placeholder: 'Código postal' %> + + <%= f.select :estado, options_for_select(Direccion::ESTADOS, f.object.estado), { prompt: "--- Selecciona ---" }, { class: 'form-control my-2' } %> +
diff --git a/app/views/entre_azul_y_verde/registro/_form_media.html.erb b/app/views/entre_azul_y_verde/registro/_form_media.html.erb new file mode 100644 index 0000000..32b9794 --- /dev/null +++ b/app/views/entre_azul_y_verde/registro/_form_media.html.erb @@ -0,0 +1,24 @@ +
+ + <% if f.object.posicion == 1 %> + + <% else %> + + <% end %> + + <% if !@registro.new_record? %> + + <% end %> + + <%= f.file_field :original_filename, accept: 'image/png,image/jpeg', class: 'form-check-inline' %> + <%= f.hidden_field :posicion %> + +
+ +
+
+ <%= f.simple_fields_for :media_metadato do |media_metadato_form| %> + <%= render "entre_azul_y_verde/registro/form_media_metadato", f: media_metadato_form %> + <% end %> +
+
diff --git a/app/views/entre_azul_y_verde/registro/_form_media_metadato.erb b/app/views/entre_azul_y_verde/registro/_form_media_metadato.erb new file mode 100644 index 0000000..78863a5 --- /dev/null +++ b/app/views/entre_azul_y_verde/registro/_form_media_metadato.erb @@ -0,0 +1,6 @@ +
+ <%= f.input_field :titulo, class: 'form-control my-2', placeholder: 'Título del dibujo' %> + <%= f.input_field :descripcion, class: 'form-control my-2', placeholder: 'Descripción del dibujo', rows: 5 %> + <%= f.input_field :tecnica, class: 'form-control my-2', placeholder: 'Técnica del dibujo', rows: 5 %> + <%= f.input_field :compromiso, class: 'form-control my-2', placeholder: 'Menciona que puedes hacer para cuidar tu salud y la del planeta', rows: 5 %> +
\ No newline at end of file diff --git a/app/views/entre_azul_y_verde/registro/_form_tutor.erb b/app/views/entre_azul_y_verde/registro/_form_tutor.erb new file mode 100644 index 0000000..40801c9 --- /dev/null +++ b/app/views/entre_azul_y_verde/registro/_form_tutor.erb @@ -0,0 +1,6 @@ +
+ <%= f.input_field :nombre, class: 'form-control my-2', placeholder: 'Nombre(s)'%> + <%= f.input_field :apellido_paterno, class: 'form-control my-2', placeholder: 'Apellido Paterno' %> + <%= f.input_field :apellido_materno, class: 'form-control my-2', placeholder: 'Apellido Materno' %> + <%= f.input_field :telefono_contacto, class: 'form-control my-2', placeholder: 'Teléfono de contacto (opcional)' %> +
diff --git a/app/views/usuario_metadatos/_form_usuario_metadatos.html.erb b/app/views/entre_azul_y_verde/registro/_form_usuario_metadatos.erb similarity index 54% rename from app/views/usuario_metadatos/_form_usuario_metadatos.html.erb rename to app/views/entre_azul_y_verde/registro/_form_usuario_metadatos.erb index 10c1dfa..cca8aec 100644 --- a/app/views/usuario_metadatos/_form_usuario_metadatos.html.erb +++ b/app/views/entre_azul_y_verde/registro/_form_usuario_metadatos.erb @@ -1,5 +1,4 @@
- <%= f.input :id_metadato %> - <%= f.input :id_usuario %> + <%= f.input :metadato_id %> <%= f.input :valor_metadato %>
diff --git a/app/views/entre_azul_y_verde/registro/edit.html.erb b/app/views/entre_azul_y_verde/registro/edit.html.erb index 9c91f09..27e1c08 100644 --- a/app/views/entre_azul_y_verde/registro/edit.html.erb +++ b/app/views/entre_azul_y_verde/registro/edit.html.erb @@ -1,6 +1,10 @@ -

Editing Usuario

+
+

<%= notice %>

-<%= render 'form', usuario: @usuario %> - -<%= link_to 'Show', @usuario %> | -<%= link_to 'Back', usuarios_path %> + <%= render partial: "entre_azul_y_verde/shared/sub-header", locals: { title: "EDITA LOS DATOS DEL REGISTRO" } %> + +
+ <%= render 'form', usuario: @registro %> + <%= link_to 'Regresar', entre_azul_y_verde_root_path, class: "mt-4" %> +
+
\ No newline at end of file diff --git a/app/views/entre_azul_y_verde/registro/index.erb b/app/views/entre_azul_y_verde/registro/index.erb deleted file mode 100644 index 52af49e..0000000 --- a/app/views/entre_azul_y_verde/registro/index.erb +++ /dev/null @@ -1,4 +0,0 @@ -Favor de registrarte -
-What is Lorem Ipsum? -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. \ No newline at end of file diff --git a/app/views/entre_azul_y_verde/registro/index.html.erb b/app/views/entre_azul_y_verde/registro/index.html.erb index 5c839bb..e4af7df 100644 --- a/app/views/entre_azul_y_verde/registro/index.html.erb +++ b/app/views/entre_azul_y_verde/registro/index.html.erb @@ -9,9 +9,8 @@ Nombre Apellido paterno Apellido materno - Fecha nacimiento nac + Fecha nacimiento Lugar nacimiento - Curp @@ -23,9 +22,8 @@ <%= usuario.nombre %> <%= usuario.apellido_paterno %> <%= usuario.apellido_materno %> - <%= usuario.fecha_nacimiento_nac %> + <%= usuario.fecha_nacimiento %> <%= usuario.lugar_nacimiento %> - <%= usuario.curp %> <%= link_to 'Show', usuario %> <%= link_to 'Edit', edit_usuario_path(usuario) %> <%= link_to 'Destroy', usuario, method: :delete, data: { confirm: 'Are you sure?' } %> diff --git a/app/views/entre_azul_y_verde/registro/instrucciones.erb b/app/views/entre_azul_y_verde/registro/instrucciones.erb new file mode 100644 index 0000000..81abc95 --- /dev/null +++ b/app/views/entre_azul_y_verde/registro/instrucciones.erb @@ -0,0 +1,11 @@ +

En la plataforma deberás completar la siguiente información:

+
    +
  • Título de la obra.
  • +
  • Nombre completo y edad.
  • +
  • Correo electrónico.
  • +
  • Domicilio (calle, número, colonia, alcaldía o municipio, código postal, estado).
  • +
  • Teléfono.
  • +
  • Medio por el cual te enteraste del concurso.
  • +
  • Descripción de tu dibujo incluyendo lo que tú puedes hacer para cuidar tu salud y la del planeta.
  • +
  • La madre, padre o tutor debe de incluir su nombre acompañado de la siguiente leyenda: “Autorizo la participación de mi hijo/a al concurso "Entre azul y verde", acepto las bases y otorgo mi conformidad a lo expuesto en ellas.
  • +
\ No newline at end of file diff --git a/app/views/entre_azul_y_verde/registro/new.html.erb b/app/views/entre_azul_y_verde/registro/new.html.erb index 639aba7..64ca4a3 100644 --- a/app/views/entre_azul_y_verde/registro/new.html.erb +++ b/app/views/entre_azul_y_verde/registro/new.html.erb @@ -1,6 +1,10 @@ -

Hola, bienvenido al registro de participantes

-

A continuación te solicitaremos la sigueinte información

+
+

<%= notice %>

-<%= render 'form', usuario: @usuario %> + <%= render partial: "entre_azul_y_verde/shared/sub-header", locals: { title: "COMPLETA LOS DATOS DEL REGISTRO" } %> + +
+ <%= render 'form', usuario: @registro %> +
-<%= link_to 'Back', usuarios_path %> +
diff --git a/app/views/entre_azul_y_verde/registro/show.html.erb b/app/views/entre_azul_y_verde/registro/show.html.erb index 34cfe77..bc13cf3 100644 --- a/app/views/entre_azul_y_verde/registro/show.html.erb +++ b/app/views/entre_azul_y_verde/registro/show.html.erb @@ -1,39 +1,28 @@

<%= notice %>

-

- Email: - <%= @usuario.email %> -

-

Nombre: - <%= @usuario.nombre %> + <%= @registro.nombre %>

Apellido paterno: - <%= @usuario.apellido_paterno %> + <%= @registro.apellido_paterno %>

Apellido materno: - <%= @usuario.apellido_materno %> + <%= @registro.apellido_materno %>

Fecha nacimiento nac: - <%= @usuario.fecha_nacimiento_nac %> + <%= @registro.fecha_nacimiento %>

Lugar nacimiento: - <%= @usuario.lugar_nacimiento %> -

- -

- Curp: - <%= @usuario.curp %> + <%= @registro.lugar_nacimiento %>

-<%= link_to 'Edit', edit_usuario_path(@usuario) %> | -<%= link_to 'Back', usuarios_path %> +<%= link_to 'Edit', edit_entre_azul_y_verde_registro_path(@registro) %> | diff --git a/app/views/entre_azul_y_verde/shared/_modal.erb b/app/views/entre_azul_y_verde/shared/_modal.erb new file mode 100644 index 0000000..374e3ce --- /dev/null +++ b/app/views/entre_azul_y_verde/shared/_modal.erb @@ -0,0 +1,18 @@ + + \ No newline at end of file diff --git a/app/views/entre_azul_y_verde/shared/_sub-header.erb b/app/views/entre_azul_y_verde/shared/_sub-header.erb new file mode 100644 index 0000000..d3d71ff --- /dev/null +++ b/app/views/entre_azul_y_verde/shared/_sub-header.erb @@ -0,0 +1,5 @@ +
+

Inscripción + <%= title %> + Inscripción

+
\ No newline at end of file diff --git a/app/views/layouts/entre_azul_y_verde.erb b/app/views/layouts/entre_azul_y_verde.erb index dd4d1db..984e1a7 100644 --- a/app/views/layouts/entre_azul_y_verde.erb +++ b/app/views/layouts/entre_azul_y_verde.erb @@ -10,23 +10,27 @@ <%= javascript_include_tag 'entre_azul_y_verde/entre_azul_y_verde', 'data-turbolinks-track': 'reload' %> + + + + +
- Entre Azul y Verde - + <%= render :partial => 'entre_azul_y_verde/header' %>
<%= yield %>
-