Added ICS plugin

This commit is contained in:
2023-02-27 19:31:13 +01:00
parent 0cbd34161c
commit b853fd5fa2
63 changed files with 2870 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
= redmine_ics_export (redmics) change-log
== 5.0.0 (dev)
* Compatibility with Redmine 5.0
* Update to icalendar 2.7
== 4.0.0 (dev)
* Compatibility with Redmine 4.0
* Rails 5 support (Kudos to alxwr)
* Update to icalendar 2.5
== 3.0.1 (dev)
* make queries compatible again to current head of Redmine
* experimental support for alarms
== 3.0.0 (dev)
* Support for custom queries (issue #11)
== 2.0.0 (dev)
* compatibility with Redmine 2.0.0 (issue #28)
== 1.3.1
* No route matches ... when viewing all issues (issue #27)
== 1.3.0
* Basque translation (issue #18)
* Brazilian Portuguese translation (issue #23)
* configurable summary and description (issue #11 and #22)
* make rendering configuration overridable with URL parameters (issue #17)
* ensuring compatibility to current head of Redmine (issue #24)
* more restful ICS URLs (issue #26)
This version uses a new URL scheme for the ICS links. Therefore, all icalendar URLs must be updated.
This version requires Redmine >= 1.4.0. Previous versions are not supported.
== 1.2.0
* more redering options (issue 3, issue 5 and issue 9)
* personal rendering options (issue 14)
* declared encoding as UTF-8 (issue 10)
== 1.1.0
* enforcement of Redmine permissions in both anonymous and authenticated contexts (issue #6)
* russian and italian locale (issue #7 and #8)
* using METHOD:PUBLISH for better Outlook 2003 compatibility
== 1.0.2
* renaming to redmine_ics_export, please take care when updating
* standard locales defaulting to english
* french locale

View File

@@ -0,0 +1 @@
gem "icalendar", ">=2.7.0", "<3.0.0"

View File

@@ -0,0 +1,35 @@
= redmine_ics_export (redmics)
Plug-in for Redmine (http://www.redmine.org/) to export project issues and versions as ICalendar (ICS) files.
The plug-in also exposes a webcal address for subscription to the ICS calendar view
This plug-in requires Redmine 5.x.
== Licence
GPL v2
== Requirements
This plug-in requires icalendar 2.7 (https://github.com/icalendar/icalendar).
== Installation
cd /opt/redmine/plugins
git clone https://github.com/buschmais/redmics.git redmine_ics_export
cd /opt/redmine
bundle install --without development test
The plug-in directory has to be "redmine_ics_export" - otherwise Redmine will show a 404 page when opening the ticket list.
Please *do* *not* install the plug-in neither into +redmine/lib/plugins+ nor into +redmine/vendor/plugins+.
This is not supported and may cause issues with your Redmine installation.
== Older Redmine version
Please checkout branches +redmine_2+, +redmine_3+, or +redmine_4+ for the corresponding Redmine version.
== Using redmics
The plugin redmics exposes an icalendar view (aka webcal) of your Redmine issues. You can obtain the icalendar address by right-clicking on one of the links in the sidebar panel of the issues view. The exposed calendars are read-only.

View File

@@ -0,0 +1,125 @@
# redmics - redmine ics export plugin
# Copyright (c) 2010-2012 Frank Schwarz, frank.schwarz@buschmais.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require 'icalendar'
require_relative '../../lib/redmics/export'
require_relative '../../lib/redmics/query_conditions'
class ICalendarController < ApplicationController
unloadable
accept_atom_auth :index
before_action :find_user,
:find_optional_project,
:find_optional_query,
:decode_rendering_settings_from_url,
:authorize_access,
:check_and_complete_params,
:load_settings
def index
e = Redmics::Export.new(self)
e.settings(:user => @user,
:project => @project,
:query => @query,
:alarm => params[:alarm],
:status => params[:status] ? params[:status].to_sym : nil,
:assignment => params[:assignment] ? params[:assignment].to_sym : nil,
:issue_strategy => @settings[:redmics_icsrender_issues].to_sym,
:version_strategy => @settings[:redmics_icsrender_versions].to_sym,
:summary_strategy => @settings[:redmics_icsrender_summary].to_sym,
:description_strategy => @settings[:redmics_icsrender_description].to_sym
)
send_data(e.icalendar.to_ical, :type => 'text/calendar; charset=utf-8')
end
private
def find_user
@user = User.current
rescue ActiveRecord::RecordNotFound
render_403
end
def find_optional_project
return true unless params[:project_id]
@project = Project.find_by_identifier(params[:project_id]);
return false unless @project
rescue ActiveRecord::RecordNotFound
render_404
end
def find_optional_query
return true unless params[:query_id]
@query = IssueQuery.find_by_id(params[:query_id])
return false unless @query
rescue ActiveRecord::RecordNotFound
render_404
end
def decode_rendering_settings_from_url
options = [:none, :vevent_full_span, :vevent_end_date, :vevent_start_and_end_date, :vtodo]
options_summary = [:plain, :status, :ticket_number_and_status]
options_description = [:plain, :url_and_version, :full_no_url, :full]
@rendering = {}
if params[:render_issues] =~ /[0-4]/
@rendering[:redmics_icsrender_issues] = options[params[:render_issues].to_i]
end
if params[:render_versions] =~ /[0-3]/
@rendering[:redmics_icsrender_versions] = options[params[:render_versions].to_i]
end
if params[:render_summary] =~ /[0-2]/
@rendering[:redmics_icsrender_summary] = options_summary[params[:render_summary].to_i]
end
if params[:render_description] =~ /[0-3]/
@rendering[:redmics_icsrender_description] = options_description[params[:render_description].to_i]
end
end
def authorize_access
# we have a key but no autenticated user
(render_404; return false) if params[:key] && @user.anonymous?
# we have a project-id but no project
(render_404; return false) if params[:project_id] && @project.nil?
# we have a query-id but no query
(render_404; return false) if params[:query_id] && @query.nil?
# we answer with 'not found' if parameters seem to be bogus
(render_404; return false) unless (params[:assignment] || params[:query_id])
# we have a project but calendar viewing is forbidden for the (possibly anonymous) user
(render_403; return false) if @project && ! @user.allowed_to?(:view_calendar, @project)
# we do not have a project and calendar viewing is globally forbidden for the autenticated user
(render_403; return false) if @project.nil? && ! @user.allowed_to?(:view_calendar, nil, :global => true)
end
def check_and_complete_params
# status = all is the default
params[:status] ||= :all
end
def load_settings
defaults = Redmine::Plugin.find(:redmine_ics_export).settings[:default]
global_prefs = Setting.plugin_redmine_ics_export
@settings = { }
defaults.keys.each { |item|
@settings[item] = @rendering[item] ||
@user.pref[item] ||
global_prefs[item] ||
defaults[item]
}
end
end

View File

@@ -0,0 +1,18 @@
<%# redmics - redmine ics export plugin, Copyright (c) 2010-2011 Frank Schwarz, frank.schwarz@buschmais.com %>
<h2><%= link_to(l(:label_my_account), :action => 'account') %> &#187; <%=l(:label_redmics_settings_userprefs)%></h2>
<%= error_messages_for 'user' %>
<%= form_tag({}, :class => "tabular") do %>
<div class="box">
<%= render :partial => 'settings/redmics_settings' %>
</div>
<%= submit_tag l(:button_save), :style => 'vertical-align:baseline;' %>
<%= link_to(l(:button_reset), :action => 'redmics_settings_reset') %>
<% end %>
<% content_for :sidebar do %>
<%= render :partial => 'sidebar' %>
<% end %>

View File

@@ -0,0 +1,42 @@
<%# redmics - redmine ics export plugin, Copyright (c) 2010-2011 Frank Schwarz, frank.schwarz@buschmais.com %>
<%
options = ActiveSupport::OrderedHash.new
options[l(:option_settings_rendering_none)] = :none
options[l(:option_settings_rendering_vevent_full_span)] = :vevent_full_span
options[l(:option_settings_rendering_vevent_end_date)] = :vevent_end_date
options[l(:option_settings_rendering_vevent_start_and_end_date)] = :vevent_start_and_end_date
options[l(:option_settings_rendering_vtodo)] = :vtodo
summary_options = ActiveSupport::OrderedHash.new
summary_options[l(:option_settings_enhance_summary_plain)] = :plain
summary_options[l(:option_settings_enhance_summary_status)] = :status
summary_options[l(:option_settings_enhance_summary_ticket_number_and_status)] = :ticket_number_and_status
description_options = ActiveSupport::OrderedHash.new
description_options[l(:option_settings_enhance_description_plain)] = :plain
description_options[l(:option_settings_enhance_description_url_and_version)] = :url_and_version
description_options[l(:option_settings_enhance_description_full_no_url)] = :full_no_url
description_options[l(:option_settings_enhance_description_full)] = :full
%>
<h3><%= l(:label_settings_rendering_header) %></h3>
<p>
<%= content_tag :label, l(:label_settings_rendering_issues) + ':' %>
<%= select_tag 'settings[redmics_icsrender_issues]', options_for_select(options, @settings[:redmics_icsrender_issues].to_sym) %>
</p>
<p>
<%= content_tag :label, l(:label_settings_rendering_versions) + ':' %>
<%= select_tag 'settings[redmics_icsrender_versions]', options_for_select(options, @settings[:redmics_icsrender_versions].to_sym) %><br/>
</p>
<p>
<%= content_tag :label, l(:label_settings_enhance_summary) + ':' %>
<%= select_tag 'settings[redmics_icsrender_summary]', options_for_select(summary_options, @settings[:redmics_icsrender_summary].to_sym) %><br/>
</p>
<p>
<%= content_tag :label, l(:label_settings_enhance_description) + ':' %>
<%= select_tag 'settings[redmics_icsrender_description]', options_for_select(description_options, @settings[:redmics_icsrender_description].to_sym) %><br/>
</p>
<p>
<%= content_tag :span, l(:text_settings_rendering_more_information) + ':' %>
<%= content_tag :a, 'https://github.com/buschmais/redmics/wiki/Settings',
:href => 'https://github.com/buschmais/redmics/wiki/Settings', :target => '_blank' %>
</p>

View File

@@ -0,0 +1,21 @@
<%# redmics - redmine ics export plugin, Copyright (c) 2010-2011 Frank Schwarz, frank.schwarz@buschmais.com %>
<%
user = User.current
%>
<% if user.allowed_to?(:view_calendar, project, :global => true) %>
<h3><%= l(:label_icalendar_header) %></h3>
<% unless user.anonymous? %>
<%= link_to l(:label_issues_mine), { :controller => 'i_calendar', :assignment => :my, :action => 'index', :project_id => project, :key => user.atom_key, :format => 'ics' }, :title => l(:toolip_icalendar_link) %>
(<%= link_to l(:label_issues_open_only), { :controller => 'i_calendar', :assignment => :my, :status => 'open', :action => 'index', :project_id => project, :key => user.atom_key, :format => 'ics' }, :title => l(:toolip_icalendar_link) %>)
<br/>
<% end %>
<%= link_to l(:label_issues_assigned), { :controller => 'i_calendar', :assignment => :assigned, :action => 'index', :project_id => project, :key => user.atom_key, :format => 'ics' }, :title => l(:toolip_icalendar_link) %>
(<%= link_to l(:label_issues_open_only), { :controller => 'i_calendar', :assignment => :assigned, :status => 'open', :action => 'index', :project_id => project, :key => user.atom_key, :format => 'ics' }, :title => l(:toolip_icalendar_link) %>)
<br/>
<%= link_to l(:label_issues_all), { :controller => 'i_calendar', :assignment => :all, :action => 'index', :project_id => project, :key => user.atom_key, :format => 'ics' }, :title => l(:toolip_icalendar_link) %>
(<%= link_to l(:label_issues_open_only), { :controller => 'i_calendar', :assignment => :all, :status => 'open', :action => 'index', :project_id => project, :key => user.atom_key, :format => 'ics' }, :title => l(:toolip_icalendar_link) %>)
<% if @query && @query.id %>
<br/>
<%= link_to @query.name, { :controller => 'i_calendar', :query_id => @query.id, :action => 'index', :project_id => project, :key => user.atom_key, :format => 'ics' }, :title => l(:toolip_icalendar_link) %>
<% end %>
<% end %>

View File

@@ -0,0 +1,29 @@
# Arabic strings go here
ar:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Bulgarian strings go here
bg:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Bosnian strings go here
bs:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Catalan strings go here
ca:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Czech strings go here
cs:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Danish strings go here
da:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# German strings go here
de:
label_icalendar_header: ICalendar
label_issues_mine: Meine Tickets
label_issues_assigned: Zugewiesene Tickets
label_issues_all: Alle Tickets
label_issues_open_only: nur offene
toolip_icalendar_link: Kopieren Sie die Link-Adresse und nutzen Sie sie in Ihrer bevorzugten ICal-Anwendung.
label_settings_rendering_header: Art der Ausgabe
label_settings_rendering_issues: Ticket-Darstellung als
label_settings_rendering_versions: Version-Darstellung als
option_settings_rendering_none: keine Darstellung
option_settings_rendering_vevent_full_span: durchgängiges Ereignis
option_settings_rendering_vevent_end_date: ganztägiges Ereignis zum Ende-Datum
option_settings_rendering_vevent_start_and_end_date: ganztägige Ereignisse zum Start- und Ende-Datum
option_settings_rendering_vtodo: Aufgabe
text_settings_rendering_more_information: Weitere Informationen unter
label_redmics_settings_userprefs: ICS Export
notice_redmics_userprefs_updated: ICS Export Einstellungen wurden erfolgreich aktualisiert
notice_redmics_userprefs_reset: ICS Export Einstellungen wurden zurückgesetzt
label_settings_enhance_summary: Erweitere die Zusammenfassung
option_settings_enhance_summary_plain: lasse sie unverändert
option_settings_enhance_summary_status: um den Status
option_settings_enhance_summary_ticket_number_and_status: um Ticketnummer und Status
label_settings_enhance_description: Erweitere die Beschreibung
option_settings_enhance_description_plain: lasse sie unverändert
option_settings_enhance_description_url_and_version: um die URL und die Version
option_settings_enhance_description_full_no_url: um alle verfügbaren Informationen ohne URL
option_settings_enhance_description_full: um alle verfügbaren Informationen

View File

@@ -0,0 +1,29 @@
# Modern Greek strings go here
el:
label_icalendar_header: ICalendar
label_issues_mine: Τα θέματα μου
label_issues_assigned: Θέματα που ανέθεσα
label_issues_all: Όλα τα θέματα
label_issues_open_only: μόνο ανοικτά
toolip_icalendar_link: Αντιγραφή του συνδέσμου για χρήση στην αγαπημένη σας εφαρμογή iCal.
label_settings_rendering_header: Ιδιότητες εμφάνισης
label_settings_rendering_issues: Εμφάνιση Θέματος ως
label_settings_rendering_versions: Εμφάνιση Έκδοσης ως
option_settings_rendering_none: παράλειψη εμφάνισης
option_settings_rendering_vevent_full_span: Συμβάν πλήρους χρόνου
option_settings_rendering_vevent_end_date: Ολοήμερο συμβάν μόνο για την ημέρομηνία προθεσμίας
option_settings_rendering_vevent_start_and_end_date: Ολοήμερο συμβάν για την ημέρομηνία εκκίνησης και προθεσμίας.
option_settings_rendering_vtodo: αντικείμενο todo
text_settings_rendering_more_information: Για περισσότερες πληροφορίες δες
label_redmics_settings_userprefs: ICS εξαγωγή
notice_redmics_userprefs_updated: Ρυθμίσεις ICS εξαγωγής έχουν ενημερωθεί επιτυχώς
notice_redmics_userprefs_reset: Ρυθμίσεις ICS εξαγωγής έχουν μηδενιστεί
label_settings_enhance_summary: Βελτιώστε την περίληψη με
option_settings_enhance_summary_plain: διατηρείστε ως έχει
option_settings_enhance_summary_status: κατάσταση
option_settings_enhance_summary_ticket_number_and_status: αριθμός θέματος και κατάσταση
label_settings_enhance_description: Βελτιώστε την περιγραφή με
option_settings_enhance_description_plain: διατηρείστε ως έχει
option_settings_enhance_description_url_and_version: URL και έκδοση
option_settings_enhance_description_full_no_url: όλη η διαθέσιμη πληροφορία χωρίς URL
option_settings_enhance_description_full: όλη η διαθέσιμη πληροφορία

View File

@@ -0,0 +1,29 @@
# English strings go here
en-GB:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favourite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# English strings go here
en:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Spanish strings go here
es:
label_icalendar_header: ICalendar
label_issues_mine: Mis peticiones
label_issues_assigned: Peticiones asignadas
label_issues_all: Todas las peticiones
label_issues_open_only: sólo abiertas
toolip_icalendar_link: Copiar este enlace para usarlo en cualquier aplicación cliente que admita el formato ical
label_settings_rendering_header: Modo de presentación
label_settings_rendering_issues: Presenta peticiones como
label_settings_rendering_versions: Presenta versiones como
option_settings_rendering_none: no representación
option_settings_rendering_vevent_full_span: evento extendido
option_settings_rendering_vevent_end_date: evento de día completo para la fecha fin
option_settings_rendering_vevent_start_and_end_date: evento de día completo para la fecha de inicio y fin
option_settings_rendering_vtodo: tarea
text_settings_rendering_more_information: Véase también
label_redmics_settings_userprefs: export de ICS
notice_redmics_userprefs_updated: 'Export de ICS: la configuración ha sido actualizada correctamente'
notice_redmics_userprefs_reset: 'Export de ICS: la configuración ha sido reseteado'
label_settings_enhance_summary: Añadir al resumen
option_settings_enhance_summary_plain: mantenlo como está
option_settings_enhance_summary_status: el estado de la petición
option_settings_enhance_summary_ticket_number_and_status: el numero de la petición y el estado
label_settings_enhance_description: Añadir a la descripción
option_settings_enhance_description_plain: mantenla como está
option_settings_enhance_description_url_and_version: la URL y la versión
option_settings_enhance_description_full_no_url: toda la información disponible sin URL
option_settings_enhance_description_full: toda la informción disponible

View File

@@ -0,0 +1,31 @@
# Basque strings go here
# Author: Ales Zabala Alava (Shagi), <shagi@gisa-elkartea.org>
# Distributed under the same terms as the Redmics itself.
eu:
label_icalendar_header: ICalendar
label_issues_mine: Nire zereginak
label_issues_assigned: Esleitutako zereginak
label_issues_all: Zeregin guztiak
label_issues_open_only: irekiak bakarrik
toolip_icalendar_link: Esteka kopiatu eta zure ical aplikazio gogokoenean erabili.
label_settings_rendering_header: Bistaratze aukerak
label_settings_rendering_issues: Zereginak horrela bistaratu
label_settings_rendering_versions: Bertsioak horrela bistaratu
option_settings_rendering_none: ez bistaratu
option_settings_rendering_vevent_full_span: egun osoko gertakaria
option_settings_rendering_vevent_end_date: egun osoko gertakaria, bukaera datarentzat bakarrik
option_settings_rendering_vevent_start_and_end_date: egun osoko gertakaria hasiera eta bukaera datentzat
option_settings_rendering_vtodo: egitekoa
text_settings_rendering_more_information: Informazio gehiagorako
label_redmics_settings_userprefs: ICS exportazioa
notice_redmics_userprefs_updated: ICS exportazioaren ezarpenak ongi eguneratu dira.
notice_redmics_userprefs_reset: ICS exportazioaren ezarpenak berrezarri dira.
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Persian strings go here
fa:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Finnish strings go here
fi:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# French strings go here, contribution of mick.gaillard
fr:
label_icalendar_header: ICalendar
label_issues_mine: Mes demandes
label_issues_assigned: Demandes assignés
label_issues_all: Toutes les demandes
label_issues_open_only: Ouvert
toolip_icalendar_link: Copiez l'adresse du lien pour utiliser dans votre application ical favorite
label_settings_rendering_header: Options d'affichage
label_settings_rendering_issues: Affichage d'une Demande en tant que
label_settings_rendering_versions: Affichage d'une Version en tant que
option_settings_rendering_none: Ne pas afficher
option_settings_rendering_vevent_full_span: Evènement sur toute la période
option_settings_rendering_vevent_end_date: Evènement sur la journée uniquement pour la date de fin
option_settings_rendering_vevent_start_and_end_date: Evènement sur la journée pour les dates de début et de fin
option_settings_rendering_vtodo: Afficher en tant que Tâche
text_settings_rendering_more_information: Pour plus d'information, voir
label_redmics_settings_userprefs: Export ICS
notice_redmics_userprefs_updated: Configuration d'export ICS mis à jour avec succès
notice_redmics_userprefs_reset: Configuration d'export ICS réinitialisée
label_settings_enhance_summary: Ajouter à la description
option_settings_enhance_summary_plain: garder la comme elle est
option_settings_enhance_summary_status: le statut
option_settings_enhance_summary_ticket_number_and_status: le numéro de la demande et le statut
label_settings_enhance_description: Ajouter au résumé
option_settings_enhance_description_plain: garder le comme il est
option_settings_enhance_description_url_and_version: l'URL et la version
option_settings_enhance_description_full_no_url: toute l'information disponible sans l'URL
option_settings_enhance_description_full: toute l'information disponible

View File

@@ -0,0 +1,29 @@
# Galician strings go here
gl:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Hebrew strings go here
he:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Croatian strings go here
hr:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Hungarian strings go here
hu:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Indonesian strings go here
id:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Italian strings go here, contribution of iacopo.spalletti
it:
label_icalendar_header: ICalendar
label_issues_mine: Le mie segnalazioni
label_issues_assigned: Segnalazioni assegnate
label_issues_all: Tutte le segnalazioni
label_issues_open_only: solo aperte
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Japanese strings go here
ja:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Korean strings go here
ko:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Lithuanian strings go here
lt:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Latvian strings go here
lv:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Macedonian strings go here
mk:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Mongolian strings go here
mn:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Dutch strings go here
nl:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Norwegian strings go here
"no":
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Polish strings go here
pl:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,30 @@
# Brazilian Portuguese strings go here
# contribution of Marcelo Soares Souza
pt-BR:
label_icalendar_header: ICalendar
label_issues_mine: Minhas tarefas
label_issues_assigned: Tarefas atribuídas
label_issues_all: Todas as tarefas
label_issues_open_only: abertas apenas
toolip_icalendar_link: Copie o Link para utilizar na sua aplicação ical favorita.
label_settings_rendering_header: Opções de renderização
label_settings_rendering_issues: Tarefa renderizada como
label_settings_rendering_versions: Versão renderizada como
option_settings_rendering_none: Pular renderização
option_settings_rendering_vevent_full_span: Evento em tempo integral
option_settings_rendering_vevent_end_date: Todos os dias até a data final
option_settings_rendering_vevent_start_and_end_date: Todos os dias da data inicial a final
option_settings_rendering_vtodo: Item a fazer
text_settings_rendering_more_information: Para mais informações veja
label_redmics_settings_userprefs: Exportar ICS
notice_redmics_userprefs_updated: As configuração para exportação de ICS foram atualizadas
notice_redmics_userprefs_reset: As configurações para exportação de ICS foram resetadas
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Portuguese strings go here
pt:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Romanian strings go here
ro:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,31 @@
# Russian strings go here,
# contribution of Alexander Sapozhnikov <shoorick77@gmail.com>
# and Dmitriy Trt <dmitriy.trt@gmail.com>
ru:
label_icalendar_header: ICalendar
label_issues_mine: Мои задачи
label_issues_assigned: Назначенные задачи
label_issues_all: Все задачи
label_issues_open_only: только открытые
toolip_icalendar_link: Скопируйте адрес ссылки и используйте в вашем любимом ical-приложении.
label_settings_rendering_header: Настройки отображения
label_settings_rendering_issues: Отображать задачи как
label_settings_rendering_versions: Отображать версии как
option_settings_rendering_none: не отображать
option_settings_rendering_vevent_full_span: событие на полное время
option_settings_rendering_vevent_end_date: событие на весь день на дату выполнения
option_settings_rendering_vevent_start_and_end_date: событие на весь день на даты начала и выполнения
option_settings_rendering_vtodo: задачу
text_settings_rendering_more_information: Для подробностей смотрите
label_redmics_settings_userprefs: Экспорт в ICS
notice_redmics_userprefs_updated: Настройки экспорта в ICS были сохранены успешно
notice_redmics_userprefs_reset: Настройки экспорта в ICS были сброшены
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Slovak strings go here
sk:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Slovenian strings go here
sl:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Serbian strings go here
sr-YU:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Serbian strings go here
sr:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Swedish strings go here
sv:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Thai strings go here
th:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,30 @@
# Turkish strings go here
tr:
label_icalendar_header: ICalendar
label_issues_mine: İşlerim
label_issues_assigned: Atanmış İşler
label_issues_all: Tüm işler
label_issues_open_only: sadece açık
toolip_icalendar_link: Bu linki kopyalayıp, seçtiğiniz ical takvim uygulaması ile kullanın
label_settings_rendering_header: Gösterme seçenekleri
label_settings_rendering_issues: İşleri gösterirken
label_settings_rendering_versions: Sürümleri gösterirken
option_settings_rendering_none: gösterme
option_settings_rendering_vevent_full_span: tüm zamanı göster
option_settings_rendering_vevent_end_date: bitiş günü için tam günlük etkinlik göster
option_settings_rendering_vevent_start_and_end_date: hem başlangıç hem bitiş için tam günlük etkinlik göster
option_settings_rendering_vtodo: görev olarak göster
text_settings_rendering_more_information: Daha bilgi için
label_redmics_settings_userprefs: ICS dışa aktarma
notice_redmics_userprefs_updated: ICS dışa aktarma ayarları güncellendi
notice_redmics_userprefs_reset: ICS dışa aktarma ayarları sıfırlandı
label_settings_enhance_summary: Özete şunları ekle
option_settings_enhance_summary_plain: aynen kalsın
option_settings_enhance_summary_status: durum
option_settings_enhance_summary_ticket_number_and_status: iş numarası ve durumu
label_settings_enhance_description: ıklamaya şunları ekle
option_settings_enhance_description_plain: aynen kalsın
option_settings_enhance_description_url_and_version: Sayfa adresi ve sürümü
option_settings_enhance_description_full_no_url: Sayfa adresi hariçi tüm bilgiler
option_settings_enhance_description_full: Tüm bilgiler

View File

@@ -0,0 +1,29 @@
# Ukrainian strings go here
uk:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Vietnamese strings go here
vi:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Chinese strings go here
zh-TW:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,29 @@
# Chinese strings go here
zh:
label_icalendar_header: ICalendar
label_issues_mine: My issues
label_issues_assigned: Assigned issues
label_issues_all: All issues
label_issues_open_only: open only
toolip_icalendar_link: Copy the link location for use in your favorite ical-application.
label_settings_rendering_header: Render options
label_settings_rendering_issues: Issue rendering as
label_settings_rendering_versions: Version rendering as
option_settings_rendering_none: skip rendering
option_settings_rendering_vevent_full_span: full time event
option_settings_rendering_vevent_end_date: all-day event for just the end date
option_settings_rendering_vevent_start_and_end_date: all-day event for start and end date
option_settings_rendering_vtodo: todo item
text_settings_rendering_more_information: For more information see
label_redmics_settings_userprefs: ICS export
notice_redmics_userprefs_updated: ICS export settings have been updated sucessfully
notice_redmics_userprefs_reset: ICS export settings have been reset
label_settings_enhance_summary: Enhance summary with
option_settings_enhance_summary_plain: keep as is
option_settings_enhance_summary_status: status
option_settings_enhance_summary_ticket_number_and_status: ticket number and status
label_settings_enhance_description: Enhance description with
option_settings_enhance_description_plain: keep as is
option_settings_enhance_description_url_and_version: URL and version
option_settings_enhance_description_full_no_url: all available information without URL
option_settings_enhance_description_full: all available information

View File

@@ -0,0 +1,27 @@
# redmics - redmine ics export plugin
# Copyright (c) 2012 Frank Schwarz, frank.schwarz@buschmais.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
RedmineApp::Application.routes.draw do
match 'icalendar/all_projects/query/:query_id/issues.:format', :to => 'i_calendar#index', :via => 'get'
match 'icalendar/all_projects/:assignment/issues.:format', :to => 'i_calendar#index', :via => 'get'
match 'icalendar/all_projects/:assignment/:status/issues.:format', :to => 'i_calendar#index', :via => 'get'
match 'icalendar/:project_id/query/:query_id/issues.:format', :to => 'i_calendar#index', :via => 'get'
match 'icalendar/:project_id/:assignment/issues.:format', :to => 'i_calendar#index', :via => 'get'
match 'icalendar/:project_id/:assignment/:status/issues.:format', :to => 'i_calendar#index', :via => 'get'
match 'my/redmics_settings', :to => 'my#redmics_settings', :via => [:get, :post]
match 'my/redmics_settings/reset', :to => 'my#redmics_settings_reset', :via => 'get'
end

View File

@@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

View File

@@ -0,0 +1,42 @@
# redmics - redmine ics export plugin
# Copyright (c) 2010-2011 Frank Schwarz, frank.schwarz@buschmais.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require 'redmine'
require_relative './lib/sidebar_hooks'
require_relative './lib/userprefs_hooks'
require_relative './lib/application_controller_patches'
require_relative './lib/settings_controller_patches'
require_relative './lib/model_patches'
require_relative './lib/my_controller_patches'
Redmine::Plugin.register :redmine_ics_export do
name 'redmine ics export plugin (aka redmics)'
author 'Frank Schwarz'
description 'ICalendar view of issue- and version-deadlines'
version '5.0.0.dev'
url 'https://github.com/buschmais/redmics'
author_url 'http://www.buschmais.de/author/frank/'
settings(
:default => {
:redmics_icsrender_issues => :vevent_end_date,
:redmics_icsrender_versions => :vevent_end_date,
:redmics_icsrender_summary => :status,
:redmics_icsrender_description => :full,
},
:partial => 'settings/redmics_settings')
end

View File

@@ -0,0 +1,46 @@
# redmics - redmine ics export plugin
# Copyright (c) 2011-2012 Frank Schwarz, frank.schwarz@buschmais.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module ApplicationControllerPatches
module PrependMethods
def find_current_user
find_current_user_with_ics
end
end
def self.included(base)
base.class_eval {
include InstanceMethods
alias_method :find_current_user_without_ics, :find_current_user
prepend PrependMethods
}
end
module InstanceMethods
# enable rss key auth also for ics format
def find_current_user_with_ics
result = find_current_user_without_ics
return result if result
if params[:format] == 'ics' && params[:key] && request.get? && accept_rss_auth?
return User.find_by_rss_key(params[:key])
end
end
end
end
ApplicationController.send(:include, ApplicationControllerPatches)

View File

@@ -0,0 +1,45 @@
# redmics - redmine ics export plugin
# Copyright (c) 2011 Frank Schwarz, frank.schwarz@buschmais.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require_dependency 'user_preference'
module ModelPatches
module UserPreferencePatch
def self.included(base)
base.extend(ClassMethods)
base.send(:include, InstanceMethods)
base.class_eval do
unloadable
end
end
module ClassMethods
end
module InstanceMethods
def unset(*args)
h = read_attribute(:others).dup || {}
args.flatten.each() { |key|
h.delete(key)
}
write_attribute(:others, h)
end
end
end
end
UserPreference.send(:include, ModelPatches::UserPreferencePatch)

View File

@@ -0,0 +1,58 @@
# redmics - redmine ics export plugin
# Copyright (c) 2011 Frank Schwarz, frank.schwarz@buschmais.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module MyControllerPatches
def self.included(base)
base.class_eval {
include InstanceMethods
}
end
module InstanceMethods
def redmics_settings
@user = User.current
defaults = Redmine::Plugin.find(:redmine_ics_export).settings[:default]
global_prefs = Setting.plugin_redmine_ics_export
if request.post?
defaults.keys.each { |item|
@user.pref[item] = params[:settings][item]
}
if @user.save
@user.pref.save
flash.now[:notice] = l(:notice_redmics_userprefs_updated)
end
end
@settings = { }
defaults.keys.each { |item|
@settings[item] = @user.pref[item] || global_prefs[item] || defaults[item]
}
end
def redmics_settings_reset
@user = User.current
if @user.save
defaults = Redmine::Plugin.find(:redmine_ics_export).settings[:default]
@user.pref.unset(defaults.keys)
@user.pref.save
flash[:notice] = l(:notice_redmics_userprefs_reset)
end
redirect_to :action => 'redmics_settings'
end
end
end
MyController.send(:include, MyControllerPatches)

View File

@@ -0,0 +1,571 @@
# redmics - redmine ics export plugin
# Copyright (c) 2011-2022 Frank Schwarz, frank.schwarz@buschmais.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module Redmics
class Export
include Redmics
include Redmine::I18n
def initialize(controller)
@controller = controller
@priority_count = IssuePriority.all.length
end
def settings(args)
@user = args[:user]
@project = args[:project]
@query = args[:query]
@status = args[:status]
@alarm = args[:alarm]
@assignment = args[:assignment]
@issue_strategy = args[:issue_strategy]
@version_strategy = args[:version_strategy]
@summary_strategy = args[:summary_strategy]
@description_strategy = args[:description_strategy]
end
def icalendar
issues_renderer = create_issues_renderer @issue_strategy
versions_renderer = create_versions_renderer @version_strategy
if @query
(issues, versions) = redmine_query
else
(issues, versions) = redmics_query
end
events = []
events += issues.collect(&issues_renderer).to_a.flatten
events += versions.collect(&versions_renderer).to_a.flatten
cal = Icalendar::Calendar.new
cal.publish
events.each { |event| cal.add_event(event) }
return cal
end
private
def redmine_query
begin
issues = []
versions = []
if @query.valid?
# query: issues
issues = @query.issues(
:include => [:tracker, :assigned_to, :priority, :fixed_version, :author],
) unless @issue_strategy == :none
# query: versions -> skip
end
rescue Exception => e
# we will just deliver an empty ical file instead of showing an error page
@controller.logger.warn('No issues have been selected. ' + e.to_s)
end
return [issues, versions]
end
def redmics_query
begin
case @status
when :open
issue_status_condition = ["#{IssueStatus.table_name}.is_closed = ?", false]
version_status_condition = ["#{Version.table_name}.status <> ?", 'closed']
when :all
issue_status_condition = []
version_status_condition = []
else
raise "Unknown status: '#{@status}'."
end
case @assignment
when :my
raise 'Anonymous user cannot have issues assigned.' if @user.anonymous?
assigned_to_condition = ["assigned_to_id = #{@user.id}"]
when :assigned
assigned_to_condition = ["assigned_to_id is not null"]
when :all
assigned_to_condition = []
else
raise "Unknown assignment: '#{@assignment}.'"
end
@query = IssueQuery.new(:name => "_")
@query.project = @project
@query.filters = nil
issues = []
versions = []
# query: issues
c = QueryConditions.new()
c << issue_status_condition unless issue_status_condition.empty?
c << assigned_to_condition unless assigned_to_condition.empty?
issues = @query.issues(
:include => [:tracker, :assigned_to, :priority, :fixed_version, :author],
:conditions => c.conditions) unless @issue_strategy == :none
# query: versions
c = QueryConditions.new()
c << version_status_condition unless version_status_condition.empty?
versions = @query.versions(
:conditions => c.conditions
) unless @version_strategy == :none
c << ["#{Version.table_name}.sharing = ?", 'system']
versions << @query.versions(
:conditions => c.conditions
) unless @version_strategy == :none
versions.flatten!
rescue Exception => e
# we will just deliver an empty ical file instead of showing an error page
@controller.logger.warn('No issues have been selected. ' + e.to_s)
issues = []
versions = []
end
return [issues, versions]
end
def create_issues_renderer(type)
case type
when :none
lambda { |issue|
[]
}
when :vevent_full_span
lambda { |issue|
result = create_issue_vevent_full_span(issue)
apply_issue_common_properties(issue, result)
apply_issue_event_properties(issue, result)
apply_issue_alarm(issue, result) unless @alarm.nil?
enhance_issue_summary(issue, result)
enhance_issue_description(issue, result)
result
}
when :vevent_end_date
lambda { |issue|
result = create_issue_vevent_end_date(issue)
apply_issue_common_properties(issue, result)
apply_issue_event_properties(issue, result)
apply_issue_alarm(issue, result) unless @alarm.nil?
enhance_issue_summary(issue, result)
enhance_issue_description(issue, result)
result
}
when :vevent_start_and_end_date
lambda { |issue|
result = create_issue_vevent_start_and_end_date(issue)
apply_issue_common_properties(issue, result)
apply_issue_event_properties(issue, result)
apply_issue_alarm(issue, result) unless @alarm.nil?
enhance_issue_summary(issue, result)
enhance_issue_description(issue, result)
result
}
when :vtodo
lambda { |issue|
result = create_issue_vtodo(issue)
apply_issue_common_properties(issue, result)
apply_issue_todo_properties(issue, result)
apply_issue_alarm(issue, result) unless @alarm.nil?
enhance_issue_summary(issue, result)
enhance_issue_description(issue, result)
result
}
end
end
def create_versions_renderer(type)
case type
when :none
lambda { |version|
[]
}
when :vevent_full_span
lambda { |version|
result = create_version_vevent_full_span(version)
apply_version_common_properties(version, result)
apply_version_event_properties(version, result)
enhance_version_description(version, result)
result
}
when :vevent_end_date
lambda { |version|
result = create_version_vevent_end_date(version)
apply_version_common_properties(version, result)
apply_version_event_properties(version, result)
enhance_version_description(version, result)
result
}
when :vevent_start_and_end_date
lambda { |version|
result = create_version_vevent_start_and_end_date(version)
apply_version_common_properties(version, result)
apply_version_event_properties(version, result)
enhance_version_description(version, result)
result
}
when :vtodo
lambda { |version|
result = create_version_vtodo(version)
apply_version_common_properties(version, result)
apply_version_todo_properties(version, result)
enhance_version_description(version, result)
result
}
end
end
def create_issue_vevent_full_span(issue)
start_date, due_date = issue_period(issue)
return [] if start_date.nil? || due_date.nil?
event = Icalendar::Event.new
event.dtstart = Icalendar::Values::Date.new(start_date)
event.dtend = Icalendar::Values::Date.new(due_date + 1)
event.uid = "id:redmics:project:#{issue.project_id}:issue:#{issue.id}@#{Setting.host_name}"
return [event]
end
def create_issue_vevent_end_date(issue)
due_date = issue_period(issue)[1]
return [] if due_date.nil?
event = Icalendar::Event.new
event.dtstart = Icalendar::Values::Date.new(due_date)
event.dtend = Icalendar::Values::Date.new(due_date + 1)
event.uid = "id:redmics:project:#{issue.project_id}:issue:#{issue.id}@#{Setting.host_name}"
return [event]
end
def create_issue_vevent_start_and_end_date(issue)
start_date, due_date = issue_period(issue)
if start_date.nil? && due_date.nil?
return []
elsif start_date == due_date
event = Icalendar::Event.new
event.dtstart = Icalendar::Values::Date.new(start_date)
event.dtend = Icalendar::Values::Date.new(start_date + 1)
event.summary = "<> #{issue.subject}"
event.uid = "id:redmics:project:#{issue.project_id}:issue:#{issue.id}@#{Setting.host_name}"
return [event]
end
result = []
unless start_date.nil?
event = Icalendar::Event.new
event.dtstart = Icalendar::Values::Date.new(start_date)
event.dtend = Icalendar::Values::Date.new(start_date + 1)
event.summary = "> #{issue.subject}"
event.uid = "id:redmics:project:#{issue.project_id}:issue:#{issue.id}:s@#{Setting.host_name}"
result << event
end
unless due_date.nil?
event = Icalendar::Event.new
event.dtstart = Icalendar::Values::Date.new(due_date)
event.dtend = Icalendar::Values::Date.new(due_date + 1)
event.summary = "< #{issue.subject}"
event.uid = "id:redmics:project:#{issue.project_id}:issue:#{issue.id}:e@#{Setting.host_name}"
result << event
end
return result
end
def create_issue_vtodo(issue)
start_date, due_date = issue_period(issue)
todo = Icalendar::Todo.new
unless start_date.nil?
todo.dtstart = Icalendar::Values::Date.new(start_date)
end
unless due_date.nil?
todo.due = Icalendar::Values::Date.new(due_date)
end
todo.uid = "id:redmics:project:#{issue.project_id}:issue:#{issue.id}@#{Setting.host_name}"
return [todo]
end
def apply_issue_common_properties(issue, result)
result.each { |event|
event.summary = "#{issue.subject}" unless event.summary
event.priority = map_priority issue.priority.position
event.created = Icalendar::Values::Date.new(issue.created_on)
event.last_modified = issue.updated_on.to_datetime unless issue.updated_on.nil?
event.description = issue.description unless issue.description.nil?
event.categories = [@controller.l(:label_issue).upcase]
event.contact = Icalendar::Values::Text.new(issue.assigned_to.name,
{"ALTREP" => "mailto:#{issue.assigned_to.mail}"}) unless issue.assigned_to.nil?
event.organizer = Icalendar::Values::CalAddress.new("mailto:#{issue.author.mail}", cn: issue.author.name)
event.url = @controller.url_for(:controller => 'issues', :action => 'show', :id => issue.id)
event.sequence = issue.lock_version
}
end
def apply_issue_alarm(issue, result)
if !result.empty?
alarm_trigger = @alarm # strange but seems to be required
result.last.alarm { |alarm|
alarm.description = "This is an event reminder"
alarm.trigger = alarm_trigger
}
end
end
def apply_issue_event_properties(issue, result)
result.each { |event|
event.status = issue.assigned_to ? "CONFIRMED" : "TENTATIVE" unless issue.closed?
}
end
def apply_issue_todo_properties(issue, result)
result.each { |todo|
if issue.closed?
todo.status = "COMPLETED"
todo.completed = issue.updated_on.to_datetime
todo.percent_complete = 100
elsif issue.assigned_to
todo.status = "IN-PROCESS"
todo.percent_complete = issue.done_ratio ? issue.done_ratio.to_i : 0
else
todo.status = "NEEDS-ACTION"
end
}
end
def create_version_vevent_full_span(version)
start_date, due_date = version_period(version)
return [] if start_date.nil? || due_date.nil?
event = Icalendar::Event.new
event.dtstart = Icalendar::Values::Date.new(start_date)
event.dtend = Icalendar::Values::Date.new(due_date + 1)
event.uid = "id:redmics:project:#{version.project_id}:version:#{version.id}@#{Setting.host_name}"
return [event]
end
def create_version_vevent_end_date(version)
due_date = version_period(version)[1]
return [] if due_date.nil?
event = Icalendar::Event.new
event.dtstart = Icalendar::Values::Date.new(due_date)
event.dtend = Icalendar::Values::Date.new(due_date + 1)
event.uid = "id:redmics:project:#{version.project_id}:version:#{version.id}@#{Setting.host_name}"
return [event]
end
def create_version_vevent_start_and_end_date(version)
start_date, due_date = version_period(version)
if start_date.nil? && due_date.nil?
return []
elsif start_date == due_date
event = Icalendar::Event.new
event.dtstart = Icalendar::Values::Date.new(start_date)
event.dtend = Icalendar::Values::Date.new(start_date + 1)
event.summary = "<#> #{l(:label_version)} #{version.name}"
event.uid = "id:redmics:project:#{version.project_id}:version:#{version.id}@#{Setting.host_name}"
return [event]
end
result = []
unless start_date.nil?
event = Icalendar::Event.new
event.dtstart = Icalendar::Values::Date.new(start_date)
event.dtend = Icalendar::Values::Date.new(start_date + 1)
event.summary = ">> #{l(:label_version)} #{version.name}"
event.uid = "id:redmics:project:#{version.project_id}:version:#{version.id}:s@#{Setting.host_name}"
result << event
end
unless due_date.nil?
event = Icalendar::Event.new
event.dtstart = Icalendar::Values::Date.new(due_date)
event.dtend = Icalendar::Values::Date.new(due_date + 1)
event.summary = "<< #{l(:label_version)} #{version.name}"
event.uid = "id:redmics:project:#{version.project_id}:version:#{version.id}:e@#{Setting.host_name}"
result << event
end
return result
end
def create_version_vtodo(version)
start_date, due_date = version_period(version)
todo = Icalendar::Todo.new
unless start_date.nil?
todo.dtstart = Icalendar::Values::Date.new(start_date)
end
unless due_date.nil?
todo.due = Icalendar::Values::Date.new(due_date)
end
todo.uid = "id:redmics:project:#{version.project_id}:version:#{version.id}@#{Setting.host_name}"
return [todo]
end
def apply_version_common_properties(version, result)
result.each { |event|
event.summary = "#{@controller.l(:label_version)} #{version.name}" unless event.summary
event.created = Icalendar::Values::Date.new(version.created_on)
event.last_modified = version.updated_on.to_datetime unless version.updated_on.nil?
event.description = version.description unless version.description.nil?
event.categories = [@controller.l(:label_version).upcase]
event.url = @controller.url_for(:controller => 'versions', :action => 'show', :id => version.id)
days = (version.updated_on.to_i - version.created_on.to_i) / 86400
event.sequence = days
}
end
def apply_version_event_properties(version, result)
result.each { |event|
event.status = "CONFIRMED" unless version.closed?
}
end
def apply_version_todo_properties(version, result)
result.each { |todo|
if version.closed?
todo.status = "COMPLETED"
todo.completed = version.updated_on.to_datetime
todo.percent_complete = 100
else
todo.status = "IN-PROCESS"
todo.percent_complete = version.completed_percent.to_i
end
}
end
def enhance_issue_summary(issue, result)
result.each { |item|
case @summary_strategy
when :plain
# no action
when :status
item.summary = "#{item.summary} (#{issue.status.name})" if issue.status
when :ticket_number_and_status
item.summary = "#{item.summary} (#{issue.status.name})" if issue.status
if /(<|>|<>) (.*)/ =~ item.summary
m = Regexp.last_match
item.summary = "#{m[1]} #{issue.tracker} ##{issue.id}: #{m[2]}"
else
item.summary = "#{issue.tracker} ##{issue.id}: #{item.summary}"
end
else
raise "Unknown summary_strategy: '#{@summary_strategy}'."
end
}
end
def enhance_issue_description(issue, result)
result.each { |item|
case @description_strategy
when :plain
# no action
when :url_and_version
header = []
header << "#{issue.tracker} ##{issue.id}: #{item.url}"
header << "#{@controller.l(:field_project)}: #{issue.project.name}" if issue.project
header << "#{@controller.l(:field_fixed_version)}: #{issue.fixed_version}" if issue.fixed_version
if item.description
item.description = header.join("\n") + "\n\n" + item.description
else
item.description = header.join("\n")
end
when :full_no_url
header = []
header << "#{issue.tracker} ##{issue.id}"
header << "#{@controller.l(:field_project)}: #{issue.project.name}" if issue.project
header << "#{@controller.l(:field_author)}: #{issue.author.name}" if issue.author
header << "#{@controller.l(:field_status)}: #{issue.status.name}" if issue.status
header << "#{@controller.l(:field_priority)}: #{issue.priority}" if issue.priority
header << "#{@controller.l(:field_assigned_to)}: #{issue.assigned_to.name}" if issue.assigned_to
header << "#{@controller.l(:field_category)}: #{issue.category.name}" if issue.category
header << "#{@controller.l(:field_fixed_version)}: #{issue.fixed_version}" if issue.fixed_version
if item.description
item.description = header.join("\n") + "\n\n" + item.description
else
item.description = header.join("\n")
end
when :full
header = []
header << "#{issue.tracker} ##{issue.id}: #{item.url}"
header << "#{@controller.l(:field_project)}: #{issue.project.name}" if issue.project
header << "#{@controller.l(:field_author)}: #{issue.author.name}" if issue.author
header << "#{@controller.l(:field_status)}: #{issue.status.name}" if issue.status
header << "#{@controller.l(:field_priority)}: #{issue.priority}" if issue.priority
header << "#{@controller.l(:field_assigned_to)}: #{issue.assigned_to.name}" if issue.assigned_to
header << "#{@controller.l(:field_category)}: #{issue.category.name}" if issue.category
header << "#{@controller.l(:field_fixed_version)}: #{issue.fixed_version}" if issue.fixed_version
if item.description
item.description = header.join("\n") + "\n\n" + item.description
else
item.description = header.join("\n")
end
else
raise "Unknown description_strategy: '#{@description_strategy}'."
end
}
end
def enhance_version_description(version, result)
result.each { |item|
case @description_strategy
when :plain
# no action
when :url_and_version
header = []
header << "#{@controller.l(:field_url)}: #{item.url}"
if item.description
item.description = header.join("\n") + "\n\n" + item.description
else
item.description = header.join("\n")
end
when :full_no_url
header = []
header << "#{@controller.l(:field_url)}"
header << "#{@controller.l(:field_project)}: #{version.project.name}" if version.project
header << "#{@controller.l(:field_status)}: #{version.status}" if version.status
if item.description
item.description = header.join("\n") + "\n\n" + item.description
else
item.description = header.join("\n")
end
when :full
header = []
header << "#{@controller.l(:field_url)}: #{item.url}"
header << "#{@controller.l(:field_project)}: #{version.project.name}" if version.project
header << "#{@controller.l(:field_status)}: #{version.status}" if version.status
if item.description
item.description = header.join("\n") + "\n\n" + item.description
else
item.description = header.join("\n")
end
else
raise "Unknown description_strategy: '#{@description_strategy}'."
end
}
end
def issue_period(issue)
start_date = issue.start_date || (issue.fixed_version.start_date unless issue.fixed_version.nil?)
due_date = issue.due_date || (issue.fixed_version.due_date unless issue.fixed_version.nil?)
return [start_date, due_date]
end
def version_period(version)
return [version.start_date, version.due_date]
end
# isses_priority goes from 'low' (1), 'normal' (2) to 'immediate' (@priority_count)
# icalendar priority goes from 'urgent' (1) to 'low' (9) (btw. 0 = undefined)
def map_priority(isses_priority)
case isses_priority
when 1; 9
when 2; 5
when 3..@priority_count; 1
else 9
end
end
end
end

View File

@@ -0,0 +1,44 @@
# redmics - redmine ics export plugin
# Copyright (c) 2006-2011 Jean-Philippe Lang
# Copyright (c) 2012 Frank Schwarz, frank.schwarz@buschmais.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module Redmics
class QueryConditions
attr_reader :conditions
def initialize(condition = nil)
@conditions = ['1=1']
add(condition) if condition
end
def add(condition)
if condition.is_a?(Array)
@conditions.first << " AND (#{condition.first})"
@conditions += condition[1..-1]
elsif condition.is_a?(String)
@conditions.first << " AND (#{condition})"
else
raise "Unsupported #{condition.class} condition: #{condition}"
end
self
end
def <<(condition)
add(condition)
end
end
end

View File

@@ -0,0 +1,51 @@
# redmics - redmine ics export plugin
# Copyright (c) 2011-2012 Frank Schwarz, frank.schwarz@buschmais.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module SettingsControllerPatches
module PrependMethods
def plugin
plugin_with_defaults
end
end
def self.included(base)
base.class_eval {
include InstanceMethods
alias_method :plugin_without_defaults, :plugin
prepend PrependMethods
}
end
module InstanceMethods
# add default settings if missing
def plugin_with_defaults
result = plugin_without_defaults
# filter for our own plugin
return result unless @plugin
return result unless @plugin.id == :redmine_ics_export
return result unless @settings
# add all missing defaults
@plugin.settings[:default].each { |key, value|
@settings[key] = value unless @settings[key]
}
return result
end
end
end
SettingsController.send(:include, SettingsControllerPatches)

View File

@@ -0,0 +1,20 @@
# redmics - redmine ics export plugin
# Copyright (c) 2010-2012 Frank Schwarz, frank.schwarz@buschmais.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class SidebarHooks < Redmine::Hook::ViewListener
render_on :view_issues_sidebar_planning_bottom, :partial => 'sidebar/calendars'
end

View File

@@ -0,0 +1,23 @@
# redmics - redmine ics export plugin
# Copyright (c) 2011 Frank Schwarz, frank.schwarz@buschmais.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class UserprefsHooks < Redmine::Hook::ViewListener
render_on :view_my_account_contextual,
:inline => "<%= link_to(l(:label_redmics_settings_userprefs), {:action => 'redmics_settings'}, :class => 'icon', :style => 'background-image: url(../images/calendar.png)') %>"
end