Module: ApplicationHelper
- Defined in:
- app/helpers/application_helper.rb
Instance Method Summary collapse
- #container_toggle(id) ⇒ Object
- #count_undone_todos_and_notes_phrase(project) ⇒ Object
-
#count_undone_todos_phrase(todos_parent) ⇒ Object
Returns a count of next actions in the given context or project.
- #count_undone_todos_phrase_text(todos_parent) ⇒ Object
- #date_format_for_date_picker ⇒ Object
- #determine_all_done_path ⇒ Object
- #determine_done_path ⇒ Object
- #done_path(controller_name, type) ⇒ Object
-
#due_date(due) ⇒ Object
Check due date in comparison to today’s date Flag up date appropriately with a ‘traffic light’ colour code.
-
#due_date_mobile(due) ⇒ Object
Check due date in comparison to today’s date Flag up date appropriately with a ‘traffic light’ colour code Modified method for mobile screen.
- #generate_i18n_strings ⇒ Object
- #get_list_of_error_messages_for(model) ⇒ Object
- #group_view_by_menu_entry ⇒ Object
- #item_link_to_context(item) ⇒ Object
- #item_link_to_project(item) ⇒ Object
- #javascript_tag_for_i18n_datepicker ⇒ Object
- #js_error_messages_for(object) ⇒ Object
- #js_render(partial, locals = {}, object = nil) ⇒ Object
- #link_to_context(context, descriptor = sanitize(context.name)) ⇒ Object
- #link_to_delete(type, object, descriptor = sanitize(object.name)) ⇒ Object
- #link_to_edit(type, object, descriptor) ⇒ Object
- #link_to_edit_note(note, descriptor = sanitize(note.id.to_s)) ⇒ Object
- #link_to_project(project, descriptor = sanitize(project.name)) ⇒ Object
- #link_to_project_mobile(project, accesskey, descriptor = sanitize(project.name)) ⇒ Object
- #link_to_sidebar_item(item) ⇒ Object
- #recurrence_pattern_as_text(recurring_todo) ⇒ Object
- #recurrence_time_span(rt) ⇒ Object
- #render_flash ⇒ Object
- #sidebar_html_for_item(item) ⇒ Object
- #sidebar_html_for_list(list) ⇒ Object
- #sidebar_html_for_titled_list(list, title) ⇒ Object
- #source_view_key ⇒ Object
- #time_span_text(date, i18n_text) ⇒ Object
-
#unique_object_name_for(name) ⇒ Object
create a unique object name which can be used in ajax calls returning js to prevent concurrent calls with same functions to overwrite each other functions.
Instance Method Details
#container_toggle(id) ⇒ Object
17 18 19 20 21 22 |
# File 'app/helpers/application_helper.rb', line 17 def container_toggle(id) link_to( image_tag("blank.png", :alt => t('common.collapse_expand')), "#", { :class => "container_toggle", :id => id }) end |
#count_undone_todos_and_notes_phrase(project) ⇒ Object
50 51 52 53 54 |
# File 'app/helpers/application_helper.rb', line 50 def count_undone_todos_and_notes_phrase(project) s = count_undone_todos_phrase(project) s += ", #{t('common.note', :count => project.note_count)}" unless project.note_count == 0 s.html_safe end |
#count_undone_todos_phrase(todos_parent) ⇒ Object
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 actions or multiple actions
42 43 44 |
# File 'app/helpers/application_helper.rb', line 42 def count_undone_todos_phrase(todos_parent) controller.count_undone_todos_phrase(todos_parent).html_safe end |
#count_undone_todos_phrase_text(todos_parent) ⇒ Object
46 47 48 |
# File 'app/helpers/application_helper.rb', line 46 def count_undone_todos_phrase_text(todos_parent) count_undone_todos_phrase(todos_parent).gsub(" ", " ").html_safe end |
#date_format_for_date_picker ⇒ Object
119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'app/helpers/application_helper.rb', line 119 def date_format_for_date_picker [ ['%m', 'mm'], ['%b', 'M'], ['%B', 'MM'], ['%d', 'dd'], ['%a', 'D'], ['%A', 'DD'], ['%y', 'y'], ['%Y', 'yy'] ].inject(current_user.prefs.date_format) { |str, translation| str.gsub(*translation) } end |
#determine_all_done_path ⇒ Object
197 198 199 |
# File 'app/helpers/application_helper.rb', line 197 def determine_all_done_path done_path(controller.controller_name, :all_done) end |
#determine_done_path ⇒ Object
193 194 195 |
# File 'app/helpers/application_helper.rb', line 193 def determine_done_path done_path(controller.controller_name, :done) end |
#done_path(controller_name, type) ⇒ Object
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 |
# File 'app/helpers/application_helper.rb', line 176 def done_path(controller_name, type) case controller_name when "contexts" send("#{type}_todos_context_path", @context) when "projects" send("#{type}_todos_project_path", @project) when "todos" if @tag_name send("#{type}_tag_path", @tag_name) else send("#{type}_todos_path") end else send("#{type}_todos_path") end end |
#due_date(due) ⇒ Object
Check due date in comparison to today’s date Flag up date appropriately with a ‘traffic light’ colour code
27 28 29 |
# File 'app/helpers/application_helper.rb', line 27 def due_date(due) return DateLabelHelper::DueDateView.new(due, prefs).due_date_html end |
#due_date_mobile(due) ⇒ Object
Check due date in comparison to today’s date Flag up date appropriately with a ‘traffic light’ colour code Modified method for mobile screen
34 35 36 |
# File 'app/helpers/application_helper.rb', line 34 def due_date_mobile(due) return DateLabelHelper::DueDateView.new(due, prefs).due_date_mobile_html end |
#generate_i18n_strings ⇒ Object
149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 |
# File 'app/helpers/application_helper.rb', line 149 def generate_i18n_strings js = "i18n_locale='#{I18n.locale}';\n" js << "i18n = new Array();\n" %w{ shared.toggle_multi shared.toggle_multi_title shared.hide_form shared.hide_action_form_title shared.toggle_single shared.toggle_single_title projects.hide_form projects.hide_form_title projects.show_form projects.show_form_title contexts.hide_form contexts.hide_form_title contexts.show_form contexts.show_form_title contexts.new_context_pre contexts.new_context_post common.cancel common.ok common.update common.create common.ajaxError todos.unresolved_dependency }.each do |s| js << "i18n['#{s}'] = '#{t(s).gsub(/'/, "\\\\'")}';\n" end return js.html_safe end |
#get_list_of_error_messages_for(model) ⇒ Object
201 202 203 204 205 206 207 208 209 |
# File 'app/helpers/application_helper.rb', line 201 def (model) if model.errors.any? content_tag(:div, { :id => "errorExplanation" }) do content_tag(:ul) do model.errors..collect { |msg| concat(content_tag(:li, msg)) } end end end end |
#group_view_by_menu_entry ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# File 'app/helpers/application_helper.rb', line 2 def # not set, no menu entry return "" if @group_view_by.nil? # if view == context, the menu shows Order By Project = @group_view_by == 'context' ? 'project' : 'context' content_tag(:li) do link_to( t("layouts.navigation.group_view_by_#{}"), '#', { :id => "group_view_by_link", :accesskey => "g", :title => t('layouts.navigation.group_view_by_title'), :x_current_group_by => @group_view_by }) end end |
#item_link_to_context(item) ⇒ Object
74 75 76 77 |
# File 'app/helpers/application_helper.rb', line 74 def item_link_to_context(item) link_to_context(item.context, prefs.verbose_action_descriptors ? "[#{item.context.name}]" : "[" + I18n.t("contexts.letter_abbreviation") + "]") end |
#item_link_to_project(item) ⇒ Object
79 80 81 82 |
# File 'app/helpers/application_helper.rb', line 79 def item_link_to_project(item) link_to_project(item.project, prefs.verbose_action_descriptors ? "[#{item.project.name}]" : "[" + I18n.t("projects.letter_abbreviation") + "]") end |
#javascript_tag_for_i18n_datepicker ⇒ Object
170 171 172 173 174 |
# File 'app/helpers/application_helper.rb', line 170 def javascript_tag_for_i18n_datepicker locale = I18n.locale # do not include en as locale since this the available by default javascript_include_tag("datepicker-#{locale}") if locale && locale != :en end |
#js_error_messages_for(object) ⇒ Object
249 250 251 |
# File 'app/helpers/application_helper.rb', line 249 def (object) escape_javascript((object)) end |
#js_render(partial, locals = {}, object = nil) ⇒ Object
241 242 243 244 245 246 247 |
# File 'app/helpers/application_helper.rb', line 241 def js_render(partial, locals = {}, object = nil) if object escape_javascript(render(partial: partial, locals: locals, object: object)) else escape_javascript(render(partial: partial, locals: locals)) end end |
#link_to_context(context, descriptor = sanitize(context.name)) ⇒ Object
56 57 58 |
# File 'app/helpers/application_helper.rb', line 56 def link_to_context(context, descriptor = sanitize(context.name)) link_to(descriptor, context, :title => I18n.t("contexts.view_link", :name => context.name)) end |
#link_to_delete(type, object, descriptor = sanitize(object.name)) ⇒ Object
211 212 213 214 215 216 217 218 219 220 |
# File 'app/helpers/application_helper.rb', line 211 def link_to_delete(type, object, descriptor = sanitize(object.name)) link_to(descriptor, self.send("#{type}_path", object, :format => 'js'), { :id => "delete_#{type}_#{object.id}", :class => "delete_#{type}_button icon", :x_confirm_message => t("#{type}s.delete_#{type}_confirmation", :name => object.name), :title => t("#{type}s.delete_#{type}_title") } ) end |
#link_to_edit(type, object, descriptor) ⇒ Object
222 223 224 225 226 227 228 |
# File 'app/helpers/application_helper.rb', line 222 def link_to_edit(type, object, descriptor) link_to(descriptor, send("edit_#{type}_path", object), { :id => "link_edit_#{dom_id(object)}", :class => "#{type}_edit_settings icon" }) end |
#link_to_edit_note(note, descriptor = sanitize(note.id.to_s)) ⇒ Object
64 65 66 67 |
# File 'app/helpers/application_helper.rb', line 64 def link_to_edit_note(note, descriptor = sanitize(note.id.to_s)) link_to(descriptor, edit_note_path(note), :id => "link_edit_#{dom_id(note)}", :class => "note_edit_settings") end |
#link_to_project(project, descriptor = sanitize(project.name)) ⇒ Object
60 61 62 |
# File 'app/helpers/application_helper.rb', line 60 def link_to_project(project, descriptor = sanitize(project.name)) link_to(descriptor, project, :title => I18n.t("projects.view_link", :name => project.name)) end |
#link_to_project_mobile(project, accesskey, descriptor = sanitize(project.name)) ⇒ Object
69 70 71 72 |
# File 'app/helpers/application_helper.rb', line 69 def link_to_project_mobile(project, accesskey, descriptor = sanitize(project.name)) link_to(descriptor, project_path(project, :format => 'm'), :title => I18n.t("projects.view_link", :name => project.name), :accesskey => accesskey) end |
#link_to_sidebar_item(item) ⇒ Object
136 137 138 |
# File 'app/helpers/application_helper.rb', line 136 def (item) item.is_a?(Project) ? link_to_project(item) : link_to_context(item) end |
#recurrence_pattern_as_text(recurring_todo) ⇒ Object
107 108 109 110 111 112 113 114 115 116 117 |
# File 'app/helpers/application_helper.rb', line 107 def recurrence_pattern_as_text(recurring_todo) recurring_target = recurring_todo.recurring_target_as_text recurrence_pattern = recurring_todo.recurrence_pattern recurrence_pattern = ' ' + recurrence_pattern unless recurrence_pattern.nil? recurrence_time_span = recurrence_time_span(recurring_todo) recurrence_time_span = ' ' + recurrence_time_span unless recurrence_time_span.empty? recurring_target + recurrence_pattern + recurrence_time_span end |
#recurrence_time_span(rt) ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'app/helpers/application_helper.rb', line 92 def recurrence_time_span(rt) case rt.ends_on when "no_end_date" return time_span_text(rt.start_from, I18n.t("todos.recurrence.pattern.from")) when "ends_on_number_of_times" return I18n.t("todos.recurrence.pattern.times", :number => rt.number_of_occurrences) when "ends_on_end_date" starts = time_span_text(rt.start_from, I18n.t("todos.recurrence.pattern.from")) ends = time_span_text(rt.end_date, I18n.t("todos.recurrence.pattern.until")) return starts + " " + ends else raise Exception.new, "unknown recurrence time span selection (#{rt.ends_on})" end end |
#render_flash ⇒ Object
84 85 86 |
# File 'app/helpers/application_helper.rb', line 84 def render_flash render :partial => 'shared/flash', :object => flash end |
#sidebar_html_for_item(item) ⇒ Object
140 141 142 |
# File 'app/helpers/application_helper.rb', line 140 def (item) content_tag(:li, (item) + " (" + count_undone_todos_phrase(item) + ")") end |
#sidebar_html_for_list(list) ⇒ Object
144 145 146 147 |
# File 'app/helpers/application_helper.rb', line 144 def (list) return content_tag(:li, t('sidebar.list_empty')).html_safe if list.empty? return list.inject("") { |html, item| html << (item) }.html_safe end |
#sidebar_html_for_titled_list(list, title) ⇒ Object
132 133 134 |
# File 'app/helpers/application_helper.rb', line 132 def (list, title) return content_tag(:h3, title + " (#{list.size})") + content_tag(:ul, (list)) end |
#source_view_key ⇒ Object
230 231 232 233 |
# File 'app/helpers/application_helper.rb', line 230 def source_view_key # uses @project.id or @context.id depending on source_view source_view_is_one_of(:project, :context) ? "#{@source_view}-#{eval("@#{@source_view}.id", binding, __FILE__, __LINE__)}" : @source_view end |
#time_span_text(date, i18n_text) ⇒ Object
88 89 90 |
# File 'app/helpers/application_helper.rb', line 88 def time_span_text(date, i18n_text) return (date ? "#{i18n_text} #{format_date(date)}" : "").html_safe end |
#unique_object_name_for(name) ⇒ Object
create a unique object name which can be used in ajax calls returning js to prevent concurrent calls with same functions to overwrite each other functions
237 238 239 |
# File 'app/helpers/application_helper.rb', line 237 def unique_object_name_for(name) "#{name}_#{SecureRandom.hex(5)}" end |