]> source.dussan.org Git - redmine.git/commitdiff
tables and forms redesign,
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 2 Sep 2006 13:33:23 +0000 (13:33 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 2 Sep 2006 13:33:23 +0000 (13:33 +0000)
added form builder for several views

git-svn-id: http://redmine.rubyforge.org/svn/trunk@21 e93f8b46-1217-0410-a6f0-8f06a7374b81

66 files changed:
redmine/app/helpers/application_helper.rb
redmine/app/helpers/custom_fields_helper.rb
redmine/app/views/account/login.rhtml
redmine/app/views/account/lost_password.rhtml
redmine/app/views/account/my_account.rhtml
redmine/app/views/account/password_recovery.rhtml
redmine/app/views/account/register.rhtml
redmine/app/views/admin/projects.rhtml
redmine/app/views/auth_sources/_form.rhtml
redmine/app/views/auth_sources/edit.rhtml
redmine/app/views/auth_sources/list.rhtml
redmine/app/views/auth_sources/new.rhtml
redmine/app/views/custom_fields/_form.rhtml
redmine/app/views/custom_fields/edit.rhtml
redmine/app/views/custom_fields/list.rhtml
redmine/app/views/custom_fields/new.rhtml
redmine/app/views/documents/_form.rhtml
redmine/app/views/documents/edit.rhtml
redmine/app/views/enumerations/_form.rhtml
redmine/app/views/enumerations/edit.rhtml
redmine/app/views/enumerations/new.rhtml
redmine/app/views/issue_categories/_form.rhtml
redmine/app/views/issue_categories/edit.rhtml
redmine/app/views/issue_statuses/_form.rhtml
redmine/app/views/issue_statuses/edit.rhtml
redmine/app/views/issue_statuses/list.rhtml
redmine/app/views/issue_statuses/new.rhtml
redmine/app/views/issues/_list_simple.rhtml
redmine/app/views/issues/change_status.rhtml
redmine/app/views/issues/edit.rhtml
redmine/app/views/news/_form.rhtml
redmine/app/views/news/edit.rhtml
redmine/app/views/news/show.rhtml
redmine/app/views/projects/_form.rhtml
redmine/app/views/projects/add.rhtml
redmine/app/views/projects/add_document.rhtml
redmine/app/views/projects/add_issue.rhtml
redmine/app/views/projects/add_news.rhtml
redmine/app/views/projects/add_version.rhtml
redmine/app/views/projects/list.rhtml
redmine/app/views/projects/list_files.rhtml
redmine/app/views/projects/list_issues.rhtml
redmine/app/views/projects/list_news.rhtml
redmine/app/views/projects/settings.rhtml
redmine/app/views/reports/issue_report.rhtml
redmine/app/views/roles/_form.rhtml
redmine/app/views/roles/edit.rhtml
redmine/app/views/roles/list.rhtml
redmine/app/views/roles/new.rhtml
redmine/app/views/trackers/_form.rhtml
redmine/app/views/trackers/edit.rhtml
redmine/app/views/trackers/list.rhtml
redmine/app/views/trackers/new.rhtml
redmine/app/views/users/_form.rhtml
redmine/app/views/users/add.rhtml
redmine/app/views/users/edit.rhtml
redmine/app/views/users/list.rhtml
redmine/app/views/versions/_form.rhtml
redmine/app/views/versions/edit.rhtml
redmine/config/environment.rb
redmine/doc/CHANGELOG
redmine/lang/de.yml [new file with mode: 0644]
redmine/lang/en.yml
redmine/lang/es.yml
redmine/lang/fr.yml
redmine/public/stylesheets/application.css

index d45cf9b97fc7b6984044e614e8fa5e95bc542872..7a82bcd3acc35aac5f7388b22d727bbf2437fd73 100644 (file)
@@ -104,4 +104,47 @@ module ApplicationHelper
   def lang_options_for_select\r
     (GLoc.valid_languages.sort {|x,y| x.to_s <=> y.to_s }).collect {|lang| [ l_lang_name(lang.to_s, lang), lang.to_s]}\r
   end\r
+  \r
+  def label_tag_for(name, option_tags = nil, options = {})\r
+    label_text = l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym) + (options.delete(:required) ? @template.content_tag("span", " *", :class => "required"): "")\r
+    content_tag("label", label_text)\r
+  end\r
+  \r
+  def labelled_tabular_form_for(name, object, options, &proc)\r
+    options[:html] ||= {}\r
+    options[:html].store :class, "tabular"\r
+    form_for(name, object, options.merge({ :builder => TabularFormBuilder, :lang => current_language}), &proc)\r
+  end\r
 end
+\r
+class TabularFormBuilder < ActionView::Helpers::FormBuilder\r
+  include GLoc\r
+  \r
+  def initialize(object_name, object, template, options, proc)\r
+    set_language_if_valid options.delete(:lang)\r
+    @object_name, @object, @template, @options, @proc = object_name, object, template, options, proc        \r
+  end      \r
+      \r
+  (field_helpers - %w(radio_button) + %w(date_select)).each do |selector|\r
+    src = <<-END_SRC\r
+    def #{selector}(field, options = {}) \r
+      label_text = l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym) + (options.delete(:required) ? @template.content_tag("span", " *", :class => "required"): "")\r
+      label = @template.content_tag("label", label_text, \r
+                    :class => (@object.errors[field] ? "error" : nil), \r
+                    :for => (@object_name.to_s + "_" + field.to_s))\r
+      label + super\r
+    end\r
+    END_SRC\r
+    class_eval src, __FILE__, __LINE__\r
+  end\r
+  \r
+  def select(field, choices, options = {}) \r
+    label_text = l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym) + (options.delete(:required) ? @template.content_tag("span", " *", :class => "required"): "")\r
+    label = @template.content_tag("label", label_text, \r
+                  :class => (@object.errors[field] ? "error" : nil), \r
+                  :for => (@object_name.to_s + "_" + field.to_s))\r
+    label + super\r
+  end\r
+\r
+end\r
+\r
index bc5a15e9a714e8f5529e3b02bb2f2572e3366ee5..eb4d47a83a90f25372f0f439a9c3cf42a64cc6d3 100644 (file)
@@ -39,18 +39,13 @@ module CustomFieldsHelper
   def custom_field_label_tag(custom_value)\r
     content_tag "label", custom_value.custom_field.name +\r
        (custom_value.custom_field.is_required? ? " <span class=\"required\">*</span>" : ""),\r
-       :for => "custom_fields_#{custom_value.custom_field.id}"\r
+       :for => "custom_fields_#{custom_value.custom_field.id}",\r
+       :class => (custom_value.errors.empty? ? nil : "error" )\r
   end\r
   \r
   # Return custom field tag with its label tag\r
   def custom_field_tag_with_label(custom_value)\r
-    case custom_value.custom_field.field_format\r
-    when "bool"\r
-      # label is displayed inline after the checkbox\r
-      custom_field_tag(custom_value) + " " + custom_field_label_tag(custom_value)\r
-    else\r
-      custom_field_label_tag(custom_value) + "<br />" + custom_field_tag(custom_value)\r
-    end          \r
+    custom_field_label_tag(custom_value) + custom_field_tag(custom_value)\r
   end\r
 \r
   # Return a string used to display a custom value\r
index 2c806b421a967b04fd54b3594439464941170863..74c075516883ed9ac9877a54c9478974fb160a64 100644 (file)
@@ -2,24 +2,17 @@
 <div class="box login">\r
 <h2><%= image_tag 'login' %>&nbsp;&nbsp;<%=l(:label_please_login)%></h2>
 \r
-<%= start_form_tag :action=> "login" %>\r
-<table cellpadding="4">\r
-  <tr>\r
-   <td><label for="login"><%=l(:field_login)%>:</label></td>\r
-   <td><%= text_field_tag 'login', nil, :size => 25 %></td>\r
-  </tr>\r
-  <tr>\r
-   <td><label for="password"><%=l(:field_password)%>:</label></td>\r
-   <td><%= password_field_tag 'password', nil, :size => 25 %></td>\r
-  </tr>\r
-</table>\r
+<%= start_form_tag({:action=> "login"}, :class => "tabular") %>\r
+<p><label for="login"><%=l(:field_login)%>:</label>\r
+<%= text_field_tag 'login', nil, :size => 25 %></p>\r
 \r
-&nbsp;\r
-
-<p><center><input type="submit" name="login" value="<%=l(:button_login)%> &#187;" class="primary" /></center></p>
+<p><label for="password"><%=l(:field_password)%>:</label>\r
+<%= password_field_tag 'password', nil, :size => 25 %></p>\r
+\r
+<p><center><input type="submit" name="login" value="<%=l(:button_login)%> &#187;" class="primary" /></center>
 <%= end_form_tag %>\r
-<br />\r
-<% unless $RDM_SELF_REGISTRATION == false %><%= link_to l(:label_register), :action => 'register' %> |<% end %>\r
-<%= link_to l(:label_password_lost), :action => 'lost_password' %>
+\r
+<br><% unless $RDM_SELF_REGISTRATION == false %><%= link_to l(:label_register), :action => 'register' %> |<% end %>\r
+<%= link_to l(:label_password_lost), :action => 'lost_password' %></p>
 </div>\r
 </center>
\ No newline at end of file
index cd392f2432c6690508d69eaf939079396d69c9b3..3f32e715304e9c2eeb186a357e2344715378d0f2 100644 (file)
@@ -2,9 +2,9 @@
 <div class="box login">\r
 <h2><%=l(:label_password_lost)%></h2>\r
 \r
-<%= start_form_tag %>\r
+<%= start_form_tag({:action=> "lost_password"}, :class => "tabular") %>\r
 \r
-<p><label for="mail"><%=l(:field_mail)%> <span class="required">*</span></label><br/>\r
+<p><label for="mail"><%=l(:field_mail)%> <span class="required">*</span></label>\r
 <%= text_field_tag 'mail', nil, :size => 40 %></p>\r
 \r
 <p><center><%= submit_tag l(:button_submit) %></center></p>\r
index e401ef3ebde73d6154b4ae56a7e8c59a12e116d4..9f561e8b17c8fb0d0eb871d2b08eebb98477b2f1 100644 (file)
@@ -6,52 +6,49 @@
 
 <%= error_messages_for 'user' %>
 \r
-<div class="splitcontentleft">\r
   <div class="box">\r
   <h3><%=l(:label_information_plural)%></h3>\r
 
-  <%= start_form_tag :action => 'my_account' %>
+  <%= start_form_tag({:action => 'my_account'}, :class => "tabular") %>
 \r
   <!--[form:user]-->
-  <p><label for="user_firstname"><%=l(:field_firstname)%> <span class="required">*</span></label><br/>
+  <p><label for="user_firstname"><%=l(:field_firstname)%> <span class="required">*</span></label>
   <%= text_field 'user', 'firstname'  %></p>
 \r
-  <p><label for="user_lastname"><%=l(:field_lastname)%> <span class="required">*</span></label><br/>
+  <p><label for="user_lastname"><%=l(:field_lastname)%> <span class="required">*</span></label>
   <%= text_field 'user', 'lastname'  %></p>
 
-  <p><label for="user_mail"><%=l(:field_mail)%> <span class="required">*</span></label><br/>
+  <p><label for="user_mail"><%=l(:field_mail)%> <span class="required">*</span></label>
   <%= text_field 'user', 'mail', :size => 40 %></p>\r
   \r
-  <p><label for="user_language"><%=l(:field_language)%></label><br/>
+  <p><label for="user_language"><%=l(:field_language)%></label>
   <%= select("user", "language", lang_options_for_select) %></p>
   <!--[eoform:user]-->\r
 \r
-  <p><%= check_box 'user', 'mail_notification' %> <label for="user_mail_notification"><%=l(:field_mail_notification)%></label></p>\r
+  <p><label for="user_mail_notification"><%=l(:field_mail_notification)%></label>
+  <%= check_box 'user', 'mail_notification' %></p>\r
 
   <center><%= submit_tag l(:button_save) %></center>
   <%= end_form_tag %>\r
   </div>\r
-</div>\r
 \r
-\r
-<div class="splitcontentright">
+
 <% unless @user.auth_source_id %>\r
   <div class="box">\r
   <h3><%=l(:field_password)%></h3>\r
 
-  <%= start_form_tag :action => 'change_password' %>
+  <%= start_form_tag({:action => 'change_password'}, :class => "tabular") %>
 \r
-  <p><label for="password"><%=l(:field_password)%> <span class="required">*</span></label><br/>
+  <p><label for="password"><%=l(:field_password)%> <span class="required">*</span></label>
   <%= password_field_tag 'password', nil, :size => 25 %></p>
 \r
-  <p><label for="new_password"><%=l(:field_new_password)%> <span class="required">*</span></label><br/>
+  <p><label for="new_password"><%=l(:field_new_password)%> <span class="required">*</span></label>
   <%= password_field_tag 'new_password', nil, :size => 25 %></p>\r
 \r
-  <p><label for="new_password_confirmation"><%=l(:field_password_confirmation)%> <span class="required">*</span></label><br/>
+  <p><label for="new_password_confirmation"><%=l(:field_password_confirmation)%> <span class="required">*</span></label>
   <%= password_field_tag 'new_password_confirmation', nil, :size => 25 %></p>\r
 
   <center><%= submit_tag l(:button_save) %></center>
   <%= end_form_tag %>\r
   </div>
 <% end %>\r
-</div>
\ No newline at end of file
index b4f73d28c295b3e9506b133a405deca039fe1e0a..39a8071a9bcb92c1ff6ff0d770f8b9af2c8a27bb 100644 (file)
@@ -6,12 +6,12 @@
 
 <%= error_messages_for 'user' %>
 \r
-  <%= start_form_tag :token => @token.value %>
+  <%= start_form_tag({:token => @token.value}, :class => "tabular") %>
 \r
-  <p><label for="new_password"><%=l(:field_new_password)%> <span class="required">*</span></label><br/>
+  <p><label for="new_password"><%=l(:field_new_password)%> <span class="required">*</span></label>
   <%= password_field_tag 'new_password', nil, :size => 25 %></p>\r
 \r
-  <p><label for="new_password_confirmation"><%=l(:field_password_confirmation)%> <span class="required">*</span></label><br/>
+  <p><label for="new_password_confirmation"><%=l(:field_password_confirmation)%> <span class="required">*</span></label>
   <%= password_field_tag 'new_password_confirmation', nil, :size => 25 %></p>\r
 
   <p><center><%= submit_tag l(:button_save) %></center></p>
index 74a5c74c05282de6c2df19e37e06d40286668f0d..b34aff79c1228d752ab156fa0bb07bcadfef141e 100644 (file)
@@ -1,36 +1,37 @@
 <h2><%=l(:label_register)%></h2>
 
-<%= start_form_tag %>
+<%= start_form_tag({:action => 'register'}, :class => "tabular") %>
 <%= error_messages_for 'user' %>
 
 <div class="box">
 <!--[form:user]-->
-<p><label for="user_login"><%=l(:field_login)%></label> <span class="required">*</span><br/>
+<p><label for="user_login"><%=l(:field_login)%> <span class="required">*</span></label>
 <%= text_field 'user', 'login', :size => 25  %></p>
 \r
-<p><label for="password"><%=l(:field_password)%></label> <span class="required">*</span><br/>
+<p><label for="password"><%=l(:field_password)%> <span class="required">*</span></label>
 <%= password_field_tag 'password', nil, :size => 25  %></p>
 
-<p><label for="password_confirmation"><%=l(:field_password_confirmation)%></label> <span class="required">*</span><br/>
+<p><label for="password_confirmation"><%=l(:field_password_confirmation)%> <span class="required">*</span></label>
 <%= password_field_tag 'password_confirmation', nil, :size => 25  %></p>
 
-<p><label for="user_firstname"><%=l(:field_firstname)%></label> <span class="required">*</span><br/>
+<p><label for="user_firstname"><%=l(:field_firstname)%> <span class="required">*</span></label>
 <%= text_field 'user', 'firstname'  %></p>
 \r
-<p><label for="user_lastname"><%=l(:field_lastname)%></label> <span class="required">*</span><br/>
+<p><label for="user_lastname"><%=l(:field_lastname)%> <span class="required">*</span></label>
 <%= text_field 'user', 'lastname'  %></p>
 
-<p><label for="user_mail"><%=l(:field_mail)%></label> <span class="required">*</span><br/>
+<p><label for="user_mail"><%=l(:field_mail)%> <span class="required">*</span></label>
 <%= text_field 'user', 'mail'  %></p>\r
 \r
-<p><label for="user_language"><%=l(:field_language)%></label><br/>
+<p><label for="user_language"><%=l(:field_language)%></label>
 <%= select("user", "language", lang_options_for_select) %></p>\r
 \r
 <% for @custom_value in @custom_values %>
        <p><%= custom_field_tag_with_label @custom_value %></p>
 <% end %>\r
 \r
-<p><%= check_box 'user', 'mail_notification' %> <label for="user_mail_notification"><%=l(:field_mail_notification)%></label></p>\r
+<p><label for="user_mail_notification"><%=l(:field_mail_notification)%></label>
+<%= check_box 'user', 'mail_notification' %></p>\r
 <!--[eoform:user]-->
 </div>
 
index 68552fb90dd3b6b9fde76414e5b1a76cd92f1636..39e4d9bf702fc3713748ca963f32d8d0a8a2142a 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_project_plural)%></h2>
 
-<table width="100%" cellspacing="1" cellpadding="2" class="listTableContent">
+<table class="listTableContent">
   <tr class="ListHead">
        <%= sort_header_tag('name', :caption => l(:label_project)) %>\r
        <th><%=l(:field_description)%></th>\r
        <td align="center"><%= image_tag 'true' if project.is_public? %>
        <td align="center"><%= project.projects_count %>\r
        <td align="center"><%= format_date(project.created_on) %>\r
-  <td align="center">\r
-    <%= start_form_tag({:controller => 'projects', :action => 'destroy', :id => project}) %>\r
-    <%= submit_tag l(:button_delete), :class => "button-small"  %>\r
-    <%= end_form_tag %>\r
+  <td align="center">
+    <%= button_to l(:button_delete), { :controller => 'projects', :action => 'destroy', :id => project }, :class => "button-small" %>\r
   </td>\r
   </tr>
 <% end %>
index 4bb3c33355615ff1a471cbb41a9d2d05852072c1..b6365dce523578331ff98029bb756c5205b7fde7 100644 (file)
@@ -2,48 +2,44 @@
 
 <div class="box">
 <!--[form:auth_source]-->
-<p><label for="auth_source_name"><%=l(:field_name)%></label> <span class="required">*</span><br/>
+<p><label for="auth_source_name"><%=l(:field_name)%> <span class="required">*</span></label>
 <%= text_field 'auth_source', 'name'  %></p>
 
-<p><label for="auth_source_host"><%=l(:field_host)%></label> <span class="required">*</span><br/>
+<p><label for="auth_source_host"><%=l(:field_host)%> <span class="required">*</span></label>
 <%= text_field 'auth_source', 'host'  %></p>
 
-<p><label for="auth_source_port"><%=l(:field_port)%></label> <span class="required">*</span><br/>
+<p><label for="auth_source_port"><%=l(:field_port)%> <span class="required">*</span></label>
 <%= text_field 'auth_source', 'port', :size => 6 %></p>
 
-<p><label for="auth_source_account"><%=l(:field_account)%></label><br/>
+<p><label for="auth_source_account"><%=l(:field_account)%></label>
 <%= text_field 'auth_source', 'account'  %></p>
 
-<p><label for="auth_source_account_password"><%=l(:field_password)%></label><br/>
+<p><label for="auth_source_account_password"><%=l(:field_password)%></label>
 <%= password_field 'auth_source', 'account_password'  %></p>
 
-<p><label for="auth_source_base_dn"><%=l(:field_base_dn)%></label> <span class="required">*</span><br/>
+<p><label for="auth_source_base_dn"><%=l(:field_base_dn)%> <span class="required">*</span></label>
 <%= text_field 'auth_source', 'base_dn', :size => 60 %></p>
+</div>
 
-<p><%= check_box 'auth_source', 'onthefly_register' %>
-<label for="auth_source_onthefly_register"><%=l(:field_onthefly)%></label></p>
+<div class="box">
+<p><label for="auth_source_onthefly_register"><%=l(:field_onthefly)%></label>
+<%= check_box 'auth_source', 'onthefly_register' %></p>
 
+<p>
 <fieldset><legend><%=l(:label_attribute_plural)%></legend>
-<div style="float:left;margin-right:10px;">
-<p><label for="auth_source_attr_login"><%=l(:field_login)%></label> <span class="required">*</span><br/>
+<p><label for="auth_source_attr_login"><%=l(:field_login)%> <span class="required">*</span></label>
 <%= text_field 'auth_source', 'attr_login', :size => 20  %></p>
-</div>
 
-<div style="float:left;margin-right:10px;">
-<p><label for="auth_source_attr_firstname"><%=l(:field_firstname)%></label><br/>
+<p><label for="auth_source_attr_firstname"><%=l(:field_firstname)%></label>
 <%= text_field 'auth_source', 'attr_firstname', :size => 20  %></p>
-</div>
 
-<div style="float:left;margin-right:10px;">
-<p><label for="auth_source_attr_lastname"><%=l(:field_lastname)%></label><br/>
+<p><label for="auth_source_attr_lastname"><%=l(:field_lastname)%></label>
 <%= text_field 'auth_source', 'attr_lastname', :size => 20  %></p>
-</div>
 
-<div>
-<p><label for="auth_source_attr_mail"><%=l(:field_mail)%></label><br/>
+<p><label for="auth_source_attr_mail"><%=l(:field_mail)%></label>
 <%= text_field 'auth_source', 'attr_mail', :size => 20  %></p>
-</div>
 </fieldset>
-
-<!--[eoform:auth_source]-->
+</p>
 </div>
+<!--[eoform:auth_source]-->
+
index 7e4ee01cefb076ae7f87b9cb1abee2bbdabde120..149463e7fa0bfb460de1c7d323d5bb23c6588579 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_auth_source)%> (<%= @auth_source.auth_method_name %>)</h2>
 
-<%= start_form_tag :action => 'update', :id => @auth_source %>
+<%= start_form_tag({:action => 'update', :id => @auth_source}, :class => "tabular") %>
   <%= render :partial => 'form' %>
   <%= submit_tag l(:button_save) %>
 <%= end_form_tag %>
index cbaa9c3ebe7a7cc1eecd4b2ca08f12dc1c016cbc..1c27ddaf717d7cd081341213f51d4ee79c1e8c0a 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_auth_source_plural)%></h2>
 
-<table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
+<table class="listTableContent">
   <tr class="ListHead">
   <td><%=l(:field_name)%></td>
   <td><%=l(:field_type)%></td>
@@ -18,9 +18,7 @@
         <%= link_to l(:button_test), :action => 'test_connection', :id => source %>
     </td>
     <td align="center">
-        <%= start_form_tag :action => 'destroy', :id => source %>
-        <%= submit_tag l(:button_delete), :class => "button-small" %>
-        <%= end_form_tag %>
+        <%= button_to l(:button_delete), { :action => 'destroy', :id => source }, :confirm => l(:text_are_you_sure), :class => "button-small" %>
     </td>
     </tr>
 <% end %>
index 7cb81dab014914ea35847dba34ab16830e46acf2..29d66327bcfc4e7e833690b7877f16e47341d35d 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_auth_source_new)%> (<%= @auth_source.auth_method_name %>)</h2>
 
-<%= start_form_tag :action => 'create' %>
+<%= start_form_tag({:action => 'create'}, :class => "tabular") %>
   <%= render :partial => 'form' %>
   <%= submit_tag l(:button_create) %>
 <%= end_form_tag %>
index 00e36dd36ccd4d08ee95af0f61a47fc39ee8fc51..f7f968e33b651bc2b45f612527ffde38922dbebc 100644 (file)
@@ -2,21 +2,21 @@
 
 <!--[form:custom_field]-->
 <div class="box">
-<p><label for="custom_field_name"><%=l(:field_name)%></label> <span class="required">*</span><br/>
+<p><label for="custom_field_name"><%=l(:field_name)%><span class="required"> *</span></label>
 <%= text_field 'custom_field', 'name' %></p>
 \r
-<p><label for="custom_field_typ"><%=l(:field_field_format)%></label><br/>
+<p><label for="custom_field_field_format"><%=l(:field_field_format)%></label>
 <%= select("custom_field", "field_format", custom_field_formats_for_select) %></p>\r
 \r
-<p><label for="custom_field_min_length"><%=l(:label_min_max_length)%></label> (<%=l(:text_min_max_length_info)%>)<br/>
+<p><label for="custom_field_min_length"><%=l(:label_min_max_length)%></label>
 <%= text_field 'custom_field', 'min_length', :size => 5 %> -
-<%= text_field 'custom_field', 'max_length', :size => 5 %></p>\r
+<%= text_field 'custom_field', 'max_length', :size => 5 %><br>(<%=l(:text_min_max_length_info)%>)</p>\r
 \r
-<p><label for="custom_field_regexp"><%=l(:field_regexp)%></label> (<%=l(:text_regexp_info)%>)<br/>
-<%= text_field 'custom_field', 'regexp', :size => 50 %></p>\r
+<p><label for="custom_field_regexp"><%=l(:field_regexp)%></label>
+<%= text_field 'custom_field', 'regexp', :size => 50 %><br>(<%=l(:text_regexp_info)%>)</p>\r
 \r
-<p><label for="custom_field_possible_values"><%=l(:field_possible_values)%></label> (<%=l(:text_possible_values_info)%>)<br/>
-<%= text_area 'custom_field', 'possible_values', :rows => 5, :cols => 60  %></p>
+<p><label for="custom_field_possible_values"><%=l(:field_possible_values)%></label>
+<%= text_area 'custom_field', 'possible_values', :rows => 5, :cols => 60  %><br>(<%=l(:text_possible_values_info)%>)</p>
 </div>\r
 <!--[eoform:custom_field]-->
 
 <% end %></fieldset>\r
 &nbsp;
 
-<p><%= check_box 'custom_field', 'is_required' %>
-<label for="custom_field_is_required"><%=l(:field_is_required)%></label></p>
+<p><label for="custom_field_is_required"><%=l(:field_is_required)%></label>
+<%= check_box 'custom_field', 'is_required' %></p>
 
-<p><%= check_box 'custom_field', 'is_for_all' %>
-<label for="custom_field_is_for_all"><%=l(:field_is_for_all)%></label></p>
+<p><label for="custom_field_is_for_all"><%=l(:field_is_for_all)%></label>
+<%= check_box 'custom_field', 'is_for_all' %></p>
 
 <%   when "UserCustomField" %>
-<p><%= check_box 'custom_field', 'is_required' %>
-<label for="custom_field_is_required"><%=l(:field_is_required)%></label></p>
+<p><label for="custom_field_is_required"><%=l(:field_is_required)%></label>
+<%= check_box 'custom_field', 'is_required' %></p>
 
 <%   when "ProjectCustomField" %>
-<p><%= check_box 'custom_field', 'is_required' %>
-<label for="custom_field_is_required"><%=l(:field_is_required)%></label></p>
-
+<p><label for="custom_field_is_required"><%=l(:field_is_required)%></label>
+<%= check_box 'custom_field', 'is_required' %></p>
 
 <% end %>
 </div>
index c9473fd04bba4b6e26b32404a122630e0d82629b..201047a8d2e52c7419d75f2523d17f9a2e94f8b2 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_custom_field)%> (<%=l(@custom_field.type_name)%>)</h2>
 
-<%= start_form_tag :action => 'edit', :id => @custom_field %>
+<%= start_form_tag({:action => 'edit', :id => @custom_field}, :class => "tabular") %>
   <%= render :partial => 'form', :locals => { :type => @custom_field.type } %>
   <%= submit_tag l(:button_save) %>
 <%= end_form_tag %>
index 7f45f7a89d0d811fc863ab29dc079e7b6ac6f56b..858590c49146342d2817370b6e0d995cf6e7c137 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_custom_field_plural)%></h2>
 \r
-<table border="0" cellspacing="1" cellpadding="2" class="listTableContent">            \r
+<table class="listTableContent">               \r
 <tr class="ListHead">  
        <th><%=l(:field_name)%></th>
        <th><%=l(:field_type)%></th>\r
@@ -19,9 +19,8 @@
        <td align="center"><%= image_tag 'true' if custom_field.is_for_all? %></td>\r
        <td align="center"><%= custom_field.projects.count.to_s + ' ' + lwr(:label_project, custom_field.projects.count) if custom_field.is_a? IssueCustomField and !custom_field.is_for_all? %></td>
        <td align="center">
-    <%= start_form_tag :action => 'destroy', :id => custom_field %>\r
-    <%= submit_tag l(:button_delete), :class => "button-small"  %>\r
-    <%= end_form_tag %>        </td>
+          <%= button_to l(:button_delete), { :action => 'destroy', :id => custom_field }, :confirm => l(:text_are_you_sure), :class => "button-small" %>
+    </td>
   </tr>
 <% end %>
 </table>\r
index 1605ada2b21607812efa5e6909435bee4ba16d49..3b215dc9fc2361788a6b1d4f449ad53e86efccbb 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_custom_field_new)%> (<%=l(@custom_field.type_name)%>)</h2>
 
-<%= start_form_tag :action => 'new' %>
+<%= start_form_tag({:action => 'new'}, :class => "tabular") %>
   <%= render :partial => 'form', :locals => { :type => @custom_field.type } %>
   <%= hidden_field_tag 'type', @custom_field.type %>
   <%= submit_tag l(:button_save) %>
index ae56cdd469fe424b7078ba860a4b62b2b414b466..724bcbaa22a86cb5a75c2358de285f9061dd32e4 100644 (file)
@@ -1,15 +1,15 @@
 <%= error_messages_for 'document' %>
-
+<div class="box">
 <!--[form:document]-->
-<p><label for="document_category_id"><%=l(:field_category)%></label><br />\r
+<p><label for="document_category_id"><%=l(:field_category)%></label>\r
 <select name="document[category_id]">\r
 <%= options_from_collection_for_select @categories, "id", "name", @document.category_id %>
 </select></p>\r
 \r
-<p><label for="document_title"><%=l(:field_title)%> <span class="required">*</span></label><br />
+<p><label for="document_title"><%=l(:field_title)%> <span class="required">*</span></label>
 <%= text_field 'document', 'title', :size => 60 %></p>
 
-<p><label for="document_description"><%=l(:field_description)%></label><br />
+<p><label for="document_description"><%=l(:field_description)%></label>
 <%= text_area 'document', 'description', :cols => 60, :rows => 5 %></p>
 <!--[eoform:document]-->
-
+</div>
\ No newline at end of file
index 059c99d9bd7721073105fb50d1096d8949521e1d..3db4bcc6a576e947574af9896fee651cb2dd8e40 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_document)%></h2>
 
-<%= start_form_tag :action => 'edit', :id => @document %>
+<%= start_form_tag({:action => 'edit', :id => @document}, :class => "tabular") %>
   <%= render :partial => 'form' %>
   <%= submit_tag l(:button_save) %>
 <%= end_form_tag %>
index 280eebfbd3a570ab2b09de86ef4a9314772276d6..637605939ccfd2e0090e11bbe543c5c81c7b63b9 100644 (file)
@@ -1,9 +1,9 @@
 <%= error_messages_for 'enumeration' %>
-
+<div class="box">
 <!--[form:optvalue]-->
 <%= hidden_field 'enumeration', 'opt'  %>
 
-<p><label for="enumeration_name"><%=l(:field_name)%></label><br/>
+<p><label for="enumeration_name"><%=l(:field_name)%></label>
 <%= text_field 'enumeration', 'name'  %></p>
 <!--[eoform:optvalue]-->
-
+</div>
\ No newline at end of file
index 5c26414eb77ec2cf8e0e7ed0741927e734a8b7cb..3002b59366468dc6e4f826faca38171b3b9b5d65 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_enumerations)%></h2>
 
-<%= start_form_tag :action => 'update', :id => @enumeration %>
+<%= start_form_tag({:action => 'update', :id => @enumeration}, :class => "tabular") %>
   <%= render :partial => 'form' %>
   <%= submit_tag l(:button_save) %>
 <%= end_form_tag %>
index 87ede016c1b48ea69538d5551e367a1e79d07394..aa0e68173e8bd5b616358904722642bc495ae7d9 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_enumeration_new)%></h2>
 
-<%= start_form_tag :action => 'create' %>
+<%= start_form_tag({:action => 'create'}, :class => "tabular") %>
   <%= render :partial => 'form' %>
   <%= submit_tag l(:button_create) %>
 <%= end_form_tag %>
index fdf0cfda8adc6f909d32e442b53e6946a549bbbd..765b8f53d28b573badd0439c785add30a2602629 100644 (file)
@@ -1,7 +1,7 @@
 <%= error_messages_for 'issue_category' %>
 
 <!--[form:issue_category]-->
-<p><label for="issue_category_name"><%l(:field_name)%></label><br/>
+<p><label for="issue_category_name"><%l(:field_name)%></label>
 <%= text_field 'issue_category', 'name'  %></p>
 <!--[eoform:issue_category]-->
 
index 087dd7c1b46faf4ea213323a840a9be908fb5bc7..053facbf7f5e805b43909e8f21225df1c67ca6aa 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_issue_category)%></h2>
 
-<%= start_form_tag :action => 'edit', :id => @category %>
+<%= start_form_tag({:action => 'edit', :id => @category}, :class => "tabular") %>
   <%= render :partial => 'form' %>
   <%= submit_tag l(:button_save) %>
 <%= end_form_tag %>
index 237466a3e246d746e3875d8fd0eb82dcb5128683..f3b1cf2cabd33baa2333e7b1829946db0d07b7ee 100644 (file)
@@ -1,17 +1,18 @@
 <%= error_messages_for 'issue_status' %>
 
+<div class="box">
 <!--[form:issue_status]-->
-<p><label for="issue_status_name"><%=l(:field_name)%></label> <span class="required">*</span><br/>
+<p><label for="issue_status_name"><%=l(:field_name)%><span class="required"> *</span></label>
 <%= text_field 'issue_status', 'name'  %></p>
 
-<p><%= check_box 'issue_status', 'is_closed' %>\r
-<label for="issue_status_is_closed"><%=l(:field_is_closed)%></label></p>\r
+<p><label for="issue_status_is_closed"><%=l(:field_is_closed)%></label>
+<%= check_box 'issue_status', 'is_closed' %></p>\r
 \r
-<p><%= check_box 'issue_status', 'is_default' %>\r
-<label for="issue_status_is_default"><%=l(:field_is_default)%></label></p>\r
+<p><label for="issue_status_is_default"><%=l(:field_is_default)%></label>
+<%= check_box 'issue_status', 'is_default' %></p>\r
 \r
-<p><label for="issue_status_html_color"><%=l(:field_html_color)%></label>
-#<%= text_field 'issue_status', 'html_color', :maxlength => 6 %> <span class="required">*</span></p>\r
+<p><label for="issue_status_html_color"><%=l(:field_html_color)%><span class="required"> *</span></label>
+#<%= text_field 'issue_status', 'html_color', :maxlength => 6 %></p>\r
 
 <!--[eoform:issue_status]-->
-
+</div>
\ No newline at end of file
index 140a40d9471833d1912688b7ebd2d3e84d8c51ae..80f856a2a81afa8de8882d9d8402d2ce9b5aede7 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_issue_status)%></h2>
 
-<%= start_form_tag :action => 'update', :id => @issue_status %>
+<%= start_form_tag({:action => 'update', :id => @issue_status}, :class => "tabular") %>
   <%= render :partial => 'form' %>
   <%= submit_tag l(:button_save) %>
 <%= end_form_tag %>
index ce7f8469c3730ee1ee3ea2b7334516c71a2930d6..023863437064f5b778a584a8a9667caf3044cc14 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_issue_status_plural)%></h2>
  
-<table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
+<table class="listTableContent">
   <tr class="ListHead">
   <th><%=l(:field_status)%></th>\r
   <th><%=l(:field_is_default)%></th>\r
   <td><%= link_to status.name, :action => 'edit', :id => status %></td>\r
   <td align="center"><%= image_tag 'true' if status.is_default? %></td>\r
   <td align="center"><%= image_tag 'true' if status.is_closed? %></td>  
-  <td bgcolor="#<%= status.html_color %>">&nbsp</td>  \r
-  <td align="center">\r
-    <%= start_form_tag :action => 'destroy', :id => status %>\r
-    <%= submit_tag l(:button_delete), :class => "button-small" %>\r
-    <%= end_form_tag %>
+  <td><div style="background-color:#<%= status.html_color %>">&nbsp</div></td>  \r
+  <td align="center">
+    <%= button_to l(:button_delete), { :action => 'destroy', :id => status }, :confirm => l(:text_are_you_sure), :class => "button-small" %>\r
   </td>
   </tr>
 <% end %>
index 1dc61eb8586055b140f4dac5ad14a51777b7a575..2dacb1e21ef832f228233b16c592bf8e8d7d9588 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_issue_status_new)%></h2>
 
-<%= start_form_tag :action => 'create' %>
+<%= start_form_tag({:action => 'create'}, :class => "tabular") %>
   <%= render :partial => 'form' %>
   <%= submit_tag l(:button_create) %>
 <%= end_form_tag %>
index bcc05d1e80b1c349420b3a5bdd404a4fe92eb065..bbf193bfd76c3bc16810fd4f6cf6d35fe058c8de 100644 (file)
@@ -1,7 +1,7 @@
 <% if issues.length > 0 %>\r
 <table cellspacing="0" cellpadding="1" width="100%" border="0" class="listTable">\r
        <tr><td>\r
-       <table width="100%" border="0" cellspacing="1" cellpadding="2" class="listTableContent">                \r
+       <table class="listTableContent">                \r
                <tr class="ListHead">   \r
                <th>#</th>\r
                <th><%=l(:field_tracker)%></th>\r
index 35494dbb95e2e92818217f3bcfc09b30b421ba18..9c14bdb8813ee4070371638901f0c86b46194bc3 100644 (file)
@@ -1,29 +1,27 @@
 <h2><%=l(:label_issue)%> #<%= @issue.id %>: <%= @issue.subject %></h2>
 \r
 <%= error_messages_for 'history' %>\r
-<%= start_form_tag :action => 'change_status', :id => @issue %>\r
+<%= start_form_tag({:action => 'change_status', :id => @issue}, :class => "tabular") %>\r
 \r
 <%= hidden_field_tag 'confirm', 1 %>\r
 <%= hidden_field 'history', 'status_id' %>
 
 <div class="box">\r
-<p><%=l(:label_issue_status_new)%>: <b><%= @history.status.name %></b></p>\r
+<p><label><%=l(:label_issue_status_new)%></label> <%= @history.status.name %></p>\r
 \r
-<div>\r
-<p><label for="issue_assigned_to_id"><%=l(:field_assigned_to)%></label><br/>
+<p><label for="issue_assigned_to_id"><%=l(:field_assigned_to)%></label>
 <select name="issue[assigned_to_id]">\r
 <option value=""></option>\r
 <%= options_from_collection_for_select @assignable_to, "id", "display_name", @issue.assigned_to_id %></p>
 </select></p>\r
-</div>\r
 \r
-<p><label for="issue_fixed_version"><%=l(:field_fixed_version)%></label><br/>
+<p><label for="issue_fixed_version"><%=l(:field_fixed_version)%></label>
 <select name="issue[fixed_version_id]">\r
 <option value="">--none--</option>\r
 <%= options_from_collection_for_select @issue.project.versions, "id", "name", @issue.fixed_version_id %>\r
 </select></p>\r
 \r
-<p><label for="history_notes"><%=l(:field_notes)%></label><br />\r
+<p><label for="history_notes"><%=l(:field_notes)%></label>\r
 <%= text_area 'history', 'notes', :cols => 60, :rows => 10  %></p>\r
 </div>
 \r
index 0386173ef259e923e9669853477f7325ff020b80..5a118f893ee26aa8ccc175fd77c2bb9fd80e052e 100644 (file)
@@ -1,56 +1,26 @@
 <h2><%= @issue.tracker.name %> #<%= @issue.id %> - <%= @issue.subject %></h2>
 
-<%= error_messages_for 'issue' %>\r
-<%= start_form_tag :action => 'edit', :id => @issue %>
-
+<% labelled_tabular_form_for :issue, @issue, :url => {:action => 'edit'} do |f| %>
+<%= error_messages_for 'issue' %>
 <div class="box">
-<!--[form:issue]-->\r
-<p><%=l(:field_status)%>: <b><%= @issue.status.name %></b></p>\r
-
-<div style="float:left;margin-right:10px;">\r
-<p><label for="issue_priority_id"><%=l(:field_priority)%> <span class="required">*</span></label><br/>
-<select name="issue[priority_id]">\r
-<%= options_from_collection_for_select @priorities, "id", "name", @issue.priority_id %></p>
-</select></p>\r
-</div>\r
-\r
-<div style="float:left;margin-right:10px;">\r
-<p><label for="issue_assigned_to_id"><%=l(:field_assigned_to)%></label><br/>
-<select name="issue[assigned_to_id]">\r
-<option value=""></option>\r
-<%= options_from_collection_for_select @issue.project.members, "user_id", "name", @issue.assigned_to_id %></p>
-</select></p>\r
-</div>\r
-\r
-<div>\r
-<p><label for="issue_category_id"><%=l(:field_category)%></label><br/>
-<select name="issue[category_id]">\r
-<option value=""></option>\r
-<%= options_from_collection_for_select @project.issue_categories, "id", "name", @issue.category_id %></p>
-</select></p>\r
-</div>\r
-\r
-<p><label for="issue_subject"><%=l(:field_subject)%></label><span class="required">*</span><br/>
-<%= text_field 'issue', 'subject', :size => 60  %></p>
+<!--[form:issue]-->
+<p><label><%=l(:field_status)%></label> <%= @issue.status.name %></p>
 
-<p><label for="issue_description"><%=l(:field_description)%></label><span class="required">*</span><br/>
-<%= text_area 'issue', 'description', :cols => 60, :rows => 10  %></p>
+<p><%= f.select :priority_id, (@priorities.collect {|p| [p.name, p.id]}), :required => true %></p>
+<p><%= f.select :assigned_to_id, (@issue.project.members.collect {|m| [m.name, m.user_id]}), :include_blank => true %></p>
+<p><%= f.select :category_id, (@project.issue_categories.collect {|c| [c.name, c.id]}) %></p>
+<p><%= f.text_field :subject, :size => 80, :required => true %></p>
+<p><%= f.text_area :description, :cols => 60, :rows => 10, :required => true %></p>
+<p><%= f.date_select :due_date, :start_year => Date.today.year, :include_blank => true %></p>
 
-<p><label for="issue_due_date"><%=l(:field_due_date)%></label><br />
-<%= date_select 'issue', 'due_date', :start_year => Date.today.year, :include_blank => true %></p>
-\r
 <% for @custom_value in @custom_values %>
        <p><%= custom_field_tag_with_label @custom_value %></p>
-<% end %>\r
-\r
-<p><label for="issue_fixed_version"><%=l(:field_fixed_version)%></label><br/>
-<select name="issue[fixed_version_id]">\r
-<option value="">--none--</option>\r
-<%= options_from_collection_for_select @project.versions, "id", "name", @issue.fixed_version_id %>\r
-</select></p>
+<% end %>
 
-<!--[eoform:issue]-->\r
+<p><%= f.select :fixed_version_id, (@project.versions.collect {|v| [v.name, v.id]}), { :include_blank => true } %>
+</select></p>
+<!--[eoform:issue]-->
 </div>
-\r
+
 <%= submit_tag l(:button_save) %>
-<%= end_form_tag %>\r
+<% end %>
\ No newline at end of file
index 564a8834a9c0115f97ac81d0640580e5ad4897f7..02bb824d9c700c637814fe51a1837ad3ba590437 100644 (file)
@@ -1,13 +1,6 @@
 <%= error_messages_for 'news' %>
-
-<!--[form:news]-->
-<p><label for="news_title"><%=l(:field_title)%></label> <span class="required">*</span><br/>
-<%= text_field 'news', 'title', :size => 60  %></p>
-
-<p><label for="news_summary"><%=l(:field_summary)%></label><br/>
-<%= text_area 'news', 'summary', :cols => 60, :rows => 2 %></p>
-
-<p><label for="news_description"><%=l(:field_description)%> <span class="required">*</span></label><br/>
-<%= text_area 'news', 'description', :cols => 60, :rows => 10 %></p>
-<!--[eoform:news]-->
-
+<div class="box">
+<p><%= f.text_field :title, :required => true, :size => 60 %></p>
+<p><%= f.text_area :summary, :cols => 60, :rows => 2 %></p>
+<p><%= f.text_area :description, :required => true, :cols => 60, :rows => 10 %></p>
+</div>
\ No newline at end of file
index 27f7ac9933142b96c23326f1e3778d8761b414cc..5e015c4c737c0a22aff16dd88766e09590ebced7 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_news)%></h2>
 
-<%= start_form_tag :action => 'edit', :id => @news %>
-  <%= render :partial => 'form' %>
-  <%= submit_tag l(:button_save) %>
-<%= end_form_tag %>
+<% labelled_tabular_form_for :news, @news, :url => { :action => "edit" } do |f| %>
+<%= render :partial => 'form', :locals => { :f => f } %>
+<%= submit_tag l(:button_save) %>
+<% end %>
\ No newline at end of file
index 2ff75fa8a33bf6f1be71e495f30220111985fb55..bea9af4fb55539fea96edde3f8f4c470cbaf8948 100644 (file)
@@ -7,4 +7,15 @@
 </p>\r
 \r
 <%= simple_format auto_link @news.description %>
-
+\r
+<% if authorize_for('news', 'edit') %>\r
+  <%= start_form_tag ({:controller => 'news', :action => 'edit', :id => @news}, :method => 'get' ) %>\r
+  <%= submit_tag l(:button_edit) %>\r
+  <%= end_form_tag %>\r
+<% end %>\r
+\r
+<% if authorize_for('news', 'destroy') %>\r
+  <%= start_form_tag ({:controller => 'news', :action => 'destroy', :id => @news}) %>\r
+  <%= submit_tag l(:button_delete) %>\r
+  <%= end_form_tag %>\r
+<% end %>\r
index 18b703cbd5434266ec98766169598702cebc4fb7..889404bbc2d66b00253d3ec334aad30bc57834eb 100644 (file)
@@ -1,41 +1,24 @@
 <%= error_messages_for 'project' %>
-
 <div class="box">
 <!--[form:project]-->
-<p><label for="project_name"><%=l(:field_name)%> <span class="required">*</span></label><br/>
-<%= text_field 'project', 'name'  %></p>
+<p><%= f.text_field :name, :required => true %></p>
 
 <% if admin_loggedin? %>
-<p><label for="project_parent_id"><%=l(:field_parent)%></label><br/>
-<select name="project[parent_id]">
-<option value=""></option>
-<%= options_from_collection_for_select @root_projects, "id", "name", @project.parent_id %>
-</select></p>
+    <p><%= f.select :parent_id, (@root_projects.collect {|p| [p.name, p.id]}), { :include_blank => true } %></p>
 <% end %>
 
-<p><label for="project_description"><%=l(:field_description)%> <span class="required">*</span></label><br/>
-<%= text_area 'project', 'description', :cols => 60, :rows => 3 %></p>
-\r
-<p><label for="project_homepage"><%=l(:field_homepage)%></label><br/>
-<%= text_field 'project', 'homepage', :size => 40 %></p>
-
-<p><%= check_box 'project', 'is_public' %>\r
-<label for="project_is_public"><%=l(:field_is_public)%></label></p>
+<p><%= f.text_area :description, :required => true, :cols => 60, :rows => 3 %></p>
+<p><%= f.text_field :homepage, :size => 40 %></p>
+<p><%= f.check_box :is_public %></p>
 \r
 <% for @custom_value in @custom_values %>
        <p><%= custom_field_tag_with_label @custom_value %></p>
 <% end %>\r
 \r
-<fieldset><legend><%=l(:label_custom_field_plural)%></legend>\r
-<% for custom_field in @custom_fields %>\r
-       <input type="checkbox"\r
-       \r
-       name="custom_field_ids[]"\r
-       value="<%= custom_field.id %>"\r
-       <%if @project.custom_fields.include? custom_field%>checked="checked"<%end%>\r
-       > <%= custom_field.name %>\r
-       \r
-<% end %></fieldset>\r
-\r
+<p><label><%=l(:label_custom_field_plural)%></label>\r
+<% for custom_field in @custom_fields %>
+       <%= check_box_tag "custom_field_ids[]", custom_field.id, (@project.custom_fields.include? custom_field) %>\r
+       <%= custom_field.name %>        \r
+<% end %></p>\r
+<!--[eoform:project]-->\r
 </div>
-<!--[eoform:project]-->
index 2dd4eb4506bda46a011baf89d751bdb07a054ecb..bafbf91452375755a541ba762900a13775e99d71 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_project_new)%></h2>
 
-<%= start_form_tag :action => 'add' %>\r
-<%= render :partial => 'form' %>\r
-<%= submit_tag l(:button_create) %>
-<%= end_form_tag %>
+<% labelled_tabular_form_for :project, @project, :url => { :action => "add" } do |f| %>
+<%= render :partial => 'form', :locals => { :f => f } %>
+<%= submit_tag l(:button_save) %>
+<% end %>
\ No newline at end of file
index 8d6d2e39dd93e90bf41af2b399b0f7a410a3e236..88572f409b3d514aff81a406a35dda616e9964d6 100644 (file)
@@ -1,10 +1,12 @@
 <h2><%=l(:label_document_new)%></h2>
 \r
-<%= start_form_tag( { :action => 'add_document', :id => @project }, :multipart => true) %>\r
+<%= start_form_tag( { :action => 'add_document', :id => @project }, :class => "tabular", :multipart => true) %>\r
 <%= render :partial => 'documents/form' %>
-\r
-<p><label for="attachment_file"><%=l(:label_attachment)%></label><br/>
-<%= file_field 'attachment', 'file'  %></p>
+
+<div class="box">\r
+<p><label for="attachment_file"><%=l(:label_attachment)%></label>
+<%= file_field 'attachment', 'file' %></p>
+</div>
 \r
 <%= submit_tag l(:button_create) %>
 <%= end_form_tag %>
index 123513371b3c19f2d7bb6d3793443462bf977c86..f640ad2b7231a3a10169691ba46065d87397c04d 100644 (file)
@@ -1,52 +1,26 @@
 <h2><%=l(:label_issue_new)%>: <%= @tracker.name %></h2>
 \r
-<%= start_form_tag( { :action => 'add_issue', :id => @project }, :multipart => true) %>\r
+<% labelled_tabular_form_for :issue, @issue, :url => {:action => 'add_issue'}, :html => {:multipart => true} do |f| %>
 <%= error_messages_for 'issue' %>
-
 <div class="box">
-<!--[form:issue]-->\r
-
+<!--[form:issue]-->
 <%= hidden_field_tag 'tracker_id', @tracker.id %>
 \r
-<div style="float:left;margin-right:10px;">\r
-<p><label for="issue_priority_id"><%=l(:field_priority)%> <span class="required">*</span></label><br />
-<select name="issue[priority_id]">\r
-<%= options_from_collection_for_select @priorities, "id", "name", @issue.priority_id %></p>
-</select></p>\r
-</div>\r
-\r
-<div style="float:left;margin-right:10px;">\r
-<p><label for="issue_assigned_to_id"><%=l(:field_assigned_to)%></label><br />
-<select name="issue[assigned_to_id]">\r
-<option value=""></option>\r
-<%= options_from_collection_for_select @issue.project.members, "user_id", "name", @issue.assigned_to_id %></p>
-</select></p>\r
-</div>\r
-\r
-<div>\r
-<p><label for="issue_category_id"><%=l(:field_category)%></label><br />
-<select name="issue[category_id]">\r
-<option value=""></option><%= options_from_collection_for_select @project.issue_categories, "id", "name", @issue.category_id %>
-</select></p>\r
-</div>\r
-
-<p><label for="issue_subject"><%=l(:field_subject)%> <span class="required">*</span></label><br />
-<%= text_field 'issue', 'subject', :size => 80  %></p>
-\r
-<p><label for="issue_description"><%=l(:field_description)%> <span class="required">*</span></label><br />
-<%= text_area 'issue', 'description', :cols => 60, :rows => 10 %></p>\r
-
-<p><label for="issue_due_date"><%=l(:field_due_date)%></label><br />
-<%= date_select 'issue', 'due_date', :start_year => Date.today.year, :include_blank => true %></p>
+<p><%= f.select :priority_id, (@priorities.collect {|p| [p.name, p.id]}), :required => true %></p>\r
+<p><%= f.select :assigned_to_id, (@issue.project.members.collect {|m| [m.name, m.user_id]}), :include_blank => true %></p>\r
+<p><%= f.select :category_id, (@project.issue_categories.collect {|c| [c.name, c.id]}) %></p>\r
+<p><%= f.text_field :subject, :size => 80, :required => true %></p>
+<p><%= f.text_area :description, :cols => 60, :rows => 10, :required => true %></p>
+<p><%= f.date_select :due_date, :start_year => Date.today.year, :include_blank => true %></p>
 \r
 <% for @custom_value in @custom_values %>
        <p><%= custom_field_tag_with_label @custom_value %></p>
 <% end %>\r
 \r
-<p><label for="attachment_file"><%=l(:label_attachment)%></label><br />
+<p><label for="attachment_file"><%=l(:label_attachment)%></label>
 <%= file_field 'attachment', 'file'  %></p>\r
 <!--[eoform:issue]-->\r
 </div>
 
 <%= submit_tag l(:button_create) %>\r
-<%= end_form_tag %>
\ No newline at end of file
+<% end %>
\ No newline at end of file
index abe6e96e0ca9eb22be01c0a7e8aaab8282424c7c..a6ecd3da7843a9fc8ad5eafe4294b42b460f110d 100644 (file)
@@ -1,7 +1,6 @@
 <h2><%=l(:label_news_new)%></h2>
 
-<%= start_form_tag :action => 'add_news', :id => @project %>
-  <%= render :partial => 'news/form' %>\r
-  <%= submit_tag l(:button_create) %>
-<%= end_form_tag %>
-
+<% labelled_tabular_form_for :news, @news, :url => { :action => "add_news" } do |f| %>
+<%= render :partial => 'news/form', :locals => { :f => f } %>
+<%= submit_tag l(:button_create) %>
+<% end %>
\ No newline at end of file
index 501a7e615b9f2396c3e5f4d9c46612a2c44c7bac..c038b7de93deca6c53fbabd3e43aafa90da45fdb 100644 (file)
@@ -1,7 +1,6 @@
 <h2><%=l(:label_version_new)%></h2>
 
-<%= start_form_tag :action => 'add_version', :id => @project  %>\r
-  <%= render :partial => 'versions/form' %>\r
-  <%= submit_tag l(:button_create) %>
-<%= end_form_tag %>
-
+<% labelled_tabular_form_for :version, @version, :url => { :action => 'add_version' } do |f| %>
+<%= render :partial => 'versions/form', :locals => { :f => f } %>
+<%= submit_tag l(:button_create) %>
+<% end %>
\ No newline at end of file
index b48fef39a29a8841c61547b85ea3271e054c78fa..0137086d96b834e3b7154599465b8d6e3d1e8fd3 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_public_projects)%></h2>
 
-<table width="100%" cellspacing="1" cellpadding="2" class="listTableContent">
+<table class="listTableContent">
   <tr class="ListHead">
        <%= sort_header_tag('name', :caption => l(:label_project)) %>\r
        <th><%=l(:field_description)%></th>\r
index a2a06c9365ab64e06cd15ee50cd11a2f94f74e66..5fe65e6a695bbf1b50a7a894e253760ad30d6521 100644 (file)
@@ -2,7 +2,7 @@
 \r
 <% delete_allowed = authorize_for('versions', 'destroy_file') %>\r
 \r
-<table border="0" cellspacing="1" cellpadding="2" class="listTableContent">\r
+<table class="listTableContent">\r
   <tr class="ListHead">\r
     <th><%=l(:field_version)%></th>\r
     <th><%=l(:field_filename)%></th>\r
index 4bba76bb7a8537be815cfdbba9783f2d09f1ca21..d18799acf9795d3da1659c6544d549fe3ae24d3d 100644 (file)
@@ -22,7 +22,7 @@
   </tr>\r
 </table>\r
  &nbsp;\r
-<table border="0" cellspacing="1" cellpadding="2" class="listTableContent">\r
+<table class="listTableContent">\r
     <tr><td colspan="7" align="right">\r
     <small><%= link_to l(:label_export_csv), :action => 'export_issues_csv', :id => @project.id %></small>\r
     </td></tr> \r
index a1b15941a6f6b0ce53934f58eb794be1c54e46d3..f31f927ac50be6a021148ff04706ed031cd3d08a 100644 (file)
@@ -2,11 +2,8 @@
 
 <% for news in @news %>\r
        <p>\r
-       <b><%= news.title %></b> <small>(<%= link_to_user news.author %> <%= format_time(news.created_on) %>)</small>\r
-       <%= link_to_if_authorized image_tag('edit_small'), :controller => 'news', :action => 'edit', :id => news %>\r
-       <%= link_to_if_authorized image_tag('delete'), { :controller => 'news', :action => 'destroy', :id => news }, :confirm => 'Are you sure?' %>\r
-       <br />\r
-       <%= news.summary %>\r
+       <b><%= news.title %></b> <small>(<%= link_to_user news.author %> <%= format_time(news.created_on) %>)</small><br />\r
+       <%= news.summary %><br />\r
        <small>[<%= link_to l(:label_read), :controller => 'news', :action => 'show', :id => news %>]</small>\r
        </p>\r
 <% end %>
index 1d1684ff614327d6918bbdef8d3bb1539b7ea948..cb6864a23cbe98d0a5b4f82ac13768d8c34414fa 100644 (file)
@@ -1,9 +1,9 @@
 <h2><%=l(:label_settings)%></h2>
 \r
-<%= start_form_tag :action => 'edit', :id => @project %>
-<%= render :partial => 'form' %>\r
-<center><%= submit_tag l(:button_save) %></center>
-<%= end_form_tag %>
+<% labelled_tabular_form_for :project, @project, :url => { :action => "edit", :id => @project } do |f| %>
+<%= render :partial => 'form', :locals => { :f => f } %>
+<%= submit_tag l(:button_save) %>
+<% end %>
 
 &nbsp;
 \r
index 08347bdb289f60240909e97193acefc65311f498..1717583d33e0dd6a4a9c630b063f9b83c5e89e99 100644 (file)
@@ -11,3 +11,4 @@
 <strong><%=l(:field_category)%></strong>\r
 <%= render :partial => 'simple', :locals => { :data => @issues_by_category, :field_name => "category_id", :rows => @categories } %>\r
 \r
+&nbsp;\r
index b007d1e3490766fdb116ee777d4466641ad0622c..ea7bafc3366fa34a1056a1a98887a77a37cc41b7 100644 (file)
@@ -1,9 +1,7 @@
 <%= error_messages_for 'role' %> 
-
 <div class="box">
 <!--[form:role]-->\r
-<p><label for="role_name"><%=l(:field_name)%> <span class="required">*</span></label><br />
-<%= text_field 'role', 'name' %></p>\r
+<p><%= f.text_field :name, :required => true %></p>\r
 \r
 <strong><%=l(:label_permissions)%>:</strong>\r
 <% permissions = @permissions.group_by {|p| p.group_id } %>\r
index 0bc3525064883fe3e460e08f866ce859cb78bad2..ffe117cef1542534519520d88c9bb3eceb4a29c0 100644 (file)
@@ -1,8 +1,6 @@
 <h2><%=l(:label_role)%></h2> 
 
-<%= start_form_tag ({ :action => 'edit', :id => @role }, :id => 'role_form') %>
-<%= render :partial => 'form' %>\r
+<% labelled_tabular_form_for :role, @role, :url => { :action => 'edit' }, :html => {:id => 'role_form'} do |f| %>
+<%= render :partial => 'form', :locals => { :f => f } %>
 <%= submit_tag l(:button_save) %>
-<%= end_form_tag %>\r
-
-\r
+<% end %>\r
index ae92a807155a2ef369768694dfc733467017b513..169b3d1c0dd4dec2803006667c3c0e5ca83bab4a 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_role_plural)%></h2>
 
-<table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
+<table class="listTableContent">
   <tr class="ListHead">
     <th><%=l(:label_role)%></th>
        <th></th>
@@ -9,10 +9,8 @@
 <% for role in @roles %>
   <tr class="<%= cycle("odd", "even") %>">
   <td><%= link_to role.name, :action => 'edit', :id => role %></td>
-  <td align="center">\r
-    <%= start_form_tag :action => 'destroy', :id => role %>\r
-    <%= submit_tag l(:button_delete), :class => "button-small" %>\r
-    <%= end_form_tag %>
+  <td align="center">
+    <%= button_to l(:button_delete), { :action => 'destroy', :id => role }, :confirm => l(:text_are_you_sure), :class => "button-small" %>\r
   </tr>
 <% end %>
 </table>
index 11d2d9209e7cb49e448440d0fd4ae77a65b02f6c..a73c36cb1f805d8efea1dbc4f37b5b4b41e78b04 100644 (file)
@@ -1,7 +1,6 @@
 <h2><%=l(:label_role_new)%></h2> 
 \r
-<%= start_form_tag ({ :action => 'new' }, :id => 'role_form') %>
-<%= render :partial => 'form' %>
+<% labelled_tabular_form_for :role, @role, :url => { :action => 'new' }, :html => {:id => 'role_form'} do |f| %>
+<%= render :partial => 'form', :locals => { :f => f } %>
 <%= submit_tag l(:button_create) %>
-<%= end_form_tag %>
-
+<% end %>
\ No newline at end of file
index e0b74ec37d1bff6c0e156d36763d7109fe5c2f00..625c0d636a1cd609d3f36b4b89631542af95a089 100644 (file)
@@ -1,10 +1,7 @@
 <%= error_messages_for 'tracker' %>
-
+<div class="box">
 <!--[form:tracker]-->
-<p><label for="tracker_name"><%=l(:field_name)%></label> <span class="required">*</span><br/>
-<%= text_field 'tracker', 'name'  %></p>
-\r
-<p><%= check_box 'tracker', 'is_in_chlog' %>\r
-<label for="tracker_is_in_chlog"><%=l(:field_is_in_chlog)%></label></p>\r
+<p><%= f.text_field :name, :required => true %></p>\r
+<p><%= f.check_box :is_in_chlog %></p>\r
 <!--[eoform:tracker]-->
-
+</div>
index 25cec51d24ea3917db088ff0f4069d9da8a61a5e..d8411099c514f953b4b334715612b37dabd8f899 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_tracker)%></h2>
 
-<%= start_form_tag :action => 'edit', :id => @tracker %>
-  <%= render :partial => 'form' %>
-  <%= submit_tag l(:button_save) %>
-<%= end_form_tag %>
+<% labelled_tabular_form_for :tracker, @tracker, :url => { :action => 'edit' } do |f| %>
+<%= render :partial => 'form', :locals => { :f => f } %>
+<%= submit_tag l(:button_save) %>
+<% end %>
\ No newline at end of file
index 475a6b9daf346835449e238fedeced8a4b981ae4..8d4a5c59543deacd95c5afcce1fe8d1c9d09faf0 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_tracker_plural)%></h2>
 
-<table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
+<table class="listTableContent">
   <tr class="ListHead">
   <th><%=l(:label_tracker)%></th>\r
   <th></th>
@@ -9,10 +9,8 @@
 <% for tracker in @trackers %>
   <tr class="<%= cycle("odd", "even") %>">
   <td><%= link_to tracker.name, :action => 'edit', :id => tracker %></td>
-  <td align="center">\r
-    <%= start_form_tag :action => 'destroy', :id => tracker %>\r
-    <%= submit_tag l(:button_delete), :class => "button-small" %>\r
-    <%= end_form_tag %>\r
+  <td align="center">
+    <%= button_to l(:button_delete), { :action => 'destroy', :id => tracker }, :confirm => l(:text_are_you_sure), :class => "button-small" %>\r
   </td>
   </tr>
 <% end %>
index 788854c2827352abb048f6e693217dc198c8c65f..b318a5dc40270700625865ca8db3981ea76246ad 100644 (file)
@@ -1,7 +1,6 @@
 <h2><%=l(:label_tracker_new)%></h2>
 
-<%= start_form_tag :action => 'new' %>
-  <%= render :partial => 'form' %>
-  <%= submit_tag l(:button_create) %>
-<%= end_form_tag %>
-
+<% labelled_tabular_form_for :tracker, @tracker, :url => { :action => 'new' } do |f| %>
+<%= render :partial => 'form', :locals => { :f => f } %>
+<%= submit_tag l(:button_create) %>
+<% end %>
\ No newline at end of file
index 08bce06c0ba586b6f484f4bb8f628c6ea0f2b281..6a714a7b02e36701c8bc644421d8ce5cc8ada9f0 100644 (file)
@@ -2,36 +2,25 @@
 
 <div class="box">
 <!--[form:user]-->
-<p><label for="user_login"><%=l(:field_login)%></label> <span class="required">*</span><br/>
-<%= text_field 'user', 'login', :size => 25  %></p>
+<p><%= f.text_field :login, :required => true, :size => 25  %></p>
 \r
-<p><label for="password"><%=l(:field_password)%></label> <span class="required">*</span><br/>
+<p><label for="password"><%=l(:field_password)%><span class="required"> *</span></label>
 <%= password_field_tag 'password', nil, :size => 25  %></p>
 
-<p><label for="password_confirmation"><%=l(:field_password_confirmation)%></label> <span class="required">*</span><br/>
+<p><label for="password_confirmation"><%=l(:field_password_confirmation)%><span class="required"> *</span></label>
 <%= password_field_tag 'password_confirmation', nil, :size => 25  %></p>
 
-<p><label for="user_firstname"><%=l(:field_firstname)%></label> <span class="required">*</span><br/>
-<%= text_field 'user', 'firstname'  %></p>
-\r
-<p><label for="user_lastname"><%=l(:field_lastname)%></label> <span class="required">*</span><br/>
-<%= text_field 'user', 'lastname'  %></p>
-
-<p><label for="user_mail"><%=l(:field_mail)%></label> <span class="required">*</span><br/>
-<%= text_field 'user', 'mail'  %></p>\r
-\r
-<p><label for="user_language"><%=l(:field_language)%></label><br/>
-<%= select("user", "language", lang_options_for_select) %></p>\r
+<p><%= f.text_field :firstname, :required => true %></p>\r
+<p><%= f.text_field :lastname, :required => true %></p>
+<p><%= f.text_field :mail, :required => true %></p>\r
+<p><%= f.select :language, lang_options_for_select %></p>\r
 \r
 <% for @custom_value in @custom_values %>
        <p><%= custom_field_tag_with_label @custom_value %></p>
 <% end %>\r
 \r
-<div style="clear: both;"></div>\r
-
-<p><%= check_box 'user', 'admin' %> <label for="user_admin"><%=l(:field_admin)%></label></p>\r
-\r
-<p><%= check_box 'user', 'mail_notification' %> <label for="user_mail_notification"><%=l(:field_mail_notification)%></label></p>\r
+<p><%= f.check_box :admin %></p>\r
+<p><%= f.check_box :mail_notification %></p>\r
 \r
 <!--[eoform:user]-->
 </div>
index 13e7069fcccba69a4159fd7efb651c557a92eaf0..d4c6a15f4e96bb239d7658eccea60dc29eef3547 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_user_new)%></h2>
 
-<%= start_form_tag :action => 'add' %>
-  <%= render :partial => 'form' %>
-  <%= submit_tag l(:button_create) %>
-<%= end_form_tag %>
+<% labelled_tabular_form_for :user, @user, :url => { :action => "add" } do |f| %>
+<%= render :partial => 'form', :locals => { :f => f } %>
+<%= submit_tag l(:button_create) %>
+<% end %>
\ No newline at end of file
index 524b920f62547dd34d5d88ed91c42b0b490312a2..2332b70adc906ffebd4db9fe31fd2dbe18e0417f 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_user)%></h2>
 
-<%= start_form_tag :action => 'edit', :id => @user %>
-  <%= render :partial => 'form' %>
-  <%= submit_tag l(:button_save) %>  
-<%= end_form_tag %>
+<% labelled_tabular_form_for :user, @user, :url => { :action => "edit" } do |f| %>
+<%= render :partial => 'form', :locals => { :f => f } %>
+<%= submit_tag l(:button_save) %>
+<% end %>
index 129decd71bb95bc7d5c99b16fce4570be21ef8d6..10540daa79a266ee6a659fb38ba743dcd9839628 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_user_plural)%></h2>
 \r
-<table border="0" cellspacing="1" cellpadding="2" class="listTableContent">            \r
+<table class="listTableContent">               \r
 <tr class="ListHead">
        <%= sort_header_tag('login', :caption => l(:field_login)) %>\r
        <%= sort_header_tag('firstname', :caption => l(:field_firstname)) %>\r
index 18de3c5c34ee8782287bd1464c459b6af0ed8877..577e1c37f55779895c55cb2544e6fd01f9277f36 100644 (file)
@@ -1,13 +1,8 @@
 <%= error_messages_for 'version' %>
-
+<div class="box">
 <!--[form:version]-->
-<p><label for="version_name"><%=l(:field_name)%></label> <span class="required">*</span><br/>
-<%= text_field 'version', 'name', :size => 20  %></p>
-
-<p><label for="version_description"><%=l(:field_description)%></label><br/>
-<%= text_field 'version', 'description', :size => 60  %></p>
-\r
-<p><label for="version_effective_date"><%=l(:field_effective_date)%></label><br/>
-<%= date_select 'version', 'effective_date'  %></p>
+<p><%= f.text_field :name, :size => 20, :required => true %></p>
+<p><%= f.text_field :description, :size => 60 %></p>
+<p><%= f.date_select :effective_date, :required => true %></p>
 <!--[eoform:version]-->
-
+</div>
\ No newline at end of file
index 6851d79b82c6a60a974783f6354708c85b655a99..1556ebba1caf20516add7a5860c948d3e27d66ad 100644 (file)
@@ -1,8 +1,7 @@
 <h2><%=l(:label_version)%></h2>
 
-<%= start_form_tag :action => 'edit', :id => @version %>
-  <%= render :partial => 'form' %>
-  <%= submit_tag l(:button_save) %>
-<%= end_form_tag %>
-
+<% labelled_tabular_form_for :version, @version, :url => { :action => 'edit' } do |f| %>
+<%= render :partial => 'form', :locals => { :f => f } %>
+<%= submit_tag l(:button_save) %>
+<% end %>
 
index 23b8a99be40cfefff3d171e639300f693b4d5b83..ee85b5b8ae7dc8cd309c9bc916eb57506e00827f 100644 (file)
@@ -123,7 +123,7 @@ ActiveRecord::Errors.default_error_messages = {
   :not_a_number => "activerecord_error_not_a_number"
 }
 
-ActionView::Base.field_error_proc = Proc.new{ |html_tag, instance| "<span class=\"fieldWithErrors\">#{html_tag}</span>" }
+ActionView::Base.field_error_proc = Proc.new{ |html_tag, instance| "#{html_tag}" }
     
 GLoc.set_config :default_language => $RDM_DEFAULT_LANG
 GLoc.clear_strings
index 5d9140dd784f6a34c59fdeb92bc6c10eb8750bd8..fb59f2a665b084955572ecc30f68815a0ff619e5 100644 (file)
@@ -7,22 +7,26 @@ http://redmine.org/
 \r
 == xx/xx/2006 v0.3.0\r
 \r
-* user authentication against multiple LDAP\r
+* user authentication against multiple LDAP (optional)\r
 * token based "lost password" functionality\r
 * user self-registration functionality (optional)\r
 * custom fields now available for issues, users and projects\r
 * new custom field format "text" (displayed as a textarea field) \r
 * project & administration drop down menus in navigation bar for quicker access\r
 * "due date" field added on issues\r
-* error messages internationalization\r
+* tracker selection filter added on change log\r
 * Localization plugin replaced with GLoc 1.1.0\r
+* error messages internationalization\r
+* german translation added (thanks to Karim Trott)\r
 * new filter in issues list: "Fixed version"\r
 * active filters are displayed with colored background on issues list\r
 * custom configuration is now defined in config/config_custom.rb\r
 * user object no more stored in session (only user_id)\r
 * news summary field is no longer required\r
+* tables and forms redesign\r
 * Fixed: boolean custom field not working\r
 * Fixed: error messages for custom fields are not displayed\r
+* Fixed: invalid custom fields should have a red border\r
 * Fixed: custom fields values are not validated on issue update\r
 * Fixed: unable to choose an empty value for 'List' custom fields\r
 * Fixed: no issue categories sorting\r
diff --git a/redmine/lang/de.yml b/redmine/lang/de.yml
new file mode 100644 (file)
index 0000000..cdfffab
--- /dev/null
@@ -0,0 +1,290 @@
+_gloc_rule_default: '|n| n==1 ? "" : "_plural" '\r
+\r
+actionview_datehelper_select_day_prefix:\r
+actionview_datehelper_select_month_names: January,February,March,April,May,June,July,August,September,October,November,December\r
+actionview_datehelper_select_month_names_abbr: Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec\r
+actionview_datehelper_select_month_prefix:\r
+actionview_datehelper_select_year_prefix:\r
+actionview_datehelper_time_in_words_day: 1 day\r
+actionview_datehelper_time_in_words_day_plural: %d days\r
+actionview_datehelper_time_in_words_hour_about: about an hour\r
+actionview_datehelper_time_in_words_hour_about_plural: about %d hours\r
+actionview_datehelper_time_in_words_hour_about_single: about an hour\r
+actionview_datehelper_time_in_words_minute: 1 minute\r
+actionview_datehelper_time_in_words_minute_half: half a minute\r
+actionview_datehelper_time_in_words_minute_less_than: less than a minute\r
+actionview_datehelper_time_in_words_minute_plural: %d minutes\r
+actionview_datehelper_time_in_words_minute_single: 1 minute\r
+actionview_datehelper_time_in_words_second_less_than: less than a second\r
+actionview_datehelper_time_in_words_second_less_than_plural: less than %d seconds\r
+actionview_instancetag_blank_option: Bitte auserwählt\r
+\r
+activerecord_error_inclusion: ist nicht in der Liste eingeschlossen\r
+activerecord_error_exclusion: ist reserviert\r
+activerecord_error_invalid: ist unzulässig\r
+activerecord_error_confirmation: bringt nicht Bestätigung zusammen\r
+activerecord_error_accepted: muß angenommen werden\r
+activerecord_error_empty: kann nicht leer sein\r
+activerecord_error_blank: kann nicht leer sein\r
+activerecord_error_too_long: ist zu lang\r
+activerecord_error_too_short: ist zu kurz\r
+activerecord_error_wrong_length: ist die falsche Länge\r
+activerecord_error_taken: ist bereits genommen worden\r
+activerecord_error_not_a_number: ist nicht eine Zahl\r
+\r
+general_fmt_age: %d yr\r
+general_fmt_age_plural: %d yrs\r
+general_fmt_date: %%b %%d, %%Y (%%a)\r
+general_fmt_datetime: %%b %%d, %%Y (%%a), %%I:%%M %%p\r
+general_fmt_datetime_short: %%b %%d, %%I:%%M %%p\r
+general_fmt_time: %%I:%%M %%p\r
+general_text_No: 'Nein'\r
+general_text_Yes: 'Ja'\r
+general_text_no: 'nein'\r
+general_text_yes: 'ja'\r
+general_lang_de: 'Deutsch'\r
+\r
+notice_account_updated: Konto wurde erfolgreich aktualisiert.\r
+notice_account_invalid_creditentials: Unzulässiger Benutzer oder Passwort\r
+notice_account_password_updated: Passwort wurde erfolgreich aktualisiert.\r
+notice_account_wrong_password: Falsches Passwort\r
+notice_account_register_done: Konto wurde erfolgreich verursacht.\r
+notice_account_unknown_email: Unbekannter Benutzer.\r
+notice_can_t_change_password: Dieses Konto verwendet eine externe Authentisierung Quelle. Unmöglich, das Kennwort zu ändern.\r
+notice_account_lost_email_sent: Ein email mit Anweisungen, ein neues Kennwort zu wählen ist dir geschickt worden.\r
+notice_account_activated: Dein Konto ist aktiviert worden. Du kannst jetzt einloggen.\r
+notice_successful_create: Erfolgreiche Kreation. \r
+notice_successful_update: Erfolgreiches Update.\r
+notice_successful_delete: Erfolgreiche Auslassung.\r
+notice_successful_connection: Erfolgreicher Anschluß.\r
+notice_file_not_found: Erbetene Akte besteht nicht oder ist gelöscht worden.\r
+\r
+gui_validation_error: 1 Störung\r
+gui_validation_error_plural: %d Störungen\r
+\r
+field_name: Name\r
+field_description: Beschreibung\r
+field_summary: Zusammenfassung\r
+field_is_required: Erforderlich\r
+field_firstname: Vorname\r
+field_lastname: Nachname\r
+field_mail: Email\r
+field_filename: Datei\r
+field_filesize: Grootte\r
+field_downloads: Downloads\r
+field_author: Autor\r
+field_created_on: Angelegt\r
+field_updated_on: aktualisiert\r
+field_field_format: Format\r
+field_is_for_all: Für alle Projekte\r
+field_possible_values: Mögliche Werte\r
+field_regexp: Regulärer Ausdruck\r
+field_min_length: Minimale Länge\r
+field_max_length: Maximale Länge\r
+field_value: Wert\r
+field_category: Kategorie\r
+field_title: Títel\r
+field_project: Projekt\r
+#field_issue: Issue\r
+field_status: Status\r
+field_notes: Anmerkungen\r
+field_is_closed: Problem erledigt\r
+#field_is_default: Default status\r
+field_html_color: Farbe\r
+field_tracker: Tracker\r
+field_subject: Thema\r
+#field_due_date: Due date\r
+field_assigned_to: Zugewiesen an\r
+field_priority: Priorität\r
+field_fixed_version: Erledigt in Version\r
+field_user: Benutzer\r
+field_role: Rolle\r
+field_homepage: Startseite\r
+field_is_public: Öffentlich\r
+#field_parent: Subprojekt von\r
+field_is_in_chlog: Ansicht der Issues in der Historie\r
+field_login: Mitgliedsname\r
+field_mail_notification: Mailbenachrichtigung\r
+#field_admin: Administrator\r
+field_locked: Gesperrt\r
+field_last_login_on: Letzte Anmeldung\r
+field_language: Sprache\r
+field_effective_date: Datum\r
+field_password: Passwort\r
+field_new_password: Neues Passwort\r
+field_password_confirmation: Bestätigung\r
+field_version: Version\r
+field_type: Typ\r
+field_host: Host\r
+#field_port: Port\r
+#field_account: Account\r
+#field_base_dn: Base DN\r
+#field_attr_login: Login attribute\r
+#field_attr_firstname: Firstname attribute\r
+#field_attr_lastname: Lastname attribute\r
+#field_attr_mail: Email attribute\r
+#field_onthefly: On-the-fly user creation\r
+\r
+label_user: Benutzer\r
+label_user_plural: Benutzer\r
+label_user_new: Neuer Benutzer\r
+label_project: Projekt\r
+label_project_new: Neues Projekt\r
+label_project_plural: Projekte\r
+#label_project_latest: Latest projects\r
+#label_issue: Issue\r
+#label_issue_new: New issue\r
+#label_issue_plural: Issues\r
+#label_issue_view_all: View all issues\r
+label_document: Dokument\r
+label_document_new: Neues Dokument\r
+label_document_plural: Dokumente\r
+label_role: Rolle\r
+label_role_plural: Rollen\r
+label_role_new: Neue Rolle\r
+label_role_and_permissions: Rollen und Rechte\r
+label_member: Mitglied\r
+label_member_new: Neues Mitglied\r
+label_member_plural: Mitglieder\r
+label_tracker: Tracker\r
+label_tracker_plural: Tracker\r
+label_tracker_new: Neuer Tracker\r
+label_workflow: Workflow\r
+label_issue_status: Problem Status\r
+label_issue_status_plural: Problem Stati\r
+label_issue_status_new: Neuer Status\r
+label_issue_category: Problem Kategorie\r
+label_issue_category_plural: Problem Kategorien\r
+label_issue_category_new: Neue Kategorie\r
+label_custom_field: Benutzerdefiniertes Feld\r
+label_custom_field_plural: Benutzerdefinierte Felder\r
+label_custom_field_new: Neues Feld\r
+label_enumerations: Enumerationen\r
+label_enumeration_new: Neuer Wert\r
+label_information: Information\r
+label_information_plural: Informationen\r
+#label_please_login: Please login\r
+label_register: Anmelden\r
+label_password_lost: Passwort vergessen\r
+label_home: Hauptseite\r
+label_my_page: Meine Seite\r
+label_my_account: Mein Konto\r
+label_my_projects: Meine Projekte\r
+label_administration: Administration\r
+label_login: Einloggen\r
+label_logout: Abmelden\r
+label_help: Hilfe\r
+label_reported_issues: Gemeldete Issues\r
+label_assigned_to_me_issues: Mir zugewiesen\r
+label_last_login: Letzte Anmeldung\r
+#label_last_updates: Last updated\r
+#label_last_updates_plural: %d last updated\r
+label_registered_on: Angemeldet am\r
+label_activity: Aktivität\r
+label_new: Neue\r
+label_logged_as: Angemeldet als\r
+#label_environment: Environment\r
+label_authentication: Authentisierung\r
+#label_auth_source: Authentification mode\r
+#label_auth_source_new: New authentication mode\r
+#label_auth_source_plural: Authentification modes\r
+#label_subproject: Subproject\r
+#label_subproject_plural: Subprojects\r
+label_min_max_length: Min - Max Länge\r
+label_list: Liste\r
+label_date: Date\r
+label_integer: Zahl\r
+label_boolean: Boolesch\r
+#label_string: String\r
+label_text: Text\r
+label_attribute: Attribut\r
+label_attribute_plural: Attribute\r
+#label_download: %d Download\r
+#label_download_plural: %d Downloads\r
+label_no_data: Nichts anzuzeigen\r
+label_change_status: Statuswechsel\r
+label_history: Historie\r
+label_attachment: Datei\r
+label_attachment_new: Neue Datei\r
+#label_attachment_delete: Delete file\r
+label_attachment_plural: Dateien\r
+label_report: Bericht\r
+label_report_plural: Berichte\r
+#label_news: Neuigkeiten\r
+#label_news_new: Add news\r
+#label_news_plural: Neuigkeiten\r
+label_news_latest: Letzte Neuigkeiten\r
+label_news_view_all: Alle Neuigkeiten anzeigen\r
+label_change_log: Change log\r
+label_settings: Konfiguration\r
+label_overview: Übersicht\r
+label_version: Version\r
+label_version_new: Neue Version\r
+label_version_plural: Versionen\r
+label_confirmation: Bestätigung\r
+#label_export_csv: Export to CSV\r
+label_read: Lesen...\r
+label_public_projects: Öffentliche Projekte\r
+#label_open_issues: Open\r
+#label_open_issues_plural: Open\r
+#label_closed_issues: Closed\r
+#label_closed_issues_plural: Closed\r
+label_total: Gesamtzahl\r
+label_permissions: Berechtigungen\r
+label_current_status: Gegenwärtiger Status\r
+label_new_statuses_allowed: Neue Status gewährten\r
+label_all: Alle\r
+label_none: Kein\r
+label_next: Weiter\r
+label_previous: Zurück\r
+label_used_by: Benutzt von\r
+\r
+button_login: Einloggen\r
+button_submit: Einreichen\r
+button_save: Speichern\r
+button_check_all: Alles auswählen\r
+button_uncheck_all: Alles abwählen\r
+button_delete: Löschen\r
+button_create: Anlegen\r
+button_test: Testen\r
+button_edit: Bearbeiten\r
+button_add: Hinzufügen\r
+button_change: Wechseln\r
+button_apply: Anwenden\r
+button_clear: Zurücksetzen\r
+button_lock: Verriegeln\r
+button_unlock: Entriegeln\r
+button_download: Fernzuladen\r
+button_list: Aufzulisten\r
+button_view: Siehe\r
+\r
+text_select_mail_notifications: Aktionen für die Mailbenachrichtigung aktiviert werden soll.\r
+text_regexp_info: eg. ^[A-Z0-9]+$\r
+text_min_max_length_info: 0 heisst keine Beschränkung\r
+#text_possible_values_info: values separated with |\r
+text_project_destroy_confirmation: Sind sie sicher, daß sie das Projekt löschen wollen ?\r
+text_workflow_edit: Auswahl Workflow zum Bearbeiten\r
+text_are_you_sure: Sind sie sicher ?\r
+\r
+default_role_manager: Manager\r
+default_role_developper: Developer\r
+default_role_reporter: Reporter\r
+default_tracker_bug: Fehler\r
+default_tracker_feature: Feature\r
+default_tracker_support: Support\r
+default_issue_status_new: Neu\r
+default_issue_status_assigned: Zugewiesen\r
+default_issue_status_resolved: Gelöst\r
+default_issue_status_feedback: Feedback\r
+default_issue_status_closed: Erledigt\r
+default_issue_status_rejected: Abgewiesen\r
+default_doc_category_user: Benutzerdokumentation\r
+default_doc_category_tech: Technische Dokumentation\r
+default_priority_low: Niedrig\r
+default_priority_normal: Normal\r
+default_priority_high: Hoch\r
+default_priority_urgent: Dringend\r
+default_priority_immediate: Sofort\r
+\r
+enumeration_issue_priorities: Issue-Prioritäten\r
+enumeration_doc_categories: Dokumentenkategorien\r
index 14c78e79c093a1d87e27b31ed7484a06af5ab27d..7fd8063628f97c6e847fc2b7c9aecddeeeeedbf5 100644 (file)
@@ -101,7 +101,7 @@ field_user: User
 field_role: Role\r
 field_homepage: Homepage\r
 field_is_public: Public\r
-field_parent: Subproject de\r
+field_parent: Subproject of\r
 field_is_in_chlog: Issues displayed in changelog\r
 field_login: Login\r
 field_mail_notification: Mail notifications\r
@@ -264,6 +264,7 @@ text_min_max_length_info: 0 means no restriction
 text_possible_values_info: values separated with |\r
 text_project_destroy_confirmation: Are you sure you want to delete this project and all related data ?\r
 text_workflow_edit: Select a role and a tracker to edit the workflow\r
+text_are_you_sure: Are you sure ?\r
 \r
 default_role_manager: Manager\r
 default_role_developper: Developer\r
index 33baf28a63baa77f56c9a06eae72e5309548af59..a9806b3e3a73228b74702139cf61d0f4cbf4871c 100644 (file)
@@ -264,6 +264,7 @@ text_min_max_length_info: 0 para ninguna restricción
 #text_possible_values_info: values separated with |\r
 text_project_destroy_confirmation: ¿ Estás seguro de querer eliminar el proyecto ?\r
 text_workflow_edit: Seleccionar un workflow para actualizar\r
+text_are_you_sure: ¿ Estás seguro ?\r
 \r
 default_role_manager: Manager\r
 default_role_developper: Desarrollador\r
index 5a515d86999e8d48a7a0833dd7fb85b725269e65..5c2936801e59d8494b18e29f1d08668c26b74b32 100644 (file)
@@ -264,6 +264,7 @@ text_min_max_length_info: 0 pour aucune restriction
 text_possible_values_info: valeurs séparées par |\r
 text_project_destroy_confirmation: Etes-vous sûr de vouloir supprimer ce projet et tout ce qui lui est rattaché ?\r
 text_workflow_edit: Sélectionner un tracker et un rôle pour éditer le workflow\r
+text_are_you_sure: Etes-vous sûr ?\r
 \r
 default_role_manager: Manager\r
 default_role_developper: Développeur\r
index 787347d83eb9172d6ff2180b6b44b3499ed390f9..6ad4281a12835957e19f4ede79b09fa0a2b592c6 100644 (file)
@@ -13,6 +13,7 @@ line-height:1.4em;
 text-align:center;\r
 color:#303030;\r
 background:#e8eaec;\r
+margin:0;\r
 }\r
 \r
 \r
@@ -39,25 +40,25 @@ img.right{float:right; margin:0 0 5px 12px;}
 #container{\r
 width:100%;\r
 min-width: 800px;\r
-margin:5px auto;\r
-padding:1px 0;\r
+margin:0;\r
+padding:0;\r
 text-align:left;\r
 background:#ffffff;\r
 color:#303030;\r
-border:2px solid #a0a0a0;\r
 }\r
 \r
 #header{\r
-height:5.5em;\r
+height:4.5em;\r
 /*width:758px;*/\r
-margin:0 1px 1px 1px;\r
+margin:0;\r
 background:#467aa7;\r
 color:#ffffff;\r
+margin-bottom:1px;\r
 }\r
 \r
 #header h1{\r
-padding:14px 0 0 20px;\r
-font-size:2.4em;\r
+padding:10px 0 0 20px;\r
+font-size:1.8em;\r
 background-color:inherit;\r
 color:#fff; /*rgb(152, 26, 33);*/\r
 letter-spacing:-2px;\r
@@ -65,7 +66,7 @@ font-weight:normal;
 }\r
 \r
 #header h2{\r
-margin:10px 0 0 40px;\r
+margin:3px 0 0 40px;\r
 font-size:1.4em;\r
 background-color:inherit;\r
 color:#f0f2f4;\r
@@ -77,7 +78,7 @@ font-weight:normal;
 height:2.2em;\r
 line-height:2.2em;\r
 /*width:758px;*/\r
-margin:0 1px;\r
+margin:0;\r
 background:#578bb8;\r
 color:#ffffff;\r
 }\r
@@ -127,16 +128,22 @@ background-color: #80b0da;
 \r
 /**************** Content styles ****************/\r
 \r
+html>body #content {\r
+height: auto;\r
+min-height: 300px;\r
+} \r
+\r
 #content{\r
 /*float:right;*/\r
 /*width:530px;*/\r
 width: auto;\r
-min-height: 500px;\r
+height:300px;\r
 font-size:0.9em;\r
 padding:20px 10px 10px 20px;\r
 /*position: absolute;*/\r
-margin: 0 0 0 140px;\r
+margin-left: 120px;\r
 border-left: 1px dashed #c0c0c0;\r
+\r
 }\r
 \r
 #content h2{\r
@@ -176,6 +183,10 @@ form {
 \r
 .noborder {\r
        border:0px;\r
+Exception exceptions.AssertionError: <exceptions.AssertionError instance at 0xb7c0b20c> in <bound \r
+method SubversionRepository.__del__ of <vclib.svn.SubversionRepository instance at 0xb7c1252c>> \r
+ignored\r
+\r
        background-color:#fff;\r
        width:100%;\r
 }\r
@@ -186,7 +197,7 @@ textarea {
 }\r
 \r
 input {\r
-       vertical-align: top;\r
+       vertical-align: middle;\r
 }\r
 \r
 input.button-small \r
@@ -227,14 +238,13 @@ legend {
 }\r
 \r
 table.listTableContent {\r
-       /*margin: 2em 2em 2em 0;        */\r
-       border:1px solid #c0c0c0;\r
+       border:1px solid #578bb8;\r
        width:99%;\r
+       border-collapse: collapse;\r
 }\r
 \r
 table.listTableContent td {\r
-       margin: 2px;\r
-       \r
+       padding:4px;\r
 }\r
 \r
 tr.ListHead {\r
@@ -249,10 +259,10 @@ tr.ListHead a {
 }\r
 \r
 tr.odd {\r
-       background-color: #C1E2F7;\r
+       background-color:#f0f1f2;\r
 }\r
 tr.even {\r
-       background-color:#CEE1ED;\r
+       background-color: #fff;\r
 }\r
 \r
 hr { border:none; border-bottom: dotted 2px #c0c0c0; }\r
@@ -263,19 +273,18 @@ hr { border:none; border-bottom: dotted 2px #c0c0c0; }
 #subcontent{\r
 float:left;\r
 clear:both;\r
-width:130px;\r
+width:110px;\r
 padding:20px 20px 10px 5px;\r
-line-height:1.4em;\r
 }\r
 \r
 #subcontent h2{\r
 display:block;\r
-margin:0 0 15px 0;\r
-font-size:1.6em;\r
-font-weight:normal;\r
+margin:0 0 5px 0;\r
+font-size:1.0em;\r
+font-weight:bold;\r
 text-align:left;\r
 letter-spacing:-1px;\r
-color:#505050;\r
+color:#606060;\r
 background-color:inherit;\r
 }\r
 \r
@@ -283,11 +292,11 @@ background-color:inherit;
 \r
 /**************** Menublock styles ****************/\r
 \r
-.menublock{margin:0 0 20px 8px; font-size:0.9em;}\r
+.menublock{margin:0 0 20px 8px; font-size:0.8em;}\r
 .menublock li{list-style:none; display:block; padding:1px; margin-bottom:0px;}\r
 .menublock li a{font-weight:bold; text-decoration:none;}\r
 .menublock li a:hover{text-decoration:none;}\r
-.menublock li ul{margin:3px 0 3px 15px; font-size:1em; font-weight:normal;}\r
+.menublock li ul{margin:0; font-size:1em; font-weight:normal;}\r
 .menublock li ul li{margin-bottom:0;}\r
 .menublock li ul a{font-weight:normal;}\r
 \r
@@ -317,7 +326,7 @@ text-align:center;
 clear:both;\r
 /*width:758px;*/\r
 padding:5px 0;\r
-margin:0 1px;\r
+margin:0;\r
 font-size:0.9em;\r
 color:#f0f0f0;\r
 background:#467aa7;\r
@@ -352,3 +361,33 @@ width: 50%;
 text-align: left;\r
 }\r
 \r
+\r
+/***** CSS FORM ******/\r
+.tabular p{\r
+margin: 0;\r
+padding: 5px 0 8px 0;\r
+padding-left: 180px; /*width of left column containing the label elements*/\r
+height: 1%;\r
+}\r
+\r
+.tabular label{\r
+font-weight: bold;\r
+float: left;\r
+margin-left: -180px; /*width of left column*/\r
+width: 175px; /*width of labels. Should be smaller than left column to create some right \r
+margin*/\r
+}\r
+\r
+.error {\r
+color: #cc0000;\r
+}\r
+\r
+\r
+/*.threepxfix class below:\r
+Targets IE6- ONLY. Adds 3 pixel indent for multi-line form contents.\r
+to account for 3 pixel bug: http://www.positioniseverything.net/explorer/threepxtest.html\r
+*/\r
+\r
+* html .threepxfix{\r
+margin-left: 3px;\r
+}
\ No newline at end of file