Project

General

Profile

Feature #30492 » 30492-v2.diff

Go MAEDA, 2019-08-13 10:52

View differences:

Gemfile (作業コピー)
29 29
  gem "rack-openid"
30 30
end
31 31

  
32
# Optional gem for exporting the gantt to a PNG file, not supported with jruby
33
group :rmagick do
34
  gem "rmagick", "~> 2.16.0"
32
# Optional gem for exporting the gantt to a PNG file
33
group :minimagick do
34
  gem "mini_magick", "~> 4.9.5"
35 35
end
36 36

  
37 37
# Optional Markdown support, not for JRuby
app/controllers/admin_controller.rb (作業コピー)
76 76
      [:text_default_administrator_account_changed, User.default_admin_account_changed?],
77 77
      [:text_file_repository_writable, File.writable?(Attachment.storage_path)],
78 78
      ["#{l :text_plugin_assets_writable} (./public/plugin_assets)",   File.writable?(Redmine::Plugin.public_directory)],
79
      [:text_rmagick_available,        Object.const_defined?(:Magick)],
79
      [:text_minimagick_available,     Object.const_defined?(:MiniMagick)],
80 80
      [:text_convert_available,        Redmine::Thumbnail.convert_available?],
81 81
      [:text_gs_available,             Redmine::Thumbnail.gs_available?]
82 82
    ]
appveyor.yml (作業コピー)
13 13
build: off
14 14

  
15 15
test_script:
16
  - bundle install --without rmagick
16
  - bundle install --without minimagick
17 17
  - set SCMS=mercurial
18 18
  - set RUN_ON_NOT_OFFICIAL=
19 19
  - set RUBY_VER=1.9
config/configuration.yml.example (作業コピー)
179 179
  # the ImageMagick's `convert` binary. Used to generate attachment thumbnails.
180 180
  #imagemagick_convert_command:
181 181

  
182
  # Configuration of RMagick font.
182
  # Configuration of MiniMagick font.
183 183
  #
184
  # Redmine uses RMagick in order to export gantt png.
185
  # You don't need this setting if you don't install RMagick.
184
  # Redmine uses MiniMagick in order to export gantt png.
185
  # You don't need this setting if you don't install MiniMagick.
186 186
  #
187 187
  # In CJK (Chinese, Japanese and Korean),
188 188
  # in order to show CJK characters correctly,
......
195 195
  #
196 196
  # Examples for Japanese:
197 197
  #   Windows:
198
  #     rmagick_font_path: C:\windows\fonts\msgothic.ttc
198
  #     minimagick_font_path: C:\windows\fonts\msgothic.ttc
199 199
  #   Linux:
200
  #     rmagick_font_path: /usr/share/fonts/ipa-mincho/ipam.ttf
200
  #     minimagick_font_path: /usr/share/fonts/ipa-mincho/ipam.ttf
201 201
  #
202
  rmagick_font_path:
202
  minimagick_font_path:
203 203

  
204 204
  # Maximum number of simultaneous AJAX uploads
205 205
  #max_concurrent_ajax_uploads: 2
config/locales/ar.yml (作業コピー)
977 977
  description_all_columns: كل الاعمدة
978 978
  description_issue_category_reassign: اختر التصنيف
979 979
  description_wiki_subpages_reassign: اختر صفحة جديدة
980
  text_rmagick_available: RMagick available (optional)
980
  text_minimagick_available: MiniMagick available (optional)
981 981
  text_wiki_page_destroy_question: This page has %{descendants} child page(s) and descendant(s). What do you want to do?
982 982
  text_repository_usernames_mapping: |-
983 983
    Select or update the Redmine user mapped to each username found in the repository log.
config/locales/az.yml (作業コピー)
897 897
  text_reassign_time_entries: 'Qeydiyyata alınmış vaxtı aşağıdakı tapşırığa keçir:'
898 898
  text_regexp_info: "məsələn: ^[A-Z0-9]+$"
899 899
  text_repository_usernames_mapping: "Saxlayıcının jurnalında tapılan adlarla bağlı olan Redmine istifadəçisini seçin və ya yeniləyin.\nEyni ad və e-poçta sahib olan istifadəçilər Redmine və saxlayıcıda avtomatik əlaqələndirilir."
900
  text_rmagick_available: RMagick istifadəsi mümkündür (opsional olaraq)
900
  text_minimagick_available: MiniMagick istifadəsi mümkündür (opsional olaraq)
901 901
  text_select_mail_notifications: Elektron poçta bildirişlərin göndərilməsi seçim edəcəyiniz hərəkətlərdən asılıdır.
902 902
  text_select_project_modules: 'Layihədə istifadə olunacaq modulları seçin:'
903 903
  text_status_changed_by_changeset: "%{value} redaksiyada reallaşdırılıb."
config/locales/bg.yml (作業コピー)
1180 1180
  text_default_administrator_account_changed: Сменен фабричния администраторски профил
1181 1181
  text_file_repository_writable: Възможност за писане в хранилището с файлове
1182 1182
  text_plugin_assets_writable: Папката на приставките е разрешена за запис
1183
  text_rmagick_available: Наличен RMagick (по избор)
1183
  text_minimagick_available: Наличен MiniMagick (по избор)
1184 1184
  text_convert_available: Наличен ImageMagick convert (по избор)
1185 1185
  text_gs_available: Налична поддръжка за ImageMagick PDF (по избор)
1186 1186
  text_destroy_time_entries_question: "%{hours} часа са отделени на задачите, които искате да изтриете. Какво избирате?"
config/locales/bs.yml (作業コピー)
762 762
  text_default_administrator_account_changed: Tekući administratorski račun je promjenjen
763 763
  text_file_repository_writable: U direktorij sa fajlovima koji su prilozi se može pisati
764 764
  text_plugin_assets_writable: U direktorij plugin-ova se može pisati
765
  text_rmagick_available: RMagick je dostupan (opciono)
765
  text_minimagick_available: MiniMagick je dostupan (opciono)
766 766
  text_destroy_time_entries_question: "%{hours} sahata je prijavljeno na aktivnostima koje želite brisati. Želite li to učiniti ?"
767 767
  text_destroy_time_entries: Izbriši prijavljeno vrijeme
768 768
  text_assign_time_entries_to_project: Dodaj prijavljenoo vrijeme projektu
config/locales/ca.yml (作業コピー)
855 855
  text_default_administrator_account_changed: "S'ha canviat el compte d'administrador predeterminat"
856 856
  text_file_repository_writable: "Es pot escriure en el repositori de fitxers"
857 857
  text_plugin_assets_writable: "Es pot escriure als complements actius"
858
  text_rmagick_available: "RMagick disponible (opcional)"
858
  text_minimagick_available: "MiniMagick disponible (opcional)"
859 859
  text_destroy_time_entries_question: "S'han informat %{hours} hores en els assumptes que aneu a suprimir. Què voleu fer?"
860 860
  text_destroy_time_entries: "Suprimir les hores informades"
861 861
  text_assign_time_entries_to_project: "Assignar les hores informades al projecte"
config/locales/cs.yml (作業コピー)
872 872
  text_default_administrator_account_changed: Výchozí nastavení administrátorského účtu změněno
873 873
  text_file_repository_writable: Povolen zápis do adresáře ukládání souborů
874 874
  text_plugin_assets_writable: Možnost zápisu do adresáře plugin assets
875
  text_rmagick_available: RMagick k dispozici (volitelné)
875
  text_minimagick_available: MiniMagick k dispozici (volitelné)
876 876
  text_destroy_time_entries_question: "U úkolů, které chcete odstranit, je evidováno %{hours} práce. Co chete udělat?"
877 877
  text_destroy_time_entries: Odstranit zaznamenané hodiny.
878 878
  text_assign_time_entries_to_project: Přiřadit zaznamenané hodiny projektu
config/locales/da.yml (作業コピー)
673 673
  text_select_project_modules: 'Vælg moduler er skal være aktiveret for dette projekt:'
674 674
  text_default_administrator_account_changed: Standardadministratorkonto ændret
675 675
  text_file_repository_writable: Filarkiv er skrivbar
676
  text_rmagick_available: RMagick tilgængelig (valgfri)
676
  text_minimagick_available: MiniMagick tilgængelig (valgfri)
677 677

  
678 678
  default_role_manager: Leder
679 679
  default_role_developer: Udvikler
config/locales/de.yml (作業コピー)
1109 1109
  text_regexp_info: z. B. ^[A-Z0-9]+$
1110 1110
  text_repository_identifier_info: 'Kleinbuchstaben (a-z), Ziffern, Binde- und Unterstriche erlaubt.<br />Einmal gespeichert, kann die Kennung nicht mehr geändert werden.'
1111 1111
  text_repository_usernames_mapping: "Bitte legen Sie die Zuordnung der Redmine-Benutzer zu den Benutzernamen der Commit-Nachrichten des Repositories fest.\nBenutzer mit identischen Redmine- und Repository-Benutzernamen oder -E-Mail-Adressen werden automatisch zugeordnet."
1112
  text_rmagick_available: RMagick verfügbar (optional)
1112
  text_minimagick_available: MiniMagick verfügbar (optional)
1113 1113
  text_scm_command: Kommando
1114 1114
  text_scm_command_not_available: SCM-Kommando ist nicht verfügbar. Bitte prüfen Sie die Einstellungen im Administrationspanel.
1115 1115
  text_scm_command_version: Version
config/locales/el.yml (作業コピー)
774 774
  text_default_administrator_account_changed: Ο προκαθορισμένος λογαριασμός του διαχειριστή άλλαξε
775 775
  text_file_repository_writable: Εγγράψιμος κατάλογος συνημμένων
776 776
  text_plugin_assets_writable: Εγγράψιμος κατάλογος plugin assets
777
  text_rmagick_available: Διαθέσιμο RMagick (προαιρετικό)
777
  text_minimagick_available: Διαθέσιμο MiniMagick (προαιρετικό)
778 778
  text_destroy_time_entries_question: "%{hours} δαπανήθηκαν σχετικά με τα θέματα που πρόκειται να διαγράψετε. Τι θέλετε να κάνετε ;"
779 779
  text_destroy_time_entries: Διαγραφή αναφερόμενων ωρών
780 780
  text_assign_time_entries_to_project: Ανάθεση αναφερόμενων ωρών στο έργο
config/locales/en-GB.yml (作業コピー)
886 886
  text_default_administrator_account_changed: Default administrator account changed
887 887
  text_file_repository_writable: Attachments directory writable
888 888
  text_plugin_assets_writable: Plugin assets directory writable
889
  text_rmagick_available: RMagick available (optional)
889
  text_minimagick_available: MiniMagick available (optional)
890 890
  text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do?"
891 891
  text_destroy_time_entries: Delete reported hours
892 892
  text_assign_time_entries_to_project: Assign reported hours to the project
config/locales/en.yml (作業コピー)
1178 1178
  text_default_administrator_account_changed: Default administrator account changed
1179 1179
  text_file_repository_writable: Attachments directory writable
1180 1180
  text_plugin_assets_writable: Plugin assets directory writable
1181
  text_rmagick_available: RMagick available (optional)
1181
  text_minimagick_available: MiniMagick available (optional)
1182 1182
  text_convert_available: ImageMagick convert available (optional)
1183 1183
  text_gs_available: ImageMagick PDF support available (optional)
1184 1184
  text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do?"
config/locales/es-PA.yml (作業コピー)
804 804
  text_reassign_time_entries: 'Reasignar las horas a esta incidencia:'
805 805
  text_regexp_info: ej. ^[A-Z0-9]+$
806 806
  text_repository_usernames_mapping: "Establezca la correspondencia entre los usuarios de Redmine y los presentes en el log del repositorio.\nLos usuarios con el mismo nombre o correo en Redmine y en el repositorio serán asociados automáticamente."
807
  text_rmagick_available: RMagick disponible (opcional)
807
  text_minimagick_available: MiniMagick disponible (opcional)
808 808
  text_select_mail_notifications: Seleccionar los eventos a notificar
809 809
  text_select_project_modules: 'Seleccione los módulos a activar para este proyecto:'
810 810
  text_status_changed_by_changeset: "Aplicado en los cambios %{value}"
config/locales/es.yml (作業コピー)
802 802
  text_reassign_time_entries: 'Reasignar las horas a esta petición:'
803 803
  text_regexp_info: ej. ^[A-Z0-9]+$
804 804
  text_repository_usernames_mapping: "Establezca la correspondencia entre los usuarios de Redmine y los presentes en el log del repositorio.\nLos usuarios con el mismo nombre o correo en Redmine y en el repositorio serán asociados automáticamente."
805
  text_rmagick_available: RMagick disponible (opcional)
805
  text_minimagick_available: MiniMagick disponible (opcional)
806 806
  text_select_mail_notifications: Seleccionar los eventos a notificar
807 807
  text_select_project_modules: 'Seleccione los módulos a activar para este proyecto:'
808 808
  text_status_changed_by_changeset: "Aplicado en los cambios %{value}"
config/locales/et.yml (作業コピー)
948 948
  text_default_administrator_account_changed: "Algne administraatori konto on muudetud"
949 949
  text_file_repository_writable: "Manuste kataloog on kirjutatav"
950 950
  text_plugin_assets_writable: "Lisamoodulite abifailide kataloog on kirjutatav"
951
  text_rmagick_available: "RMagick on kasutatav (ei ole kohustuslik)"
951
  text_minimagick_available: "MiniMagick on kasutatav (ei ole kohustuslik)"
952 952
  text_destroy_time_entries_question: "Kustutatavatele teemadele oli kirja pandud %{hours} tundi. Mis Sa soovid ette võtta?"
953 953
  text_destroy_time_entries: "Kustuta need tunnid"
954 954
  text_assign_time_entries_to_project: "Vii tunnid üle teise projekti"
config/locales/eu.yml (作業コピー)
832 832
  text_default_administrator_account_changed: Lehenetsitako kudeatzaile kontua aldatuta
833 833
  text_file_repository_writable: Eranskinen direktorioan idatz daiteke
834 834
  text_plugin_assets_writable: Pluginen baliabideen direktorioan idatz daiteke
835
  text_rmagick_available: RMagick eskuragarri (aukerazkoa)
835
  text_minimagick_available: MiniMagick eskuragarri (aukerazkoa)
836 836
  text_destroy_time_entries_question: "%{hours} orduei buruz berri eman zen zuk ezabatzera zoazen zereginean. Zer egin nahi duzu?"
837 837
  text_destroy_time_entries: Ezabatu berri emandako orduak
838 838
  text_assign_time_entries_to_project: Berri emandako orduak proiektura esleitu
config/locales/fa.yml (作業コピー)
1131 1131
  text_default_administrator_account_changed: حساب راه‌بری پیش‌فرض تغییر کرده است
1132 1132
  text_file_repository_writable: پوشه پیوست‌ها نوشتنی است
1133 1133
  text_plugin_assets_writable: پوشه دارایی‌های افزونه‌ها نوشتنی است
1134
  text_rmagick_available: RMagick در دست‌رس است (اختیاری)
1134
  text_minimagick_available: MiniMagick در دست‌رس است (اختیاری)
1135 1135
  text_convert_available: ImageMagick convert در دست‌رس است (اختیاری)
1136 1136
  text_destroy_time_entries_question: "%{hours} ساعت روی مسأله‌هایی که می‌خواهید حذف کنید کار گزارش شده است. می‌خواهید چه کنید؟"
1137 1137
  text_destroy_time_entries: ساعت‌های گزارش شده حذف شوند
config/locales/fi.yml (作業コピー)
693 693
  project_module_time_tracking: Ajan seuranta
694 694
  text_file_repository_writable: Kirjoitettava tiedostovarasto
695 695
  text_default_administrator_account_changed: Vakio hallinoijan tunnus muutettu
696
  text_rmagick_available: RMagick saatavilla (valinnainen)
696
  text_minimagick_available: MiniMagick saatavilla (valinnainen)
697 697
  button_configure: Asetukset
698 698
  label_plugins: Lisäosat
699 699
  label_ldap_authentication: LDAP tunnistautuminen
config/locales/fr.yml (作業コピー)
1140 1140
  text_default_administrator_account_changed: Compte administrateur par défaut changé
1141 1141
  text_file_repository_writable: Répertoire de stockage des fichiers accessible en écriture
1142 1142
  text_plugin_assets_writable: Répertoire public des plugins accessible en écriture
1143
  text_rmagick_available: Bibliothèque RMagick présente (optionnelle)
1143
  text_minimagick_available: Bibliothèque MiniMagick présente (optionnelle)
1144 1144
  text_convert_available: Binaire convert de ImageMagick présent (optionel)
1145 1145
  text_destroy_time_entries_question: "%{hours} heures ont été enregistrées sur les demandes à supprimer. Que voulez-vous faire ?"
1146 1146
  text_destroy_time_entries: Supprimer les heures
config/locales/gl.yml (作業コピー)
777 777
  text_reassign_time_entries: 'Reasignar as horas a esta petición:'
778 778
  text_regexp_info: ex. ^[A-Z0-9]+$
779 779
  text_repository_usernames_mapping: "Estableza a correspondencia entre os usuarios de Redmine e os presentes no historial do repositorio.\nOs usuarios co mesmo nome ou correo en Redmine e no repositorio serán asociados automaticamente."
780
  text_rmagick_available: RMagick dispoñíbel (opcional)
780
  text_minimagick_available: MiniMagick dispoñíbel (opcional)
781 781
  text_select_mail_notifications: Seleccionar os eventos a notificar
782 782
  text_select_project_modules: 'Seleccione os módulos a activar para este proxecto:'
783 783
  text_status_changed_by_changeset: "Aplicado nos cambios %{value}"
config/locales/he.yml (作業コピー)
861 861
  text_default_administrator_account_changed: מנהל המערכת ברירת המחדל שונה
862 862
  text_file_repository_writable: מאגר הקבצים ניתן לכתיבה
863 863
  text_plugin_assets_writable: ספרית נכסי תוספים ניתנת לכתיבה
864
  text_rmagick_available: RMagick זמין (רשות)
864
  text_minimagick_available: MiniMagick זמין (רשות)
865 865
  text_destroy_time_entries_question: "%{hours} שעות דווחו על הנושאים שאתה עומד למחוק. מה ברצונך לעשות?"
866 866
  text_destroy_time_entries: מחק שעות שדווחו
867 867
  text_assign_time_entries_to_project: הצב שעות שדווחו לפרויקט הזה
config/locales/hr.yml (作業コピー)
823 823
  text_default_administrator_account_changed: Default administrator account changed
824 824
  text_file_repository_writable: Dozvoljeno pisanje u direktorij za privitke
825 825
  text_plugin_assets_writable: Plugin assets directory writable
826
  text_rmagick_available: RMagick dostupan (nije obavezno)
826
  text_minimagick_available: MiniMagick dostupan (nije obavezno)
827 827
  text_destroy_time_entries_question: "%{hours} sati je prijavljeno za predmete koje želite obrisati. Što ćete učiniti?"
828 828
  text_destroy_time_entries: Obriši prijavljene sate
829 829
  text_assign_time_entries_to_project: Pridruži prijavljene sate projektu
config/locales/hu.yml (作業コピー)
693 693
  text_select_project_modules: 'Válassza ki az engedélyezett modulokat ehhez a projekthez:'
694 694
  text_default_administrator_account_changed: Alapértelmezett adminisztrátor fiók megváltoztatva
695 695
  text_file_repository_writable: Fájl tároló írható
696
  text_rmagick_available: RMagick elérhető (nem kötelező)
696
  text_minimagick_available: MiniMagick elérhető (nem kötelező)
697 697
  text_destroy_time_entries_question: "%{hours} órányi munka van rögzítve a feladatokon, amiket törölni szeretne. Mit szeretne tenni?"
698 698
  text_destroy_time_entries: A rögzített órák törlése
699 699
  text_assign_time_entries_to_project: A rögzített órák hozzárendelése a projekthez
config/locales/id.yml (作業コピー)
803 803
  text_default_administrator_account_changed: Akun administrator default sudah berubah
804 804
  text_file_repository_writable: Direktori yang bisa ditulisi untuk lampiran
805 805
  text_plugin_assets_writable: Direktori yang bisa ditulisi untuk plugin asset
806
  text_rmagick_available: RMagick tersedia (optional)
806
  text_minimagick_available: MiniMagick tersedia (optional)
807 807
  text_destroy_time_entries_question: "%{hours} jam sudah dilaporkan pada masalah yang akan anda hapus. Apa yang akan anda lakukan ?"
808 808
  text_destroy_time_entries: Hapus jam yang terlapor
809 809
  text_assign_time_entries_to_project: Tugaskan jam terlapor pada proyek
config/locales/it.yml (作業コピー)
675 675
  project_module_time_tracking: Time tracking
676 676
  text_file_repository_writable: Repository dei file scrivibile
677 677
  text_default_administrator_account_changed: L'account amministrativo predefinito è stato modificato
678
  text_rmagick_available: RMagick disponibile (opzionale)
678
  text_minimagick_available: MiniMagick disponibile (opzionale)
679 679
  button_configure: Configura
680 680
  label_plugins: Plugin
681 681
  label_ldap_authentication: Autenticazione LDAP
config/locales/ja.yml (作業コピー)
916 916
  text_default_administrator_account_changed: デフォルト管理アカウントが変更済
917 917
  text_file_repository_writable: ファイルリポジトリに書き込み可能
918 918
  text_plugin_assets_writable: Plugin assetsディレクトリに書き込み可能
919
  text_rmagick_available: RMagickが利用可能 (オプション)
919
  text_minimagick_available: MiniMagickが利用可能 (オプション)
920 920
  text_destroy_time_entries_question: このチケットの%{hours}時間分の作業記録の扱いを選択してください。
921 921
  text_destroy_time_entries: 記録された作業時間を含めて削除
922 922
  text_assign_time_entries_to_project: 記録された作業時間をプロジェクト自体に割り当て
config/locales/ko.yml (作業コピー)
814 814
  text_default_administrator_account_changed: 기본 관리자 계정이 변경
815 815
  text_file_repository_writable: 파일 저장소 쓰기 가능
816 816
  text_plugin_assets_writable: 플러그인 전용 디렉토리가 쓰기 가능
817
  text_rmagick_available: RMagick 사용 가능 (선택적)
817
  text_minimagick_available: MiniMagick 사용 가능 (선택적)
818 818
  text_destroy_time_entries_question: 삭제하려는 일감에 %{hours} 시간이 보고되어 있습니다. 어떻게 하시겠습니까?
819 819
  text_destroy_time_entries: 보고된 시간을 삭제하기
820 820
  text_assign_time_entries_to_project: 보고된 시간을 프로젝트에 할당하기
config/locales/lt.yml (作業コピー)
1095 1095
  text_default_administrator_account_changed: Administratoriaus numatytoji paskyra pakeista
1096 1096
  text_file_repository_writable: Į failų saugyklą saugoti galima (RW)
1097 1097
  text_plugin_assets_writable: Į įskiepių katalogą įrašyti galima
1098
  text_rmagick_available: RMagick pasiekiamas (pasirinktinai)
1098
  text_minimagick_available: MiniMagick pasiekiamas (pasirinktinai)
1099 1099
  text_convert_available: ImageMagick konvertavimas galimas (pasirinktinai)
1100 1100
  text_destroy_time_entries_question: "Naikinamam darbui priskirta %{hours} valandų. Ką norite su jomis daryti?"
1101 1101
  text_destroy_time_entries: Ištrinti įrašytas valandas
config/locales/lv.yml (作業コピー)
829 829
  text_default_administrator_account_changed: Noklusētais administratora konts mainīts
830 830
  text_file_repository_writable: Pielikumu direktorijā atļauts rakstīt
831 831
  text_plugin_assets_writable: Spraudņu kataloga direktorijā atļauts rakstīt
832
  text_rmagick_available: "RMagick pieejams (neobligāts)"
832
  text_minimagick_available: "MiniMagick pieejams (neobligāts)"
833 833
  text_destroy_time_entries_question: "%{hours} stundas tika ziņotas par uzdevumu, ko vēlaties dzēst. Ko darīt?"
834 834
  text_destroy_time_entries: Dzēst ziņotās stundas
835 835
  text_assign_time_entries_to_project: Piešķirt ziņotās stundas projektam
config/locales/mk.yml (作業コピー)
851 851
  text_default_administrator_account_changed: Default administrator account changed
852 852
  text_file_repository_writable: Во папката за прилози може да се запишува
853 853
  text_plugin_assets_writable: Во папката за додатоци може да се запишува
854
  text_rmagick_available: RMagick available (незадолжително)
854
  text_minimagick_available: MiniMagick available (незадолжително)
855 855
  text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do ?"
856 856
  text_destroy_time_entries: Delete reported hours
857 857
  text_assign_time_entries_to_project: Додели ги пријавените часови на проектот
config/locales/mn.yml (作業コピー)
835 835
  text_default_administrator_account_changed: Стандарт администраторын бүртгэл өөрчлөгдлөө
836 836
  text_file_repository_writable: Хавсралт файл хадгалах хавтас руу бичих эрхтэй
837 837
  text_plugin_assets_writable: Плагин модулийн ассет хавтас руу бичих эрхтэй
838
  text_rmagick_available: RMagick суулгагдсан (заавал биш)
838
  text_minimagick_available: MiniMagick суулгагдсан (заавал биш)
839 839
  text_destroy_time_entries_question: "Таны устгах гэж байгаа асуудлууд дээр нийт %{hours} цаг зарцуулсан юм байна, та яах вэ ?"
840 840
  text_destroy_time_entries: Мэдэгдсэн цагуудыг устгах
841 841
  text_assign_time_entries_to_project: Мэдэгдсэн асуудлуудыг төсөлд оноох
config/locales/nl.yml (作業コピー)
747 747
  text_reassign_time_entries: 'Gerapporteerde uren opnieuw toewijzen:'
748 748
  text_regexp_info: bv. ^[A-Z0-9]+$
749 749
  text_repository_usernames_mapping: "Koppel de Redmine-gebruikers aan gebruikers in de repository log.\nGebruikers met dezelfde Redmine en repository gebruikersnaam of e-mail worden automatisch gekoppeld."
750
  text_rmagick_available: RMagick beschikbaar (optioneel)
750
  text_minimagick_available: MiniMagick beschikbaar (optioneel)
751 751
  text_select_mail_notifications: Selecteer acties waarvoor mededelingen via e-mail moeten worden verstuurd.
752 752
  text_select_project_modules: 'Selecteer de modules die u wilt gebruiken voor dit project:'
753 753
  text_status_changed_by_changeset: "Toegepast in changeset %{value}."
config/locales/no.yml (作業コピー)
665 665
  text_select_project_modules: 'Velg moduler du vil aktivere for dette prosjektet:'
666 666
  text_default_administrator_account_changed: Standard administrator-konto er endret
667 667
  text_file_repository_writable: Fil-arkivet er skrivbart
668
  text_rmagick_available: RMagick er tilgjengelig (valgfritt)
668
  text_minimagick_available: MiniMagick er tilgjengelig (valgfritt)
669 669
  text_destroy_time_entries_question: "%{hours} timer er ført på sakene du er i ferd med å slette. Hva vil du gjøre ?"
670 670
  text_destroy_time_entries: Slett førte timer
671 671
  text_assign_time_entries_to_project: Overfør førte timer til prosjektet
config/locales/pl.yml (作業コピー)
775 775
  text_reassign_time_entries: 'Przepnij przepracowany czas do tego zagadnienia:'
776 776
  text_regexp_info: np. ^[A-Z0-9]+$
777 777
  text_repository_usernames_mapping: "Wybierz lub uaktualnij przyporządkowanie użytkowników Redmine do użytkowników repozytorium.\nUżytkownicy z taką samą nazwą lub adresem e-mail są przyporządkowani automatycznie."
778
  text_rmagick_available: RMagick dostępne (opcjonalnie)
778
  text_minimagick_available: MiniMagick dostępne (opcjonalnie)
779 779
  text_select_mail_notifications: Zaznacz czynności przy których użytkownik powinien być powiadomiony e-mailem.
780 780
  text_select_project_modules: 'Wybierz moduły do aktywacji w tym projekcie:'
781 781
  text_status_changed_by_changeset: "Zastosowane w zmianach %{value}."
config/locales/pt-BR.yml (作業コピー)
709 709
  text_select_project_modules: 'Selecione módulos para habilitar para este projeto:'
710 710
  text_default_administrator_account_changed: Conta padrão do administrador alterada
711 711
  text_file_repository_writable: Repositório com permissão de escrita
712
  text_rmagick_available: RMagick disponível (opcional)
712
  text_minimagick_available: MiniMagick disponível (opcional)
713 713
  text_destroy_time_entries_question: "%{hours} horas de trabalho foram registradas nas tarefas que você está excluindo. O que você deseja fazer?"
714 714
  text_destroy_time_entries: Excluir horas de trabalho
715 715
  text_assign_time_entries_to_project: Atribuir estas horas de trabalho para outro projeto
config/locales/pt.yml (作業コピー)
694 694
  text_select_project_modules: 'Selecione os módulos a ativar para este projeto:'
695 695
  text_default_administrator_account_changed: Conta por omissão de administrador alterada.
696 696
  text_file_repository_writable: Repositório de ficheiros com permissões de escrita
697
  text_rmagick_available: RMagick disponível (opcional)
697
  text_minimagick_available: MiniMagick disponível (opcional)
698 698
  text_destroy_time_entries_question: "%{hours} horas de trabalho foram atribuídas a estas tarefas que vai apagar. O que deseja fazer?"
699 699
  text_destroy_time_entries: Apagar as horas
700 700
  text_assign_time_entries_to_project: Atribuir as horas ao projeto
config/locales/ro.yml (作業コピー)
752 752
  text_default_administrator_account_changed: S-a schimbat contul administratorului implicit
753 753
  text_file_repository_writable: Se poate scrie în directorul de atașamente
754 754
  text_plugin_assets_writable: Se poate scrie în directorul de plugin-uri
755
  text_rmagick_available: Este disponibil RMagick (opțional)
755
  text_minimagick_available: Este disponibil MiniMagick (opțional)
756 756
  text_destroy_time_entries_question: "%{hours} ore sunt înregistrate la tichetele pe care doriți să le ștergeți. Ce doriți sa faceți?"
757 757
  text_destroy_time_entries: Șterge orele înregistrate
758 758
  text_assign_time_entries_to_project: Atribuie orele la proiect
config/locales/ru.yml (作業コピー)
907 907
  text_reassign_time_entries: 'Перенести зарегистрированное время на следующую задачу:'
908 908
  text_regexp_info: "например: ^[A-Z0-9]+$"
909 909
  text_repository_usernames_mapping: "Выберите или обновите пользователя Redmine, связанного с найденными именами в журнале хранилища.\nПользователи с одинаковыми именами или email в Redmine и хранилище связываются автоматически."
910
  text_rmagick_available: Доступно использование RMagick (опционально)
910
  text_minimagick_available: Доступно использование MiniMagick (опционально)
911 911
  text_select_mail_notifications: Выберите действия, при которых будет отсылаться уведомление на электронную почту.
912 912
  text_select_project_modules: 'Выберите модули, которые будут использованы в проекте:'
913 913
  text_status_changed_by_changeset: "Реализовано в %{value} редакции."
config/locales/sk.yml (作業コピー)
667 667
  text_select_project_modules: 'Vybrať moduly povolené v tomto projekte:'
668 668
  text_default_administrator_account_changed: Predvolené nastavenie administrátorského účtu bolo zmenené
669 669
  text_file_repository_writable: Povolený zápis do priečinka s prílohami
670
  text_rmagick_available: RMagick k dispozícii (voliteľné)
670
  text_minimagick_available: MiniMagick k dispozícii (voliteľné)
671 671
  text_destroy_time_entries_question: Pri úlohách, ktoré chcete odstrániť, je zaznamenaných %{hours} hodín práce. Čo si želáte urobiť?
672 672
  text_destroy_time_entries: Odstrániť zaznamenané hodiny
673 673
  text_assign_time_entries_to_project: Priradiť zaznamenané hodiny k projektu
config/locales/sl.yml (作業コピー)
738 738
  text_select_project_modules: 'Izberite module, ki jih želite omogočiti za ta projekt:'
739 739
  text_default_administrator_account_changed: Spremenjen privzeti administratorski račun
740 740
  text_file_repository_writable: Omogočeno pisanje v shrambo datotek
741
  text_rmagick_available: RMagick je na voljo(neobvezno)
741
  text_minimagick_available: MiniMagick je na voljo(neobvezno)
742 742
  text_destroy_time_entries_question: "%{hours} ur je bilo opravljenih na zahtevku, ki ga želite izbrisati. Kaj želite storiti?"
743 743
  text_destroy_time_entries: Izbriši opravljene ure
744 744
  text_assign_time_entries_to_project: Predaj opravljene ure projektu
config/locales/sq.yml (作業コピー)
929 929
  text_default_administrator_account_changed: Default administrator account changed
930 930
  text_file_repository_writable: Attachments directory writable
931 931
  text_plugin_assets_writable: Plugin assets directory writable
932
  text_rmagick_available: RMagick available (optional)
932
  text_minimagick_available: MiniMagick available (optional)
933 933
  text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do?"
934 934
  text_destroy_time_entries: Delete reported hours
935 935
  text_assign_time_entries_to_project: Assign reported hours to the project
config/locales/sr-YU.yml (作業コピー)
851 851
  text_default_administrator_account_changed: Podrazumevani administratorski nalog je promenjen
852 852
  text_file_repository_writable: Fascikla priloženih datoteka je upisiva
853 853
  text_plugin_assets_writable: Fascikla elemenata dodatnih komponenti je upisiva
854
  text_rmagick_available: RMagick je dostupan (opciono)
854
  text_minimagick_available: MiniMagick je dostupan (opciono)
855 855
  text_destroy_time_entries_question: "%{hours} sati je prijavljeno za ovaj problem koji želite izbrisati. Šta želite da uradite?"
856 856
  text_destroy_time_entries: Izbriši prijavljene sate
857 857
  text_assign_time_entries_to_project: Dodeli prijavljene sate projektu
config/locales/sr.yml (作業コピー)
849 849
  text_default_administrator_account_changed: Подразумевани администраторски налог је промењен
850 850
  text_file_repository_writable: Фасцикла приложених датотека је уписива
851 851
  text_plugin_assets_writable: Фасцикла елемената додатних компоненти је уписива
852
  text_rmagick_available: RMagick је доступан (опционо)
852
  text_minimagick_available: MiniMagick је доступан (опционо)
853 853
  text_destroy_time_entries_question: "%{hours} сати је пријављено за овај проблем који желите избрисати. Шта желите да урадите?"
854 854
  text_destroy_time_entries: Избриши пријављене сате
855 855
  text_assign_time_entries_to_project: Додели пријављене сате пројекту
config/locales/sv.yml (作業コピー)
1031 1031
  text_default_administrator_account_changed: Standardadministratörens konto ändrat
1032 1032
  text_file_repository_writable: Arkivet för bifogade filer är skrivbart
1033 1033
  text_plugin_assets_writable: Arkivet för plug-ins är skrivbart
1034
  text_rmagick_available: RMagick tillgängligt (ej obligatoriskt)
1034
  text_minimagick_available: MiniMagick tillgängligt (ej obligatoriskt)
1035 1035
  text_destroy_time_entries_question: "%{hours} timmar har rapporterats på ärendena du är på väg att ta bort. Vad vill du göra ?"
1036 1036
  text_destroy_time_entries: Ta bort rapporterade timmar
1037 1037
  text_assign_time_entries_to_project: Tilldela rapporterade timmar till projektet
config/locales/th.yml (作業コピー)
669 669
  text_select_project_modules: 'เลือกส่วนประกอบที่ต้องการใช้งานสำหรับโครงการนี้:'
670 670
  text_default_administrator_account_changed: ค่าเริ่มต้นของบัญชีผู้บริหารจัดการถูกเปลี่ยนแปลง
671 671
  text_file_repository_writable: ที่เก็บต้นฉบับสามารถเขียนได้
672
  text_rmagick_available: RMagick มีให้ใช้ (เป็นตัวเลือก)
672
  text_minimagick_available: MiniMagick มีให้ใช้ (เป็นตัวเลือก)
673 673
  text_destroy_time_entries_question: "%{hours} ชั่วโมงที่ถูกแจ้งในปัญหานี้จะโดนลบ. คุณต้องการทำอย่างไร?"
674 674
  text_destroy_time_entries: ลบเวลาที่รายงานไว้
675 675
  text_assign_time_entries_to_project: ระบุเวลาที่ใช้ในโครงการนี้
config/locales/tr.yml (作業コピー)
684 684
  text_select_project_modules: 'Bu proje için etkinleştirmek istediğiniz modülleri seçin:'
685 685
  text_default_administrator_account_changed: Varsayılan yönetici hesabı değişti
686 686
  text_file_repository_writable: Dosya deposu yazılabilir
687
  text_rmagick_available: RMagick Kullanılabilir (isteğe bağlı)
687
  text_minimagick_available: MiniMagick Kullanılabilir (isteğe bağlı)
688 688
  text_destroy_time_entries_question: Silmek üzere olduğunuz işler üzerine %{hours} saat raporlandı.Ne yapmak istersiniz ?
689 689
  text_destroy_time_entries: Raporlanmış süreleri sil
690 690
  text_assign_time_entries_to_project: Raporlanmış süreleri projeye ata
config/locales/uk.yml (作業コピー)
686 686
  project_module_time_tracking: Відстеження часу
687 687
  text_file_repository_writable: Сховище файлів доступне для записів
688 688
  text_default_administrator_account_changed: Обліковий запис адміністратора по замовчуванню змінений
689
  text_rmagick_available: Доступно використання RMagick (опційно)
689
  text_minimagick_available: Доступно використання MiniMagick (опційно)
690 690
  button_configure: Налаштування
691 691
  label_plugins: Модулі
692 692
  label_ldap_authentication: Авторизація за допомогою LDAP
config/locales/vi.yml (作業コピー)
738 738
  text_select_project_modules: 'Chọn các module cho dự án:'
739 739
  text_default_administrator_account_changed: Thay đổi tài khoản quản trị mặc định
740 740
  text_file_repository_writable: Cho phép ghi thư mục đính kèm
741
  text_rmagick_available: Trạng thái RMagick
741
  text_minimagick_available: Trạng thái MiniMagick
742 742
  text_destroy_time_entries_question: "Thời gian %{hours} giờ đã báo cáo trong vấn đề bạn định xóa. Bạn muốn làm gì tiếp ?"
743 743
  text_destroy_time_entries: Xóa thời gian báo cáo
744 744
  text_assign_time_entries_to_project: Gán thời gian báo cáo cho dự án
config/locales/zh-TW.yml (作業コピー)
1217 1217
  text_default_administrator_account_changed: 已變更預設管理員帳號內容
1218 1218
  text_file_repository_writable: 可寫入附加檔案目錄
1219 1219
  text_plugin_assets_writable: 可寫入外掛程式目錄
1220
  text_rmagick_available: 可使用 RMagick (選配)
1220
  text_minimagick_available: 可使用 MiniMagick (選配)
1221 1221
  text_convert_available: 可使用 ImageMagick 轉換圖片格式 (選配)
1222 1222
  text_destroy_time_entries_question: 您即將刪除的議題已報工 %{hours} 小時. 您的選擇是?
1223 1223
  text_destroy_time_entries: 刪除已報工的時數
config/locales/zh.yml (作業コピー)
872 872
  text_default_administrator_account_changed: 默认的管理员帐号已改变
873 873
  text_file_repository_writable: 附件路径可写
874 874
  text_plugin_assets_writable: 插件的附件路径可写
875
  text_rmagick_available: RMagick 可用(可选的)
875
  text_minimagick_available: MiniMagick 可用(可选的)
876 876
  text_destroy_time_entries_question: 您要删除的问题已经上报了 %{hours} 小时的工作量。您想进行那种操作?
877 877
  text_destroy_time_entries: 删除上报的工作量
878 878
  text_assign_time_entries_to_project: 将已上报的工作量提交到项目中
lib/redmine/helpers/gantt.rb (作業コピー)
359 359
      end
360 360

  
361 361
      # Generates a gantt image
362
      # Only defined if RMagick is avalaible
362
      # Only defined if MiniMagick is avalaible
363 363
      def to_image(format='PNG')
364 364
        date_to = (@date_from >> @months) - 1
365 365
        show_weeks = @zoom > 1
......
372 372
        g_height = 20 * number_of_rows + 30
373 373
        headers_height = (show_weeks ? 2 * header_height : header_height)
374 374
        height = g_height + headers_height
375
        imgl = Magick::ImageList.new
376
        imgl.new_image(subject_width + g_width + 1, height)
377
        gc = Magick::Draw.new
378
        gc.font = Redmine::Configuration['rmagick_font_path'] || ""
379
        # Subjects
380
        gc.stroke('transparent')
381
        subjects(:image => gc, :top => (headers_height + 20), :indent => 4, :format => :image)
382
        # Months headers
383
        month_f = @date_from
384
        left = subject_width
385
        @months.times do
386
          width = ((month_f >> 1) - month_f) * zoom
387
          gc.fill('white')
388
          gc.stroke('grey')
389
          gc.stroke_width(1)
390
          gc.rectangle(left, 0, left + width, height)
391
          gc.fill('black')
375
        # TODO: Remove rmagick_font_path in a later version
376
        Rails.logger.warn('rmagick_font_path option is deprecated. Use minimagick_font_path instead.') \
377
          unless Redmine::Configuration['rmagick_font_path'].nil?
378
        font_path = Redmine::Configuration['minimagick_font_path'].presence || Redmine::Configuration['rmagick_font_path'].presence
379

  
380
        img = MiniMagick::Image.create(".#{format}", false)
381
        MiniMagick::Tool::Convert.new do |gc|
382
          gc.size('%dx%d' % [subject_width + g_width + 1, height])
383
          gc.xc('white')
384
          gc.font(font_path) if font_path.present?
385
          # Subjects
392 386
          gc.stroke('transparent')
393
          gc.stroke_width(1)
394
          gc.text(left.round + 8, 14, "#{month_f.year}-#{month_f.month}")
395
          left = left + width
396
          month_f = month_f >> 1
397
        end
398
        # Weeks headers
399
        if show_weeks
387
          subjects(:image => gc, :top => (headers_height + 20), :indent => 4, :format => :image)
388
          # Months headers
389
          month_f = @date_from
400 390
          left = subject_width
401
          height = header_height
402
          if @date_from.cwday == 1
403
            # date_from is monday
404
            week_f = date_from
405
          else
406
            # find next monday after date_from
407
            week_f = @date_from + (7 - @date_from.cwday + 1)
408
            width = (7 - @date_from.cwday + 1) * zoom
391
          @months.times do
392
            width = ((month_f >> 1) - month_f) * zoom
409 393
            gc.fill('white')
410 394
            gc.stroke('grey')
411
            gc.stroke_width(1)
412
            gc.rectangle(left, header_height, left + width, 2 * header_height + g_height - 1)
413
            left = left + width
414
          end
415
          while week_f <= date_to
416
            width = (week_f + 6 <= date_to) ? 7 * zoom : (date_to - week_f + 1) * zoom
417
            gc.fill('white')
418
            gc.stroke('grey')
419
            gc.stroke_width(1)
420
            gc.rectangle(left.round, header_height, left.round + width, 2 * header_height + g_height - 1)
395
            gc.strokewidth(1)
396
            gc.draw('rectangle %d,%d %d,%d' % [
397
              left, 0, left + width, height
398
            ])
421 399
            gc.fill('black')
422 400
            gc.stroke('transparent')
423
            gc.stroke_width(1)
424
            gc.text(left.round + 2, header_height + 14, week_f.cweek.to_s)
401
            gc.strokewidth(1)
402
            gc.draw('text %d,%d %s' % [
403
              left.round + 8, 14, Redmine::Utils::Shell::shell_quote("#{month_f.year}-#{month_f.month}")
404
            ])
425 405
            left = left + width
426
            week_f = week_f + 7
406
            month_f = month_f >> 1
427 407
          end
428
        end
429
        # Days details (week-end in grey)
430
        if show_days
431
          left = subject_width
432
          height = g_height + header_height - 1
433
          wday = @date_from.cwday
434
          (date_to - @date_from + 1).to_i.times do
435
            width =  zoom
436
            gc.fill(non_working_week_days.include?(wday) ? '#eee' : 'white')
437
            gc.stroke('#ddd')
438
            gc.stroke_width(1)
439
            gc.rectangle(left, 2 * header_height, left + width, 2 * header_height + g_height - 1)
440
            left = left + width
441
            wday = wday + 1
442
            wday = 1 if wday > 7
408
          # Weeks headers
409
          if show_weeks
410
            left = subject_width
411
            height = header_height
412
            if @date_from.cwday == 1
413
              # date_from is monday
414
              week_f = date_from
415
            else
416
              # find next monday after date_from
417
              week_f = @date_from + (7 - @date_from.cwday + 1)
418
              width = (7 - @date_from.cwday + 1) * zoom
419
              gc.fill('white')
420
              gc.stroke('grey')
421
              gc.strokewidth(1)
422
              gc.draw('rectangle %d,%d %d,%d' % [
423
                left, header_height, left + width, 2 * header_height + g_height - 1
424
              ])
425
              left = left + width
426
            end
427
            while week_f <= date_to
428
              width = (week_f + 6 <= date_to) ? 7 * zoom : (date_to - week_f + 1) * zoom
429
              gc.fill('white')
430
              gc.stroke('grey')
431
              gc.strokewidth(1)
432
              gc.draw('rectangle %d,%d %d,%d' % [
433
                left.round, header_height, left.round + width, 2 * header_height + g_height - 1
434
              ])
435
              gc.fill('black')
436
              gc.stroke('transparent')
437
              gc.strokewidth(1)
438
              gc.draw('text %d,%d %s' % [
439
                left.round + 2, header_height + 14, Redmine::Utils::Shell::shell_quote(week_f.cweek.to_s)
440
              ])
441
              left = left + width
442
              week_f = week_f + 7
443
            end
443 444
          end
445
          # Days details (week-end in grey)
446
          if show_days
447
            left = subject_width
448
            height = g_height + header_height - 1
449
            wday = @date_from.cwday
450
            (date_to - @date_from + 1).to_i.times do
451
              width =  zoom
452
              gc.fill(non_working_week_days.include?(wday) ? '#eee' : 'white')
453
              gc.stroke('#ddd')
454
              gc.strokewidth(1)
455
              gc.draw('rectangle %d,%d %d,%d' % [
456
                left, 2 * header_height, left + width, 2 * header_height + g_height - 1
457
              ])
458
              left = left + width
459
              wday = wday + 1
460
              wday = 1 if wday > 7
461
            end
462
          end
463
          # border
464
          gc.fill('transparent')
465
          gc.stroke('grey')
466
          gc.strokewidth(1)
467
          gc.draw('rectangle %d,%d %d,%d' % [
468
            0, 0, subject_width + g_width, headers_height
469
          ])
470
          gc.stroke('black')
471
          gc.draw('rectangle %d,%d %d,%d' % [
472
            0, 0, subject_width + g_width, g_height + headers_height - 1
473
          ])
474
          # content
475
          top = headers_height + 20
476
          gc.stroke('transparent')
477
          lines(:image => gc, :top => top, :zoom => zoom,
478
                :subject_width => subject_width, :format => :image)
479
          # today red line
480
          if User.current.today >= @date_from and User.current.today <= date_to
481
            gc.stroke('red')
482
            x = (User.current.today - @date_from + 1) * zoom + subject_width
483
            gc.draw('line %g,%g %g,%g' % [
484
              x, headers_height, x, headers_height + g_height - 1
485
            ])
486
          end
487
          gc << img.path
444 488
        end
445
        # border
446
        gc.fill('transparent')
447
        gc.stroke('grey')
448
        gc.stroke_width(1)
449
        gc.rectangle(0, 0, subject_width + g_width, headers_height)
450
        gc.stroke('black')
451
        gc.rectangle(0, 0, subject_width + g_width, g_height + headers_height - 1)
452
        # content
453
        top = headers_height + 20
454
        gc.stroke('transparent')
455
        lines(:image => gc, :top => top, :zoom => zoom,
456
              :subject_width => subject_width, :format => :image)
457
        # today red line
458
        if User.current.today >= @date_from and User.current.today <= date_to
459
          gc.stroke('red')
460
          x = (User.current.today - @date_from + 1) * zoom + subject_width
461
          gc.line(x, headers_height, x, headers_height + g_height - 1)
462
        end
463
        gc.draw(imgl)
464
        imgl.format = format
465
        imgl.to_blob
466
      end if Object.const_defined?(:Magick)
489
        img.to_blob
490
      ensure
491
        img.destroy! if img
492
      end if Object.const_defined?(:MiniMagick)
467 493

  
468 494
      def to_pdf
469 495
        pdf = ::Redmine::Export::PDF::ITCPDF.new(current_language)
......
775 801
      def image_subject(params, subject, options={})
776 802
        params[:image].fill('black')
777 803
        params[:image].stroke('transparent')
778
        params[:image].stroke_width(1)
779
        params[:image].text(params[:indent], params[:top] + 2, subject)
804
        params[:image].strokewidth(1)
805
        params[:image].draw('text %d,%d %s' % [
806
          params[:indent], params[:top] + 2, Redmine::Utils::Shell::shell_quote(subject)
807
        ])
780 808
      end
781 809

  
782 810
      def issue_relations(issue)
......
962 990
        # Renders the task bar, with progress and late
963 991
        if coords[:bar_start] && coords[:bar_end]
964 992
          params[:image].fill('#aaa')
965
          params[:image].rectangle(params[:subject_width] + coords[:bar_start],
966
                                   params[:top],
967
                                   params[:subject_width] + coords[:bar_end],
968
                                   params[:top] - height)
993
          params[:image].draw('rectangle %d,%d %d,%d' % [
994
            params[:subject_width] + coords[:bar_start],
995
            params[:top],
996
            params[:subject_width] + coords[:bar_end],
997
            params[:top] - height
998
          ])
969 999
          if coords[:bar_late_end]
970 1000
            params[:image].fill('#f66')
971
            params[:image].rectangle(params[:subject_width] + coords[:bar_start],
972
                                     params[:top],
973
                                     params[:subject_width] + coords[:bar_late_end],
974
                                     params[:top] - height)
1001
            params[:image].draw('rectangle %d,%d %d,%d' % [
1002
              params[:subject_width] + coords[:bar_start],
1003
              params[:top],
1004
              params[:subject_width] + coords[:bar_late_end],
1005
              params[:top] - height
1006
            ])
975 1007
          end
976 1008
          if coords[:bar_progress_end]
977 1009
            params[:image].fill('#00c600')
978
            params[:image].rectangle(params[:subject_width] + coords[:bar_start],
979
                                     params[:top],
980
                                     params[:subject_width] + coords[:bar_progress_end],
981
                                     params[:top] - height)
1010
            params[:image].draw('rectangle %d,%d %d,%d' % [
1011
              params[:subject_width] + coords[:bar_start],
1012
              params[:top],
1013
              params[:subject_width] + coords[:bar_progress_end],
1014
              params[:top] - height
1015
            ])
982 1016
          end
983 1017
        end
984 1018
        # Renders the markers
......
987 1021
            x = params[:subject_width] + coords[:start]
988 1022
            y = params[:top] - height / 2
989 1023
            params[:image].fill('blue')
990
            params[:image].polygon(x - 4, y, x, y - 4, x + 4, y, x, y + 4)
1024
            params[:image].draw('polygon %d,%d %d,%d %d,%d %d,%d' % [
1025
              x - 4, y,
1026
              x, y - 4,
1027
              x + 4, y,
1028
              x, y + 4
1029
            ])
991 1030
          end
992 1031
          if coords[:end]
993 1032
            x = params[:subject_width] + coords[:end] + params[:zoom]
994 1033
            y = params[:top] - height / 2
995 1034
            params[:image].fill('blue')
996
            params[:image].polygon(x - 4, y, x, y - 4, x + 4, y, x, y + 4)
1035
            params[:image].draw('polygon %d,%d %d,%d %d,%d %d,%d' % [
1036
              x - 4, y,
1037
              x, y - 4,
1038
              x + 4, y,
1039
              x, y + 4
1040
            ])
997 1041
          end
998 1042
        end
999 1043
        # Renders the label on the right
1000 1044
        if label
1001 1045
          params[:image].fill('black')
1002
          params[:image].text(params[:subject_width] + (coords[:bar_end] || 0) + 5,
1003
                              params[:top] + 1,
1004
                              label)
1046
          params[:image].draw('text %d,%d %s' % [
1047
            params[:subject_width] + (coords[:bar_end] || 0) + 5, params[:top] + 1, Redmine::Utils::Shell::shell_quote(label)
1048
          ])
1005 1049
        end
1006 1050
      end
1007 1051
    end
lib/redmine.rb (作業コピー)
20 20
require 'redmine/core_ext'
21 21

  
22 22
begin
23
  require 'rmagick' unless Object.const_defined?(:Magick)
23
  require 'mini_magick' unless Object.const_defined?(:MiniMagick)
24 24
rescue LoadError
25
  # RMagick is not available
25
  # MiniMagick is not available
26 26
end
27 27
begin
28 28
  require 'redcarpet' unless Object.const_defined?(:Redcarpet)
test/functional/gantts_controller_test.rb (作業コピー)
155 155
    assert @response.body.starts_with?('%PDF')
156 156
  end
157 157

  
158
  if Object.const_defined?(:Magick)
158
  if Object.const_defined?(:MiniMagick)
159 159
    def test_gantt_should_export_to_png
160 160
      get :show, :params => {
161 161
          :project_id => 1,
(4-4/4)