##// END OF EJS Templates
Added time report....
Jean-Philippe Lang -
r569:faa3d984ab0a
parent child
Show More
@@ -0,0 +1,17
1 <% @available_criterias[criterias[level]][:values].each do |value| %>
2 <tr class="<%= cycle('odd', 'even') if criterias.length < level + 2 %>">
3 <%= '<td></td>' * level %>
4 <td><%= value.name %></td>
5 <%= '<td></td>' * (criterias.length - level - 1) %>
6 <% hours_for_value = select_hours(hours, criterias[level], value.id) %>
7 <% @periods.each do |period| %>
8 <% sum = sum_hours(select_hours(hours_for_value, @columns, period.to_s)) %>
9 <td align="center"><%= sum > 0 ? sum : "-" %></td>
10 <% end %>
11 </tr>
12 <% if criterias.length > level+1 %>
13 <%= render(:partial => 'report_criteria', :locals => {:criterias => criterias, :hours => hours_for_value, :level => (level + 1)}) %>
14 <% end %>
15
16 <% end %>
17 <% reset_cycle %>
@@ -0,0 +1,52
1 <h2><%= l(:label_spent_time) %></h2>
2
3 <% form_remote_tag(:url => {:project_id => @project}, :update => 'content') do %>
4 <% @criterias.each do |criteria| %>
5 <%= hidden_field_tag 'criterias[]', criteria %>
6 <% end %>
7 <p>
8 <%= l(:label_date_from) %>: <%= text_field_tag 'date_from', @date_from, :size => 10 %><%= calendar_for('date_from') %>
9 &nbsp;
10 <%= l(:label_date_to) %>: <%= text_field_tag 'date_to', @date_to, :size => 10 %><%= calendar_for('date_to') %>
11 &nbsp;
12 <%= l(:label_details) %>:
13 <%= select_tag 'period', options_for_select([[l(:label_year), 'year'],
14 [l(:label_month), 'month'],
15 [l(:label_week), 'week']], @columns) %>
16 &nbsp;
17 <%= submit_tag l(:button_apply) %>
18 <%= link_to_remote l(:button_clear), {:url => {:project_id => @project}, :update => 'content'}, :class => 'icon icon-reload' %>
19 </p>
20
21 <% if @criterias.length < 3 %>
22 <p><%= l(:button_add) %>: <%= select_tag('criterias[]', options_for_select([[]] + (@available_criterias.keys - @criterias).collect{|k| [l(@available_criterias[k][:label]), k]}), :onchange => "this.form.onsubmit();") %></p>
23 <% end %>
24
25 <br />
26
27 <% unless @criterias.empty? %>
28 <table class="list">
29 <thead>
30 <tr>
31 <% @criterias.each do |criteria| %>
32 <th width="15%"><%= l(@available_criterias[criteria][:label]) %></th>
33 <% end %>
34 <% @periods.each do |period| %>
35 <th width="<%= ((100 - @criterias.length * 15 - 15 ) / @periods.length).to_i %>%"><%= period %></th>
36 <% end %>
37 </tr>
38 </thead>
39
40 <tbody>
41 <%= render :partial => 'report_criteria', :locals => {:criterias => @criterias, :hours => @hours, :level => 0} %>
42 </tbody>
43 </table>
44 <% end %>
45 <% end %>
46
47 <% content_for :header_tags do %>
48 <%= javascript_include_tag 'calendar/calendar' %>
49 <%= javascript_include_tag "calendar/lang/calendar-#{current_language}.js" %>
50 <%= javascript_include_tag 'calendar/calendar-setup' %>
51 <%= stylesheet_link_tag 'calendar' %>
52 <% end %>
@@ -0,0 +1,43
1 ---
2 time_entries_001:
3 created_on: 2007-03-23 12:54:18 +01:00
4 tweek: 12
5 tmonth: 3
6 project_id: 1
7 comments: My hours
8 updated_on: 2007-03-23 12:54:18 +01:00
9 activity_id: 8
10 spent_on: 2007-03-23
11 issue_id: 1
12 id: 1
13 hours: 4.25
14 user_id: 2
15 tyear: 2007
16 time_entries_002:
17 created_on: 2007-03-23 14:11:04 +01:00
18 tweek: 12
19 tmonth: 3
20 project_id: 1
21 comments: ""
22 updated_on: 2007-03-23 14:11:04 +01:00
23 activity_id: 8
24 spent_on: 2007-03-23
25 issue_id: 1
26 id: 2
27 hours: 150.0
28 user_id: 1
29 tyear: 2007
30 time_entries_003:
31 created_on: 2007-04-21 12:20:48 +02:00
32 tweek: 16
33 tmonth: 4
34 project_id: 1
35 comments: ""
36 updated_on: 2007-04-21 12:20:48 +02:00
37 activity_id: 8
38 spent_on: 2007-04-21
39 issue_id: 2
40 id: 3
41 hours: 1.0
42 user_id: 1
43 tyear: 2007
@@ -0,0 +1,52
1 # redMine - project management software
2 # Copyright (C) 2006-2007 Jean-Philippe Lang
3 #
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
18 require File.dirname(__FILE__) + '/../test_helper'
19 require 'timelog_controller'
20
21 # Re-raise errors caught by the controller.
22 class TimelogController; def rescue_action(e) raise e end; end
23
24 class TimelogControllerTest < Test::Unit::TestCase
25 fixtures :time_entries, :issues
26
27 def setup
28 @controller = TimelogController.new
29 @request = ActionController::TestRequest.new
30 @response = ActionController::TestResponse.new
31 end
32
33 def test_report_no_criteria
34 get :report, :project_id => 1
35 assert_response :success
36 assert_template 'report'
37 end
38
39 def test_report_one_criteria
40 get :report, :project_id => 1, :period => "month", :date_from => "2007-01-01", :date_to => "2007-12-31", :criterias => ["member"]
41 assert_response :success
42 assert_template 'report'
43 assert_not_nil assigns(:hours)
44 end
45
46 def test_report_two_criterias
47 get :report, :project_id => 1, :period => "week", :date_from => "2007-01-01", :date_to => "2007-12-31", :criterias => ["member", "activity"]
48 assert_response :success
49 assert_template 'report'
50 assert_not_nil assigns(:hours)
51 end
52 end
@@ -1,13 +1,106
1 # redMine - project management software
2 # Copyright (C) 2006-2007 Jean-Philippe Lang
3 #
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
1 class TimelogController < ApplicationController
18 class TimelogController < ApplicationController
2 layout 'base'
19 layout 'base'
3
20
4 before_filter :find_project
21 before_filter :find_project
5 before_filter :authorize, :only => :edit
22 before_filter :authorize, :only => :edit
6 before_filter :check_project_privacy, :only => :details
23 before_filter :check_project_privacy, :except => :edit
7
24
8 helper :sort
25 helper :sort
9 include SortHelper
26 include SortHelper
10
27
28 def report
29 @available_criterias = { 'version' => {:sql => "#{Issue.table_name}.fixed_version_id",
30 :values => @project.versions,
31 :label => :label_version},
32 'category' => {:sql => "#{Issue.table_name}.category_id",
33 :values => @project.issue_categories,
34 :label => :field_category},
35 'member' => {:sql => "#{TimeEntry.table_name}.user_id",
36 :values => @project.users,
37 :label => :label_member},
38 'tracker' => {:sql => "#{Issue.table_name}.tracker_id",
39 :values => Tracker.find(:all),
40 :label => :label_tracker},
41 'activity' => {:sql => "#{TimeEntry.table_name}.activity_id",
42 :values => Enumeration::get_values('ACTI'),
43 :label => :label_activity}
44 }
45
46 @criterias = params[:criterias] || []
47 @criterias = @criterias.select{|criteria| @available_criterias.has_key? criteria}
48 @criterias.uniq!
49
50 @columns = (params[:period] && %w(year month week).include?(params[:period])) ? params[:period] : 'month'
51
52 if params[:date_from]
53 begin; @date_from = params[:date_from].to_date; rescue; end
54 end
55 if params[:date_to]
56 begin; @date_to = params[:date_to].to_date; rescue; end
57 end
58 @date_from ||= Date.civil(Date.today.year, 1, 1)
59 @date_to ||= Date.civil(Date.today.year, Date.today.month+1, 1) - 1
60
61 unless @criterias.empty?
62 sql_select = @criterias.collect{|criteria| @available_criterias[criteria][:sql] + " AS " + criteria}.join(', ')
63 sql_group_by = @criterias.collect{|criteria| @available_criterias[criteria][:sql]}.join(', ')
64
65 sql = "SELECT #{sql_select}, tyear, tmonth, tweek, SUM(hours) AS hours"
66 sql << " FROM #{TimeEntry.table_name} LEFT JOIN #{Issue.table_name} ON #{TimeEntry.table_name}.issue_id = #{Issue.table_name}.id"
67 sql << " WHERE spent_on BETWEEN '%s' AND '%s'" % [ActiveRecord::Base.connection.quoted_date(@date_from.to_time), ActiveRecord::Base.connection.quoted_date(@date_to.to_time)]
68 sql << " GROUP BY #{sql_group_by}, tyear, tmonth, tweek"
69
70 @hours = ActiveRecord::Base.connection.select_all(sql)
71
72 @hours.each do |row|
73 case @columns
74 when 'year'
75 row['year'] = row['tyear']
76 when 'month'
77 row['month'] = "#{row['tyear']}-#{row['tmonth']}"
78 when 'week'
79 row['week'] = "#{row['tyear']}-#{row['tweek']}"
80 end
81 end
82 end
83
84 @periods = []
85 date_from = @date_from
86 # 100 columns max
87 while date_from < @date_to && @periods.length < 100
88 case @columns
89 when 'year'
90 @periods << "#{date_from.year}"
91 date_from = date_from >> 12
92 when 'month'
93 @periods << "#{date_from.year}-#{date_from.month}"
94 date_from = date_from >> 1
95 when 'week'
96 @periods << "#{date_from.year}-#{date_from.cweek}"
97 date_from = date_from + 7
98 end
99 end
100
101 render :layout => false if request.xhr?
102 end
103
11 def details
104 def details
12 sort_init 'spent_on', 'desc'
105 sort_init 'spent_on', 'desc'
13 sort_update
106 sort_update
@@ -1,2 +1,30
1 # redMine - project management software
2 # Copyright (C) 2006 Jean-Philippe Lang
3 #
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
1 module TimelogHelper
18 module TimelogHelper
19 def select_hours(data, criteria, value)
20 data.select {|row| row[criteria] == value.to_s}
21 end
22
23 def sum_hours(data)
24 sum = 0
25 data.each do |row|
26 sum += row['hours'].to_f
27 end
28 sum
29 end
2 end
30 end
@@ -1,3 +1,20
1 # redMine - project management software
2 # Copyright (C) 2006-2007 Jean-Philippe Lang
3 #
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
1 class TimeEntry < ActiveRecord::Base
18 class TimeEntry < ActiveRecord::Base
2 # could have used polymorphic association
19 # could have used polymorphic association
3 # project association here allows easy loading of time entries at project level with one database trip
20 # project association here allows easy loading of time entries at project level with one database trip
@@ -1,11 +1,13
1 <h2><%=l(:label_report_plural)%></h2>
2
3 <% if @total_hours %>
1 <% if @total_hours %>
4 <h3 class="textright"><%= l(:label_spent_time) %>:
2 <div style="float:right;text-align:right;">
5 <%= link_to(lwr(:label_f_hour, @total_hours), {:controller => 'timelog', :action => 'details', :project_id => @project}, :class => 'icon icon-time') %>
3 <strong><%= l(:label_spent_time) %></strong>: <span class="icon icon-time"><%= lwr(:label_f_hour, @total_hours) %></span><br />
6 </h3>
4 <%= link_to(l(:label_details), {:controller => 'timelog', :action => 'details', :project_id => @project}) %> |
5 <%= link_to(l(:label_report), {:controller => 'timelog', :action => 'report', :project_id => @project}) %>
6 </div>
7 <% end %>
7 <% end %>
8
8
9 <h2><%=l(:label_report_plural)%></h2>
10
9 <div class="splitcontentleft">
11 <div class="splitcontentleft">
10 <h3><%=l(:field_tracker)%>&nbsp;&nbsp;<%= link_to image_tag('zoom_in.png'), :detail => 'tracker' %></h3>
12 <h3><%=l(:field_tracker)%>&nbsp;&nbsp;<%= link_to image_tag('zoom_in.png'), :detail => 'tracker' %></h3>
11 <%= render :partial => 'simple', :locals => { :data => @issues_by_tracker, :field_name => "tracker_id", :rows => @trackers } %>
13 <%= render :partial => 'simple', :locals => { :data => @issues_by_tracker, :field_name => "tracker_id", :rows => @trackers } %>
@@ -286,7 +286,7 label_none: никакви
286 label_next: Следващ
286 label_next: Следващ
287 label_previous: Предишен
287 label_previous: Предишен
288 label_used_by: Използва се от
288 label_used_by: Използва се от
289 label_details: Детайли...
289 label_details: Детайли
290 label_add_note: Добавяне на бележка
290 label_add_note: Добавяне на бележка
291 label_per_page: На страница
291 label_per_page: На страница
292 label_calendar: Календар
292 label_calendar: Календар
@@ -397,6 +397,11 label_message_last: Last message
397 label_message_new: New message
397 label_message_new: New message
398 label_reply_plural: Replies
398 label_reply_plural: Replies
399 label_send_information: Send account information to the user
399 label_send_information: Send account information to the user
400 label_year: Year
401 label_month: Month
402 label_week: Week
403 label_date_from: From
404 label_date_to: To
400
405
401 button_login: Вход
406 button_login: Вход
402 button_submit: Изпращане
407 button_submit: Изпращане
@@ -286,7 +286,7 label_none: kein
286 label_next: Weiter
286 label_next: Weiter
287 label_previous: Zurück
287 label_previous: Zurück
288 label_used_by: Benutzt von
288 label_used_by: Benutzt von
289 label_details: Details...
289 label_details: Details
290 label_add_note: Kommentar hinzufügen
290 label_add_note: Kommentar hinzufügen
291 label_per_page: Pro Seite
291 label_per_page: Pro Seite
292 label_calendar: Kalender
292 label_calendar: Kalender
@@ -397,6 +397,11 label_message_last: Last message
397 label_message_new: New message
397 label_message_new: New message
398 label_reply_plural: Replies
398 label_reply_plural: Replies
399 label_send_information: Send account information to the user
399 label_send_information: Send account information to the user
400 label_year: Year
401 label_month: Month
402 label_week: Week
403 label_date_from: From
404 label_date_to: To
400
405
401 button_login: Einloggen
406 button_login: Einloggen
402 button_submit: OK
407 button_submit: OK
@@ -286,7 +286,7 label_none: none
286 label_next: Next
286 label_next: Next
287 label_previous: Previous
287 label_previous: Previous
288 label_used_by: Used by
288 label_used_by: Used by
289 label_details: Details...
289 label_details: Details
290 label_add_note: Add a note
290 label_add_note: Add a note
291 label_per_page: Per page
291 label_per_page: Per page
292 label_calendar: Calendar
292 label_calendar: Calendar
@@ -397,6 +397,11 label_message_last: Last message
397 label_message_new: New message
397 label_message_new: New message
398 label_reply_plural: Replies
398 label_reply_plural: Replies
399 label_send_information: Send account information to the user
399 label_send_information: Send account information to the user
400 label_year: Year
401 label_month: Month
402 label_week: Week
403 label_date_from: From
404 label_date_to: To
400
405
401 button_login: Login
406 button_login: Login
402 button_submit: Submit
407 button_submit: Submit
@@ -286,7 +286,7 label_none: ninguno
286 label_next: Próximo
286 label_next: Próximo
287 label_previous: Precedente
287 label_previous: Precedente
288 label_used_by: Utilizado por
288 label_used_by: Utilizado por
289 label_details: Detalles...
289 label_details: Detalles
290 label_add_note: Agregar una nota
290 label_add_note: Agregar una nota
291 label_per_page: Por la página
291 label_per_page: Por la página
292 label_calendar: Calendario
292 label_calendar: Calendario
@@ -397,6 +397,11 label_message_last: Last message
397 label_message_new: New message
397 label_message_new: New message
398 label_reply_plural: Replies
398 label_reply_plural: Replies
399 label_send_information: Send account information to the user
399 label_send_information: Send account information to the user
400 label_year: Year
401 label_month: Month
402 label_week: Week
403 label_date_from: From
404 label_date_to: To
400
405
401 button_login: Conexión
406 button_login: Conexión
402 button_submit: Someter
407 button_submit: Someter
@@ -286,7 +286,7 label_none: aucun
286 label_next: Suivant
286 label_next: Suivant
287 label_previous: Précédent
287 label_previous: Précédent
288 label_used_by: Utilisé par
288 label_used_by: Utilisé par
289 label_details: Détails...
289 label_details: Détails
290 label_add_note: Ajouter une note
290 label_add_note: Ajouter une note
291 label_per_page: Par page
291 label_per_page: Par page
292 label_calendar: Calendrier
292 label_calendar: Calendrier
@@ -397,6 +397,11 label_message_last: Dernier message
397 label_message_new: Nouveau message
397 label_message_new: Nouveau message
398 label_reply_plural: Réponses
398 label_reply_plural: Réponses
399 label_send_information: Envoyer les informations à l'utilisateur
399 label_send_information: Envoyer les informations à l'utilisateur
400 label_year: Année
401 label_month: Mois
402 label_week: Semaine
403 label_date_from: Du
404 label_date_to: Au
400
405
401 button_login: Connexion
406 button_login: Connexion
402 button_submit: Soumettre
407 button_submit: Soumettre
@@ -286,7 +286,7 label_none: nessuno
286 label_next: Successivo
286 label_next: Successivo
287 label_previous: Precedente
287 label_previous: Precedente
288 label_used_by: Usato da
288 label_used_by: Usato da
289 label_details: Dettagli...
289 label_details: Dettagli
290 label_add_note: Aggiungi una nota
290 label_add_note: Aggiungi una nota
291 label_per_page: Per pagina
291 label_per_page: Per pagina
292 label_calendar: Calendario
292 label_calendar: Calendario
@@ -397,6 +397,11 label_message_last: Last message
397 label_message_new: New message
397 label_message_new: New message
398 label_reply_plural: Replies
398 label_reply_plural: Replies
399 label_send_information: Send account information to the user
399 label_send_information: Send account information to the user
400 label_year: Year
401 label_month: Month
402 label_week: Week
403 label_date_from: From
404 label_date_to: To
400
405
401 button_login: Login
406 button_login: Login
402 button_submit: Invia
407 button_submit: Invia
@@ -287,7 +287,7 label_none: なし
287 label_next:
287 label_next:
288 label_previous:
288 label_previous:
289 label_used_by: 使用中
289 label_used_by: 使用中
290 label_details: 詳細...
290 label_details: 詳細
291 label_add_note: 注記を追加
291 label_add_note: 注記を追加
292 label_per_page: ページ毎
292 label_per_page: ページ毎
293 label_calendar: カレンダー
293 label_calendar: カレンダー
@@ -398,6 +398,11 label_message_last: 最新のメッセージ
398 label_message_new: 新しいメッセージ
398 label_message_new: 新しいメッセージ
399 label_reply_plural: 返答
399 label_reply_plural: 返答
400 label_send_information: アカウント情報をユーザに送信
400 label_send_information: アカウント情報をユーザに送信
401 label_year: Year
402 label_month: Month
403 label_week: Week
404 label_date_from: From
405 label_date_to: To
401
406
402 button_login: ログイン
407 button_login: ログイン
403 button_submit: 変更
408 button_submit: 変更
@@ -286,7 +286,7 label_none: geen
286 label_next: Volgende
286 label_next: Volgende
287 label_previous: Vorige
287 label_previous: Vorige
288 label_used_by: Gebruikt door
288 label_used_by: Gebruikt door
289 label_details: Details...
289 label_details: Details
290 label_add_note: Voeg een notitie toe
290 label_add_note: Voeg een notitie toe
291 label_per_page: Per pagina
291 label_per_page: Per pagina
292 label_calendar: Kalender
292 label_calendar: Kalender
@@ -397,6 +397,11 label_message_last: Laatste bericht
397 label_message_new: Nieuw bericht
397 label_message_new: Nieuw bericht
398 label_reply_plural: Antwoorden
398 label_reply_plural: Antwoorden
399 label_send_information: Send account information to the user
399 label_send_information: Send account information to the user
400 label_year: Year
401 label_month: Month
402 label_week: Week
403 label_date_from: From
404 label_date_to: To
400
405
401 button_login: Inloggen
406 button_login: Inloggen
402 button_submit: Toevoegen
407 button_submit: Toevoegen
@@ -286,7 +286,7 label_none: nenhum
286 label_next: Proximo
286 label_next: Proximo
287 label_previous: Anterior
287 label_previous: Anterior
288 label_used_by: Usado por
288 label_used_by: Usado por
289 label_details: Detalhes...
289 label_details: Detalhes
290 label_add_note: Adicionar nota
290 label_add_note: Adicionar nota
291 label_per_page: Por pagina
291 label_per_page: Por pagina
292 label_calendar: Calendario
292 label_calendar: Calendario
@@ -397,6 +397,11 label_message_last: Last message
397 label_message_new: New message
397 label_message_new: New message
398 label_reply_plural: Replies
398 label_reply_plural: Replies
399 label_send_information: Send account information to the user
399 label_send_information: Send account information to the user
400 label_year: Year
401 label_month: Month
402 label_week: Week
403 label_date_from: From
404 label_date_to: To
400
405
401 button_login: Login
406 button_login: Login
402 button_submit: Enviar
407 button_submit: Enviar
@@ -286,7 +286,7 label_none: nenhum
286 label_next: Próximo
286 label_next: Próximo
287 label_previous: Anterior
287 label_previous: Anterior
288 label_used_by: Usado por
288 label_used_by: Usado por
289 label_details: Detalhes...
289 label_details: Detalhes
290 label_add_note: Adicionar nota
290 label_add_note: Adicionar nota
291 label_per_page: Por página
291 label_per_page: Por página
292 label_calendar: Calendário
292 label_calendar: Calendário
@@ -397,6 +397,11 label_message_last: Last message
397 label_message_new: New message
397 label_message_new: New message
398 label_reply_plural: Replies
398 label_reply_plural: Replies
399 label_send_information: Send account information to the user
399 label_send_information: Send account information to the user
400 label_year: Year
401 label_month: Month
402 label_week: Week
403 label_date_from: From
404 label_date_to: To
400
405
401 button_login: Login
406 button_login: Login
402 button_submit: Enviar
407 button_submit: Enviar
@@ -286,7 +286,7 label_none: inga
286 label_next: Nästa
286 label_next: Nästa
287 label_previous: Föregående
287 label_previous: Föregående
288 label_used_by: Använd av
288 label_used_by: Använd av
289 label_details: Detaljer...
289 label_details: Detaljer
290 label_add_note: Lägg till anteckning
290 label_add_note: Lägg till anteckning
291 label_per_page: Per sida
291 label_per_page: Per sida
292 label_calendar: Kalender
292 label_calendar: Kalender
@@ -397,6 +397,11 label_message_last: Last message
397 label_message_new: New message
397 label_message_new: New message
398 label_reply_plural: Replies
398 label_reply_plural: Replies
399 label_send_information: Send account information to the user
399 label_send_information: Send account information to the user
400 label_year: Year
401 label_month: Month
402 label_week: Week
403 label_date_from: From
404 label_date_to: To
400
405
401 button_login: Logga in
406 button_login: Logga in
402 button_submit: Skicka
407 button_submit: Skicka
@@ -289,7 +289,7 label_none: 无
289 label_next: 下一个
289 label_next: 下一个
290 label_previous: 上一个
290 label_previous: 上一个
291 label_used_by: 使用中
291 label_used_by: 使用中
292 label_details: 详情...
292 label_details: 详情
293 label_add_note: 添加说明
293 label_add_note: 添加说明
294 label_per_page: 每面
294 label_per_page: 每面
295 label_calendar: 日历
295 label_calendar: 日历
@@ -399,6 +399,11 label_message_last: Last message
399 label_message_new: New message
399 label_message_new: New message
400 label_reply_plural: Replies
400 label_reply_plural: Replies
401 label_send_information: Send account information to the user
401 label_send_information: Send account information to the user
402 label_year: Year
403 label_month: Month
404 label_week: Week
405 label_date_from: From
406 label_date_to: To
402
407
403 button_login: 登录
408 button_login: 登录
404 button_submit: 提交
409 button_submit: 提交
General Comments 0
You need to be logged in to leave comments. Login now