From ae7015da2d0734e40b8e968cf8485cb0f014814e Mon Sep 17 00:00:00 2001
From: echarp <emmanuel.charpentier@free.fr>
Date: Tue, 23 Sep 2014 17:50:35 +0200
Subject: [PATCH] =?UTF-8?q?On=20ne=20peut=20plus=20saisir=20un=20=C3=A9v?=
 =?UTF-8?q?=C3=A9nement=20dont=20la=20date=20de=20d=C3=A9but=20est=20apr?=
 =?UTF-8?q?=C3=A8s=20la=20date=20de=20fin?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 app/assets/javascripts/events.js.coffee   |  7 +++++++
 app/assets/stylesheets/scaffolds.css.sass | 18 ++++++------------
 app/models/event.rb                       |  9 +++++++++
 app/views/events/_form.html.haml          |  5 ++---
 app/views/moderations/refuse.html.haml    |  2 +-
 config/locales/models/en.yml              |  6 ++++++
 config/locales/models/fr.yml              |  6 ++++++
 config/locales/views/en.yml               |  2 +-
 8 files changed, 38 insertions(+), 17 deletions(-)

diff --git a/app/assets/javascripts/events.js.coffee b/app/assets/javascripts/events.js.coffee
index 495e57619..917c05905 100644
--- a/app/assets/javascripts/events.js.coffee
+++ b/app/assets/javascripts/events.js.coffee
@@ -30,6 +30,13 @@ $(document).ready ->
 
       elt.select2 tags: tags, separator: [' '], tokenSeparators: [' ']
 
+  $('#event_start_time').change ->
+    if $('#event_start_time').val() >= $('#event_end_time').val()
+      $('#event_end_time').val($('#event_start_time').val())
+  $('#event_end_time').change ->
+    if $('#event_start_time').val() >= $('#event_end_time').val()
+      $('#event_start_time').val($('#event_end_time').val())
+
 $(document).on 'page:receive', ->
   # Delete existing tinymce editors, very important in the turbolinks context!
   tinymce.remove()
diff --git a/app/assets/stylesheets/scaffolds.css.sass b/app/assets/stylesheets/scaffolds.css.sass
index f5531d5f7..965f1a822 100644
--- a/app/assets/stylesheets/scaffolds.css.sass
+++ b/app/assets/stylesheets/scaffolds.css.sass
@@ -5,27 +5,21 @@ div
 #notice
   color: green
 
-.field_with_errors
-  padding: 2px
-  background-color: red
-  display: table
-
 #error_explanation
   width: 450px
   border: 2px solid red
-  padding: 7px
   padding-bottom: 0
   margin-bottom: 20px
   background-color: #f0f0f0
   h2
     text-align: left
     font-weight: bold
-    padding: 5px 5px 5px 15px
+    padding: 15px
     font-size: 12px
-    margin: -7px
-    margin-bottom: 0px
     background-color: #c00
     color: #fff
-  ul li
-    font-size: 12px
-    list-style: square
+  p, ul
+    padding: 0 1em
+    li
+      font-size: 12px
+      list-style: square
diff --git a/app/models/event.rb b/app/models/event.rb
index b24ad50ca..c5ce0883c 100644
--- a/app/models/event.rb
+++ b/app/models/event.rb
@@ -15,6 +15,7 @@ class Event < ActiveRecord::Base
   validates :contact, presence: true
   validates :contact, email: true
   validates :submitter, email: true
+  validate :end_after_start
 
   geocoded_by :full_address, lookup: :nominatim
   # after_validation :geocode, if: -> (obj) { obj.address_changed? }
@@ -81,4 +82,12 @@ class Event < ActiveRecord::Base
   def full_address
     [address, city, related_region.name].compact.join ', '
   end
+
+  private
+
+  def end_after_start
+    return if end_time.blank? || start_time.blank?
+
+    errors.add :end_time, :before_start if end_time <= start_time
+  end
 end
diff --git a/app/views/events/_form.html.haml b/app/views/events/_form.html.haml
index b9301c4d4..dcccc1418 100644
--- a/app/views/events/_form.html.haml
+++ b/app/views/events/_form.html.haml
@@ -1,9 +1,8 @@
 = form_for @event, url: (@moderation ? moderation_path(@moderation) : @event.persisted? ? event_path(@event) : nil) do |f|
   - if @event.errors.any?
-    #error_explanation.error.flash
-      %h2= "#{pluralize(@event.errors.count, "error")} prohibited this event from being saved:"
+    #flash_messages
       - @event.errors.full_messages.each do |msg|
-        %p= msg
+        %p.flash.alert= msg
 
   - if @event.persisted?
     - unless @moderation
diff --git a/app/views/moderations/refuse.html.haml b/app/views/moderations/refuse.html.haml
index c90777cb1..c5bea6792 100644
--- a/app/views/moderations/refuse.html.haml
+++ b/app/views/moderations/refuse.html.haml
@@ -35,5 +35,5 @@
       =t '.ok'
 
 %fieldset
-  %legend=Event.model_name.human
+  %legend= Event.model_name.human
   = render file: '/events/show'
diff --git a/config/locales/models/en.yml b/config/locales/models/en.yml
index cf3fd1962..59534c23c 100644
--- a/config/locales/models/en.yml
+++ b/config/locales/models/en.yml
@@ -61,3 +61,9 @@ en:
         value: Value
         interpolations: Interpolations
         is_proc: Procedure?
+    errors:
+      models:
+        event:
+          attributes:
+            end_time:
+              before_start: can not be before beginning
diff --git a/config/locales/models/fr.yml b/config/locales/models/fr.yml
index 9f9148d7b..e7f91dc15 100644
--- a/config/locales/models/fr.yml
+++ b/config/locales/models/fr.yml
@@ -61,3 +61,9 @@ fr:
         value: Valeur
         interpolations: Interpolations
         is_proc: Procédure?
+    errors:
+      models:
+        event:
+          attributes:
+            end_time:
+              before_start: ne peut être avant le début
diff --git a/config/locales/views/en.yml b/config/locales/views/en.yml
index d88be2e71..224918a79 100644
--- a/config/locales/views/en.yml
+++ b/config/locales/views/en.yml
@@ -1,5 +1,5 @@
 en:
-  mail_prefix: "[AdL-en] "
+  mail_prefix: "[AdL] "
   show: View
   save: Save
   edit: Edit
-- 
GitLab