Merged r2218 to r2225 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.8-stable@2230 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
c9d4d3a2be
commit
49b6f9e4dd
@ -86,6 +86,7 @@ class AdminController < ApplicationController
|
|||||||
@flags = {
|
@flags = {
|
||||||
:default_admin_changed => User.find(:first, :conditions => ["login=? and hashed_password=?", 'admin', User.hash_password('admin')]).nil?,
|
:default_admin_changed => User.find(:first, :conditions => ["login=? and hashed_password=?", 'admin', User.hash_password('admin')]).nil?,
|
||||||
:file_repository_writable => File.writable?(Attachment.storage_path),
|
:file_repository_writable => File.writable?(Attachment.storage_path),
|
||||||
|
:plugin_assets_writable => File.writable?(Engines.public_directory),
|
||||||
:rmagick_available => Object.const_defined?(:Magick)
|
:rmagick_available => Object.const_defined?(:Magick)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
@ -175,6 +175,7 @@ class ApplicationController < ActionController::Base
|
|||||||
# TODO: move to model
|
# TODO: move to model
|
||||||
def attach_files(obj, attachments)
|
def attach_files(obj, attachments)
|
||||||
attached = []
|
attached = []
|
||||||
|
unsaved = []
|
||||||
if attachments && attachments.is_a?(Hash)
|
if attachments && attachments.is_a?(Hash)
|
||||||
attachments.each_value do |attachment|
|
attachments.each_value do |attachment|
|
||||||
file = attachment['file']
|
file = attachment['file']
|
||||||
@ -183,7 +184,10 @@ class ApplicationController < ActionController::Base
|
|||||||
:file => file,
|
:file => file,
|
||||||
:description => attachment['description'].to_s.strip,
|
:description => attachment['description'].to_s.strip,
|
||||||
:author => User.current)
|
:author => User.current)
|
||||||
attached << a unless a.new_record?
|
a.new_record? ? (unsaved << a) : (attached << a)
|
||||||
|
end
|
||||||
|
if unsaved.any?
|
||||||
|
flash[:warning] = l(:warning_attachments_not_saved, unsaved.size)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
attached
|
attached
|
||||||
|
@ -147,6 +147,15 @@ module ApplicationHelper
|
|||||||
end
|
end
|
||||||
content
|
content
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Renders flash messages
|
||||||
|
def render_flash_messages
|
||||||
|
s = ''
|
||||||
|
flash.each do |k,v|
|
||||||
|
s << content_tag('div', v, :class => "flash #{k}")
|
||||||
|
end
|
||||||
|
s
|
||||||
|
end
|
||||||
|
|
||||||
# Truncates and returns the string as a single line
|
# Truncates and returns the string as a single line
|
||||||
def truncate_single_line(string, *args)
|
def truncate_single_line(string, *args)
|
||||||
|
@ -40,6 +40,7 @@ class Mailer < ActionMailer::Base
|
|||||||
'Issue-Id' => issue.id,
|
'Issue-Id' => issue.id,
|
||||||
'Issue-Author' => issue.author.login
|
'Issue-Author' => issue.author.login
|
||||||
redmine_headers 'Issue-Assignee' => issue.assigned_to.login if issue.assigned_to
|
redmine_headers 'Issue-Assignee' => issue.assigned_to.login if issue.assigned_to
|
||||||
|
@author = journal.user
|
||||||
recipients issue.recipients
|
recipients issue.recipients
|
||||||
# Watchers in cc
|
# Watchers in cc
|
||||||
cc(issue.watcher_recipients - @recipients)
|
cc(issue.watcher_recipients - @recipients)
|
||||||
@ -209,9 +210,10 @@ class Mailer < ActionMailer::Base
|
|||||||
def create_mail
|
def create_mail
|
||||||
# Removes the current user from the recipients and cc
|
# Removes the current user from the recipients and cc
|
||||||
# if he doesn't want to receive notifications about what he does
|
# if he doesn't want to receive notifications about what he does
|
||||||
if User.current.pref[:no_self_notified]
|
@author ||= User.current
|
||||||
recipients.delete(User.current.mail) if recipients
|
if @author.pref[:no_self_notified]
|
||||||
cc.delete(User.current.mail) if cc
|
recipients.delete(@author.mail) if recipients
|
||||||
|
cc.delete(@author.mail) if cc
|
||||||
end
|
end
|
||||||
# Blind carbon copy recipients
|
# Blind carbon copy recipients
|
||||||
if Setting.bcc_recipients?
|
if Setting.bcc_recipients?
|
||||||
|
@ -60,7 +60,7 @@ class Project < ActiveRecord::Base
|
|||||||
validates_associated :repository, :wiki
|
validates_associated :repository, :wiki
|
||||||
validates_length_of :name, :maximum => 30
|
validates_length_of :name, :maximum => 30
|
||||||
validates_length_of :homepage, :maximum => 255
|
validates_length_of :homepage, :maximum => 255
|
||||||
validates_length_of :identifier, :in => 3..20
|
validates_length_of :identifier, :in => 2..20
|
||||||
validates_format_of :identifier, :with => /^[a-z0-9\-]*$/
|
validates_format_of :identifier, :with => /^[a-z0-9\-]*$/
|
||||||
|
|
||||||
before_destroy :delete_all_members
|
before_destroy :delete_all_members
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
|
|
||||||
<table class="list">
|
<table class="list">
|
||||||
<tr class="odd"><td><%= l(:text_default_administrator_account_changed) %></td><td><%= image_tag (@flags[:default_admin_changed] ? 'true.png' : 'false.png'), :style => "vertical-align:bottom;" %></td></tr>
|
<tr class="odd"><td><%= l(:text_default_administrator_account_changed) %></td><td><%= image_tag (@flags[:default_admin_changed] ? 'true.png' : 'false.png'), :style => "vertical-align:bottom;" %></td></tr>
|
||||||
<tr class="even"><td><%= l(:text_file_repository_writable) %></td><td><%= image_tag (@flags[:file_repository_writable] ? 'true.png' : 'false.png'), :style => "vertical-align:bottom;" %></td></tr>
|
<tr class="even"><td><%= l(:text_file_repository_writable) %> (<%= Attachment.storage_path %>)</td><td><%= image_tag (@flags[:file_repository_writable] ? 'true.png' : 'false.png'), :style => "vertical-align:bottom;" %></td></tr>
|
||||||
|
<tr class="even"><td><%= l(:text_plugin_assets_writable) %> (<%= Engines.public_directory %>)</td><td><%= image_tag (@flags[:plugin_assets_writable] ? 'true.png' : 'false.png'), :style => "vertical-align:bottom;" %></td></tr>
|
||||||
<tr class="odd"><td><%= l(:text_rmagick_available) %></td><td><%= image_tag (@flags[:rmagick_available] ? 'true.png' : 'false.png'), :style => "vertical-align:bottom;" %></td></tr>
|
<tr class="odd"><td><%= l(:text_rmagick_available) %></td><td><%= image_tag (@flags[:rmagick_available] ? 'true.png' : 'false.png'), :style => "vertical-align:bottom;" %></td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
@ -17,3 +17,7 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<div id="preview" class="wiki"></div>
|
<div id="preview" class="wiki"></div>
|
||||||
|
|
||||||
|
<% content_for :header_tags do %>
|
||||||
|
<%= stylesheet_link_tag 'scm' %>
|
||||||
|
<% end %>
|
||||||
|
@ -50,8 +50,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="content">
|
<div id="content">
|
||||||
<%= content_tag('div', flash[:error], :class => 'flash error') if flash[:error] %>
|
<%= render_flash_messages %>
|
||||||
<%= content_tag('div', flash[:notice], :class => 'flash notice') if flash[:notice] %>
|
|
||||||
<%= yield %>
|
<%= yield %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
<p><%= f.text_area :description, :rows => 5, :class => 'wiki-edit' %></p>
|
<p><%= f.text_area :description, :rows => 5, :class => 'wiki-edit' %></p>
|
||||||
<p><%= f.text_field :identifier, :required => true, :disabled => @project.identifier_frozen? %>
|
<p><%= f.text_field :identifier, :required => true, :disabled => @project.identifier_frozen? %>
|
||||||
<% unless @project.identifier_frozen? %>
|
<% unless @project.identifier_frozen? %>
|
||||||
<br /><em><%= l(:text_length_between, 3, 20) %> <%= l(:text_project_identifier_info) %></em>
|
<br /><em><%= l(:text_length_between, 2, 20) %> <%= l(:text_project_identifier_info) %></em>
|
||||||
<% end %></p>
|
<% end %></p>
|
||||||
<p><%= f.text_field :homepage, :size => 60 %></p>
|
<p><%= f.text_field :homepage, :size => 60 %></p>
|
||||||
<p><%= f.check_box :is_public %></p>
|
<p><%= f.check_box :is_public %></p>
|
||||||
|
@ -696,3 +696,5 @@ label_user_activity: "%s's activity"
|
|||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s ago
|
||||||
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||||
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -697,3 +697,5 @@ label_user_activity: "%s's activity"
|
|||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s ago
|
||||||
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||||
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -701,3 +701,5 @@ label_user_activity: "%s's activity"
|
|||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s ago
|
||||||
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||||
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -697,3 +697,5 @@ label_user_activity: "%s's activity"
|
|||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s ago
|
||||||
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||||
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -698,3 +698,5 @@ default_activity_development: Entwicklung
|
|||||||
enumeration_issue_priorities: Ticket-Prioritäten
|
enumeration_issue_priorities: Ticket-Prioritäten
|
||||||
enumeration_doc_categories: Dokumentenkategorien
|
enumeration_doc_categories: Dokumentenkategorien
|
||||||
enumeration_activities: Aktivitäten (Zeiterfassung)
|
enumeration_activities: Aktivitäten (Zeiterfassung)
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -85,6 +85,8 @@ error_scm_command_failed: "An error occurred when trying to access the repositor
|
|||||||
error_scm_annotate: "The entry does not exist or can not be annotated."
|
error_scm_annotate: "The entry does not exist or can not be annotated."
|
||||||
error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
|
error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
|
||||||
|
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
|
||||||
mail_subject_lost_password: Your %s password
|
mail_subject_lost_password: Your %s password
|
||||||
mail_body_lost_password: 'To change your password, click on the following link:'
|
mail_body_lost_password: 'To change your password, click on the following link:'
|
||||||
mail_subject_register: Your %s account activation
|
mail_subject_register: Your %s account activation
|
||||||
@ -660,7 +662,8 @@ text_status_changed_by_changeset: Applied in changeset %s.
|
|||||||
text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s) ?'
|
text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s) ?'
|
||||||
text_select_project_modules: 'Select modules to enable for this project:'
|
text_select_project_modules: 'Select modules to enable for this project:'
|
||||||
text_default_administrator_account_changed: Default administrator account changed
|
text_default_administrator_account_changed: Default administrator account changed
|
||||||
text_file_repository_writable: File repository writable
|
text_file_repository_writable: Attachments directory writable
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
text_rmagick_available: RMagick available (optional)
|
text_rmagick_available: RMagick available (optional)
|
||||||
text_destroy_time_entries_question: %.02f hours were reported on the issues you are about to delete. What do you want to do ?
|
text_destroy_time_entries_question: %.02f hours were reported on the issues you are about to delete. What do you want to do ?
|
||||||
text_destroy_time_entries: Delete reported hours
|
text_destroy_time_entries: Delete reported hours
|
||||||
|
@ -681,3 +681,5 @@ text_user_mail_option: "De los proyectos no seleccionados, sólo recibirá notif
|
|||||||
text_user_wrote: '%s escribió:'
|
text_user_wrote: '%s escribió:'
|
||||||
text_wiki_destroy_confirmation: ¿Seguro que quiere borrar el wiki y todo su contenido?
|
text_wiki_destroy_confirmation: ¿Seguro que quiere borrar el wiki y todo su contenido?
|
||||||
text_workflow_edit: Seleccionar un flujo de trabajo para actualizar
|
text_workflow_edit: Seleccionar un flujo de trabajo para actualizar
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -696,3 +696,5 @@ label_user_activity: "Käyttäjän %s historia"
|
|||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s ago
|
||||||
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||||
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -85,6 +85,8 @@ error_scm_command_failed: "Une erreur s'est produite lors de l'accès au dépôt
|
|||||||
error_scm_annotate: "L'entrée n'existe pas ou ne peut pas être annotée."
|
error_scm_annotate: "L'entrée n'existe pas ou ne peut pas être annotée."
|
||||||
error_issue_not_found_in_project: "La demande n'existe pas ou n'appartient pas à ce projet"
|
error_issue_not_found_in_project: "La demande n'existe pas ou n'appartient pas à ce projet"
|
||||||
|
|
||||||
|
warning_attachments_not_saved: "%d fichier(s) n'ont pas pu être sauvegardés."
|
||||||
|
|
||||||
mail_subject_lost_password: Votre mot de passe %s
|
mail_subject_lost_password: Votre mot de passe %s
|
||||||
mail_body_lost_password: 'Pour changer votre mot de passe, cliquez sur le lien suivant:'
|
mail_body_lost_password: 'Pour changer votre mot de passe, cliquez sur le lien suivant:'
|
||||||
mail_subject_register: Activation de votre compte %s
|
mail_subject_register: Activation de votre compte %s
|
||||||
@ -661,6 +663,7 @@ text_issues_destroy_confirmation: 'Etes-vous sûr de vouloir supprimer le(s) dem
|
|||||||
text_select_project_modules: 'Selectionner les modules à activer pour ce project:'
|
text_select_project_modules: 'Selectionner les modules à activer pour ce project:'
|
||||||
text_default_administrator_account_changed: Compte administrateur par défaut changé
|
text_default_administrator_account_changed: Compte administrateur par défaut changé
|
||||||
text_file_repository_writable: Répertoire de stockage des fichiers accessible en écriture
|
text_file_repository_writable: Répertoire de stockage des fichiers accessible en écriture
|
||||||
|
text_plugin_assets_writable: Répertoire public des plugins accessible en écriture
|
||||||
text_rmagick_available: Bibliothèque RMagick présente (optionnelle)
|
text_rmagick_available: Bibliothèque RMagick présente (optionnelle)
|
||||||
text_destroy_time_entries_question: %.02f heures ont été enregistrées sur les demandes à supprimer. Que voulez-vous faire ?
|
text_destroy_time_entries_question: %.02f heures ont été enregistrées sur les demandes à supprimer. Que voulez-vous faire ?
|
||||||
text_destroy_time_entries: Supprimer les heures
|
text_destroy_time_entries: Supprimer les heures
|
||||||
|
@ -694,3 +694,7 @@ permission_edit_own_messages: ערוך הודעות של עצמך
|
|||||||
permission_delete_own_messages: מחק הודעות של עצמך
|
permission_delete_own_messages: מחק הודעות של עצמך
|
||||||
label_user_activity: "הפעילות של %s"
|
label_user_activity: "הפעילות של %s"
|
||||||
label_updated_time_by: עודכן ע"י %s לפני %s
|
label_updated_time_by: עודכן ע"י %s לפני %s
|
||||||
|
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -697,3 +697,5 @@ label_user_activity: "%s tevékenységei"
|
|||||||
label_updated_time_by: "Módosította %s ennyivel ezelőtt: %s"
|
label_updated_time_by: "Módosította %s ennyivel ezelőtt: %s"
|
||||||
text_diff_truncated: '... A diff fájl vége nem jelenik meg, mert hosszab, mint a megjeleníthető sorok száma.'
|
text_diff_truncated: '... A diff fájl vége nem jelenik meg, mert hosszab, mint a megjeleníthető sorok száma.'
|
||||||
setting_diff_max_lines_displayed: A megjelenítendő sorok száma (maximum) a diff fájloknál
|
setting_diff_max_lines_displayed: A megjelenítendő sorok száma (maximum) a diff fájloknál
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -696,3 +696,5 @@ label_user_activity: "%s's activity"
|
|||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s ago
|
||||||
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||||
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -697,3 +697,5 @@ label_user_activity: "%s's activity"
|
|||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s ago
|
||||||
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||||
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -696,3 +696,5 @@ label_user_activity: "%s의 작업내역"
|
|||||||
label_updated_time_by: %s가 %s 전에 변경
|
label_updated_time_by: %s가 %s 전에 변경
|
||||||
text_diff_truncated: '... 이 차이점은 표시할 수 있는 최대 줄수를 초과해서 이 차이점은 잘렸습니다.'
|
text_diff_truncated: '... 이 차이점은 표시할 수 있는 최대 줄수를 초과해서 이 차이점은 잘렸습니다.'
|
||||||
setting_diff_max_lines_displayed: 차이점보기에 표시할 최대 줄수
|
setting_diff_max_lines_displayed: 차이점보기에 표시할 최대 줄수
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -698,3 +698,5 @@ default_activity_development: Vystymas
|
|||||||
enumeration_issue_priorities: Darbo prioritetai
|
enumeration_issue_priorities: Darbo prioritetai
|
||||||
enumeration_doc_categories: Dokumento kategorijos
|
enumeration_doc_categories: Dokumento kategorijos
|
||||||
enumeration_activities: Veiklos (laiko sekimas)
|
enumeration_activities: Veiklos (laiko sekimas)
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -698,3 +698,5 @@ label_user_activity: "%s's activity"
|
|||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s ago
|
||||||
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||||
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -697,3 +697,5 @@ label_user_activity: "%s's activity"
|
|||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s ago
|
||||||
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||||
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -715,3 +715,5 @@ label_user_activity: "Aktywność: %s"
|
|||||||
label_updated_time_by: Uaktualnione przez %s %s temu
|
label_updated_time_by: Uaktualnione przez %s %s temu
|
||||||
text_diff_truncated: '... Ten plik różnic został przycięty ponieważ jest zbyt długi.'
|
text_diff_truncated: '... Ten plik różnic został przycięty ponieważ jest zbyt długi.'
|
||||||
setting_diff_max_lines_displayed: Maksymalna liczba linii różnicy do pokazania
|
setting_diff_max_lines_displayed: Maksymalna liczba linii różnicy do pokazania
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -697,3 +697,5 @@ label_user_activity: "Atividade de %s"
|
|||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s ago
|
||||||
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||||
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -698,3 +698,5 @@ label_user_activity: "Actividade de %s"
|
|||||||
label_updated_time_by: Actualizado por %s há %s
|
label_updated_time_by: Actualizado por %s há %s
|
||||||
text_diff_truncated: '... Este diff foi truncado porque excede o tamanho máximo que pode ser mostrado.'
|
text_diff_truncated: '... Este diff foi truncado porque excede o tamanho máximo que pode ser mostrado.'
|
||||||
setting_diff_max_lines_displayed: Número máximo de linhas de diff mostradas
|
setting_diff_max_lines_displayed: Número máximo de linhas de diff mostradas
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -696,3 +696,5 @@ label_user_activity: "%s's activity"
|
|||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s ago
|
||||||
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||||
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -730,3 +730,5 @@ text_user_wrote: '%s написал(а):'
|
|||||||
text_wiki_destroy_confirmation: Вы уверены, что хотите удалить данную Wiki и все ее содержимое?
|
text_wiki_destroy_confirmation: Вы уверены, что хотите удалить данную Wiki и все ее содержимое?
|
||||||
text_workflow_edit: Выберите роль и трекер для редактирования последовательности состояний
|
text_workflow_edit: Выберите роль и трекер для редактирования последовательности состояний
|
||||||
|
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -702,3 +702,5 @@ label_user_activity: "%s's activity"
|
|||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s ago
|
||||||
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||||
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -697,3 +697,5 @@ label_user_activity: "%s's activity"
|
|||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s ago
|
||||||
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||||
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -696,4 +696,6 @@ default_activity_development: Utveckling
|
|||||||
|
|
||||||
enumeration_issue_priorities: Ärendeprioriteter
|
enumeration_issue_priorities: Ärendeprioriteter
|
||||||
enumeration_doc_categories: Dokumentkategorier
|
enumeration_doc_categories: Dokumentkategorier
|
||||||
enumeration_activities: Aktiviteter (tidsuppföljning)
|
enumeration_activities: Aktiviteter (tidsuppföljning)
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -699,3 +699,5 @@ label_user_activity: "%s's activity"
|
|||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s ago
|
||||||
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||||
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -697,3 +697,5 @@ label_user_activity: "%s's activity"
|
|||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s ago
|
||||||
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||||
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -698,3 +698,5 @@ label_user_activity: "%s's activity"
|
|||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s ago
|
||||||
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||||
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -699,3 +699,5 @@ label_user_activity: "%s's activity"
|
|||||||
label_updated_time_by: Updated by %s %s ago
|
label_updated_time_by: Updated by %s %s ago
|
||||||
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
|
||||||
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
setting_diff_max_lines_displayed: Max number of diff lines displayed
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -698,3 +698,5 @@ default_activity_development: 開發
|
|||||||
enumeration_issue_priorities: 項目優先權
|
enumeration_issue_priorities: 項目優先權
|
||||||
enumeration_doc_categories: 文件分類
|
enumeration_doc_categories: 文件分類
|
||||||
enumeration_activities: 活動 (時間追蹤)
|
enumeration_activities: 活動 (時間追蹤)
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -698,3 +698,5 @@ default_activity_development: 开发
|
|||||||
enumeration_issue_priorities: 问题优先级
|
enumeration_issue_priorities: 问题优先级
|
||||||
enumeration_doc_categories: 文档类别
|
enumeration_doc_categories: 文档类别
|
||||||
enumeration_activities: 活动(时间跟踪)
|
enumeration_activities: 活动(时间跟踪)
|
||||||
|
text_plugin_assets_writable: Plugin assets directory writable
|
||||||
|
warning_attachments_not_saved: "%d file(s) could not be saved."
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# redMine - project management software
|
# Redmine - project management software
|
||||||
# Copyright (C) 2006-2008 Jean-Philippe Lang
|
# Copyright (C) 2006-2008 Jean-Philippe Lang
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
@ -33,9 +33,18 @@ module Redmine
|
|||||||
msg = imap.fetch(message_id,'RFC822')[0].attr['RFC822']
|
msg = imap.fetch(message_id,'RFC822')[0].attr['RFC822']
|
||||||
logger.debug "Receiving message #{message_id}" if logger && logger.debug?
|
logger.debug "Receiving message #{message_id}" if logger && logger.debug?
|
||||||
if MailHandler.receive(msg, options)
|
if MailHandler.receive(msg, options)
|
||||||
|
logger.debug "Message #{message_id} successfully received" if logger && logger.debug?
|
||||||
|
if imap_options[:move_on_success]
|
||||||
|
imap.copy(message_id, imap_options[:move_on_success])
|
||||||
|
end
|
||||||
imap.store(message_id, "+FLAGS", [:Seen, :Deleted])
|
imap.store(message_id, "+FLAGS", [:Seen, :Deleted])
|
||||||
else
|
else
|
||||||
|
logger.debug "Message #{message_id} can not be processed" if logger && logger.debug?
|
||||||
imap.store(message_id, "+FLAGS", [:Seen])
|
imap.store(message_id, "+FLAGS", [:Seen])
|
||||||
|
if imap_options[:move_on_failure]
|
||||||
|
imap.copy(message_id, imap_options[:move_on_failure])
|
||||||
|
imap.store(message_id, "+FLAGS", [:Deleted])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
imap.expunge
|
imap.expunge
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# redMine - project management software
|
# Redmine - project management software
|
||||||
# Copyright (C) 2006-2008 Jean-Philippe Lang
|
# Copyright (C) 2006-2008 Jean-Philippe Lang
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
@ -71,6 +71,11 @@ Issue attributes control options:
|
|||||||
allow_override=ATTRS allow email content to override attributes
|
allow_override=ATTRS allow email content to override attributes
|
||||||
specified by previous options
|
specified by previous options
|
||||||
ATTRS is a comma separated list of attributes
|
ATTRS is a comma separated list of attributes
|
||||||
|
|
||||||
|
Processed emails control options:
|
||||||
|
move_on_success=MAILBOX move emails that were successfully received
|
||||||
|
to MAILBOX instead of deleting them
|
||||||
|
move_on_failure=MAILBOX move emails that were ignored to MAILBOX
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
# No project specified. Emails MUST contain the 'Project' keyword:
|
# No project specified. Emails MUST contain the 'Project' keyword:
|
||||||
@ -95,7 +100,9 @@ END_DESC
|
|||||||
:ssl => ENV['ssl'],
|
:ssl => ENV['ssl'],
|
||||||
:username => ENV['username'],
|
:username => ENV['username'],
|
||||||
:password => ENV['password'],
|
:password => ENV['password'],
|
||||||
:folder => ENV['folder']}
|
:folder => ENV['folder'],
|
||||||
|
:move_on_success => ENV['move_on_success'],
|
||||||
|
:move_on_failure => ENV['move_on_failure']}
|
||||||
|
|
||||||
options = { :issue => {} }
|
options = { :issue => {} }
|
||||||
%w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] }
|
%w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] }
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 535 B After Width: | Height: | Size: 666 B |
@ -314,6 +314,14 @@ div.flash.notice {
|
|||||||
color: #005f00;
|
color: #005f00;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div.flash.warning {
|
||||||
|
background: url(../images/warning.png) 8px 5px no-repeat;
|
||||||
|
background-color: #FFEBC1;
|
||||||
|
border-color: #FDBF3B;
|
||||||
|
color: #A6750C;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
.nodata, .warning {
|
.nodata, .warning {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background-color: #FFEBC1;
|
background-color: #FFEBC1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user