ben

OMÜ , Bilgisayar Mühendisliği, 13'

25 Aralık 2016 Pazar

rails event calender


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: "&laquo; İlk"
      last: "Son &raquo;"
      previous: "&lsaquo;&lsaquo; "
      next: "&rsaquo;&rsaquo;"
      truncate: "&hellip;"



Son Gorunum:



Hiç yorum yok: