diff --git a/app/models/version.rb b/app/models/version.rb index 8b01816a..9d824649 100644 --- a/app/models/version.rb +++ b/app/models/version.rb @@ -41,9 +41,13 @@ class Version < ActiveRecord::Base def visible?(user=User.current) user.allowed_to?(:view_issues, self.project) end - + + # When a version started. + # + # Can either be a set date stored in the database or a dynamic one + # based on the earlist start_date of the fixed_issues def start_date - @start_date ||= fixed_issues.minimum('start_date') + @start_date ||= (read_attribute(:start_date) || fixed_issues.minimum('start_date')) end def due_date diff --git a/app/views/projects/settings/_versions.rhtml b/app/views/projects/settings/_versions.rhtml index f9a4dd10..035af587 100644 --- a/app/views/projects/settings/_versions.rhtml +++ b/app/views/projects/settings/_versions.rhtml @@ -2,6 +2,7 @@ + @@ -13,6 +14,7 @@ <% for version in @project.shared_versions.sort %> + diff --git a/app/views/versions/_form.rhtml b/app/views/versions/_form.rhtml index b829cf2f..c151185b 100644 --- a/app/views/versions/_form.rhtml +++ b/app/views/versions/_form.rhtml @@ -5,6 +5,7 @@

<%= f.text_field :description, :size => 60 %>

<%= f.select :status, Version::VERSION_STATUSES.collect {|s| [l("version_status_#{s}"), s]} %>

<%= f.text_field :wiki_page_title, :label => :label_wiki_page, :size => 60, :disabled => @project.wiki.nil? %>

+

<%= f.text_field :start_date, :size => 10 %><%= calendar_for('version_start_date') %>

<%= f.text_field :effective_date, :size => 10 %><%= calendar_for('version_effective_date') %>

<%= f.select :sharing, @version.allowed_sharings.collect {|v| [format_version_sharing(v), v]} %>

diff --git a/app/views/versions/_overview.rhtml b/app/views/versions/_overview.rhtml index 550cf3e7..4211d79f 100644 --- a/app/views/versions/_overview.rhtml +++ b/app/views/versions/_overview.rhtml @@ -1,7 +1,10 @@ -<% if version.completed? %> -

<%= format_date(version.effective_date) %>

-<% elsif version.effective_date %> -

<%= due_date_distance_in_words(version.effective_date) %> (<%= format_date(version.effective_date) %>)

+

+ <%= l(:field_start_date) %> <%= h(format_date(version.start_date)) %> + <%= l(:field_due_date) %> <%= h(format_date(version.due_date)) %> +

+ +<% if !version.completed? && version.due_date %> +

<%= due_date_distance_in_words(version.effective_date) %>

<% end %>

<%=h version.description %>

diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 47e4803c..6bbcf80f 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -252,7 +252,6 @@ bg: field_admin: Администратор field_last_login_on: Последно свързване field_language: Език - field_effective_date: Дата field_password: Парола field_new_password: Нова парола field_password_confirmation: Потвърждение diff --git a/config/locales/bs.yml b/config/locales/bs.yml index 68229f24..984c47f3 100644 --- a/config/locales/bs.yml +++ b/config/locales/bs.yml @@ -241,7 +241,6 @@ bs: field_admin: Administrator field_last_login_on: Posljednja konekcija field_language: Jezik - field_effective_date: Datum field_password: Lozinka field_new_password: Nova lozinka field_password_confirmation: Potvrda diff --git a/config/locales/ca.yml b/config/locales/ca.yml index e9dd73ba..5d67d956 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -253,7 +253,6 @@ ca: field_admin: Administrador field_last_login_on: Última connexió field_language: Idioma - field_effective_date: Data field_password: Contrasenya field_new_password: Contrasenya nova field_password_confirmation: Confirmació diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 39bb5a0f..1fde16c7 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -226,7 +226,6 @@ cs: field_admin: Administrátor field_last_login_on: Poslední přihlášení field_language: Jazyk - field_effective_date: Datum field_password: Heslo field_new_password: Nové heslo field_password_confirmation: Potvrzení diff --git a/config/locales/da.yml b/config/locales/da.yml index da3110c0..35ea4170 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -239,7 +239,6 @@ da: field_admin: Administrator field_last_login_on: Sidste forbindelse field_language: Sprog - field_effective_date: Dato field_password: Kodeord field_new_password: Nyt kodeord field_password_confirmation: Bekræft diff --git a/config/locales/de.yml b/config/locales/de.yml index bcd40156..e8b232a6 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -267,7 +267,6 @@ de: field_admin: Administrator field_last_login_on: Letzte Anmeldung field_language: Sprache - field_effective_date: Datum field_password: Kennwort field_new_password: Neues Kennwort field_password_confirmation: Bestätigung diff --git a/config/locales/el.yml b/config/locales/el.yml index 934caa07..f1928f3e 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -236,7 +236,6 @@ el: field_admin: Διαχειριστής field_last_login_on: Τελευταία σύνδεση field_language: Γλώσσα - field_effective_date: Ημερομηνία field_password: Κωδικός πρόσβασης field_new_password: Νέος κωδικός πρόσβασης field_password_confirmation: Επιβεβαίωση diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index 418b7979..96c98804 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -246,7 +246,7 @@ en-GB: field_admin: Administrator field_last_login_on: Last connection field_language: Language - field_effective_date: Date + field_effective_date: Due date field_password: Password field_new_password: New password field_password_confirmation: Confirmation diff --git a/config/locales/en.yml b/config/locales/en.yml index b55f9bb2..81a4d29c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -252,7 +252,7 @@ en: field_admin: Administrator field_last_login_on: Last connection field_language: Language - field_effective_date: Date + field_effective_date: Due date field_password: Password field_new_password: New password field_password_confirmation: Confirmation diff --git a/config/locales/es.yml b/config/locales/es.yml index 84cb87b1..18fcda01 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -269,7 +269,6 @@ es: field_done_ratio: % Realizado field_downloads: Descargas field_due_date: Fecha fin - field_effective_date: Fecha field_estimated_hours: Tiempo estimado field_field_format: Formato field_filename: Fichero diff --git a/config/locales/eu.yml b/config/locales/eu.yml index c48ec2fc..0292b5d1 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -246,7 +246,6 @@ eu: field_admin: Kudeatzailea field_last_login_on: Azken konexioa field_language: Hizkuntza - field_effective_date: Data field_password: Pasahitza field_new_password: Pasahitz berria field_password_confirmation: Berrespena diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 3705f972..7b9046da 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -247,7 +247,6 @@ fi: field_admin: Ylläpitäjä field_last_login_on: Viimeinen yhteys field_language: Kieli - field_effective_date: Päivä field_password: Salasana field_new_password: Uusi salasana field_password_confirmation: Vahvistus diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 01c172ab..4ee1cf1a 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -259,7 +259,6 @@ fr: field_admin: Administrateur field_last_login_on: "Dernière connexion " field_language: Langue - field_effective_date: Date field_password: Mot de passe field_new_password: Nouveau mot de passe field_password_confirmation: Confirmation diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 51163c77..0c381360 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -246,7 +246,6 @@ gl: field_done_ratio: % Realizado field_downloads: Descargas field_due_date: Data fin - field_effective_date: Data field_estimated_hours: Tempo estimado field_field_format: Formato field_filename: Arquivo diff --git a/config/locales/he.yml b/config/locales/he.yml index 01ac9366..62d2e044 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -255,7 +255,6 @@ he: field_admin: ניהול field_last_login_on: התחברות אחרונה field_language: שפה - field_effective_date: תאריך field_password: סיסמה field_new_password: סיסמה חדשה field_password_confirmation: אישור diff --git a/config/locales/hr.yml b/config/locales/hr.yml index 702db593..c6affbdb 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -242,7 +242,6 @@ hr: field_admin: Administrator field_last_login_on: Zadnja prijava field_language: Primarni jezik - field_effective_date: Datum field_password: Zaporka field_new_password: Nova zaporka field_password_confirmation: Potvrda zaporke diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 82159ad0..0c752aa4 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -245,7 +245,6 @@ field_admin: Adminisztrátor field_last_login_on: Utolsó bejelentkezés field_language: Nyelv - field_effective_date: Dátum field_password: Jelszó field_new_password: Új jelszó field_password_confirmation: Megerősítés diff --git a/config/locales/id.yml b/config/locales/id.yml index 1587f40f..e9b01ba0 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -240,7 +240,6 @@ id: field_admin: Administrator field_last_login_on: Terakhir login field_language: Bahasa - field_effective_date: Tanggal field_password: Kata sandi field_new_password: Kata sandi baru field_password_confirmation: Konfirmasi diff --git a/config/locales/it.yml b/config/locales/it.yml index 456eb830..c4ac1773 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -218,7 +218,6 @@ it: field_admin: Amministratore field_last_login_on: Ultima connessione field_language: Lingua - field_effective_date: Data field_password: Password field_new_password: Nuova password field_password_confirmation: Conferma diff --git a/config/locales/ja.yml b/config/locales/ja.yml index d55c5167..527aab9c 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -274,7 +274,6 @@ ja: field_admin: 管理者 field_last_login_on: 最終接続日 field_language: 言語 - field_effective_date: 期日 field_password: パスワード field_new_password: 新しいパスワード field_password_confirmation: パスワードの確認 diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 019f84ac..bd524a2a 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -284,7 +284,6 @@ ko: field_admin: 관리자 field_last_login_on: 마지막 로그인 field_language: 언어 - field_effective_date: 일자 field_password: 비밀번호 field_new_password: 새 비밀번호 field_password_confirmation: 비밀번호 확인 diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 56026ef4..5836f526 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -295,7 +295,6 @@ lt: field_admin: Administratorius field_last_login_on: Paskutinis ryšys field_language: Kalba - field_effective_date: Data field_password: Slaptažodis field_new_password: Naujas slaptažodis field_password_confirmation: Patvirtinimas diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 73320eec..e2dfc285 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -237,7 +237,6 @@ lv: field_admin: Administrators field_last_login_on: Pēdējo reizi pieslēdzies field_language: Valoda - field_effective_date: Datums field_password: Parole field_new_password: Janā parole field_password_confirmation: Paroles apstiprinājums diff --git a/config/locales/mk.yml b/config/locales/mk.yml index 0cbc914e..caa84c21 100644 --- a/config/locales/mk.yml +++ b/config/locales/mk.yml @@ -250,7 +250,6 @@ mk: field_admin: Администратор field_last_login_on: Последна најава field_language: Јазик - field_effective_date: Дата field_password: Лозинка field_new_password: Нова лозинка field_password_confirmation: Потврда diff --git a/config/locales/mn.yml b/config/locales/mn.yml index 6bf504c5..8425f093 100644 --- a/config/locales/mn.yml +++ b/config/locales/mn.yml @@ -241,7 +241,6 @@ mn: field_admin: Администратор field_last_login_on: Сүүлийн холбоо field_language: Хэл - field_effective_date: Огноо field_password: Нууц үг field_new_password: Шннэ нууц үг field_password_confirmation: Баталгаажуулах diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 389ddb2e..6504094f 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -216,7 +216,6 @@ nl: field_done_ratio: % Gereed field_downloads: Downloads field_due_date: Verwachte datum gereed - field_effective_date: Datum field_estimated_hours: Geschatte tijd field_field_format: Formaat field_filename: Bestand diff --git a/config/locales/no.yml b/config/locales/no.yml index 776dfe97..362b3235 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -216,7 +216,6 @@ field_admin: Administrator field_last_login_on: Sist innlogget field_language: Språk - field_effective_date: Dato field_password: Passord field_new_password: Nytt passord field_password_confirmation: Bekreft passord diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 338eec7e..86409bde 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -233,7 +233,6 @@ pl: field_done_ratio: % Wykonane field_downloads: Pobrań field_due_date: Data oddania - field_effective_date: Data field_estimated_hours: Szacowany czas field_field_format: Format field_filename: Plik diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 5173b8fd..096f4484 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -249,7 +249,6 @@ pt-BR: field_admin: Administrador field_last_login_on: Última conexão field_language: Idioma - field_effective_date: Data field_password: Senha field_new_password: Nova senha field_password_confirmation: Confirmação diff --git a/config/locales/pt.yml b/config/locales/pt.yml index d8474277..985d981f 100644 --- a/config/locales/pt.yml +++ b/config/locales/pt.yml @@ -234,7 +234,6 @@ pt: field_admin: Administrador field_last_login_on: Última visita field_language: Língua - field_effective_date: Data field_password: Palavra-chave field_new_password: Nova palavra-chave field_password_confirmation: Confirmação diff --git a/config/locales/ro.yml b/config/locales/ro.yml index 5ace8afb..e5cc8a9d 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -221,7 +221,6 @@ ro: field_admin: Administrator field_last_login_on: Ultima autentificare în field_language: Limba - field_effective_date: Data field_password: Parola field_new_password: Parola nouă field_password_confirmation: Confirmare diff --git a/config/locales/ru.yml b/config/locales/ru.yml index e42b62f4..1d296ed9 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -317,7 +317,6 @@ ru: field_downloads: Загрузки field_due_date: Дата выполнения field_editable: Редактируемый - field_effective_date: Дата field_estimated_hours: Оцененное время field_field_format: Формат field_filename: Файл diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 55cb83bb..14407b40 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -220,7 +220,6 @@ sk: field_admin: Administrátor field_last_login_on: Posledné prihlásenie field_language: Jazyk - field_effective_date: Dátum field_password: Heslo field_new_password: Nové heslo field_password_confirmation: Potvrdenie diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 74fa1cae..c04c5b36 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -225,7 +225,6 @@ sl: field_admin: Administrator field_last_login_on: Zadnjič povezan(a) field_language: Jezik - field_effective_date: Datum field_password: Geslo field_new_password: Novo geslo field_password_confirmation: Potrditev diff --git a/config/locales/sr-YU.yml b/config/locales/sr-YU.yml index 59411b1f..6dc0340a 100644 --- a/config/locales/sr-YU.yml +++ b/config/locales/sr-YU.yml @@ -250,7 +250,6 @@ sr-YU: field_admin: Administrator field_last_login_on: Poslednje povezivanje field_language: Jezik - field_effective_date: Datum field_password: Lozinka field_new_password: Nova lozinka field_password_confirmation: Potvrda lozinke diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 89b51a2a..3aced1f1 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -250,7 +250,6 @@ sr: field_admin: Администратор field_last_login_on: Последње повезивање field_language: Језик - field_effective_date: Датум field_password: Лозинка field_new_password: Нова лозинка field_password_confirmation: Потврда лозинке diff --git a/config/locales/sv.yml b/config/locales/sv.yml index f08f481c..3b462aa9 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -294,7 +294,6 @@ sv: field_admin: Administratör field_last_login_on: Senaste inloggning field_language: Språk - field_effective_date: Datum field_password: Lösenord field_new_password: Nytt lösenord field_password_confirmation: Bekräfta lösenord diff --git a/config/locales/th.yml b/config/locales/th.yml index b46f7454..b58cd57b 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -222,7 +222,6 @@ th: field_admin: ผู้บริหารจัดการ field_last_login_on: เข้าระบบครั้งสุดท้าย field_language: ภาษา - field_effective_date: วันที่ field_password: รหัสผ่าน field_new_password: รหัสผ่านใหม่ field_password_confirmation: ยืนยันรหัสผ่าน diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 82d33792..40df90da 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -245,7 +245,6 @@ tr: field_admin: Yönetici field_last_login_on: Son Bağlantı field_language: Dil - field_effective_date: Tarih field_password: Parola field_new_password: Yeni Parola field_password_confirmation: Onay diff --git a/config/locales/uk.yml b/config/locales/uk.yml index aec46e55..fa05c456 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -216,7 +216,6 @@ uk: field_admin: Адміністратор field_last_login_on: Останнє підключення field_language: Мова - field_effective_date: Дата field_password: Пароль field_new_password: Новий пароль field_password_confirmation: Підтвердження diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 009296e6..fd2c9e95 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -279,7 +279,6 @@ vi: field_admin: Quản trị field_last_login_on: Kết nối cuối field_language: Ngôn ngữ - field_effective_date: Ngày field_password: Mật mã field_new_password: Mật mã mới field_password_confirmation: Khẳng định lại diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index ae8dac27..220967de 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -334,7 +334,6 @@ field_admin: 管理者 field_last_login_on: 最近連線日期 field_language: 語系 - field_effective_date: 日期 field_password: 目前密碼 field_new_password: 新密碼 field_password_confirmation: 確認新密碼 diff --git a/config/locales/zh.yml b/config/locales/zh.yml index 0f2fda6d..94e51cad 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -257,7 +257,6 @@ zh: field_admin: 管理员 field_last_login_on: 最后登录 field_language: 语言 - field_effective_date: 日期 field_password: 密码 field_new_password: 新密码 field_password_confirmation: 确认 diff --git a/db/migrate/20110314014400_add_start_date_to_versions.rb b/db/migrate/20110314014400_add_start_date_to_versions.rb new file mode 100644 index 00000000..c8651268 --- /dev/null +++ b/db/migrate/20110314014400_add_start_date_to_versions.rb @@ -0,0 +1,9 @@ +class AddStartDateToVersions < ActiveRecord::Migration + def self.up + add_column :versions, :start_date, :date + end + + def self.down + remove_column :versions, :start_date + end +end diff --git a/test/unit/version_test.rb b/test/unit/version_test.rb index 4621ad73..20541468 100644 --- a/test/unit/version_test.rb +++ b/test/unit/version_test.rb @@ -34,6 +34,31 @@ class VersionTest < ActiveSupport::TestCase assert !v.save assert_equal I18n.translate('activerecord.errors.messages.not_a_date'), v.errors.on(:effective_date) end + + context "#start_date" do + context "with no value saved" do + should "be the date of the earlist issue" do + project = Project.find(1) + v = Version.create!(:project => project, :name => 'Progress') + add_issue(v, :estimated_hours => 10, :start_date => '2010-03-01') + Issue.generate_for_project!(project, :subject => 'not assigned', :start_date => '2010-01-01') + + assert_equal '2010-03-01', v.start_date.to_s + end + end + + context "with a value saved" do + should "be the value" do + project = Project.find(1) + v = Version.create!(:project => project, :name => 'Progress', :start_date => '2010-01-05') + add_issue(v, :estimated_hours => 10, :start_date => '2010-03-01') + + assert_equal '2010-01-05', v.start_date.to_s + end + end + + end + def test_progress_should_be_0_with_no_assigned_issues project = Project.find(1)
<%= l(:label_version) %><%= l(:field_start_date) %> <%= l(:field_effective_date) %> <%= l(:field_description) %> <%= l(:field_status) %>
<%= link_to_version version %><%= format_date(version.start_date) %> <%= format_date(version.effective_date) %> <%=h version.description %> <%= l("version_status_#{version.status}") %>