Feature #26525 » 26525-my-page-calendar.patch
| app/helpers/my_helper.rb | ||
|---|---|---|
| 76 | 76 |
end |
| 77 | 77 | |
| 78 | 78 |
def render_calendar_block(block, settings) |
| 79 |
calendar = Redmine::Helpers::Calendar.new(User.current.today, current_language, :week)
|
|
| 79 |
calendar = Redmine::Helpers::Calendar.new(User.current.today, current_language, :"week#{settings[:weeks]}")
|
|
| 80 | 80 |
calendar.events = Issue.visible. |
| 81 | 81 |
where(:project_id => User.current.projects.pluck(:id)). |
| 82 | 82 |
where("(start_date>=? and start_date<=?) or (due_date>=? and due_date<=?)", calendar.startdt, calendar.enddt, calendar.startdt, calendar.enddt).
|
| ... | ... | |
| 84 | 84 |
references(:project, :tracker, :priority, :assigned_to). |
| 85 | 85 |
to_a |
| 86 | 86 | |
| 87 |
render :partial => 'my/blocks/calendar', :locals => {:calendar => calendar, :block => block}
|
|
| 87 |
render :partial => 'my/blocks/calendar', :locals => {:calendar => calendar, :block => block, :settings => settings}
|
|
| 88 | 88 |
end |
| 89 | 89 | |
| 90 | 90 |
def render_documents_block(block, settings) |
| app/views/my/blocks/_calendar.html.erb | ||
|---|---|---|
| 1 |
<div class="contextual"> |
|
| 2 |
<%= link_to_function l(:label_options), "$('##{block}-settings').toggle();", :class => 'icon-only icon-settings', :title => l(:label_options) %>
|
|
| 3 |
</div> |
|
| 4 | ||
| 1 | 5 |
<h3><%= l(:label_calendar) %></h3> |
| 2 | 6 | |
| 7 |
<% |
|
| 8 |
tag_name = "settings[#{block}][weeks]"
|
|
| 9 |
tag_id = sanitize_to_id(tag_name) |
|
| 10 |
-%> |
|
| 11 |
<div id="<%= block %>-settings" style="display:none;"> |
|
| 12 |
<%= form_tag(my_page_path, :remote => true) do %> |
|
| 13 |
<div class="box"> |
|
| 14 |
<%= label_tag tag_id, l(:label_date_range) %> |
|
| 15 |
<%= select_tag tag_name, |
|
| 16 |
options_for_select( |
|
| 17 |
(1..5).collect{|ii| [l('datetime.distance_in_words.x_weeks', ii), ii] },
|
|
| 18 |
settings[:weeks] |
|
| 19 |
), |
|
| 20 |
:id => tag_id, :size => 1 %> |
|
| 21 |
</div> |
|
| 22 |
<p> |
|
| 23 |
<%= submit_tag l(:button_save) %> |
|
| 24 |
<%= link_to_function l(:button_cancel), "$('##{block}-settings').toggle();" %>
|
|
| 25 |
</p> |
|
| 26 |
<% end %> |
|
| 27 |
</div> |
|
| 28 | ||
| 3 | 29 |
<%= render :partial => 'common/calendar', :locals => {:calendar => calendar } %>
|
| config/locales/en.yml | ||
|---|---|---|
| 55 | 55 |
x_days: |
| 56 | 56 |
one: "1 day" |
| 57 | 57 |
other: "%{count} days"
|
| 58 |
x_weeks: |
|
| 59 |
one: "1 week" |
|
| 60 |
other: "%{count} weeks"
|
|
| 58 | 61 |
about_x_months: |
| 59 | 62 |
one: "about 1 month" |
| 60 | 63 |
other: "about %{count} months"
|
| lib/redmine/helpers/calendar.rb | ||
|---|---|---|
| 37 | 37 |
@startdt = @startdt - (@startdt.cwday - first_wday)%7 |
| 38 | 38 |
# ends on the last day of the week |
| 39 | 39 |
@enddt = @enddt + (last_wday - @enddt.cwday)%7 |
| 40 |
when :week |
|
| 41 |
@startdt = date - (date.cwday - first_wday)%7 |
|
| 42 |
@enddt = date + (last_wday - date.cwday)%7 |
|
| 43 | 40 |
else |
| 44 |
raise 'Invalid period' |
|
| 41 |
if "#{period}" =~ /^week(\d*)$/
|
|
| 42 |
week = ($1.presence || '1').to_i |
|
| 43 |
week = 1 if week < 1 |
|
| 44 |
week = 5 if week > 5 |
|
| 45 |
@startdt = date - (date.cwday - first_wday)%7 |
|
| 46 |
@enddt = (date + 7 * (week - 1)) + (last_wday - date.cwday)%7 |
|
| 47 |
else |
|
| 48 |
raise 'Invalid period' |
|
| 49 |
end |
|
| 45 | 50 |
end |
| 46 | 51 |
end |
| 47 | 52 | |
| test/functional/my_controller_test.rb | ||
|---|---|---|
| 315 | 315 |
end |
| 316 | 316 |
end |
| 317 | 317 | |
| 318 |
def test_page_with_calendar_block_should_show_period_of_selected_week |
|
| 319 |
preference = User.find(2).pref |
|
| 320 |
preference.my_page_layout = {'top' => ['calendar']}
|
|
| 321 |
preference.my_page_settings = {}
|
|
| 322 |
preference.save! |
|
| 323 | ||
| 324 |
post :update_page, |
|
| 325 |
:params => {
|
|
| 326 |
:settings => {
|
|
| 327 |
:calendar => {:weeks => '3'},
|
|
| 328 |
}, |
|
| 329 |
}, |
|
| 330 |
:xhr => true |
|
| 331 |
assert_response :success |
|
| 332 |
assert_include '$("#block-calendar").replaceWith(', response.body
|
|
| 333 |
assert_equal({:weeks => '3'}, preference.reload.my_page_settings('calendar'))
|
|
| 334 |
end |
|
| 335 | ||
| 318 | 336 |
def test_my_account_should_show_editable_custom_fields |
| 319 | 337 |
get :account |
| 320 | 338 |
assert_response :success |
- « Previous
- 1
- 2
- Next »