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 = {
|
||||
: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),
|
||||
:plugin_assets_writable => File.writable?(Engines.public_directory),
|
||||
:rmagick_available => Object.const_defined?(:Magick)
|
||||
}
|
||||
end
|
||||
|
|
|
@ -175,6 +175,7 @@ class ApplicationController < ActionController::Base
|
|||
# TODO: move to model
|
||||
def attach_files(obj, attachments)
|
||||
attached = []
|
||||
unsaved = []
|
||||
if attachments && attachments.is_a?(Hash)
|
||||
attachments.each_value do |attachment|
|
||||
file = attachment['file']
|
||||
|
@ -183,7 +184,10 @@ class ApplicationController < ActionController::Base
|
|||
:file => file,
|
||||
:description => attachment['description'].to_s.strip,
|
||||
: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
|
||||
attached
|
||||
|
|
|
@ -147,6 +147,15 @@ module ApplicationHelper
|
|||
end
|
||||
content
|
||||
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
|
||||
def truncate_single_line(string, *args)
|
||||
|
|
|
@ -40,6 +40,7 @@ class Mailer < ActionMailer::Base
|
|||
'Issue-Id' => issue.id,
|
||||
'Issue-Author' => issue.author.login
|
||||
redmine_headers 'Issue-Assignee' => issue.assigned_to.login if issue.assigned_to
|
||||
@author = journal.user
|
||||
recipients issue.recipients
|
||||
# Watchers in cc
|
||||
cc(issue.watcher_recipients - @recipients)
|
||||
|
@ -209,9 +210,10 @@ class Mailer < ActionMailer::Base
|
|||
def create_mail
|
||||
# Removes the current user from the recipients and cc
|
||||
# if he doesn't want to receive notifications about what he does
|
||||
if User.current.pref[:no_self_notified]
|
||||
recipients.delete(User.current.mail) if recipients
|
||||
cc.delete(User.current.mail) if cc
|
||||
@author ||= User.current
|
||||
if @author.pref[:no_self_notified]
|
||||
recipients.delete(@author.mail) if recipients
|
||||
cc.delete(@author.mail) if cc
|
||||
end
|
||||
# Blind carbon copy recipients
|
||||
if Setting.bcc_recipients?
|
||||
|
|
|
@ -60,7 +60,7 @@ class Project < ActiveRecord::Base
|
|||
validates_associated :repository, :wiki
|
||||
validates_length_of :name, :maximum => 30
|
||||
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\-]*$/
|
||||
|
||||
before_destroy :delete_all_members
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
|
||||
<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="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>
|
||||
</table>
|
||||
|
||||
|
|
|
@ -17,3 +17,7 @@
|
|||
<% end %>
|
||||
|
||||
<div id="preview" class="wiki"></div>
|
||||
|
||||
<% content_for :header_tags do %>
|
||||
<%= stylesheet_link_tag 'scm' %>
|
||||
<% end %>
|
||||
|
|
|
@ -50,8 +50,7 @@
|
|||
</div>
|
||||
|
||||
<div id="content">
|
||||
<%= content_tag('div', flash[:error], :class => 'flash error') if flash[:error] %>
|
||||
<%= content_tag('div', flash[:notice], :class => 'flash notice') if flash[:notice] %>
|
||||
<%= render_flash_messages %>
|
||||
<%= yield %>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<p><%= f.text_area :description, :rows => 5, :class => 'wiki-edit' %></p>
|
||||
<p><%= f.text_field :identifier, :required => true, :disabled => @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>
|
||||
<p><%= f.text_field :homepage, :size => 60 %></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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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_doc_categories: Dokumentenkategorien
|
||||
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_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_body_lost_password: 'To change your password, click on the following link:'
|
||||
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_select_project_modules: 'Select modules to enable for this project:'
|
||||
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_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
|
||||
|
|
|
@ -681,3 +681,5 @@ text_user_mail_option: "De los proyectos no seleccionados, sólo recibirá notif
|
|||
text_user_wrote: '%s escribió:'
|
||||
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_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
|
||||
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
|
||||
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_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_body_lost_password: 'Pour changer votre mot de passe, cliquez sur le lien suivant:'
|
||||
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_default_administrator_account_changed: Compte administrateur par défaut changé
|
||||
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_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
|
||||
|
|
|
@ -694,3 +694,7 @@ permission_edit_own_messages: ערוך הודעות של עצמך
|
|||
permission_delete_own_messages: מחק הודעות של עצמך
|
||||
label_user_activity: "הפעילות של %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"
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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 전에 변경
|
||||
text_diff_truncated: '... 이 차이점은 표시할 수 있는 최대 줄수를 초과해서 이 차이점은 잘렸습니다.'
|
||||
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_doc_categories: Dokumento kategorijos
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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_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
|
||||
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
|
||||
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
|
||||
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
|
||||
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_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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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_doc_categories: 文件分類
|
||||
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_doc_categories: 文档类别
|
||||
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
|
||||
#
|
||||
# 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']
|
||||
logger.debug "Receiving message #{message_id}" if logger && logger.debug?
|
||||
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])
|
||||
else
|
||||
logger.debug "Message #{message_id} can not be processed" if logger && logger.debug?
|
||||
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
|
||||
imap.expunge
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# redMine - project management software
|
||||
# Redmine - project management software
|
||||
# Copyright (C) 2006-2008 Jean-Philippe Lang
|
||||
#
|
||||
# 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
|
||||
specified by previous options
|
||||
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:
|
||||
# No project specified. Emails MUST contain the 'Project' keyword:
|
||||
|
@ -95,7 +100,9 @@ END_DESC
|
|||
:ssl => ENV['ssl'],
|
||||
:username => ENV['username'],
|
||||
: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 => {} }
|
||||
%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;
|
||||
}
|
||||
|
||||
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 {
|
||||
text-align: center;
|
||||
background-color: #FFEBC1;
|
||||
|
|
Loading…
Reference in New Issue