agenda
This commit is contained in:
parent
da14bfff96
commit
6ac6f91d8f
114
app/controllers/admin/events_controller.rb
Normal file
114
app/controllers/admin/events_controller.rb
Normal file
@ -0,0 +1,114 @@
|
||||
# -*- encoding : utf-8 -*-
|
||||
|
||||
class Admin::EventsController < ApplicationController
|
||||
before_filter :auth_admin
|
||||
|
||||
|
||||
layout "admin"
|
||||
|
||||
before_filter :find_events
|
||||
|
||||
|
||||
def index
|
||||
|
||||
end
|
||||
|
||||
|
||||
def cible
|
||||
@events = Event.all
|
||||
|
||||
render :layout => false
|
||||
end
|
||||
|
||||
|
||||
def new
|
||||
if params[:event_id] and Event.find(params[:event_id])
|
||||
@event = Event.find(params[:event_id]).dup
|
||||
@event.event_id = params[:event_id]
|
||||
else
|
||||
@event = Event.new(:start_at_date =>[ Date.today.day, Date.today.month, Date.today.year].join("/"), :start_at_time => "20:00")
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def edit
|
||||
@event = Event.find(params[:id])
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
||||
def create
|
||||
@event = Event.new(params.require(:event).permit!)
|
||||
|
||||
|
||||
if @event.save
|
||||
|
||||
|
||||
flash[:notice] = "L'événement à été ajouté avec succès."
|
||||
|
||||
self.find_events #reload events to show new events in the list sort by date.
|
||||
|
||||
else
|
||||
render :action => "new"
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
def update
|
||||
@event = Event.find(params[:id])
|
||||
|
||||
if @event.update_attributes(params.require(:event).permit!)
|
||||
flash[:notice] = "L'événement à été modifié avec succès."
|
||||
else
|
||||
render :action => "edit"
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
def destroy
|
||||
@event = Event.find(params[:id])
|
||||
@event.destroy
|
||||
|
||||
end
|
||||
|
||||
|
||||
protected
|
||||
|
||||
def find_events
|
||||
date_regex = /^(0[1-9]|[12][0-9]|3[01])[\/](0[1-9]|1[012])[\/](19|20)\d\d$/i
|
||||
if params[:start] and params[:start] =~ date_regex
|
||||
start = Date.parse(params[:start]).beginning_of_day
|
||||
params[:start]= start.strftime('%d/%m/%Y')
|
||||
else
|
||||
params[:start] = "Début"
|
||||
end
|
||||
if params[:stop] and params[:stop] =~ date_regex
|
||||
stop = Date.parse(params[:stop]).end_of_day
|
||||
params[:stop]= stop.strftime('%d/%m/%Y')
|
||||
else
|
||||
params[:stop] = "Fin"
|
||||
end
|
||||
|
||||
@events = Event.order('start_at, stop_at')
|
||||
@events = @events.after(start) if start
|
||||
@events = @events.before(stop) if stop
|
||||
per_page = (params[:per_page] and params[:per_page] != "") ? params[:per_page] : 20
|
||||
page = (params[:page] and params[:page] != "") ? params[:page] : 1
|
||||
#@events = Event.all.page(page).per(per_page)
|
||||
|
||||
@events = Event.order('start_at DESC, stop_at DESC')
|
||||
@events = @events.after(start) if start
|
||||
@events = @events.before(stop) if stop
|
||||
|
||||
|
||||
|
||||
|
||||
@events = @events.page(page).per(per_page)
|
||||
end
|
||||
end
|
@ -4,35 +4,64 @@ class Public::EventsController < ApplicationController
|
||||
|
||||
layout "public"
|
||||
|
||||
def archive
|
||||
|
||||
end
|
||||
|
||||
def index
|
||||
|
||||
@events = Event.before(Date.today).recents
|
||||
|
||||
@events = @events.page(params[:page]).per(3)
|
||||
|
||||
|
||||
@title = "Events du blog"
|
||||
if params[:month] and params[:year]
|
||||
|
||||
@start_list_date = Date.new(params[:year].to_i, params[:month].to_i).beginning_of_month
|
||||
@end_list_date = @start_list_date
|
||||
|
||||
|
||||
|
||||
|
||||
else
|
||||
@start_list_date = Time.now.beginning_of_month
|
||||
@end_list_date = @start_list_date + 2.month
|
||||
|
||||
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
@title = "Agenda"
|
||||
end
|
||||
|
||||
def category
|
||||
|
||||
|
||||
|
||||
|
||||
@category = Category.find_by_slug(params[:slug])
|
||||
@articles = @category.articles.recents
|
||||
@articles = @articles.page(params[:page]).per(10)
|
||||
@title = "Articles du blog"
|
||||
@index_title = 'Articles de la catégorie "'+@category.name+'"'
|
||||
render :action => :index
|
||||
|
||||
end
|
||||
|
||||
def archives
|
||||
@month = Date.parse("#{params[:year]}/#{params[:month]}").beginning_of_month
|
||||
@articles = Article.where("enabled = ? and published_at > ? and published_at < ?", true, @month, @month.end_of_month )
|
||||
@articles = @articles.page(params[:page]).per(10)
|
||||
@title = "Articles du blog"
|
||||
if [4,8].include?(@month.month)
|
||||
@index_title = 'Articles du mois d\''+l(@month, :format => "%B %Y")+''
|
||||
else
|
||||
@index_title = 'Articles du mois de '+l(@month, :format => "%B %Y")+''
|
||||
end
|
||||
|
||||
render :action => :index
|
||||
end
|
||||
|
||||
|
||||
|
||||
def show
|
||||
@event = Event.find_by_slug(params[:id])
|
||||
|
||||
if @event# and @event.enabled
|
||||
|
||||
@title = @event.title
|
||||
@thumbnail_image = @event.image_file.file.large.medium.small.thumb.url if @event.image_file
|
||||
|
||||
else
|
||||
redirect_to "/", :notice => "La page que vous demandez n'a pas pu être trouvée.<br /><br />Vous avez donc été redirigé sur notre page d'accueil"
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
27
app/helpers/events_helper.rb
Normal file
27
app/helpers/events_helper.rb
Normal file
@ -0,0 +1,27 @@
|
||||
module EventsHelper
|
||||
def event_human_date(event, date_format = "%A %e %B %Y", time_format = "%kh%M")
|
||||
|
||||
if event.entire_day?
|
||||
if event.stop_date?
|
||||
if event.start_at.strftime('%d/%m/%Y') == event.stop_at.strftime('%d/%m/%Y')
|
||||
"le #{l(event.start_at, :format => date_format)}"
|
||||
else
|
||||
"du #{l(event.start_at, :format => date_format)} au #{l(event.stop_at, :format => date_format)}"
|
||||
end
|
||||
else
|
||||
"le #{l(event.start_at, :format => date_format)}"
|
||||
end
|
||||
else
|
||||
if event.stop_date?
|
||||
if event.start_at.strftime('%d/%m/%Y') == event.stop_at.strftime('%d/%m/%Y')
|
||||
"le #{l(event.start_at, :format => date_format)} de #{l(event.start_at, :format => time_format)} à #{l(event.stop_at, :format => time_format)} "
|
||||
else
|
||||
"du #{l(event.start_at, :format => date_format)} à #{l(event.start_at, :format => time_format)} au #{l(event.stop_at, :format => date_format)} à #{l(event.stop_at, :format => time_format)} "
|
||||
end
|
||||
else
|
||||
"le #{l(event.start_at, :format => date_format)} à #{l(event.start_at, :format => time_format)}"
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
116
app/models/event.rb
Normal file
116
app/models/event.rb
Normal file
@ -0,0 +1,116 @@
|
||||
class Event < ActiveRecord::Base
|
||||
date_format = /\A(0[1-9]|[12][0-9]|3[01])[\/](0[1-9]|1[012])[\/](19|20)\d\d\z/i
|
||||
hour_format = /\A([0-1]?[0-9]|2[0-3]):([0-5][0-9])(:[0-5][0-9])?\z/i
|
||||
validates :title, :presence => true
|
||||
|
||||
# validates :start_at_date, :presence => true, :format => { :with => date_format }
|
||||
# validates :start_at_time, :presence => true, :format => { :with => hour_format }, :if => :with_time?
|
||||
# validates :stop_at_date, :presence => true, :format => { :with => date_format }, :if => :stop_date
|
||||
# validates :stop_at_time, :presence => true, :format => { :with => hour_format }, :if => [:with_time?,:stop_date]
|
||||
|
||||
attr_accessor :start_at_date, :start_at_time, :stop_at_date, :stop_at_time, :event_id, :skip_date
|
||||
|
||||
has_one :block, :as => :blockable
|
||||
|
||||
|
||||
scope :between, lambda { |start, stop|
|
||||
after(start).before(stop)
|
||||
}
|
||||
|
||||
scope :after, lambda { |date|
|
||||
where("(start_at >= ? or stop_at >= ?)", date, date )
|
||||
}
|
||||
scope :before, lambda { |date|
|
||||
where("(stop_at <= ?) or (start_at <= ?)", date, date )
|
||||
}
|
||||
|
||||
def alloweds_types
|
||||
self.block.allow_types :TitleContent, :TextContent, :ImageContent, :LinkContent, :GalleryContent, :HtmlContent
|
||||
|
||||
end
|
||||
|
||||
after_create do
|
||||
if self.event_id and Event.where(:id => self.event_id).exists?
|
||||
|
||||
event = Event.find(self.event_id)
|
||||
|
||||
@block = event.block.dup
|
||||
@block.blockable = self
|
||||
@block.save
|
||||
|
||||
else
|
||||
@block = Block.new(:block_name => "general")
|
||||
@block.blockable = self
|
||||
@block.save
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
def create_block(event_id=nil)
|
||||
if event_id
|
||||
|
||||
else
|
||||
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
before_validation do
|
||||
|
||||
if !self.skip_date
|
||||
self.stop_at_date, self.stop_at_time = nil, nil if !self.stop_date
|
||||
self.start_at_time, self.stop_at_time = nil, nil if self.entire_day
|
||||
|
||||
if self.entire_day
|
||||
self.start_at = self.start_at_date.to_s
|
||||
self.stop_at = self.stop_at_date.to_s
|
||||
else
|
||||
self.start_at = self.start_at_date.to_s+" "+self.start_at_time.to_s
|
||||
self.stop_at = self.stop_at_date.to_s+" "+self.stop_at_time.to_s
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
if self.stop_date and self.start_at and (self.stop_at.beginning_of_day != self.start_at.beginning_of_day)
|
||||
self.many_days = true
|
||||
else
|
||||
self.many_days = false
|
||||
end
|
||||
|
||||
true
|
||||
|
||||
end
|
||||
|
||||
def with_time?
|
||||
true if !self.entire_day
|
||||
end
|
||||
|
||||
after_initialize do
|
||||
if self.start_at
|
||||
if self.entire_day
|
||||
self.start_at_date = self.start_at.strftime('%d/%m/%Y')
|
||||
else
|
||||
self.start_at_date = self.start_at.strftime('%d/%m/%Y')
|
||||
self.start_at_time = self.start_at.strftime('%H:%M')
|
||||
end
|
||||
end
|
||||
|
||||
if self.stop_at
|
||||
if self.entire_day
|
||||
self.stop_at_date = self.stop_at.strftime('%d/%m/%Y')
|
||||
else
|
||||
self.stop_at_date = self.stop_at.strftime('%d/%m/%Y')
|
||||
self.stop_at_time = self.stop_at.strftime('%H:%M')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def human_date
|
||||
|
||||
|
||||
|
||||
end
|
||||
end
|
13
app/views/admin/events/_event.html.haml
Normal file
13
app/views/admin/events/_event.html.haml
Normal file
@ -0,0 +1,13 @@
|
||||
%tr#event_row.event_row{:id => event.id}
|
||||
|
||||
%td{:style => "width:400px"}= event_human_date(event)
|
||||
%td=event.title
|
||||
|
||||
|
||||
%td.actions{:style => "width:200px;text-align:right;"}
|
||||
= link_to i(:copy), new_admin_event_path(:event_id => event), :remote => true, :style => "padding-right:5px;"
|
||||
= link_to i(:trash), [:admin, event], :confirm => 'Voulez-vous vraiment supprimer cet événement ?', :method => :delete, :remote => true
|
||||
= link_to i(:pencil), edit_admin_event_path(event), :remote => true
|
||||
= link_to i(:plus), edit_admin_event_path(event), :style => "padding:5px;", :class => "show_details"
|
||||
|
||||
|
50
app/views/admin/events/_form.html.haml
Normal file
50
app/views/admin/events/_form.html.haml
Normal file
@ -0,0 +1,50 @@
|
||||
= semantic_form_for [:admin,@event], :remote => true do |form|
|
||||
.content
|
||||
= form.inputs do
|
||||
= form.input :title, :label => "Titre :"
|
||||
= form.hidden_field :event_id
|
||||
|
||||
.event_date_form
|
||||
-if form.object.errors.messages[:start_at_date] or form.object.errors.messages[:start_at_time] or form.object.errors.messages[:stop_at_date] or form.object.errors.messages[:stop_at_time]
|
||||
%p.errors
|
||||
Tout les champs doivent être remplis. Les dates doivent être au format jj/mm/yyyy et les heures au format hh:mm.
|
||||
.div
|
||||
=form.label :start_at_date, "Début :", :style=>"display:inline-block;width:50px"
|
||||
=form.text_field :start_at_date, :id => "event_start_at_date", :class => "datepicker"
|
||||
.event_time{:style => "display:inline;"}
|
||||
=form.label :start_at_time, "heure :"
|
||||
.input-append.bootstrap-timepicke{:style => "display:inline-block;"}
|
||||
=form.text_field :start_at_time, :id => "event_start_at_time", :class => "timepicker input-small", :style => "width:50px"
|
||||
%span.add-on
|
||||
%i.icon-time
|
||||
|
||||
|
||||
=form.check_box :entire_day, :id => "event_entire_day"
|
||||
=form.label :entire_day, "jour entier ?"
|
||||
.div
|
||||
%span.stop_at
|
||||
=form.label :stop_at_date, "Fin :", :style=>"display:inline-block;width:50px"
|
||||
=form.text_field :stop_at_date, :id => "event_stop_at_date", :class => "datepicker"
|
||||
.event_time{:style => "display:inline;"}
|
||||
=form.label :stop_at_time, "heure :"
|
||||
.input-append.bootstrap-timepicke{:style => "display:inline-block;"}
|
||||
=form.text_field :stop_at_time, :id => "event_stop_at_time", :class => "timepicker input-small", :style => "width:50px"
|
||||
%span.add-on
|
||||
%i.icon-time
|
||||
|
||||
|
||||
=form.check_box :stop_date, :id => "event_stop_date"
|
||||
=form.label :stop_date, "fin précisée ?"
|
||||
|
||||
|
||||
= form.inputs do
|
||||
= form.input :description, :label => "Description courte :", :as => :text
|
||||
|
||||
|
||||
|
||||
|
||||
.actions
|
||||
= form.submit "Sauvegarder", :class => "btn"
|
||||
|
||||
:javascript
|
||||
update_event_form();
|
28
app/views/admin/events/_index_block.html.haml
Normal file
28
app/views/admin/events/_index_block.html.haml
Normal file
@ -0,0 +1,28 @@
|
||||
|
||||
.search_pannel
|
||||
|
||||
=form_tag "", :method => "get", :remote => true do
|
||||
.input-append
|
||||
=text_field_tag :start, params[:start],:class => "datepicker", :placeholder => "Début"
|
||||
%button.btn{:onclick => "$(this).prev('input').val('');"}
|
||||
=i(:remove, :icon => false)
|
||||
|
||||
.input-append
|
||||
=text_field_tag :stop, params[:stop],:class => "datepicker", :placeholder => "Fin"
|
||||
%button.btn
|
||||
=i(:remove, :icon => false)
|
||||
|
||||
|
||||
|
||||
=submit_tag "filtrer", :class => "btn", :style => "margin-bottom: 10px;"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
%table#events.table.table-hover
|
||||
=render @events
|
||||
#pagination
|
||||
= paginate @events, :remote => true
|
||||
|
||||
|
6
app/views/admin/events/_show.html.haml
Normal file
6
app/views/admin/events/_show.html.haml
Normal file
@ -0,0 +1,6 @@
|
||||
#event_show
|
||||
%h1
|
||||
=@event.title
|
||||
%em=event_human_date(@event)
|
||||
|
||||
.desc=simple_format @event.description
|
6
app/views/admin/events/cible.html.haml
Normal file
6
app/views/admin/events/cible.html.haml
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
-Event.all.each do |actuality|
|
||||
|
||||
%h4
|
||||
=actuality.title
|
||||
= link_to i(:check_alt, :gray_light,12), "#",:onclick => "manager_send_cible("+actuality.id.to_s+", 'Folder', '#{escape_javascript(actuality.cible_name)}');return false;" if params[:manager]
|
4
app/views/admin/events/create.js.erb
Normal file
4
app/views/admin/events/create.js.erb
Normal file
@ -0,0 +1,4 @@
|
||||
close_pane_hover();
|
||||
|
||||
$('#events').html("<%= escape_javascript(render(@events))%>");
|
||||
$('#event_row_<%= @event.id %>').effect("highlight", {}, 3000);
|
1
app/views/admin/events/destroy.js.erb
Normal file
1
app/views/admin/events/destroy.js.erb
Normal file
@ -0,0 +1 @@
|
||||
$('#event_row_<%=@event.id%>').remove();
|
60
app/views/admin/events/edit.html.haml
Normal file
60
app/views/admin/events/edit.html.haml
Normal file
@ -0,0 +1,60 @@
|
||||
|
||||
#toolbar-text
|
||||
|
||||
|
||||
|
||||
|
||||
#event_block_edit{:style => "margin-right:330px;margin-top:45px;"}
|
||||
|
||||
=render :partial => "admin/blocks/block", :locals => {:block => @event.block, :sortable => true}
|
||||
|
||||
|
||||
|
||||
#menu_item_inspector_container
|
||||
.accordion#menu_item_informations
|
||||
|
||||
.accordion-group
|
||||
.inspector_handle
|
||||
.accordion-heading.navbar-inner.navbar-inverse
|
||||
%a.accordion-toggle{:href => "#collapseOne",:data => {:toggle => "collapse", :parent => "#menu_item_informations"}}
|
||||
Infos sur l'event
|
||||
|
||||
|
||||
#collapseOne.accordion-body.collapse
|
||||
.accordion-inner
|
||||
=link_to "modifier", edit_admin_event_path(@event), :remote => true,:class => "btn"
|
||||
=render :partial => "show"
|
||||
|
||||
|
||||
.accordion-heading.navbar-inner.navbar-inverse
|
||||
%a.accordion-toggle{:href => "#collapse2",:data => {:toggle => "collapse", :parent => "#menu_item_informations"}}
|
||||
éléments
|
||||
|
||||
|
||||
#collapse2.accordion-body.collapse.in
|
||||
.accordion-inner
|
||||
.block_portlets_sortable#content_types
|
||||
-@event.alloweds_types.each do |slug, name|
|
||||
|
||||
.portlet{:id => slug, :data_type => slug}
|
||||
=image_tag("admin/content_type/type_"+slug.to_s+".png", :alt => name, :class => "handle")
|
||||
|
||||
|
||||
|
||||
.accordion-heading.navbar-inner.navbar-inverse
|
||||
%a.accordion-toggle{:href => "#collapse3",:data => {:toggle => "collapse", :parent => "#menu_item_informations"}}
|
||||
Modifier l'élément
|
||||
|
||||
|
||||
#collapse3.accordion-body.collapse
|
||||
|
||||
#element_form
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
1
app/views/admin/events/edit.js.erb
Normal file
1
app/views/admin/events/edit.js.erb
Normal file
@ -0,0 +1 @@
|
||||
show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",850,600);
|
8
app/views/admin/events/index.html.haml
Normal file
8
app/views/admin/events/index.html.haml
Normal file
@ -0,0 +1,8 @@
|
||||
.header
|
||||
.right= link_to 'Ajouter un événement', new_admin_event_path, :class => "btn", :remote => true
|
||||
%h1 Agenda
|
||||
|
||||
#events_index=render :partial => "index_block"
|
||||
|
||||
#event_detail
|
||||
|
1
app/views/admin/events/index.js.erb
Normal file
1
app/views/admin/events/index.js.erb
Normal file
@ -0,0 +1 @@
|
||||
$('#events_index').html("<%= escape_javascript(render(:partial => "index_block"))%>");
|
2
app/views/admin/events/new.js.erb
Normal file
2
app/views/admin/events/new.js.erb
Normal file
@ -0,0 +1,2 @@
|
||||
show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",850,600);
|
||||
|
5
app/views/admin/events/update.js.erb
Normal file
5
app/views/admin/events/update.js.erb
Normal file
@ -0,0 +1,5 @@
|
||||
close_pane_hover();
|
||||
|
||||
$('#event_show').replaceWith("<%= escape_javascript(render(:partial => "show"))%>");
|
||||
$('#events').html("<%= escape_javascript(render(@events))%>");
|
||||
$('#event_row_<%= @event.id %>').effect("highlight", {}, 3000);
|
@ -1,9 +0,0 @@
|
||||
%a{:href => public_event_path(event.slug)}
|
||||
.event
|
||||
=image_tag event.image_file.file.large.medium.small.url if event.image_file
|
||||
.date
|
||||
=l event.start_at, :format => :date if event.start_at
|
||||
%h3= event.title
|
||||
=simple_format event.description
|
||||
.clear
|
||||
|
15
app/views/public/events/_event.html.haml
Normal file
15
app/views/public/events/_event.html.haml
Normal file
@ -0,0 +1,15 @@
|
||||
= event_human_date(event)
|
||||
|
||||
%ul
|
||||
%li
|
||||
%strong=event.title
|
||||
|
||||
|
||||
-if event.description and event.description != ""
|
||||
=":"
|
||||
= truncate(event.description, :length => 150)
|
||||
|
||||
-if event.block.portlets.size > 0
|
||||
%br=link_to "En savoir plus", public_event_path(event)
|
||||
|
||||
|
119
app/views/public/events/_small_calendar.html.haml
Normal file
119
app/views/public/events/_small_calendar.html.haml
Normal file
@ -0,0 +1,119 @@
|
||||
-if params[:year] and params[:month]
|
||||
-@date = Date.new(params[:year].to_i,params[:month].to_i)
|
||||
-else
|
||||
-@date = Time.now
|
||||
|
||||
|
||||
|
||||
|
||||
-@start_date = @date
|
||||
|
||||
-@end_date = @start_date + 1.month
|
||||
|
||||
|
||||
|
||||
|
||||
- @start_month_date = @start_date.beginning_of_month
|
||||
|
||||
- @end_month_date = @start_month_date.end_of_month
|
||||
|
||||
- @start_week_date = @start_month_date.beginning_of_week
|
||||
|
||||
-date_actu = @start_week_date
|
||||
-@compteur = 0
|
||||
|
||||
-if params[:year] and params[:month]
|
||||
%h2
|
||||
Agenda
|
||||
=l @date, :format => :month_and_year
|
||||
-else
|
||||
%h2
|
||||
Agenda
|
||||
=l @date, :format => :month_and_year
|
||||
|
||||
|
||||
|
||||
|
||||
%table
|
||||
%tr
|
||||
%th Lu
|
||||
%th Ma
|
||||
%th Me
|
||||
%th Je
|
||||
%th Ve
|
||||
%th Sa
|
||||
%th Di
|
||||
|
||||
|
||||
%tr
|
||||
-while date_actu < @start_month_date
|
||||
-events = Event.where('start_at < ? AND stop_at > ?',date_actu.end_of_day, date_actu.beginning_of_day)
|
||||
|
||||
-if events.size > 0
|
||||
%td.event.no=date_actu.day
|
||||
-else
|
||||
%td.no=date_actu.day
|
||||
-date_actu = date_actu + 1.day
|
||||
-@compteur += 1
|
||||
-if @compteur == 7
|
||||
=raw "</tr><tr>"
|
||||
-@compteur = 0
|
||||
|
||||
-while date_actu <= @end_month_date
|
||||
-events = Event.where('start_at < ? AND stop_at > ?',date_actu.end_of_day, date_actu.beginning_of_day)
|
||||
|
||||
-if events.size > 0
|
||||
%td.event
|
||||
%a.thickbox{:title => l( date_actu, :format => :only_date), :rel => "event", :href => "#TB_inline?height=500&width=500&inlineId=calendar_event_"+date_actu.year.to_s+"-"+date_actu.month.to_s+"-"+date_actu.day.to_s}
|
||||
-if date_actu.to_date == Time.now.to_date
|
||||
%strong=date_actu.day
|
||||
-else
|
||||
=date_actu.day
|
||||
#calendar_event.small_calendar_event{:id =>date_actu.year.to_s+"-"+date_actu.month.to_s+"-"+date_actu.day.to_s }
|
||||
-events_day = Event.where('start_at < ? AND stop_at > ?',date_actu.end_of_day, date_actu.beginning_of_day ).where(:many_days => true).order("stop_at DESC")
|
||||
|
||||
-events_day.each do |event|
|
||||
.event_day
|
||||
=render :object => event, :partial => "public/events/small_event", :as => :event
|
||||
|
||||
<hr />
|
||||
-events_time = Event.where('start_at < ? AND stop_at > ?',date_actu.end_of_day, date_actu.beginning_of_day).where(:many_days => false)
|
||||
-events_time.each do |event|
|
||||
.event_day
|
||||
=render :object => event, :partial => "public/events/small_event", :as => :event
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-else
|
||||
%td
|
||||
-if date_actu.to_date == Time.now.to_date
|
||||
%strong=date_actu.day
|
||||
-else
|
||||
=date_actu.day
|
||||
|
||||
-date_actu = date_actu + 1.day
|
||||
-@compteur += 1
|
||||
-if @compteur == 7
|
||||
=raw "</tr><tr>"
|
||||
-@compteur = 0
|
||||
|
||||
|
||||
-while date_actu <= @end_month_date.end_of_week
|
||||
-events = Event.where('start_at < ? AND stop_at > ?',date_actu.end_of_day, date_actu.beginning_of_day)
|
||||
|
||||
-if events.size > 0
|
||||
%td.event.no
|
||||
=date_actu.day
|
||||
.small_calendar_event
|
||||
|
||||
|
||||
-else
|
||||
%td.no=date_actu.day
|
||||
-date_actu = date_actu + 1.day
|
||||
-@compteur += 1
|
||||
-if @compteur == 7
|
||||
=raw "</tr><tr>"
|
||||
-@compteur = 0
|
14
app/views/public/events/_small_event.html.haml
Normal file
14
app/views/public/events/_small_event.html.haml
Normal file
@ -0,0 +1,14 @@
|
||||
|
||||
|
||||
%h3=event.title
|
||||
%p
|
||||
= event_human_date(event)
|
||||
-if event.description and event.description != ""
|
||||
%p=simple_format(event.description)
|
||||
|
||||
=link_to "En savoir plus", public_event_path(event)
|
||||
%br
|
||||
%br
|
||||
|
||||
|
||||
|
@ -1,2 +1,27 @@
|
||||
%h1 Liste des événements
|
||||
=render @events
|
||||
%p
|
||||
|
||||
-first_month = @start_list_date.beginning_of_month
|
||||
-last_month = @end_list_date.beginning_of_month
|
||||
-the_month = first_month
|
||||
|
||||
|
||||
-while the_month <= last_month
|
||||
%h2{:class => "month_title"}=l(the_month.to_date, :format => :month_and_year)
|
||||
.month_content
|
||||
=render :partial => "public/events/event", :collection =>Event.where('start_at < ? AND stop_at > ?',the_month.next_month, the_month.beginning_of_month).order(:start_at)
|
||||
|
||||
-the_month = the_month.next_month
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
%h2{:class => "month_title"} Agenda par mois
|
||||
%ul
|
||||
-first_month = Event.order(:start_at).first.start_at.beginning_of_month
|
||||
-last_month = Event.order(:start_at).last.start_at.beginning_of_month
|
||||
-the_month = last_month
|
||||
-while the_month >= first_month
|
||||
%li=link_to l(the_month.to_date, :format => :month_and_year), public_events_path(:year => the_month.year, :month => the_month.month)
|
||||
-the_month = the_month.last_month
|
||||
|
@ -1,2 +1,15 @@
|
||||
=render @event
|
||||
|
||||
|
||||
-@event = Event.find(params[:id])
|
||||
|
||||
|
||||
%h2=@event.title
|
||||
= event_human_date(@event)
|
||||
|
||||
.agenda_description
|
||||
=simple_format @event.description
|
||||
|
||||
|
||||
=render @event.block
|
||||
|
||||
|
||||
|
207
config/locales/fr.old.yml
Normal file
207
config/locales/fr.old.yml
Normal file
@ -0,0 +1,207 @@
|
||||
# French translations for Ruby on Rails
|
||||
# by Christian Lescuyer (christian@flyingcoders.com)
|
||||
# contributors:
|
||||
# - Sebastien Grosjean - ZenCocoon.com
|
||||
# - Bruno Michel - http://github.com/nono
|
||||
# - Tsutomu Kuroda - http://github.com/kuroda (t-kuroda@oiax.jp)
|
||||
|
||||
fr:
|
||||
views:
|
||||
pagination:
|
||||
first: "«"
|
||||
last: "»"
|
||||
previous: "‹ "
|
||||
next: " ›"
|
||||
truncate: "…"
|
||||
helpers:
|
||||
page_entries_info:
|
||||
one_page:
|
||||
display_entries:
|
||||
zero: "No %{entry_name} found"
|
||||
one: "Displaying <b>1</b> %{entry_name}"
|
||||
other: "Displaying <b>all %{count}</b> %{entry_name}"
|
||||
more_pages:
|
||||
display_entries: "Displaying %{entry_name} <b>%{first} - %{last}</b> of <b>%{total}</b> in total"
|
||||
|
||||
|
||||
date:
|
||||
formats:
|
||||
default: "%d/%m/%Y"
|
||||
short: "%e %b"
|
||||
long: "%e %B %Y"
|
||||
only_month: "%B %Y"
|
||||
only_month_name: "%B"
|
||||
human_date: "%A %-d %B %Y"
|
||||
day_names: [dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi]
|
||||
abbr_day_names: [dim, lun, mar, mer, jeu, ven, sam]
|
||||
month_names: [~, janvier, février, mars, avril, mai, juin, juillet, août, septembre, octobre, novembre, décembre]
|
||||
abbr_month_names: [~, jan., fév., mar., avr., mai, juin, juil., août, sept., oct., nov., déc.]
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
|
||||
time:
|
||||
formats:
|
||||
default: "%d %B %Y %H:%M:%S"
|
||||
date: "%d %B %Y"
|
||||
short: "%d %b %H:%M"
|
||||
long: "%A %d %B %Y %H:%M"
|
||||
human: "le %A %d %B %Y à %Hh%M"
|
||||
human_date: "%A %-d %B %Y"
|
||||
am: 'am'
|
||||
pm: 'pm'
|
||||
|
||||
datetime:
|
||||
distance_in_words:
|
||||
half_a_minute: "une demi-minute"
|
||||
less_than_x_seconds:
|
||||
zero: "moins d'une seconde"
|
||||
one: "moins d'une seconde"
|
||||
other: "moins de %{count} secondes"
|
||||
x_seconds:
|
||||
one: "1 seconde"
|
||||
other: "%{count} secondes"
|
||||
less_than_x_minutes:
|
||||
zero: "moins d'une minute"
|
||||
one: "moins d'une minute"
|
||||
other: "moins de %{count} minutes"
|
||||
x_minutes:
|
||||
one: "1 minute"
|
||||
other: "%{count} minutes"
|
||||
about_x_hours:
|
||||
one: "environ une heure"
|
||||
other: "environ %{count} heures"
|
||||
x_days:
|
||||
one: "1 jour"
|
||||
other: "%{count} jours"
|
||||
about_x_months:
|
||||
one: "environ un mois"
|
||||
other: "environ %{count} mois"
|
||||
x_months:
|
||||
one: "1 mois"
|
||||
other: "%{count} mois"
|
||||
about_x_years:
|
||||
one: "environ un an"
|
||||
other: "environ %{count} ans"
|
||||
over_x_years:
|
||||
one: "plus d'un an"
|
||||
other: "plus de %{count} ans"
|
||||
almost_x_years:
|
||||
one: "presqu'un an"
|
||||
other: "presque %{count} ans"
|
||||
prompts:
|
||||
year: "Année"
|
||||
month: "Mois"
|
||||
day: "Jour"
|
||||
hour: "Heure"
|
||||
minute: "Minute"
|
||||
second: "Seconde"
|
||||
|
||||
number:
|
||||
format:
|
||||
separator: ","
|
||||
delimiter: " "
|
||||
precision: 3
|
||||
significant: false
|
||||
strip_insignificant_zeros: false
|
||||
currency:
|
||||
format:
|
||||
format: "%n %u"
|
||||
unit: "€"
|
||||
separator: ","
|
||||
delimiter: " "
|
||||
precision: 2
|
||||
significant: false
|
||||
strip_insignificant_zeros: false
|
||||
percentage:
|
||||
format:
|
||||
delimiter: ""
|
||||
precision:
|
||||
format:
|
||||
delimiter: ""
|
||||
human:
|
||||
format:
|
||||
delimiter: ""
|
||||
precision: 2
|
||||
significant: true
|
||||
strip_insignificant_zeros: true
|
||||
storage_units:
|
||||
format: "%n %u"
|
||||
units:
|
||||
byte:
|
||||
one: "octet"
|
||||
other: "octets"
|
||||
kb: "ko"
|
||||
mb: "Mo"
|
||||
gb: "Go"
|
||||
tb: "To"
|
||||
decimal_units:
|
||||
format: "%n %u"
|
||||
units:
|
||||
unit: ""
|
||||
thousand: "millier"
|
||||
million: "million"
|
||||
billion: "milliard"
|
||||
trillion: "billion"
|
||||
quadrillion: "million de milliards"
|
||||
|
||||
support:
|
||||
array:
|
||||
words_connector: ", "
|
||||
two_words_connector: " et "
|
||||
last_word_connector: " et "
|
||||
select:
|
||||
prompt: "Veuillez sélectionner"
|
||||
|
||||
helpers:
|
||||
select:
|
||||
prompt: "Veuillez sélectionner"
|
||||
submit:
|
||||
create: "Créer un %{model}"
|
||||
update: "Modifier ce %{model}"
|
||||
submit: "Enregistrer ce %{model}"
|
||||
|
||||
attributes:
|
||||
created_at: "Créé le"
|
||||
updated_at: "Modifié le"
|
||||
password: "mot de passe"
|
||||
|
||||
errors:
|
||||
format: "Le %{attribute} %{message}"
|
||||
messages: &errors_messages
|
||||
inclusion: "n'est pas inclus(e) dans la liste"
|
||||
exclusion: "n'est pas disponible"
|
||||
invalid: "n'est pas valide"
|
||||
confirmation: "ne concorde pas avec la confirmation"
|
||||
accepted: "doit être accepté(e)"
|
||||
empty: "doit être rempli(e)"
|
||||
blank: "doit être rempli(e)"
|
||||
too_long: "est trop long (pas plus de %{count} caractères)"
|
||||
too_short: "est trop court (au moins %{count} caractères)"
|
||||
wrong_length: "ne fait pas la bonne longueur (doit comporter %{count} caractères)"
|
||||
not_a_number: "n'est pas un nombre"
|
||||
not_an_integer: "doit être un nombre entier"
|
||||
greater_than: "doit être supérieur à %{count}"
|
||||
greater_than_or_equal_to: "doit être supérieur ou égal à %{count}"
|
||||
equal_to: "doit être égal à %{count}"
|
||||
less_than: "doit être inférieur à %{count}"
|
||||
less_than_or_equal_to: "doit être inférieur ou égal à %{count}"
|
||||
odd: "doit être impair"
|
||||
even: "doit être pair"
|
||||
template: &errors_template
|
||||
header:
|
||||
one: "Impossible d'enregistrer ce %{model} : 1 erreur"
|
||||
other: "Impossible d'enregistrer ce %{model} : %{count} erreurs"
|
||||
body: "Veuillez vérifier les champs suivants : "
|
||||
|
||||
activerecord:
|
||||
errors:
|
||||
messages:
|
||||
taken: "n'est pas disponible"
|
||||
record_invalid: "La validation a échoué : %{errors}"
|
||||
<<: *errors_messages
|
||||
template:
|
||||
<<: *errors_template
|
||||
full_messages:
|
||||
format: "%{attribute} %{message}"
|
@ -4,6 +4,8 @@
|
||||
# - Sebastien Grosjean - ZenCocoon.com
|
||||
# - Bruno Michel - http://github.com/nono
|
||||
# - Tsutomu Kuroda - http://github.com/kuroda (t-kuroda@oiax.jp)
|
||||
# Emended by Benjamin des Gachons and Patrick Chew : <http://www.fitima.org/docs/fiche.pdf>
|
||||
|
||||
|
||||
fr:
|
||||
views:
|
||||
@ -23,19 +25,61 @@ fr:
|
||||
more_pages:
|
||||
display_entries: "Displaying %{entry_name} <b>%{first} - %{last}</b> of <b>%{total}</b> in total"
|
||||
|
||||
|
||||
date:
|
||||
formats:
|
||||
default: "%d/%m/%Y"
|
||||
short: "%e %b"
|
||||
long: "%e %B %Y"
|
||||
only_month: "%B %Y"
|
||||
month_and_year : "%B %Y"
|
||||
only_day: "%e"
|
||||
only_month_name: "%B"
|
||||
human_date: "%A %-d %B %Y"
|
||||
day_names: [dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi]
|
||||
abbr_day_names: [dim, lun, mar, mer, jeu, ven, sam]
|
||||
month_names: [~, janvier, février, mars, avril, mai, juin, juillet, août, septembre, octobre, novembre, décembre]
|
||||
abbr_month_names: [~, jan., fév., mar., avr., mai, juin, juil., août, sept., oct., nov., déc.]
|
||||
only_year: "%Y"
|
||||
only_date: "%A %e %B %Y"
|
||||
day_names:
|
||||
- dimanche
|
||||
- lundi
|
||||
- mardi
|
||||
- mercredi
|
||||
- jeudi
|
||||
- vendredi
|
||||
- samedi
|
||||
abbr_day_names:
|
||||
- dim
|
||||
- lun
|
||||
- mar
|
||||
- mer
|
||||
- jeu
|
||||
- ven
|
||||
- sam
|
||||
month_names:
|
||||
- ~
|
||||
- janvier
|
||||
- février
|
||||
- mars
|
||||
- avril
|
||||
- mai
|
||||
- juin
|
||||
- juillet
|
||||
- août
|
||||
- septembre
|
||||
- octobre
|
||||
- novembre
|
||||
- décembre
|
||||
abbr_month_names:
|
||||
- ~
|
||||
- jan.
|
||||
- fév.
|
||||
- mar.
|
||||
- avr.
|
||||
- mai
|
||||
- juin
|
||||
- juil.
|
||||
- août
|
||||
- sept.
|
||||
- oct.
|
||||
- nov.
|
||||
- déc.
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
@ -48,7 +92,14 @@ fr:
|
||||
short: "%d %b %H:%M"
|
||||
long: "%A %d %B %Y %H:%M"
|
||||
human: "le %A %d %B %Y à %Hh%M"
|
||||
human_date: "%A %-d %B %Y"
|
||||
human_date: "%A %d %B %Y"
|
||||
only_month: "%B %Y"
|
||||
month_and_year : "%B %Y"
|
||||
only_day: "%e"
|
||||
only_month_name: "%B"
|
||||
only_year: "%Y"
|
||||
only_date: "%A %e %B %Y"
|
||||
|
||||
am: 'am'
|
||||
pm: 'pm'
|
||||
|
||||
@ -151,24 +202,17 @@ fr:
|
||||
words_connector: ", "
|
||||
two_words_connector: " et "
|
||||
last_word_connector: " et "
|
||||
select:
|
||||
prompt: "Veuillez sélectionner"
|
||||
|
||||
helpers:
|
||||
select:
|
||||
prompt: "Veuillez sélectionner"
|
||||
submit:
|
||||
create: "Créer un %{model}"
|
||||
update: "Modifier ce %{model}"
|
||||
submit: "Enregistrer ce %{model}"
|
||||
create: "Créer un(e) %{model}"
|
||||
update: "Modifier ce(tte) %{model}"
|
||||
submit: "Enregistrer ce(tte) %{model}"
|
||||
|
||||
attributes:
|
||||
created_at: "Créé le"
|
||||
updated_at: "Modifié le"
|
||||
password: "mot de passe"
|
||||
|
||||
errors:
|
||||
format: "Le %{attribute} %{message}"
|
||||
errors: &errors
|
||||
format: "%{attribute} %{message}"
|
||||
messages: &errors_messages
|
||||
inclusion: "n'est pas inclus(e) dans la liste"
|
||||
exclusion: "n'est pas disponible"
|
||||
@ -177,9 +221,15 @@ fr:
|
||||
accepted: "doit être accepté(e)"
|
||||
empty: "doit être rempli(e)"
|
||||
blank: "doit être rempli(e)"
|
||||
too_long: "est trop long (pas plus de %{count} caractères)"
|
||||
too_short: "est trop court (au moins %{count} caractères)"
|
||||
wrong_length: "ne fait pas la bonne longueur (doit comporter %{count} caractères)"
|
||||
too_long:
|
||||
one: "est trop long (pas plus d'un caractère)"
|
||||
other: "est trop long (pas plus de %{count} caractères)"
|
||||
too_short:
|
||||
one: "est trop court (au moins un caractère)"
|
||||
other: "est trop court (au moins %{count} caractères)"
|
||||
wrong_length:
|
||||
one: "ne fait pas la bonne longueur (doit comporter un seul caractère)"
|
||||
other: "ne fait pas la bonne longueur (doit comporter %{count} caractères)"
|
||||
not_a_number: "n'est pas un nombre"
|
||||
not_an_integer: "doit être un nombre entier"
|
||||
greater_than: "doit être supérieur à %{count}"
|
||||
@ -189,19 +239,18 @@ fr:
|
||||
less_than_or_equal_to: "doit être inférieur ou égal à %{count}"
|
||||
odd: "doit être impair"
|
||||
even: "doit être pair"
|
||||
taken: "n'est pas disponible"
|
||||
record_invalid: "La validation a échoué : %{errors}"
|
||||
|
||||
template: &errors_template
|
||||
header:
|
||||
one: "Impossible d'enregistrer ce %{model} : 1 erreur"
|
||||
other: "Impossible d'enregistrer ce %{model} : %{count} erreurs"
|
||||
one: "Impossible d'enregistrer ce(tte) %{model} : 1 erreur"
|
||||
other: "Impossible d'enregistrer ce(tte) %{model} : %{count} erreurs"
|
||||
body: "Veuillez vérifier les champs suivants : "
|
||||
|
||||
activemodel:
|
||||
errors:
|
||||
<<: *errors
|
||||
activerecord:
|
||||
errors:
|
||||
messages:
|
||||
taken: "n'est pas disponible"
|
||||
record_invalid: "La validation a échoué : %{errors}"
|
||||
<<: *errors_messages
|
||||
template:
|
||||
<<: *errors_template
|
||||
full_messages:
|
||||
format: "%{attribute} %{message}"
|
||||
<<: *errors
|
15
db/migrate/20150309094403_create_events.rb
Normal file
15
db/migrate/20150309094403_create_events.rb
Normal file
@ -0,0 +1,15 @@
|
||||
class CreateEvents < ActiveRecord::Migration
|
||||
def change
|
||||
create_table :events do |t|
|
||||
t.string :title
|
||||
t.text :description
|
||||
t.datetime :start_at
|
||||
t.boolean :entire_day
|
||||
t.boolean :stop_date
|
||||
t.datetime :stop_at
|
||||
t.boolean :many_days
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
14
db/schema.rb
14
db/schema.rb
@ -11,7 +11,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20150217165331) do
|
||||
ActiveRecord::Schema.define(version: 20150309094403) do
|
||||
|
||||
create_table "admins", force: true do |t|
|
||||
t.string "email", default: "", null: false
|
||||
@ -202,6 +202,18 @@ ActiveRecord::Schema.define(version: 20150217165331) do
|
||||
t.datetime "updated_at"
|
||||
end
|
||||
|
||||
create_table "events", force: true do |t|
|
||||
t.string "title"
|
||||
t.text "description"
|
||||
t.datetime "start_at"
|
||||
t.boolean "entire_day"
|
||||
t.boolean "stop_date"
|
||||
t.datetime "stop_at"
|
||||
t.boolean "many_days"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
end
|
||||
|
||||
create_table "external_links", force: true do |t|
|
||||
t.string "title"
|
||||
t.text "description"
|
||||
|
Loading…
x
Reference in New Issue
Block a user