From af94d24951003cc44c08b0cac4777b3fa4970c4f Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Thu, 20 Oct 2011 12:34:03 +0200
Subject: [PATCH 01/27] [#667] added style to hide content from sighted users

---
 public/stylesheets/application.css | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css
index a7087308..5ce9dc5e 100644
--- a/public/stylesheets/application.css
+++ b/public/stylesheets/application.css
@@ -973,3 +973,14 @@ h2 img { vertical-align:middle; }
 	table.list {margin-top:0.5em;}
 	table.list th, table.list td {border: 1px solid #aaa;}
 }
+
+
+/* Accessibility specific styles */
+.hidden-for-sighted {
+  position:absolute;
+  left:-10000px;
+  top:auto;
+  width:1px;
+  height:1px;
+  overflow:hidden;
+}

From bf8de58548eea330c75bce8d8f589bc08a28f61c Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Thu, 20 Oct 2011 17:25:33 +0200
Subject: [PATCH 02/27] [#667] added 'for' to link them

---
 app/helpers/issues_helper.rb | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb
index 4063d763..a07d26d4 100644
--- a/app/helpers/issues_helper.rb
+++ b/app/helpers/issues_helper.rb
@@ -213,8 +213,8 @@ module IssuesHelper
   def send_notification_option
     content_tag(:p,
                 content_tag(:label,
-                            l(:label_notify_member_plural)) +
-                hidden_field_tag('send_notification', '0') +
+                            l(:label_notify_member_plural), :for => 'send_notification') +
+                hidden_field_tag('send_notification', '0', :id => nil) +
                 check_box_tag('send_notification', '1', true))
 
 

From 5ab9ed889cf01d72925ceaa899e684956e4135d6 Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Thu, 20 Oct 2011 17:28:29 +0200
Subject: [PATCH 03/27] [#667] added invisible project scope label

---
 app/helpers/search_helper.rb | 1 +
 config/locales/de.yml        | 1 +
 config/locales/en.yml        | 1 +
 3 files changed, 3 insertions(+)

diff --git a/app/helpers/search_helper.rb b/app/helpers/search_helper.rb
index 6bc9b1d4..b03552b8 100644
--- a/app/helpers/search_helper.rb
+++ b/app/helpers/search_helper.rb
@@ -43,6 +43,7 @@ module SearchHelper
     options << [l(:label_my_projects), 'my_projects'] unless User.current.memberships.empty?
     options << [l(:label_and_its_subprojects, @project.name), 'subprojects'] unless @project.nil? || @project.descendants.active.empty?
     options << [@project.name, ''] unless @project.nil?
+    label_tag("scope", l(:description_project_scope), :class => "hidden-for-sighted") +
     select_tag('scope', options_for_select(options, params[:scope].to_s)) if options.size > 1
   end
 
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 128750da..a14b61c8 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -982,3 +982,4 @@ de:
   label_path_encoding: Path encoding
   text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
   label_diff: diff
+  description_project_scope: Suchbereich
diff --git a/config/locales/en.yml b/config/locales/en.yml
index e0614bac..1512156b 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -964,3 +964,4 @@ en:
   enumeration_doc_categories: Document categories
   enumeration_activities: Activities (time tracking)
   enumeration_system_activity: System Activity
+  description_project_scope: Search scope

From cd7b30dac616a573298a27f33600ddbc7ad4939d Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Thu, 20 Oct 2011 17:29:21 +0200
Subject: [PATCH 04/27] [#667] added invisible search label

---
 app/views/search/index.rhtml | 1 +
 config/locales/de.yml        | 1 +
 config/locales/en.yml        | 1 +
 3 files changed, 3 insertions(+)

diff --git a/app/views/search/index.rhtml b/app/views/search/index.rhtml
index 02833a5d..e6be11f9 100644
--- a/app/views/search/index.rhtml
+++ b/app/views/search/index.rhtml
@@ -2,6 +2,7 @@
 
 <div class="box">
 <% form_tag({}, :method => :get) do %>
+<%= label_tag "search-input", l(:description_search), :class => "hidden-for-sighted" %>
 <p><%= text_field_tag 'q', @question, :size => 60, :id => 'search-input' %>
 <%= javascript_tag "Field.focus('search-input')" %>
 <%= project_select_tag %>
diff --git a/config/locales/de.yml b/config/locales/de.yml
index a14b61c8..fcc49dd7 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -982,4 +982,5 @@ de:
   label_path_encoding: Path encoding
   text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
   label_diff: diff
+  description_search: Suchfeld
   description_project_scope: Suchbereich
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 1512156b..af0766b8 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -964,4 +964,5 @@ en:
   enumeration_doc_categories: Document categories
   enumeration_activities: Activities (time tracking)
   enumeration_system_activity: System Activity
+  description_search: Searchfield
   description_project_scope: Search scope

From bf23c06d9341d37fc74812e50a6d345a75af6e21 Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Thu, 20 Oct 2011 17:36:55 +0200
Subject: [PATCH 05/27] [#667] added invisible labels for queries

---
 app/views/queries/_columns.rhtml |  8 ++++++--
 app/views/queries/_filters.rhtml |  1 +
 app/views/queries/_form.rhtml    | 10 ++++++----
 config/locales/de.yml            |  5 +++++
 config/locales/en.yml            |  5 +++++
 5 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/app/views/queries/_columns.rhtml b/app/views/queries/_columns.rhtml
index f96d87b0..6c2eda4e 100644
--- a/app/views/queries/_columns.rhtml
+++ b/app/views/queries/_columns.rhtml
@@ -1,6 +1,8 @@
 <table style="border-collapse: collapse; border:0;">
 	<tr>
-		<td style="padding-left:0"><%= select_tag 'available_columns',
+		<td style="padding-left:0">
+                <%= label_tag "available_columns", l(:description_available_columns), :class => "hidden-for-sighted" %>
+                <%= select_tag 'available_columns',
 		          options_for_select((query.available_columns - query.columns).collect {|column| [column.caption, column.name]}),
 		          :multiple => true, :size => 10, :style => "width:150px" %>
 		</td>
@@ -10,7 +12,9 @@
 			<input type="button" value="&#8592;"
 			 onclick="moveOptions(this.form.selected_columns, this.form.available_columns);" />
 		</td>
-		<td><%= select_tag 'c[]',
+		<td>
+                <%= label_tag "selected_columns", l(:description_selected_columns), :class => "hidden-for-sighted" %>
+                <%= select_tag 'c[]',
 		          options_for_select(query.columns.collect {|column| [column.caption, column.name]}),
 		          :id => 'selected_columns', :multiple => true, :size => 10, :style => "width:150px" %>
 		</td>
diff --git a/app/views/queries/_filters.rhtml b/app/views/queries/_filters.rhtml
index 1c67f580..5cf9825d 100644
--- a/app/views/queries/_filters.rhtml
+++ b/app/views/queries/_filters.rhtml
@@ -85,6 +85,7 @@ Event.observe(document,"dom:loaded", apply_filters_observer);
         <label for="cb_<%= field %>"><%= filter[1][:name] || l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym) %></label>
     </td>
     <td style="width:150px;">
+        <%= label_tag "op_#{field}", l(:description_filter), :class => "hidden-for-sighted" %>
         <%= select_tag "op[#{field}]", options_for_select(operators_for_select(options[:type]), query.operator_for(field)), :id => "operators_#{field}", :onchange => "toggle_operator('#{field}');", :class => "select-small", :style => "vertical-align: top;" %>
     </td>
     <td>
diff --git a/app/views/queries/_form.rhtml b/app/views/queries/_form.rhtml
index dcafe9f6..39486d90 100644
--- a/app/views/queries/_form.rhtml
+++ b/app/views/queries/_form.rhtml
@@ -30,10 +30,12 @@
 
 <fieldset><legend><%= l(:label_sort) %></legend>
 <% 3.times do |i| %>
-<%= i+1 %>: <%= select_tag("query[sort_criteria][#{i}][]",
-									options_for_select([[]] + query.available_columns.select(&:sortable?).collect {|column| [column.caption, column.name.to_s]}, @query.sort_criteria_key(i))) %>
-				    <%= select_tag("query[sort_criteria][#{i}][]",
-							    		  		options_for_select([[], [l(:label_ascending), 'asc'], [l(:label_descending), 'desc']], @query.sort_criteria_order(i))) %><br />
+<%= i+1 %>: 
+<%= label_tag "query_sort_criteria_attribute_" + i.to_s, l(:description_query_sort_criteria_attribute), :class => "hidden-for-sighted" %>
+<%= select_tag("query[sort_criteria][#{i}][]", options_for_select([[]] + query.available_columns.select(&:sortable?).collect {|column| [column.caption, column.name.to_s]}, @query.sort_criteria_key(i)), :id => "query_sort_criteria_attribute_" + i.to_s)%>
+<%= label_tag "query_sort_criteria_direction_" + i.to_s, l(:description_query_sort_criteria_direction), :class => "hidden-for-sighted" %>
+<%= select_tag("query[sort_criteria][#{i}][]", options_for_select([[], [l(:label_ascending), 'asc'], [l(:label_descending), 'desc']], @query.sort_criteria_order(i)), :id => "query_sort_criteria_direction_" + i.to_s) %>
+<br />
 <% end %>
 </fieldset>
 
diff --git a/config/locales/de.yml b/config/locales/de.yml
index fcc49dd7..30096da3 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -982,5 +982,10 @@ de:
   label_path_encoding: Path encoding
   text_mercurial_repo_example: local repository (e.g. /hgrepo, c:\hgrepo)
   label_diff: diff
+  description_filter: Filter
   description_search: Suchfeld
   description_project_scope: Suchbereich
+  description_query_sort_criteria_attribute: Sortierattribut
+  description_query_sort_criteria_direction: Sortierrichtung
+  description_available_columns: Verfügbare Spalten
+  description_selected_columns: Ausgewählte Spalten
diff --git a/config/locales/en.yml b/config/locales/en.yml
index af0766b8..0a15b1ab 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -964,5 +964,10 @@ en:
   enumeration_doc_categories: Document categories
   enumeration_activities: Activities (time tracking)
   enumeration_system_activity: System Activity
+  description_filter: Filter
   description_search: Searchfield
   description_project_scope: Search scope
+  description_query_sort_criteria_attribute: Sort attribute
+  description_query_sort_criteria_direction: Sort direction
+  description_available_columns: Available Columns
+  description_selected_columns: Selected Spalten

From 0f5d38ca4b2d4188a44bd34d30be333422844231 Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Thu, 20 Oct 2011 17:41:40 +0200
Subject: [PATCH 06/27] [#667] linked labels to their elements

---
 app/views/issue_moves/new.rhtml  | 10 +++++-----
 app/views/issues/bulk_edit.rhtml | 22 +++++++++++-----------
 app/views/issues/index.rhtml     |  2 +-
 3 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/app/views/issue_moves/new.rhtml b/app/views/issue_moves/new.rhtml
index 6f2935e1..f1327ad7 100644
--- a/app/views/issue_moves/new.rhtml
+++ b/app/views/issue_moves/new.rhtml
@@ -26,17 +26,17 @@
 <%= select_tag "new_tracker_id", "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(@trackers, "id", "name") %></p>
 
 <p>
-  <label><%= l(:field_status) %></label>
+  <label for='status_id'><%= l(:field_status) %></label>
   <%= select_tag('status_id', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(@available_statuses, :id, :name)) %>
 </p>
 
 <p>
-  <label><%= l(:field_priority) %></label>
+  <label for='priority_id'><%= l(:field_priority) %></label>
   <%= select_tag('priority_id', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(IssuePriority.all, :id, :name)) %>
 </p>
 
 <p>
-  <label><%= l(:field_assigned_to) %></label>
+  <label for='assigned_to_id'><%= l(:field_assigned_to) %></label>
   <%= select_tag('assigned_to_id', content_tag('option', l(:label_no_change_option), :value => '') +
                                    content_tag('option', l(:label_nobody), :value => 'none') +
                                    options_from_collection_for_select(@target_project.assignable_users, :id, :name)) %>
@@ -45,12 +45,12 @@
 
 <div class="splitcontentright">
 <p>
-  <label><%= l(:field_start_date) %></label>
+  <label for='start_date'><%= l(:field_start_date) %></label>
   <%= text_field_tag 'start_date', '', :size => 10 %><%= calendar_for('start_date') %>
 </p>
 
 <p>
-  <label><%= l(:field_due_date) %></label>
+  <label for='due_date'><%= l(:field_due_date) %></label>
   <%= text_field_tag 'due_date', '', :size => 10 %><%= calendar_for('due_date') %>
 </p>
 </div>
diff --git a/app/views/issues/bulk_edit.rhtml b/app/views/issues/bulk_edit.rhtml
index eceb11b8..61bd7e4a 100644
--- a/app/views/issues/bulk_edit.rhtml
+++ b/app/views/issues/bulk_edit.rhtml
@@ -10,28 +10,28 @@
 
 <div class="splitcontentleft">
 <p>
-	<label><%= l(:field_tracker) %></label>
+	<label for="issue_tracker_id"><%= l(:field_tracker) %></label>
 	<%= select_tag('issue[tracker_id]', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(@trackers, :id, :name)) %>
 </p>
 <% if @available_statuses.any? %>
 <p>
-	<label><%= l(:field_status) %></label>
+	<label for='issue_status_id'><%= l(:field_status) %></label>
 	<%= select_tag('issue[status_id]', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(@available_statuses, :id, :name)) %>
 </p>
 <% end %>
 <p>
-	<label><%= l(:field_priority) %></label>
+	<label for='issue_priority_id'><%= l(:field_priority) %></label>
 	<%= select_tag('issue[priority_id]', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(IssuePriority.all, :id, :name)) %>
 </p>
 <p>
-	<label><%= l(:field_assigned_to) %></label>
+	<label for='issue_assigned_to_id'><%= l(:field_assigned_to) %></label>
 	<%= select_tag('issue[assigned_to_id]', content_tag('option', l(:label_no_change_option), :value => '') +
                                  content_tag('option', l(:label_nobody), :value => 'none') +
                                  options_from_collection_for_select(@assignables, :id, :name)) %>
 </p>
 <% if @project %>
 <p>
-	<label><%= l(:field_category) %></label>
+	<label for='issue_category_id'><%= l(:field_category) %></label>
 	<%= select_tag('issue[category_id]', content_tag('option', l(:label_no_change_option), :value => '') +
                                 content_tag('option', l(:label_none), :value => 'none') +
                                 options_from_collection_for_select(@project.issue_categories, :id, :name)) %>
@@ -40,7 +40,7 @@
 <% #TODO: allow editing versions when multiple projects %>
 <% if @project %>
 <p>
-	<label><%= l(:field_fixed_version) %></label>
+	<label for='issue_fixed_version_id'><%= l(:field_fixed_version) %></label>
 	<%= select_tag('issue[fixed_version_id]', content_tag('option', l(:label_no_change_option), :value => '') +
                                    content_tag('option', l(:label_none), :value => 'none') +
                                    version_options_for_select(@project.shared_versions.open.sort)) %>
@@ -48,7 +48,7 @@
 <% end %>
 
 <% @custom_fields.each do |custom_field| %>
-	<p><label><%= h(custom_field.name) %></label> <%= custom_field_tag_for_bulk_edit('issue', custom_field) %></p>
+	<p><label><%= h(custom_field.name) %> <%= custom_field_tag_for_bulk_edit('issue', custom_field) %></label></p>
 <% end %>
 
 <%= call_hook(:view_issues_bulk_edit_details_bottom, { :issues => @issues }) %>
@@ -57,23 +57,23 @@
 <div class="splitcontentright">
 <% if @project && User.current.allowed_to?(:manage_subtasks, @project) %>
 <p>
-	<label><%= l(:field_parent_issue) %></label>
+	<label for='issue_parent_issue_id'><%= l(:field_parent_issue) %></label>
 	<%= text_field_tag 'issue[parent_issue_id]', '', :size => 10 %>
 </p>
 <div id="parent_issue_candidates" class="autocomplete"></div>
 <%= javascript_tag "observeParentIssueField('#{auto_complete_issues_path(:project_id => @project) }')" %>
 <% end %>
 <p>
-	<label><%= l(:field_start_date) %></label>
+	<label for='issue_start_date'><%= l(:field_start_date) %></label>
 	<%= text_field_tag 'issue[start_date]', '', :size => 10 %><%= calendar_for('issue_start_date') %>
 </p>
 <p>
-	<label><%= l(:field_due_date) %></label>
+	<label for='issue_due_date'><%= l(:field_due_date) %></label>
 	<%= text_field_tag 'issue[due_date]', '', :size => 10 %><%= calendar_for('issue_due_date') %>
 </p>
 <% if Issue.use_field_for_done_ratio? %>
 <p>
-	<label><%= l(:field_done_ratio) %></label>
+	<label for='issue_done_ratio'><%= l(:field_done_ratio) %></label>
 	<%= select_tag 'issue[done_ratio]', options_for_select([[l(:label_no_change_option), '']] + (0..10).to_a.collect {|r| ["#{r*10} %", r*10] }) %>
 </p>
 <% end %>
diff --git a/app/views/issues/index.rhtml b/app/views/issues/index.rhtml
index 18df5a6b..122b0c06 100644
--- a/app/views/issues/index.rhtml
+++ b/app/views/issues/index.rhtml
@@ -26,7 +26,7 @@
 						<td><%= render :partial => 'queries/columns', :locals => {:query => @query} %></td>
 					</tr>
 					<tr>
-						<td><%= l(:field_group_by) %></td>
+						<td><label for='group_by'><%= l(:field_group_by) %></label></td>
 						<td><%= select_tag('group_by', options_for_select([[]] + @query.groupable_columns.collect {|c| [c.caption, c.name.to_s]}, @query.group_by)) %></td>
 					</tr>
 				</table>

From 2e688efa704d9cdbe9ea6cb6424f0ed93471d8ae Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Thu, 20 Oct 2011 17:42:32 +0200
Subject: [PATCH 07/27] [#667] link label to element

---
 app/views/layouts/base.rhtml | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/app/views/layouts/base.rhtml b/app/views/layouts/base.rhtml
index ea485225..553d743d 100644
--- a/app/views/layouts/base.rhtml
+++ b/app/views/layouts/base.rhtml
@@ -37,7 +37,9 @@
     <div id="quick-search">
         <% form_tag({:controller => 'search', :action => 'index', :id => @project}, :method => :get ) do %>
         <%= hidden_field_tag(controller.default_search_scope, 1, :id => nil) if controller.default_search_scope %>
-        <%= link_to l(:label_search), {:controller => 'search', :action => 'index', :id => @project}, :accesskey => accesskey(:search) %>:
+        <label for='q'>
+          <%= link_to l(:label_search), {:controller => 'search', :action => 'index', :id => @project}, :accesskey => accesskey(:search) %>:
+        </label>
         <%= text_field_tag 'q', @question, :size => 20, :class => 'small', :accesskey => accesskey(:quick_search) %>
         <% end %>
         <%= render_project_jump_box %>

From 4717a242cb018aadef67a3de258405e55e56978a Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Thu, 20 Oct 2011 17:43:25 +0200
Subject: [PATCH 08/27] [#667] link label to element

---
 app/views/admin/projects.rhtml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/app/views/admin/projects.rhtml b/app/views/admin/projects.rhtml
index 229c77ea..423a804a 100644
--- a/app/views/admin/projects.rhtml
+++ b/app/views/admin/projects.rhtml
@@ -6,9 +6,9 @@
 
 <% form_tag({}, :method => :get) do %>
 <fieldset><legend><%= l(:label_filter_plural) %></legend>
-<label><%= l(:field_status) %> :</label>
+<label for='status'><%= l(:field_status) %> :</label>
 <%= select_tag 'status', project_status_options_for_select(@status), :class => "small", :onchange => "this.form.submit(); return false;"  %>
-<label><%= l(:label_project) %>:</label>
+<label for='name'><%= l(:label_project) %>:</label>
 <%= text_field_tag 'name', params[:name], :size => 30 %>
 <%= submit_tag l(:button_apply), :class => "small", :name => nil %>
 <%= link_to l(:button_clear), {:controller => 'admin', :action => 'projects'}, :class => 'icon icon-reload' %>

From 207af21553981cfb65702c4cd419dacade233d86 Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Thu, 20 Oct 2011 17:45:33 +0200
Subject: [PATCH 09/27] [#667] set id for message_subject and linked it to
 label, added invisible label

---
 app/views/messages/_form.rhtml | 8 +++++---
 config/locales/de.yml          | 1 +
 config/locales/en.yml          | 1 +
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/app/views/messages/_form.rhtml b/app/views/messages/_form.rhtml
index 5b4bd10d..20f55b68 100644
--- a/app/views/messages/_form.rhtml
+++ b/app/views/messages/_form.rhtml
@@ -3,8 +3,8 @@
 
 <div class="box">
 <!--[form:message]-->
-<p><label><%= l(:field_subject) %></label><br />
-<%= f.text_field :subject, :size => 120 %>
+<p><label for="message_subject"><%= l(:field_subject) %></label><br />
+<%= f.text_field :subject, :size => 120, :id => "message_subject" %>
 
 <% if !replying && User.current.allowed_to?(:edit_messages, @project) %>
     <label><%= f.check_box :sticky %><%= l(:label_board_sticky) %></label>
@@ -17,7 +17,9 @@
   <%= f.select :board_id, @project.boards.collect {|b| [b.name, b.id]} %></p>
 <% end %>
 
-<p><%= f.text_area :content, :cols => 80, :rows => 15, :class => 'wiki-edit', :id => 'message_content' %></p>
+<p>
+<%= label_tag "message_content", l(:description_message_content), :class => "hidden-for-sighted" %>
+<%= f.text_area :content, :cols => 80, :rows => 15, :class => 'wiki-edit', :id => 'message_content' %></p>
 <%= wikitoolbar_for 'message_content' %>
 <!--[eoform:message]-->
 
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 30096da3..8a08f071 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -985,6 +985,7 @@ de:
   description_filter: Filter
   description_search: Suchfeld
   description_project_scope: Suchbereich
+  description_message_content: Nachrichteninhalt
   description_query_sort_criteria_attribute: Sortierattribut
   description_query_sort_criteria_direction: Sortierrichtung
   description_available_columns: Verfügbare Spalten
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 0a15b1ab..d0292fd0 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -967,6 +967,7 @@ en:
   description_filter: Filter
   description_search: Searchfield
   description_project_scope: Search scope
+  description_message_content: Message content
   description_query_sort_criteria_attribute: Sort attribute
   description_query_sort_criteria_direction: Sort direction
   description_available_columns: Available Columns

From 2f5cf020f3564f4881f46456d15a12212bf70872 Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Thu, 20 Oct 2011 17:47:35 +0200
Subject: [PATCH 10/27] [#667] set unique id for each checkbox and linked it
 added "no-css" class to overwrite the current label style

---
 app/views/custom_fields/_form.rhtml | 3 +--
 public/stylesheets/application.css  | 7 +++++++
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/app/views/custom_fields/_form.rhtml b/app/views/custom_fields/_form.rhtml
index dcaecead..16e3c8c8 100644
--- a/app/views/custom_fields/_form.rhtml
+++ b/app/views/custom_fields/_form.rhtml
@@ -79,10 +79,9 @@ function toggle_custom_field_format() {
 <div class="box">
 <% case @custom_field.class.name
 when "IssueCustomField" %>
-
     <fieldset><legend><%=l(:label_tracker_plural)%></legend>
     <% for tracker in @trackers %>
-        <%= check_box_tag "custom_field[tracker_ids][]", tracker.id, (@custom_field.trackers.include? tracker) %> <%= h(tracker.name) %>
+        <%= check_box_tag "custom_field[tracker_ids][]", tracker.id, (@custom_field.trackers.include? tracker), :id => "custom_field_tracker_ids_#{tracker.id}" %><label id="no-css" for="custom_field_tracker_ids_<%=tracker.id%>"><%= h(tracker.name) %></label>
     <% end %>
 		<%= hidden_field_tag "custom_field[tracker_ids][]", '' %>
     </fieldset>
diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css
index 5ce9dc5e..ab36122f 100644
--- a/public/stylesheets/application.css
+++ b/public/stylesheets/application.css
@@ -424,6 +424,13 @@ margin-left: 5px !important;
 width: auto;
 }
 
+label#no-css {
+  font-weight: inherit;
+  float:none;
+  text-align:left;
+  margin-left:0px;
+  width:auto;
+}
 input#time_entry_comments { width: 90%;}
 
 #preview fieldset {margin-top: 1em; background: url(../images/draft.png)}

From 2c0fcd3bcab19c11c696b2d5102ff7c6148be77a Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Thu, 20 Oct 2011 17:50:01 +0200
Subject: [PATCH 11/27] [#667] added invisible labels for reassign select-tag
 on destroy views

---
 app/views/enumerations/destroy.rhtml     | 2 +-
 app/views/issue_categories/destroy.rhtml | 1 +
 app/views/wiki/destroy.rhtml             | 1 +
 config/locales/de.yml                    | 2 ++
 config/locales/en.yml                    | 2 ++
 5 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/app/views/enumerations/destroy.rhtml b/app/views/enumerations/destroy.rhtml
index 657df832..b77fff66 100644
--- a/app/views/enumerations/destroy.rhtml
+++ b/app/views/enumerations/destroy.rhtml
@@ -3,7 +3,7 @@
 <% form_tag({}) do %>
 <div class="box">
 <p><strong><%= l(:text_enumeration_destroy_question, @enumeration.objects_count) %></strong></p>
-<p><%= l(:text_enumeration_category_reassign_to) %>
+<p><label for='reassign_to_id'><%= l(:text_enumeration_category_reassign_to) %></label>
 <%= select_tag 'reassign_to_id', ("<option>--- #{l(:actionview_instancetag_blank_option)} ---</option>" + options_from_collection_for_select(@enumerations, 'id', 'name')) %></p>
 </div>
 
diff --git a/app/views/issue_categories/destroy.rhtml b/app/views/issue_categories/destroy.rhtml
index 2b61810e..436aed34 100644
--- a/app/views/issue_categories/destroy.rhtml
+++ b/app/views/issue_categories/destroy.rhtml
@@ -6,6 +6,7 @@
 <p><label><%= radio_button_tag 'todo', 'nullify', true %> <%= l(:text_issue_category_destroy_assignments) %></label><br />
 <% if @categories.size > 0 %>
 <label><%= radio_button_tag 'todo', 'reassign', false %> <%= l(:text_issue_category_reassign_to) %></label>:
+<%= label_tag "reassign_to_id", l(:description_ticket_reassign), :class => "hidden-for-sighted" %>
 <%= select_tag 'reassign_to_id', options_from_collection_for_select(@categories, 'id', 'name') %></p>
 <% end %>
 </div>
diff --git a/app/views/wiki/destroy.rhtml b/app/views/wiki/destroy.rhtml
index 400230f8..e869354c 100644
--- a/app/views/wiki/destroy.rhtml
+++ b/app/views/wiki/destroy.rhtml
@@ -8,6 +8,7 @@
 <% if @reassignable_to.any? %>
 <br />
 <label><%= radio_button_tag 'todo', 'reassign', false %> <%= l(:text_wiki_page_reassign_children) %></label>:
+<%= label_tag "reassign_to_id", l(:description_wiki_reassign), :class => "hidden-for-sighted" %>
 <%= select_tag 'reassign_to_id', wiki_page_options_for_select(@reassignable_to),
 																 :onclick => "$('todo_reassign').checked = true;" %>
 <% end %>
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 8a08f071..bf796431 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -990,3 +990,5 @@ de:
   description_query_sort_criteria_direction: Sortierrichtung
   description_available_columns: Verfügbare Spalten
   description_selected_columns: Ausgewählte Spalten
+  description_ticket_reassign: Ticketzuordnung
+  description_wiki_reassign: Wikiseitenzuordnung
diff --git a/config/locales/en.yml b/config/locales/en.yml
index d0292fd0..3c4a4ea7 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -972,3 +972,5 @@ en:
   description_query_sort_criteria_direction: Sort direction
   description_available_columns: Available Columns
   description_selected_columns: Selected Spalten
+  description_ticket_reassign: Assign issues to
+  description_wiki_reassign: Assign page to

From ecf6a9636ae0d6f23b43be3fa9f1d4ad7f4a566b Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Thu, 20 Oct 2011 17:50:50 +0200
Subject: [PATCH 12/27] [#667] linked labels to their elements

---
 app/views/workflows/edit.rhtml | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/app/views/workflows/edit.rhtml b/app/views/workflows/edit.rhtml
index 22ca1916..298c9530 100644
--- a/app/views/workflows/edit.rhtml
+++ b/app/views/workflows/edit.rhtml
@@ -6,11 +6,11 @@
 
 <% form_tag({}, :method => 'get') do %>
 <p>
-	<label><%=l(:label_role)%>:</label>
-	<%= select_tag 'role_id', options_from_collection_for_select(@roles, "id", "name", @role && @role.id) %>
+	<label><%=l(:label_role)%>:
+	<%= select_tag 'role_id', options_from_collection_for_select(@roles, "id", "name", @role && @role.id) %></label>
 
-  <label><%=l(:label_tracker)%>:</label>
-	<%= select_tag 'tracker_id', options_from_collection_for_select(@trackers, "id", "name", @tracker && @tracker.id) %>
+  <label><%=l(:label_tracker)%>:
+	<%= select_tag 'tracker_id', options_from_collection_for_select(@trackers, "id", "name", @tracker && @tracker.id) %></label>
 
   <%= hidden_field_tag 'used_statuses_only', '0' %>
   <label><%= check_box_tag 'used_statuses_only', '1', @used_statuses_only %> <%= l(:label_display_used_statuses_only) %></label>

From 26a7ea468ad390580e16e300f574cb7e20dd40ee Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Thu, 20 Oct 2011 17:51:24 +0200
Subject: [PATCH 13/27] [#667] linked label to its element

---
 app/views/roles/_form.rhtml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app/views/roles/_form.rhtml b/app/views/roles/_form.rhtml
index ddade433..13d259c7 100644
--- a/app/views/roles/_form.rhtml
+++ b/app/views/roles/_form.rhtml
@@ -5,7 +5,7 @@
 <p><%= f.text_field :name, :required => true %></p>
 <p><%= f.check_box :assignable %></p>
 <% if @role.new_record? && @roles.any? %>
-<p><label><%= l(:label_copy_workflow_from) %></label>
+<p><label for="copy_workflow_from"><%= l(:label_copy_workflow_from) %></label>
 <%= select_tag(:copy_workflow_from, content_tag("option") + options_from_collection_for_select(@roles, :id, :name)) %></p>
 <% end %>
 </div>

From 3c04b3083463083c9d7c09af38633572258f5164 Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Thu, 20 Oct 2011 17:53:36 +0200
Subject: [PATCH 14/27] [#667] added invisible label for mail notification,
 linked label where possible

---
 app/views/users/_mail_notifications.html.erb | 3 ++-
 config/locales/de.yml                        | 1 +
 config/locales/en.yml                        | 1 +
 3 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/app/views/users/_mail_notifications.html.erb b/app/views/users/_mail_notifications.html.erb
index 9c736882..92bfa065 100644
--- a/app/views/users/_mail_notifications.html.erb
+++ b/app/views/users/_mail_notifications.html.erb
@@ -1,4 +1,5 @@
 <p>
+<%= label_tag "user_mail_notification", l(:description_user_mail_notification), :class => "hidden-for-sighted" %>
 <%= select_tag 'user[mail_notification]', options_for_select(user_mail_notification_options(@user), @user.mail_notification),
                                       :onchange => 'if (this.value == "selected") {Element.show("notified-projects")} else {Element.hide("notified-projects")}' %>
 </p>
@@ -8,5 +9,5 @@
 <% end %></p>
 <p><em><%= l(:text_user_mail_option) %></em></p>
 <% end %>
-<p><label><%= l(:label_user_mail_no_self_notified) %></label><%= check_box_tag 'no_self_notified', 1, @user.pref[:no_self_notified] %></p>
+<p><label><%= l(:label_user_mail_no_self_notified) %><%= check_box_tag 'no_self_notified', 1, @user.pref[:no_self_notified] %></label></p>
 
diff --git a/config/locales/de.yml b/config/locales/de.yml
index bf796431..7e1a51b9 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -988,6 +988,7 @@ de:
   description_message_content: Nachrichteninhalt
   description_query_sort_criteria_attribute: Sortierattribut
   description_query_sort_criteria_direction: Sortierrichtung
+  description_user_mail_notification: Mailbenachrichtigungseinstellung
   description_available_columns: Verfügbare Spalten
   description_selected_columns: Ausgewählte Spalten
   description_ticket_reassign: Ticketzuordnung
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 3c4a4ea7..efbd9066 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -970,6 +970,7 @@ en:
   description_message_content: Message content
   description_query_sort_criteria_attribute: Sort attribute
   description_query_sort_criteria_direction: Sort direction
+  description_user_mail_notification: Mailnotification settings
   description_available_columns: Available Columns
   description_selected_columns: Selected Spalten
   description_ticket_reassign: Assign issues to

From 297294362bb4aad8e87fbfaf485df015f017b99d Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Thu, 20 Oct 2011 17:54:20 +0200
Subject: [PATCH 15/27] [#667] added invisible label

---
 app/views/groups/_memberships.html.erb | 1 +
 config/locales/de.yml                  | 1 +
 config/locales/en.yml                  | 1 +
 3 files changed, 3 insertions(+)

diff --git a/app/views/groups/_memberships.html.erb b/app/views/groups/_memberships.html.erb
index e5d84a17..46f2d11e 100644
--- a/app/views/groups/_memberships.html.erb
+++ b/app/views/groups/_memberships.html.erb
@@ -44,6 +44,7 @@
 <% if projects.any? %>
 <fieldset><legend><%=l(:label_project_new)%></legend>
 <% remote_form_for(:membership, :url => { :action => 'edit_membership', :id => @group }) do %>
+<%= label_tag "membership_project_id", l(:description_choose_project), :class => "hidden-for-sighted" %>
 <%= select_tag 'membership[project_id]', options_for_membership_project_select(@group, projects) %>
 <p><%= l(:label_role_plural) %>:
 <% roles.each do |role| %>
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 7e1a51b9..caafd8dd 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -984,6 +984,7 @@ de:
   label_diff: diff
   description_filter: Filter
   description_search: Suchfeld
+  description_choose_project: Projektwahl
   description_project_scope: Suchbereich
   description_message_content: Nachrichteninhalt
   description_query_sort_criteria_attribute: Sortierattribut
diff --git a/config/locales/en.yml b/config/locales/en.yml
index efbd9066..a985fdb7 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -966,6 +966,7 @@ en:
   enumeration_system_activity: System Activity
   description_filter: Filter
   description_search: Searchfield
+  description_choose_project: Choose Project
   description_project_scope: Search scope
   description_message_content: Message content
   description_query_sort_criteria_attribute: Sort attribute

From 71271e6ff6645f057bf45edeef06c3cf1da33f3a Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Thu, 20 Oct 2011 17:56:49 +0200
Subject: [PATCH 16/27] [#667] added invisible label

---
 app/views/journals/_notes_form.rhtml | 2 ++
 config/locales/de.yml                | 1 +
 config/locales/en.yml                | 1 +
 3 files changed, 4 insertions(+)

diff --git a/app/views/journals/_notes_form.rhtml b/app/views/journals/_notes_form.rhtml
index 2b0a467c..19604510 100644
--- a/app/views/journals/_notes_form.rhtml
+++ b/app/views/journals/_notes_form.rhtml
@@ -1,4 +1,6 @@
 <% form_remote_tag(:url => {}, :html => { :id => "journal-#{@journal.id}-form" }) do %>
+
+    <%= label_tag "notes", l(:description_notes), :class => "hidden-for-sighted" %>
     <%= text_area_tag :notes, @journal.notes, :class => 'wiki-edit',
                                               :rows => (@journal.notes.blank? ? 10 : [[10, @journal.notes.length / 50].max, 100].min) %>
     <%= call_hook(:view_journals_notes_form_after_notes, { :journal => @journal}) %>
diff --git a/config/locales/de.yml b/config/locales/de.yml
index caafd8dd..b30a064b 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -986,6 +986,7 @@ de:
   description_search: Suchfeld
   description_choose_project: Projektwahl
   description_project_scope: Suchbereich
+  description_notes: Notizen
   description_message_content: Nachrichteninhalt
   description_query_sort_criteria_attribute: Sortierattribut
   description_query_sort_criteria_direction: Sortierrichtung
diff --git a/config/locales/en.yml b/config/locales/en.yml
index a985fdb7..0398c912 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -968,6 +968,7 @@ en:
   description_search: Searchfield
   description_choose_project: Choose Project
   description_project_scope: Search scope
+  description_notes: Notes
   description_message_content: Message content
   description_query_sort_criteria_attribute: Sort attribute
   description_query_sort_criteria_direction: Sort direction

From c77f3a0fe7e8e8605b323ad45d177cacc8adfdbb Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Thu, 20 Oct 2011 18:00:02 +0200
Subject: [PATCH 17/27] [#667] link label to element

---
 app/views/trackers/_form.rhtml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app/views/trackers/_form.rhtml b/app/views/trackers/_form.rhtml
index 2cbed576..5c83bf03 100644
--- a/app/views/trackers/_form.rhtml
+++ b/app/views/trackers/_form.rhtml
@@ -20,7 +20,7 @@
 <% end %>
 
 <% if @tracker.new_record? && @trackers.any? %>
-<p><label><%= l(:label_copy_workflow_from) %></label>
+<p><label for="copy_workflow_from"><%= l(:label_copy_workflow_from) %></label>
 <%= select_tag(:copy_workflow_from, content_tag("option") + options_from_collection_for_select(@trackers, :id, :name)) %></p>
 <% end %>
 <!--[eoform:tracker]-->

From 4747cdce5b424d0799111d8866d4dbb881a7f378 Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Thu, 20 Oct 2011 18:01:17 +0200
Subject: [PATCH 18/27] [#667] linked labels to their element

---
 app/views/users/index.rhtml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/app/views/users/index.rhtml b/app/views/users/index.rhtml
index cf1f9696..910c5152 100644
--- a/app/views/users/index.rhtml
+++ b/app/views/users/index.rhtml
@@ -6,15 +6,15 @@
 
 <% form_tag({}, :method => :get) do %>
 <fieldset><legend><%= l(:label_filter_plural) %></legend>
-<label><%= l(:field_status) %>:</label>
+<label for='status'><%= l(:field_status) %>:</label>
 <%= select_tag 'status', users_status_options_for_select(@status), :class => "small", :onchange => "this.form.submit(); return false;"  %>
 
 <% if @groups.present? %>
-<label><%= l(:label_group) %>:</label>
+<label for='group_id'><%= l(:label_group) %>:</label>
 <%= select_tag 'group_id', '<option></option>' + options_from_collection_for_select(@groups, :id, :name, params[:group_id].to_i), :onchange => "this.form.submit(); return false;"  %>
 <% end %>
 
-<label><%= l(:label_user) %>:</label>
+<label for='name'><%= l(:label_user) %>:</label>
 <%= text_field_tag 'name', params[:name], :size => 30 %>
 <%= submit_tag l(:button_apply), :class => "small", :name => nil %>
 <%= link_to l(:button_clear), users_path, :class => 'icon icon-reload' %>

From 6f5fda2248d51695579483d1fec6d426b1f37e85 Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Thu, 20 Oct 2011 18:03:58 +0200
Subject: [PATCH 19/27] [#667] set ids, created invisible labels and linked
 them

---
 app/views/timelog/_date_range.rhtml | 14 ++++++++++----
 config/locales/de.yml               |  4 ++++
 config/locales/en.yml               |  4 ++++
 3 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/app/views/timelog/_date_range.rhtml b/app/views/timelog/_date_range.rhtml
index e916bc18..d537d0a1 100644
--- a/app/views/timelog/_date_range.rhtml
+++ b/app/views/timelog/_date_range.rhtml
@@ -2,17 +2,23 @@
 <legend onclick="toggleFieldset(this);"><%= l(:label_date_range) %></legend>
 <div>
 <p>
-<%= radio_button_tag 'period_type', '1', !@free_period, :onclick => 'Form.Element.disable("from");Form.Element.disable("to");Form.Element.enable("period");' %>
+<%= label_tag "period_type_list", l(:description_date_range_list), :class => "hidden-for-sighted" %>
+<%= radio_button_tag 'period_type', '1', !@free_period, :onclick => 'Form.Element.disable("from");Form.Element.disable("to");Form.Element.enable("period");', :id => "period_type_list"%>
 <%= select_tag 'period', options_for_period_select(params[:period]),
                          :onchange => 'this.form.submit();',
                          :onfocus => '$("period_type_1").checked = true;',
                          :disabled => @free_period %>
 </p>
 <p>
-<%= radio_button_tag 'period_type', '2', @free_period, :onclick => 'Form.Element.enable("from");Form.Element.enable("to");Form.Element.disable("period");' %>
+<%= label_tag "period_type_interval", l(:description_date_range_interval), :class => "hidden-for-sighted" %>
+<%= radio_button_tag 'period_type', '2', @free_period, :onclick => 'Form.Element.enable("from");Form.Element.enable("to");Form.Element.disable("period");', :id => "period_type_interval" %>
 <span onclick="$('period_type_2').checked = true;">
-<%= l(:label_date_from_to, :start => (text_field_tag('from', @from, :size => 10, :disabled => !@free_period) + calendar_for('from')),
-													 :end => (text_field_tag('to', @to, :size => 10, :disabled => !@free_period) + calendar_for('to'))) %>
+
+<%= l(:label_date_from_to, 
+        :start => ((label_tag "from", l(:description_date_from), :class => "hidden-for-sighted") + 
+          text_field_tag('from', @from, :size => 10, :disabled => !@free_period) + calendar_for('from')),
+        :end => ((label_tag "to", l(:description_date_to), :class => "hidden-for-sighted") +
+          text_field_tag('to', @to, :size => 10, :disabled => !@free_period) + calendar_for('to'))) %>
 </span>
 </p>
 </div>
diff --git a/config/locales/de.yml b/config/locales/de.yml
index b30a064b..5c779704 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -995,3 +995,7 @@ de:
   description_selected_columns: Ausgewählte Spalten
   description_ticket_reassign: Ticketzuordnung
   description_wiki_reassign: Wikiseitenzuordnung
+  description_date_range_list: Zeitraum aus einer Liste wählen
+  description_date_range_interval: Zeitraum durch Start- und Enddatum festlegen
+  description_date_from: Startdatum eintragen
+  description_date_to: Enddatum eintragen
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 0398c912..c30fb19b 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -977,3 +977,7 @@ en:
   description_selected_columns: Selected Spalten
   description_ticket_reassign: Assign issues to
   description_wiki_reassign: Assign page to
+  description_date_range_list: Choose range from list
+  description_date_range_interval: Choose range by selecting start and end date
+  description_date_from: Enter start date
+  description_date_to: Enter end date

From 2b472d876db4a03d8400e2029d3794e58b98029b Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Fri, 21 Oct 2011 09:19:37 +0200
Subject: [PATCH 20/27] [#667] linked label to its element

---
 app/views/activities/index.html.erb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app/views/activities/index.html.erb b/app/views/activities/index.html.erb
index af604a66..173b7509 100644
--- a/app/views/activities/index.html.erb
+++ b/app/views/activities/index.html.erb
@@ -44,7 +44,7 @@
 <h3><%= l(:label_activity) %></h3>
 <p><% @activity.event_types.each do |t| %>
 <%= check_box_tag "show_#{t}", 1, @activity.scope.include?(t) %>
-<%= link_to(l("label_#{t.singularize}_plural"), {"show_#{t}" => 1, :user_id => params[:user_id]})%>
+<label for="show_<%=t%>"><%= link_to(l("label_#{t.singularize}_plural"), {"show_#{t}" => 1, :user_id => params[:user_id]})%></label>
 <br />
 <% end %></p>
 <% if @project && @project.descendants.active.any? %>

From fdf660e1fd4de1f66487751b608e6b424d42f112 Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Fri, 21 Oct 2011 09:20:34 +0200
Subject: [PATCH 21/27] [#667] linked labels to their elements

---
 app/views/time_entry_reports/report.rhtml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/app/views/time_entry_reports/report.rhtml b/app/views/time_entry_reports/report.rhtml
index de2d1093..34207cac 100644
--- a/app/views/time_entry_reports/report.rhtml
+++ b/app/views/time_entry_reports/report.rhtml
@@ -12,17 +12,17 @@
   <% end %>
   <%= render :partial => 'timelog/date_range' %>
 
-  <p><%= l(:label_details) %>: <%= select_tag 'columns', options_for_select([[l(:label_year), 'year'],
+  <p><label for='columns'><%= l(:label_details) %></label>: <%= select_tag 'columns', options_for_select([[l(:label_year), 'year'],
                                                                             [l(:label_month), 'month'],
                                                                             [l(:label_week), 'week'],
                                                                             [l(:label_day_plural).titleize, 'day']], @columns),
                                                         :onchange => "this.form.onsubmit();" %>
 
-  <%= l(:button_add) %>: <%= select_tag('criterias[]', options_for_select([[]] + (@available_criterias.keys - @criterias).collect{|k| [l_or_humanize(@available_criterias[k][:label]), k]}),
+  <label for='criterias'><%= l(:button_add) %></label>: <%= select_tag('criterias[]', options_for_select([[]] + (@available_criterias.keys - @criterias).collect{|k| [l_or_humanize(@available_criterias[k][:label]), k]}),
                                                           :onchange => "this.form.submit();",
                                                           :style => 'width: 200px',
                                                           :id => nil,
-                                                          :disabled => (@criterias.length >= 3)) %>
+                                                          :disabled => (@criterias.length >= 3), :id => "criterias") %>
      <%= link_to l(:button_clear), {:project_id => @project, :issue_id => @issue, :period_type => params[:period_type], :period => params[:period], :from => @from, :to => @to, :columns => @columns}, :class => 'icon icon-reload' %></p>
 <% end %>
 

From 3bd6aa35787657cf4bd5d7b288570790b38778f7 Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Fri, 21 Oct 2011 09:30:02 +0200
Subject: [PATCH 22/27] [#667] made labels visible as this is an accessibility
 issue even for sighted users

---
 app/views/queries/_columns.rhtml | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/app/views/queries/_columns.rhtml b/app/views/queries/_columns.rhtml
index 6c2eda4e..f5a0ca4c 100644
--- a/app/views/queries/_columns.rhtml
+++ b/app/views/queries/_columns.rhtml
@@ -1,7 +1,8 @@
 <table style="border-collapse: collapse; border:0;">
 	<tr>
 		<td style="padding-left:0">
-                <%= label_tag "available_columns", l(:description_available_columns), :class => "hidden-for-sighted" %>
+                <%= label_tag "available_columns", l(:description_available_columns) %>
+                <br \>
                 <%= select_tag 'available_columns',
 		          options_for_select((query.available_columns - query.columns).collect {|column| [column.caption, column.name]}),
 		          :multiple => true, :size => 10, :style => "width:150px" %>
@@ -13,7 +14,8 @@
 			 onclick="moveOptions(this.form.selected_columns, this.form.available_columns);" />
 		</td>
 		<td>
-                <%= label_tag "selected_columns", l(:description_selected_columns), :class => "hidden-for-sighted" %>
+                <%= label_tag "selected_columns", l(:description_selected_columns) %>
+                <br \>
                 <%= select_tag 'c[]',
 		          options_for_select(query.columns.collect {|column| [column.caption, column.name]}),
 		          :id => 'selected_columns', :multiple => true, :size => 10, :style => "width:150px" %>

From f31999061d76beba6e1040533886bc9d3903fbb1 Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Fri, 28 Oct 2011 16:21:46 +0200
Subject: [PATCH 23/27] [667] corrected labels and translations for reassign
 forms

---
 app/views/issue_categories/destroy.rhtml | 2 +-
 app/views/wiki/destroy.rhtml             | 2 +-
 config/locales/de.yml                    | 4 ++--
 config/locales/en.yml                    | 4 ++--
 4 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/app/views/issue_categories/destroy.rhtml b/app/views/issue_categories/destroy.rhtml
index 436aed34..fb169c86 100644
--- a/app/views/issue_categories/destroy.rhtml
+++ b/app/views/issue_categories/destroy.rhtml
@@ -6,7 +6,7 @@
 <p><label><%= radio_button_tag 'todo', 'nullify', true %> <%= l(:text_issue_category_destroy_assignments) %></label><br />
 <% if @categories.size > 0 %>
 <label><%= radio_button_tag 'todo', 'reassign', false %> <%= l(:text_issue_category_reassign_to) %></label>:
-<%= label_tag "reassign_to_id", l(:description_ticket_reassign), :class => "hidden-for-sighted" %>
+<%= label_tag "reassign_to_id", l(:description_issue_category_reassign), :class => "hidden-for-sighted" %>
 <%= select_tag 'reassign_to_id', options_from_collection_for_select(@categories, 'id', 'name') %></p>
 <% end %>
 </div>
diff --git a/app/views/wiki/destroy.rhtml b/app/views/wiki/destroy.rhtml
index e869354c..b254346e 100644
--- a/app/views/wiki/destroy.rhtml
+++ b/app/views/wiki/destroy.rhtml
@@ -8,7 +8,7 @@
 <% if @reassignable_to.any? %>
 <br />
 <label><%= radio_button_tag 'todo', 'reassign', false %> <%= l(:text_wiki_page_reassign_children) %></label>:
-<%= label_tag "reassign_to_id", l(:description_wiki_reassign), :class => "hidden-for-sighted" %>
+<%= label_tag "reassign_to_id", l(:description_wiki_subpages_reassign), :class => "hidden-for-sighted" %>
 <%= select_tag 'reassign_to_id', wiki_page_options_for_select(@reassignable_to),
 																 :onclick => "$('todo_reassign').checked = true;" %>
 <% end %>
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 5c779704..0c842bd7 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -993,8 +993,8 @@ de:
   description_user_mail_notification: Mailbenachrichtigungseinstellung
   description_available_columns: Verfügbare Spalten
   description_selected_columns: Ausgewählte Spalten
-  description_ticket_reassign: Ticketzuordnung
-  description_wiki_reassign: Wikiseitenzuordnung
+  description_issue_category_reassign: Neue Kategorie wählen
+  description_wiki_subpages_reassign: Neue Elternseite wählen
   description_date_range_list: Zeitraum aus einer Liste wählen
   description_date_range_interval: Zeitraum durch Start- und Enddatum festlegen
   description_date_from: Startdatum eintragen
diff --git a/config/locales/en.yml b/config/locales/en.yml
index c30fb19b..9fdc47cc 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -975,8 +975,8 @@ en:
   description_user_mail_notification: Mailnotification settings
   description_available_columns: Available Columns
   description_selected_columns: Selected Spalten
-  description_ticket_reassign: Assign issues to
-  description_wiki_reassign: Assign page to
+  description_issue_category_reassign: Choose issue category
+  description_wiki_subpages_reassign: Choose new parent page
   description_date_range_list: Choose range from list
   description_date_range_interval: Choose range by selecting start and end date
   description_date_from: Enter start date

From 73484677a4b1a6457df00c3d4896b523992144eb Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Fri, 28 Oct 2011 16:24:17 +0200
Subject: [PATCH 24/27] [667] corrected labels for projects

---
 config/locales/de.yml | 2 +-
 config/locales/en.yml | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/config/locales/de.yml b/config/locales/de.yml
index 0c842bd7..4393f2ae 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -984,7 +984,7 @@ de:
   label_diff: diff
   description_filter: Filter
   description_search: Suchfeld
-  description_choose_project: Projektwahl
+  description_choose_project: Projekte
   description_project_scope: Suchbereich
   description_notes: Notizen
   description_message_content: Nachrichteninhalt
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 9fdc47cc..90e22584 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -966,7 +966,7 @@ en:
   enumeration_system_activity: System Activity
   description_filter: Filter
   description_search: Searchfield
-  description_choose_project: Choose Project
+  description_choose_project: Projects
   description_project_scope: Search scope
   description_notes: Notes
   description_message_content: Message content

From fed98990dd740cad7fb782c9d201e1651abab48c Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Fri, 28 Oct 2011 16:25:54 +0200
Subject: [PATCH 25/27] [667] corrected german translation for 'notes'

---
 config/locales/de.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/config/locales/de.yml b/config/locales/de.yml
index 4393f2ae..322455df 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -986,7 +986,7 @@ de:
   description_search: Suchfeld
   description_choose_project: Projekte
   description_project_scope: Suchbereich
-  description_notes: Notizen
+  description_notes: Kommentare
   description_message_content: Nachrichteninhalt
   description_query_sort_criteria_attribute: Sortierattribut
   description_query_sort_criteria_direction: Sortierrichtung

From e8a42c93378e096e2aa9cdbe7636c94f097b81bd Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Fri, 28 Oct 2011 16:27:00 +0200
Subject: [PATCH 26/27] [667] corrected spelling error for mail notification

---
 config/locales/en.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/config/locales/en.yml b/config/locales/en.yml
index 90e22584..22540248 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -972,7 +972,7 @@ en:
   description_message_content: Message content
   description_query_sort_criteria_attribute: Sort attribute
   description_query_sort_criteria_direction: Sort direction
-  description_user_mail_notification: Mailnotification settings
+  description_user_mail_notification: Mail notification settings
   description_available_columns: Available Columns
   description_selected_columns: Selected Spalten
   description_issue_category_reassign: Choose issue category

From 5036478017faa01839caa8caa8e17dd52b5e6f4e Mon Sep 17 00:00:00 2001
From: Romano Licker <r.licker@finn.de>
Date: Fri, 28 Oct 2011 16:35:03 +0200
Subject: [PATCH 27/27] [#667] improved code readability

---
 app/views/timelog/_date_range.rhtml | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/app/views/timelog/_date_range.rhtml b/app/views/timelog/_date_range.rhtml
index d537d0a1..55ee4a2d 100644
--- a/app/views/timelog/_date_range.rhtml
+++ b/app/views/timelog/_date_range.rhtml
@@ -14,11 +14,20 @@
 <%= radio_button_tag 'period_type', '2', @free_period, :onclick => 'Form.Element.enable("from");Form.Element.enable("to");Form.Element.disable("period");', :id => "period_type_interval" %>
 <span onclick="$('period_type_2').checked = true;">
 
-<%= l(:label_date_from_to, 
-        :start => ((label_tag "from", l(:description_date_from), :class => "hidden-for-sighted") + 
-          text_field_tag('from', @from, :size => 10, :disabled => !@free_period) + calendar_for('from')),
-        :end => ((label_tag "to", l(:description_date_to), :class => "hidden-for-sighted") +
-          text_field_tag('to', @to, :size => 10, :disabled => !@free_period) + calendar_for('to'))) %>
+<%=
+l(:label_date_from_to,
+  :start => (
+    label_tag("from", l(:description_date_from), :class => "hidden-for-sighted") +
+    text_field_tag('from', @from, :size => 10, :disabled => !@free_period) +
+    calendar_for('from')
+  ),
+  :end => (
+    label_tag("to", l(:description_date_to), :class => "hidden-for-sighted") +
+    text_field_tag('to', @to, :size => 10, :disabled => !@free_period) +
+    calendar_for('to')
+  )
+)
+%>
 </span>
 </p>
 </div>