Event tablomuzu oluşturalım:
$ rails g model event title: string text: content date_time:datetime
$ rake db:migrate
gemfile
gem "simple_calendar"
routes.rb
resources :events
calender.html.erb
<div class="panel panel-default">
<%= month_calendar do |date| %>
<%= date %>
<% end %>
</div>
terminal:
$ rails g simple_calendar:views
view altında simple_calender altında aylık haftalık takvim düzeni gelecek.Gemin kendi tyle ve css lerini bir türlü çalıştıramadığım için month_calender dışındakileri sildim ve month_calenderi kendim yeniden düzenledim (not: kullandığım projede bootstrap mevcut)
Yapmak istediğim şey:
- gün numarasına tıklandiğinda yeni event oluşturmaya yöneltsin ve event_date default olarak tıkladığım gün olsun
- bugun ve gelecek günler için event oluşturulabilsin, geçmiş günler için event oluşturulamasın
- mevcut ay rengi açık gri diğerleri koyu gri
- içinde blunduğum gün işaretli olsun
- gösterilen ay içerisindeki gunlerde event varsa o gune ait kutucuğa saat : title şekilnde yazılsın
view/simple_calender/_month_calender.html.erb
<div class="panel-heading text-center">
<%= link_to "<<", calendar.url_for_previous_view %>
<span class="calendar-title"><%= t('date.month_names')[start_date.month] %> <%= start_date.year %></span>
<%= link_to ">>", calendar.url_for_next_view %>
</div>
<div class="panel-body">
<table class="table table-striped fixed" border="1">
<thead>
<tr >
<% date_range.slice(0, 7).each do |day| %>
<th ><%= t('date.abbr_day_names')[day.wday] %></th>
<% end %>
</tr>
</thead>
<% @event_list=Event.all%>
<tbody>
<% date_range.each_slice(7) do |week| %>
<tr >
<% week.each do |day| %>
<% if day.month == Date.today.month %>
<td class="now_month ">
<% if day >= Date.today %>
<a href="<%= new_event_path(:date_time=>day) %>" rel="tooltip" title="Yeni Etkinlik Ekle" >
<% if day.day == Date.today.day %> <span class="mark_today"><%= day.day %></span>
<% else %> <%= day.day %>
<% end %>
</a>
<% else %>
<%= day.day %>
<% end %>
</br>
<% @event_list.select{ |x| x.date_time.to_date == day }.each do |event| %>
<a href="<%= event_path(event) %>"><div class="date_size"><%= event.date_time.strftime('%H:%M') %><b> : </b><%= event.title %></div></div></a>
<% end %>
</td>
<% else %>
<td class="past_month ">
<% if day >= Date.today %>
<a href="<%= new_event_path(:date_time=>day) %>" rel="tooltip" title="Yeni Etkinlik Ekle" > <%= day.day %> </a>
<% else %>
<%= day.day %>
<% end %>
</br>
<% @event_list.select{ |x| x.date_time.to_date == day }.each do |event|%>
<a href="<%= event_path(event) %>"> <div class="date_size"><%= event.date_time.strftime('%H:%M') %><b> : </b><%= event.title %></div> </a>
<% end %>
</td>
<% end %>
<% end %>
</tr>
<% end %>
</tbody>
</table>
</div>
Kullandığım sınıfları custom.css altında:
.past_month{
background: #bdbdbd !important;
height: 90px;
}
.now_month{
background: #E0E0E0 !important;
height: 90px;
}
.date_size{
font-size: 10px;
color:#b54646;
}
.fixed {
table-layout:fixed !important;
}
.mark_today{
border: 2px solid #1e438c;
border-radius: 25px;
padding: 2px;
}
İsimlendirme default olarak ingilizce geliyor. Bunu düzeltmek için congfig/local/tr.yml içerisne:
tr:
views:
pagination:
first: "« İlk"
last: "Son »"
previous: "‹‹ "
next: "››"
truncate: "…"
Son Gorunum:
Hiç yorum yok:
Yorum Gönder