mirror of
https://github.com/TracksApp/tracks.git
synced 2025-12-16 23:30:12 +01:00
show recurrence pattern in :title of a recurring todo. Needed slight refactoring to make it happen
This commit is contained in:
parent
930999829b
commit
c46e5a9e1d
5 changed files with 52 additions and 45 deletions
|
|
@ -8,7 +8,7 @@ module ApplicationHelper
|
||||||
|
|
||||||
# Replicates the link_to method but also checks request.request_uri to find
|
# Replicates the link_to method but also checks request.request_uri to find
|
||||||
# current page. If that matches the url, the link is marked id = "current"
|
# current page. If that matches the url, the link is marked id = "current"
|
||||||
#
|
#
|
||||||
def navigation_link(name, options = {}, html_options = nil, *parameters_for_method_reference)
|
def navigation_link(name, options = {}, html_options = nil, *parameters_for_method_reference)
|
||||||
if html_options
|
if html_options
|
||||||
html_options = html_options.stringify_keys
|
html_options = html_options.stringify_keys
|
||||||
|
|
@ -29,7 +29,7 @@ module ApplicationHelper
|
||||||
|
|
||||||
# Check due date in comparison to today's date Flag up date appropriately with
|
# Check due date in comparison to today's date Flag up date appropriately with
|
||||||
# a 'traffic light' colour code
|
# a 'traffic light' colour code
|
||||||
#
|
#
|
||||||
def due_date(due)
|
def due_date(due)
|
||||||
if due == nil
|
if due == nil
|
||||||
return ""
|
return ""
|
||||||
|
|
@ -62,7 +62,7 @@ module ApplicationHelper
|
||||||
|
|
||||||
# Check due date in comparison to today's date Flag up date appropriately with
|
# Check due date in comparison to today's date Flag up date appropriately with
|
||||||
# a 'traffic light' colour code Modified method for mobile screen
|
# a 'traffic light' colour code Modified method for mobile screen
|
||||||
#
|
#
|
||||||
def due_date_mobile(due)
|
def due_date_mobile(due)
|
||||||
if due == nil
|
if due == nil
|
||||||
return ""
|
return ""
|
||||||
|
|
@ -92,7 +92,7 @@ module ApplicationHelper
|
||||||
# Returns a count of next actions in the given context or project. The result
|
# Returns a count of next actions in the given context or project. The result
|
||||||
# is count and a string descriptor, correctly pluralised if there are no
|
# is count and a string descriptor, correctly pluralised if there are no
|
||||||
# actions or multiple actions
|
# actions or multiple actions
|
||||||
#
|
#
|
||||||
def count_undone_todos_phrase(todos_parent, string="actions")
|
def count_undone_todos_phrase(todos_parent, string="actions")
|
||||||
@controller.count_undone_todos_phrase(todos_parent, string)
|
@controller.count_undone_todos_phrase(todos_parent, string)
|
||||||
end
|
end
|
||||||
|
|
@ -143,5 +143,31 @@ module ApplicationHelper
|
||||||
page.replace 'flash', "<h4 id='flash' class='alert #{type}'>#{message}</h4>"
|
page.replace 'flash', "<h4 id='flash' class='alert #{type}'>#{message}</h4>"
|
||||||
page.visual_effect :fade, 'flash', :duration => fade_duration
|
page.visual_effect :fade, 'flash', :duration => fade_duration
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def recurrence_time_span(rt)
|
||||||
|
case rt.ends_on
|
||||||
|
when "no_end_date"
|
||||||
|
return rt.start_from.nil? ? "" : "from " + format_date(rt.start_from)
|
||||||
|
when "ends_on_number_of_times"
|
||||||
|
return "for "+rt.number_of_occurences.to_s + " times"
|
||||||
|
when "ends_on_end_date"
|
||||||
|
starts = rt.start_from.nil? ? "" : "from " + format_date(rt.start_from)
|
||||||
|
ends = rt.end_date.nil? ? "" : " until " + format_date(rt.end_date)
|
||||||
|
return starts+ends
|
||||||
|
else
|
||||||
|
raise Exception.new, "unknown recurrence time span selection (#{rt.ends_on})"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def recurrence_pattern_as_text(recurring_todo)
|
||||||
|
rt = recurring_todo.recurring_target_as_text
|
||||||
|
rp = recurring_todo.recurrence_pattern
|
||||||
|
# only add space if recurrence_pattern has content
|
||||||
|
rp = " " + rp if !rp.nil?
|
||||||
|
rts = recurrence_time_span(recurring_todo)
|
||||||
|
# only add space if recurrence_time_span has content
|
||||||
|
rts = " " + rts if !(rts == "")
|
||||||
|
return rt+rp+rts
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -1,30 +1,4 @@
|
||||||
module RecurringTodosHelper
|
module RecurringTodosHelper
|
||||||
|
|
||||||
def recurrence_time_span(rt)
|
|
||||||
case rt.ends_on
|
|
||||||
when "no_end_date"
|
|
||||||
return rt.start_from.nil? ? "" : "from " + format_date(rt.start_from)
|
|
||||||
when "ends_on_number_of_times"
|
|
||||||
return "for "+rt.number_of_occurences.to_s + " times"
|
|
||||||
when "ends_on_end_date"
|
|
||||||
starts = rt.start_from.nil? ? "" : "from " + format_date(rt.start_from)
|
|
||||||
ends = rt.end_date.nil? ? "" : " until " + format_date(rt.end_date)
|
|
||||||
return starts+ends
|
|
||||||
else
|
|
||||||
raise Exception.new, "unknown recurrence time span selection (#{self.ends_on})"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def recurrence_target(rt)
|
|
||||||
case rt.target
|
|
||||||
when 'due_date'
|
|
||||||
return "due"
|
|
||||||
when 'show_from_date'
|
|
||||||
return "show"
|
|
||||||
else
|
|
||||||
return "ERROR"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def recurring_todo_tag_list
|
def recurring_todo_tag_list
|
||||||
tags_except_starred = @recurring_todo.tags.reject{|t| t.name == Todo::STARRED_TAG_NAME}
|
tags_except_starred = @recurring_todo.tags.reject{|t| t.name == Todo::STARRED_TAG_NAME}
|
||||||
|
|
|
||||||
|
|
@ -295,6 +295,17 @@ class RecurringTodo < ActiveRecord::Base
|
||||||
def recurring_target=(t)
|
def recurring_target=(t)
|
||||||
self.target = t
|
self.target = t
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def recurring_target_as_text
|
||||||
|
case self.target
|
||||||
|
when 'due_date'
|
||||||
|
return "due"
|
||||||
|
when 'show_from_date'
|
||||||
|
return "show"
|
||||||
|
else
|
||||||
|
raise Exception.new, "unexpected value of recurrence target '#{self.target}'"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def recurring_show_days_before=(days)
|
def recurring_show_days_before=(days)
|
||||||
self.show_from_delta=days
|
self.show_from_delta=days
|
||||||
|
|
@ -361,6 +372,8 @@ class RecurringTodo < ActiveRecord::Base
|
||||||
when 'show_from'
|
when 'show_from'
|
||||||
# so leave due date empty
|
# so leave due date empty
|
||||||
return nil
|
return nil
|
||||||
|
else
|
||||||
|
raise Exception.new, "unexpected value of recurrence target '#{self.target}'"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -476,14 +489,14 @@ class RecurringTodo < ActiveRecord::Base
|
||||||
when 0 # specific day of the month
|
when 0 # specific day of the month
|
||||||
if start.mday >= day
|
if start.mday >= day
|
||||||
# there is no next day n in this month, search in next month
|
# there is no next day n in this month, search in next month
|
||||||
#
|
#
|
||||||
# start += n.months
|
# start += n.months
|
||||||
#
|
#
|
||||||
# The above seems to not work. Fiddle with timezone. Looks like we hit a
|
# The above seems to not work. Fiddle with timezone. Looks like we hit a
|
||||||
# bug in rails here where 2008-12-01 +0100 plus 1.month becomes
|
# bug in rails here where 2008-12-01 +0100 plus 1.month becomes
|
||||||
# 2008-12-31 +0100. For now, just calculate in UTC and convert back to
|
# 2008-12-31 +0100. For now, just calculate in UTC and convert back to
|
||||||
# local timezone.
|
# local timezone.
|
||||||
#
|
#
|
||||||
# TODO: recheck if future rails versions have this problem too
|
# TODO: recheck if future rails versions have this problem too
|
||||||
start = Time.utc(start.year, start.month, start.day)+n.months
|
start = Time.utc(start.year, start.month, start.day)+n.months
|
||||||
start = Time.zone.local(start.year, start.month, start.day)
|
start = Time.zone.local(start.year, start.month, start.day)
|
||||||
|
|
|
||||||
|
|
@ -6,16 +6,7 @@
|
||||||
<div class="description">
|
<div class="description">
|
||||||
<span class="todo.descr"><%= sanitize(recurring_todo.description) %></span> <%= recurring_todo_tag_list %>
|
<span class="todo.descr"><%= sanitize(recurring_todo.description) %></span> <%= recurring_todo_tag_list %>
|
||||||
<span class='recurrence_pattern'>
|
<span class='recurrence_pattern'>
|
||||||
<%
|
[<%= recurrence_pattern_as_text(@recurring_todo) %>]
|
||||||
rt = recurrence_target(recurring_todo)
|
|
||||||
rp = recurring_todo.recurrence_pattern
|
|
||||||
# only add space if recurrence_pattern has content
|
|
||||||
rp = " " + rp if !rp.nil?
|
|
||||||
rts = recurrence_time_span(recurring_todo)
|
|
||||||
# only add space if recurrence_time_span has content
|
|
||||||
rts = " " + rts if !(rts == "")
|
|
||||||
%>
|
|
||||||
[<%=rt%><%=rp%><%=rts%>]
|
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,10 @@
|
||||||
<% unless @todo.completed? %><span class="defer-container"><%= defer_link(1) %> <%= defer_link(7) %></span><% end %>
|
<% unless @todo.completed? %><span class="defer-container"><%= defer_link(1) %> <%= defer_link(7) %></span><% end %>
|
||||||
<%= date_span -%>
|
<%= date_span -%>
|
||||||
<span class="todo.descr"><%= h sanitize(todo.description) %></span>
|
<span class="todo.descr"><%= h sanitize(todo.description) %></span>
|
||||||
<%= link_to(image_tag("recurring16x16.png"), {:controller => "recurring_todos", :action => "index"}, :class => "recurring_icon") if @todo.from_recurring_todo? %>
|
<%= link_to(
|
||||||
|
image_tag("recurring16x16.png"),
|
||||||
|
{:controller => "recurring_todos", :action => "index"},
|
||||||
|
:class => "recurring_icon", :title => recurrence_pattern_as_text(@todo.recurring_todo)) if @todo.from_recurring_todo? %>
|
||||||
<%= tag_list %>
|
<%= tag_list %>
|
||||||
<%= deferred_due_date %>
|
<%= deferred_due_date %>
|
||||||
<%= project_and_context_links( parent_container_type, :suppress_context => suppress_context, :suppress_project => suppress_project ) %>
|
<%= project_and_context_links( parent_container_type, :suppress_context => suppress_context, :suppress_project => suppress_project ) %>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue