mirror of
https://github.com/TracksApp/tracks.git
synced 2025-12-30 05:48:50 +01:00
Merge branches 'preferences' and 'master'
This commit is contained in:
commit
8e6699becb
25 changed files with 2523 additions and 2093 deletions
|
|
@ -1,23 +1,31 @@
|
|||
class PreferencesController < ApplicationController
|
||||
|
||||
|
||||
def index
|
||||
@page_title = t('preferences.page_title')
|
||||
@prefs = current_user.prefs
|
||||
@user = current_user
|
||||
end
|
||||
|
||||
def edit
|
||||
@page_title = t('preferences.page_title_edit')
|
||||
@prefs = current_user.prefs
|
||||
end
|
||||
|
||||
def update
|
||||
@prefs = current_user.prefs
|
||||
@user = current_user
|
||||
user_updated = current_user.update_attributes(params['user'])
|
||||
prefs_updated = current_user.preference.update_attributes(params['prefs'])
|
||||
if user_updated && prefs_updated
|
||||
if (user_updated && prefs_updated)
|
||||
notify :notice, "Preferences updated"
|
||||
redirect_to :action => 'index'
|
||||
else
|
||||
render :action => 'edit'
|
||||
msg = "Preferences could not be updated: "
|
||||
msg += "User model errors; " unless user_updated
|
||||
msg += "Prefs model errors; " unless prefs_updated
|
||||
notify :warning, msg
|
||||
render 'index'
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def render_date_format
|
||||
format = params[:date_format]
|
||||
render :text => l(Date.today, :format => format)
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,2 +1,18 @@
|
|||
module PreferencesHelper
|
||||
|
||||
def pref(model, pref_name, &block)
|
||||
s = "<label for #{model+pref_name}>#{Preference.human_attribute_name(pref_name)}:</label><br/>"
|
||||
s << yield
|
||||
s << "<br/><br/>"
|
||||
s
|
||||
end
|
||||
|
||||
def pref_with_select_field(model, pref_name, collection = [ [t('preferences.is_true'),true], [t('preferences.is_false'), false] ])
|
||||
pref(model, pref_name) { select(model, pref_name, collection) }
|
||||
end
|
||||
|
||||
def pref_with_text_field(model, pref_name)
|
||||
pref(model, pref_name) { text_field(model, pref_name) }
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
37
app/views/preferences/_authentication.html.erb
Normal file
37
app/views/preferences/_authentication.html.erb
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
<label><%= t('preferences.token_header') %></label><br/><br/>
|
||||
<%= t('preferences.token_description') %>: <span class="highlight"><%= current_user.token %></span>
|
||||
<br/><br/>
|
||||
|
||||
<div class="pref_new_token">
|
||||
|
||||
<% # TODO: make remote AJAX call for new token %>
|
||||
|
||||
<%= link_to(
|
||||
t('preferences.generate_new_token'),
|
||||
refresh_token_user_path( current_user ),
|
||||
:method => :post,
|
||||
:confirm => t('preferences.generate_new_token_confirm'),
|
||||
:id=>'prefs_new_token') %>
|
||||
|
||||
</div>
|
||||
<br/>
|
||||
|
||||
<% if Tracks::Config.auth_schemes.length > 1 %>
|
||||
<label for="user_auth_type"><%= t('users.label_auth_type') %>:</label><br/>
|
||||
<% Tracks::Config.auth_schemes.each do |scheme| %>
|
||||
<%= radio_button_tag('user[auth_type]', scheme, current_user.auth_type == scheme) %><%=scheme%> <br/>
|
||||
<% end %>
|
||||
|
||||
<br/>
|
||||
|
||||
<div id="open_id" style="display:<%= current_user.auth_type == 'open_id' ? 'block' : 'none' %>">
|
||||
<label for="openid_url"><%= t('users.identity_url') %>:</label><br/>
|
||||
<input type="text" name="user[open_id_url]" value="<%= current_user.open_id_url %>" class="open_id" />
|
||||
</div>
|
||||
|
||||
<div id="database" style="display:<%= current_user.auth_type == 'database' ? 'block' : 'none' %>">
|
||||
<%= render :partial => 'users/update_password' %>
|
||||
</div>
|
||||
|
||||
<% end %>
|
||||
|
||||
23
app/views/preferences/_date_and_time.html.erb
Normal file
23
app/views/preferences/_date_and_time.html.erb
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<%= pref_with_text_field('prefs', 'date_format') %>
|
||||
|
||||
<div class='prefs_example'>This will result in: <span id='prefs.date_format'><%= l(Date.today, :format => current_user.prefs.date_format) %></span></div>
|
||||
<br/>
|
||||
Or pick one of the following:<br/>
|
||||
<% %w{default short long longer}.each do |format| %>
|
||||
<%= radio_button_tag("date_picker1", t("date.formats.#{format}")) %> <%= l(Date.today, :format => format.to_sym) %> <br/>
|
||||
<% end %>
|
||||
<br/>
|
||||
|
||||
<%= pref_with_text_field('prefs', 'title_date_format') %>
|
||||
<div class='prefs_example'>This will result in: <span id='prefs.title_date_format'><%= l(Date.today, :format => current_user.prefs.title_date_format) %></span></div>
|
||||
<br/>
|
||||
Or pick one of the following:<br/>
|
||||
<% %w{default short long longer}.each do |format| %>
|
||||
<%= radio_button_tag("date_picker2", t("date.formats.#{format}")) %> <%= l(Date.today, :format => format.to_sym) %> <br/>
|
||||
<% end %>
|
||||
<br/>
|
||||
|
||||
<%= pref('prefs', 'time_zone') { time_zone_select('prefs','time_zone') } %>
|
||||
|
||||
<%= pref_with_select_field('prefs', "week_starts", (0..6).to_a.map {|num| [t('date.day_names')[num], num] }) %>
|
||||
|
||||
6
app/views/preferences/_profile.html.erb
Normal file
6
app/views/preferences/_profile.html.erb
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<%= pref_with_text_field 'user', 'first_name' %>
|
||||
<%= pref_with_text_field 'user', 'last_name' %>
|
||||
<%= pref_with_select_field('prefs', 'locale', I18n.available_locales.map {|l| l.to_s}) %>
|
||||
<% if current_user.is_admin? %>
|
||||
<%= pref_with_text_field('prefs', 'admin_email') %>
|
||||
<% end %>
|
||||
13
app/views/preferences/_tracks_behavior.html.erb
Normal file
13
app/views/preferences/_tracks_behavior.html.erb
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
|
||||
<%= pref_with_select_field('prefs', "due_style", [[t('models.preference.due_styles')[0],Preference.due_styles[:due_in_n_days]],[t('models.preference.due_styles')[1],Preference.due_styles[:due_on]]]) %>
|
||||
<%= pref_with_select_field('prefs', "show_completed_projects_in_sidebar") %>
|
||||
<%= pref_with_select_field('prefs', "show_hidden_projects_in_sidebar") %>
|
||||
<%= pref_with_select_field('prefs', "show_hidden_contexts_in_sidebar") %>
|
||||
<%= pref_with_select_field('prefs', "show_project_on_todo_done") %>
|
||||
<%= pref_with_text_field('prefs', 'staleness_starts') %>
|
||||
<%= pref_with_text_field('prefs', 'show_number_completed') %>
|
||||
<%= pref_with_text_field('prefs', 'refresh') %>
|
||||
<%= pref_with_select_field('prefs', "verbose_action_descriptors") %>
|
||||
<%= pref_with_text_field('prefs', "mobile_todos_per_page") %>
|
||||
<%= pref_with_text_field('prefs', "sms_email") %>
|
||||
<%= pref('prefs', "sms_context") { select('prefs', 'sms_context_id', current_user.contexts.map{|c| [c.name, c.id]}) } %>
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
<div id="display_box" class="container context">
|
||||
<%= render :partial => 'help' %>
|
||||
</div>
|
||||
|
||||
<div id="input_box" class="container context">
|
||||
<% form_tag :action => 'update' do %>
|
||||
<table>
|
||||
<tr>
|
||||
<td><label><%= User.human_attribute_name('first_name') %></label></td>
|
||||
<td><%= text_field 'user', 'first_name' %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label><%= User.human_attribute_name('last_name') %></label></td>
|
||||
<td><%= text_field 'user', 'last_name' %></td>
|
||||
</tr>
|
||||
<%
|
||||
def table_row(pref_name, nowrap_label = false, &block)
|
||||
nowrap_attribute = nowrap_label ? ' nowrap="nowrap"' : ''
|
||||
s = %Q|<tr>\n<td#{nowrap_attribute}><label>#{Preference.human_attribute_name(pref_name)}:</label></td>\n<td>\n|
|
||||
s << yield
|
||||
s << "\n</td></tr>"
|
||||
s
|
||||
end
|
||||
|
||||
def row_with_select_field(pref_name, collection = [ [t('preferences.is_true'),true], [t('preferences.is_false'), false] ], nowrap_label = false)
|
||||
table_row(pref_name, nowrap_label) { select('prefs', pref_name, collection) }
|
||||
end
|
||||
|
||||
def row_with_text_field(pref_name, nowrap_label = false)
|
||||
table_row(pref_name, nowrap_label) { text_field('prefs', pref_name) }
|
||||
end
|
||||
%>
|
||||
<%= row_with_select_field('locale', I18n.available_locales.map {|l| l.to_s}) %>
|
||||
<%= row_with_text_field('date_format') %>
|
||||
<%= row_with_text_field('title_date_format') %>
|
||||
<%= table_row('time_zone', false) { time_zone_select('prefs','time_zone') } %>
|
||||
|
||||
<%= row_with_select_field("week_starts", (0..6).to_a.map {|num| [t('date.day_names')[num], num] }) %>
|
||||
<%= row_with_select_field("due_style", [[t('models.preference.due_styles')[0],Preference.due_styles[:due_in_n_days]],[t('models.preference.due_styles')[1],Preference.due_styles[:due_on]]]) %>
|
||||
<%= row_with_select_field("show_completed_projects_in_sidebar") %>
|
||||
<%= row_with_select_field("show_hidden_projects_in_sidebar") %>
|
||||
<%= row_with_select_field("show_hidden_contexts_in_sidebar") %>
|
||||
<%= row_with_select_field("show_project_on_todo_done") %>
|
||||
|
||||
<% if current_user.is_admin? %> <%= row_with_text_field('admin_email') %> <% end %>
|
||||
<%= row_with_text_field('staleness_starts', false) %>
|
||||
<%= row_with_text_field('show_number_completed') %>
|
||||
<%= row_with_text_field('refresh') %>
|
||||
<%= row_with_select_field("verbose_action_descriptors") %>
|
||||
<%= row_with_text_field("mobile_todos_per_page") %>
|
||||
<%= row_with_text_field("sms_email") %>
|
||||
<%= table_row("sms_context", false) { select('prefs', 'sms_context_id', current_user.contexts.map{|c| [c.name, c.id]}) } %>
|
||||
|
||||
<tr><td><%= submit_tag t('common.update') %></td>
|
||||
<td><%= link_to t('common.cancel'), :action => 'index' %></td>
|
||||
</tr>
|
||||
</table>
|
||||
<% end %>
|
||||
</div>
|
||||
|
|
@ -1,68 +1,32 @@
|
|||
<div id="single_box" class="container context prefscontainer">
|
||||
<div id="display_box">
|
||||
|
||||
<h2><%= t('preferences.title') %></h2>
|
||||
<div id="edit_error_status"><%= error_messages_for(:user) + error_messages_for(:prefs) %></div>
|
||||
|
||||
<ul id="prefs">
|
||||
<li><%= User.human_attribute_name('first_name') %>: <span class="highlight"><%= current_user.first_name %></span></li>
|
||||
<li><%= User.human_attribute_name('last_name') %>: <span class="highlight"><%= current_user.last_name %></span></li>
|
||||
<li><%= Preference.human_attribute_name('date_format') %>: <span class="highlight"><%= current_user.prefs.date_format %></span> Your current date: <%= format_date(current_user.time) %></li>
|
||||
<li><%= Preference.human_attribute_name('locale') %>: <span class="highlight"><%= current_user.prefs.locale %></span></li>
|
||||
<li><%= Preference.human_attribute_name('title_date_format') %>: <span class="highlight"><%= current_user.prefs.title_date_format %></span> Your current title date: <%= current_user.time.strftime(current_user.prefs.title_date_format) %></li>
|
||||
<li><%= Preference.human_attribute_name('time_zone') %>: <span class="highlight"><%= current_user.prefs.time_zone %></span> Your current time: <%= current_user.time.strftime('%I:%M %p') %></li>
|
||||
<li><%= Preference.human_attribute_name('week_starts') %>: <span class="highlight"><%= t('date.day_names')[current_user.prefs.week_starts] %></span></li>
|
||||
<li><%= t('preferences.show_number_completed', :number=> "<span class=\"highlight\">#{current_user.prefs.show_number_completed}</span>")%></li>
|
||||
<li><%= Preference.human_attribute_name('show_completed_projects_in_sidebar') %>: <span class="highlight"><%= current_user.prefs.show_completed_projects_in_sidebar %></span></li>
|
||||
<li><%= Preference.human_attribute_name('show_hidden_projects_in_sidebar') %>: <span class="highlight"><%= current_user.prefs.show_hidden_projects_in_sidebar %></span></li>
|
||||
<li><%= Preference.human_attribute_name('show_hidden_contexts_in_sidebar') %>: <span class="highlight"><%= current_user.prefs.show_hidden_contexts_in_sidebar %></span></li>
|
||||
<li><%= Preference.human_attribute_name('show_project_on_todo_done') %>: <span class="highlight"><%= current_user.prefs.show_project_on_todo_done %></span></li>
|
||||
<li><%= t('preferences.staleness_starts_after', :days => "<span class=\"highlight\">#{current_user.prefs.staleness_starts}</span>") %></li>
|
||||
<li><%= Preference.human_attribute_name('due_style') %>: <span class="highlight">
|
||||
<% if prefs.due_style == Preference.due_styles[:due_in_n_days] %>
|
||||
<%= t('models.preference.due_styles')[0] %>
|
||||
<% else %>
|
||||
<%= t('models.preference.due_styles')[1] %>
|
||||
<% end %>
|
||||
</span></li>
|
||||
<% if current_user.is_admin? %>
|
||||
<li><%= Preference.human_attribute_name('admin_email') %>: <span class="highlight"><%= current_user.prefs.admin_email %></span></li>
|
||||
<% end %>
|
||||
<li><%= Preference.human_attribute_name('refresh') %>: <span class="highlight"><%= current_user.prefs.refresh %></span></li>
|
||||
<li><%= Preference.human_attribute_name('verbose_action_descriptors') %>: <span class="highlight"><%= current_user.prefs.verbose_action_descriptors %></span></li>
|
||||
<li><%= Preference.human_attribute_name('mobile_todos_per_page') %>: <span class="highlight"><%= current_user.prefs.mobile_todos_per_page %></span></li>
|
||||
<li><%= Preference.human_attribute_name('sms_email') %>: <span class="highlight"><%= current_user.prefs.sms_email %></span></li>
|
||||
<li><%= Preference.human_attribute_name('sms_context') %>: <span class="highlight"><%= current_user.prefs.sms_context.nil? ? t('preferences.sms_context_none') : current_user.prefs.sms_context.name %></span></li>
|
||||
</ul>
|
||||
<div class="actions">
|
||||
<%= link_to t('preferences.edit_preferences') + " »", { :controller => 'preferences', :action => 'edit'}, :class => 'edit_link' %>
|
||||
</div>
|
||||
|
||||
<h2><%= t('preferences.token_header') %></h2>
|
||||
<div id="token_area">
|
||||
<div class="description"><%= t('preferences.token_description') %>:</div>
|
||||
<div id="token"><span class="highlight"><%= current_user.token %></span></div>
|
||||
<div class="token_regenerate">
|
||||
<%= button_to t('preferences.generate_new_token'), refresh_token_user_path(current_user),
|
||||
:confirm => t('preferences.generate_new_token_confirm') %>
|
||||
<% form_tag :action => 'update' do %>
|
||||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-1"><%= t('preferences.tabs.profile')%></a></li>
|
||||
<li><a href="#tabs-2"><%= t('preferences.tabs.authentication')%></a></li>
|
||||
<li><a href="#tabs-3"><%= t('preferences.tabs.date_and_time')%></a></li>
|
||||
<li><a href="#tabs-4"><%= t('preferences.tabs.tracks_behavior')%></a></li>
|
||||
</ul>
|
||||
<div id="tabs-1">
|
||||
<%= render :partial => 'profile'%>
|
||||
</div>
|
||||
<div id="tabs-2">
|
||||
<%= render :partial => 'authentication'%>
|
||||
</div>
|
||||
<div id="tabs-3">
|
||||
<%= render :partial => 'date_and_time'%>
|
||||
</div>
|
||||
<div id="tabs-4">
|
||||
<%= render :partial => 'tracks_behavior'%>
|
||||
</div>
|
||||
</div>
|
||||
<h2><%= t('preferences.authentication_header') %></h2>
|
||||
<div id="authentication_area">
|
||||
<% if Tracks::Config.auth_schemes.length > 1 %>
|
||||
<p><%= t('preferences.current_authentication_type', :auth_type => "<span class=\"highlight\">#{current_user.auth_type}</span>") %>.</p>
|
||||
<div class="actions">
|
||||
<%= link_to(t('preferences.change_authentication_type') + " »", change_auth_type_user_path(current_user), :class => 'edit_link') %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% if current_user.auth_type == 'database' %>
|
||||
<div class="actions">
|
||||
<%= link_to(t('preferences.change_password') + ' »', change_password_user_path(current_user)) %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% if current_user.auth_type == 'open_id' %>
|
||||
<p><%= t('preferences.open_id_url') %> <span class="highlight"><%= current_user.open_id_url %></span>.</p>
|
||||
<div class="actions">
|
||||
<%= link_to(t('preferences.change_identity_url') + ' »', change_auth_type_user_path(current_user)) %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br/>
|
||||
|
||||
<button type="submit" id="prefs_submit"><%= t('common.update') %></button>
|
||||
|
||||
<% end %>
|
||||
</div>
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<div id="footer">
|
||||
<p><%= t('footer.send_feedback', :version => TRACKS_VERSION) %>: <a href="http://www.assembla.com/spaces/tracks-tickets/tickets"><%= t('common.bugs')%></a> |
|
||||
<p><%= t('footer.send_feedback', :version => TRACKS_VERSION) %>: <a href="http://www.assembla.com/spaces/tracks-tickets/tickets"><%= t('common.bugs')%></a> |
|
||||
<a href="http://www.getontracks.org/forums/"><%= t('common.forum')%></a> |
|
||||
<a href="http://www.getontracks.org/wiki/"><%= t('common.wiki')%></a> |
|
||||
<a href="https://github.com/TracksApp/tracks/wiki"><%= t('common.wiki')%></a> |
|
||||
<a href="mailto:butshesagirl@rousette.org.uk?subject=Tracks feedback"><%= t('common.email')%></a> |
|
||||
<a href="http://www.getontracks.org/"><%= t('common.website')%></a> |
|
||||
<a href="http://getontracks.org/tracks/contribute"><%= t('common.contribute')%></a></p>
|
||||
|
|
|
|||
4
app/views/users/_update_password.html.erb
Normal file
4
app/views/users/_update_password.html.erb
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<label for="user[password]"><%= t('users.new_password_label') %>:</label><br/>
|
||||
<%= password_field "user", "password", :size => 40 %><br/>
|
||||
<label for="user[password_confirmation]"><%= t('users.password_confirmation_label') %>:</label><br/>
|
||||
<%= password_field "user", "password_confirmation", :size => 40 %><br/>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<div id="single_box" class="container context">
|
||||
|
||||
|
||||
<h2><%= @page_title %></h2>
|
||||
|
||||
<%= error_messages_for 'user' %>
|
||||
|
|
@ -7,20 +7,10 @@
|
|||
<p><%= t('users.change_password_prompt') %></p>
|
||||
|
||||
<% form_tag :action => 'update_password' do %>
|
||||
<table width="440px">
|
||||
<tr>
|
||||
<td><label for="updateuser_password"><%= t('users.new_password_label') %>:</label></td>
|
||||
<td><%= password_field "updateuser", "password", :size => 40 %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="updateuser_password_confirmation"><%= t('users.password_confirmation_label') %>:</label></td>
|
||||
<td><%= password_field "updateuser", "password_confirmation", :size => 40 %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%= link_to t('common.cancel'), preferences_path %></td>
|
||||
<td><%= submit_tag t('users.change_password_submit') %></td>
|
||||
</tr>
|
||||
</table>
|
||||
<%= render :partial => 'update_password' %>
|
||||
<br/>
|
||||
<%= link_to t('common.cancel'), preferences_path %>
|
||||
<%= submit_tag t('users.change_password_submit') %>
|
||||
<% end %>
|
||||
|
||||
</div>
|
||||
|
|
@ -70,7 +70,7 @@ Rails::Initializer.run do |config|
|
|||
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
||||
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
||||
# config.i18n.default_locale = :de
|
||||
|
||||
|
||||
# See Rails::Configuration for more options
|
||||
if ( SITE_CONFIG['authentication_schemes'].include? 'cas')
|
||||
#requires rubycas-client gem to be installed
|
||||
|
|
|
|||
|
|
@ -3,16 +3,16 @@ de:
|
|||
layouts:
|
||||
toggle_notes: Notizen umschalten
|
||||
next_actions_rss_feed: RSS-Feed kommende Aufgaben
|
||||
toggle_notes_title: Alle Notizen umschalten
|
||||
mobile_navigation:
|
||||
new_action: 0-Neue Aufgabe
|
||||
logout: Abmelden
|
||||
feeds: Feeds
|
||||
new_action: 0-Neue Aufgabe
|
||||
starred: 4-Markiert
|
||||
projects: 3-Projekte
|
||||
tickler: Notizbuch
|
||||
contexts: 2-Kontexte
|
||||
home: 1-Home
|
||||
toggle_notes_title: Alle Notizen umschalten
|
||||
navigation:
|
||||
manage_users_title: "Benutzer hinzuf\xC3\xBCgen oder entfernen"
|
||||
recurring_todos: Sich wiederholende To-Dos
|
||||
|
|
@ -24,18 +24,18 @@ de:
|
|||
tickler_title: Notizbuch
|
||||
manage_users: Benutzer verwalten
|
||||
export_title: Daten importieren und exportieren
|
||||
integrations_: Tracks integrieren
|
||||
preferences: Einstellungen
|
||||
integrations_: Tracks integrieren
|
||||
feeds_title: "Liste der verf\xC3\xBCgbaren Feeds anzeigen"
|
||||
calendar_title: "Kalender mit \xC3\xBCberf\xC3\xA4lligen Aufgaben"
|
||||
stats_title: Statistiken anzeigen
|
||||
tickler: Notizbuch
|
||||
home_title: Start
|
||||
starred_title: Markierte Aufgaben betrachten
|
||||
recurring_todos_title: Sich wiederholende To-Dos verwalten
|
||||
tickler: Notizbuch
|
||||
completed_tasks: Erledigt
|
||||
organize: Organisieren
|
||||
stats_title: Statistiken anzeigen
|
||||
home_title: Start
|
||||
view: Betrachten
|
||||
organize: Organisieren
|
||||
completed_tasks_title: "Vollst\xC3\xA4ndig"
|
||||
home: Start
|
||||
export: Export
|
||||
|
|
@ -66,9 +66,6 @@ de:
|
|||
percentage:
|
||||
format:
|
||||
delimiter: ""
|
||||
precision:
|
||||
format:
|
||||
delimiter: ""
|
||||
currency:
|
||||
format:
|
||||
format: "%n%u"
|
||||
|
|
@ -78,6 +75,9 @@ de:
|
|||
separator: .
|
||||
precision:
|
||||
delimiter: ","
|
||||
precision:
|
||||
format:
|
||||
delimiter: ""
|
||||
integrations:
|
||||
opensearch_description: In Tracks suchen
|
||||
applescript_next_action_prompt: "Beschreibung der n\xC3\xA4chsten Aufgabe:"
|
||||
|
|
@ -93,65 +93,68 @@ de:
|
|||
previous: Vorherige
|
||||
logout: Abmelden
|
||||
go_back: "Zur\xC3\xBCck"
|
||||
optional: optional
|
||||
week: Woche
|
||||
cancel: Abbrechen
|
||||
none: Keine
|
||||
second: Zweite
|
||||
month: Monat
|
||||
optional: optional
|
||||
notes: Notizen
|
||||
forum: Forum
|
||||
server_error: Auf dem Server ist ein Fehler aufgetreten.
|
||||
forum: Forum
|
||||
notes: Notizen
|
||||
last: Letzte
|
||||
action: Aktion
|
||||
projects: Projekte
|
||||
action: Aktion
|
||||
project: Projekt
|
||||
contribute: Mitwirken
|
||||
ok: Ok
|
||||
contribute: Mitwirken
|
||||
website: Website
|
||||
first: Erste
|
||||
numbered_step: Schritt %{number}
|
||||
first: Erste
|
||||
sort:
|
||||
by_task_count_title: Nach Anzahl der Aufgaben sortieren
|
||||
by_task_count_title_confirm: Sollen diese Projekte wirklich nach Anzahl der Aufgaben sortiert werden? Die bisherige Sortier-Reihenfolge wird damit überschrieben.
|
||||
alphabetically: Alphabetisch
|
||||
alphabetically_confirm: Sollen diese Projekte wirklich alphabetisch sortiert werden? Die bisherige Sortier-Reihenfolge wird damit überschrieben.
|
||||
sort: Sortieren
|
||||
alphabetically_confirm: Sollen diese Projekte wirklich alphabetisch sortiert werden? Die bisherige Sortier-Reihenfolge wird damit überschrieben.
|
||||
alphabetically_title: Projekte alphabetisch sortieren
|
||||
by_task_count: Nach Anzahl der Aufgaben
|
||||
fourth: Vierte
|
||||
create: Erstellen
|
||||
months: Monate
|
||||
todo: Aktione
|
||||
contexts: Kontexte
|
||||
context: Kontext
|
||||
next: "N\xC3\xA4chste"
|
||||
description: Beschreibung
|
||||
errors_with_fields: "Mit folgenden Feldern sind Probleme aufgetreten:"
|
||||
todo: Aktione
|
||||
context: Kontext
|
||||
drag_handle: Verschieben
|
||||
update: Aktualisieren
|
||||
description: Beschreibung
|
||||
bugs: Bugs
|
||||
weeks: Woche
|
||||
update: Aktualisieren
|
||||
forth: Vierte
|
||||
wiki: Wiki
|
||||
weeks: Woche
|
||||
email: E-Mail
|
||||
search: Suchen
|
||||
ajaxError: Fehler beim Empfangen vom Server
|
||||
email: E-Mail
|
||||
data:
|
||||
import_successful: Import war erfolgreich.
|
||||
import_errors: Beim Import sind Fehler aufgetreten.
|
||||
models:
|
||||
project:
|
||||
feed_title: Tracks-Projekte
|
||||
feed_description: "Listet alle Projekte f\xC3\xBCr %{username} auf"
|
||||
todo:
|
||||
error_date_must_be_future: muss ein Datum in der Zukunft sein
|
||||
user:
|
||||
error_context_not_associated: "Kontext-ID %{context} nicht mit Benutzer-ID %{user} verkn\xC3\xBCpft."
|
||||
error_project_not_associated: "Projekt-ID %{project} nicht mit User-ID %{user} verkn\xC3\xBCpft."
|
||||
preference:
|
||||
due_on: "F\xC3\xA4llig auf %{date}"
|
||||
due_in: "F\xC3\xA4llig in %{days} Tagen"
|
||||
due_styles:
|
||||
- "F\xC3\xA4llig in ___ Tagen"
|
||||
- "F\xC3\xA4llig am _______"
|
||||
user:
|
||||
error_context_not_associated: "Kontext-ID %{context} nicht mit Benutzer-ID %{user} verkn\xC3\xBCpft."
|
||||
error_project_not_associated: "Projekt-ID %{project} nicht mit User-ID %{user} verkn\xC3\xBCpft."
|
||||
activerecord:
|
||||
attributes:
|
||||
project:
|
||||
|
|
@ -160,35 +163,58 @@ de:
|
|||
default_context_name: Standard Kontext
|
||||
description: Beschreibung
|
||||
todo:
|
||||
show_from: Zeigen ab dem
|
||||
predecessors: "H\xC3\xA4ngt ab von"
|
||||
show_from: Zeigen ab dem
|
||||
notes: Notizen
|
||||
project: Projekt
|
||||
context: Kontext
|
||||
description: Beschreibung
|
||||
due: Fällig
|
||||
user:
|
||||
last_name: Nachname
|
||||
first_name: Vorname
|
||||
preference:
|
||||
show_hidden_projects_in_sidebar: Zeige Versteckte Projekte in der Sidebar
|
||||
date_format: Datum Format
|
||||
show_hidden_contexts_in_sidebar: "Zeige Versteckte Zusammenh\xC3\xA4nge in der Sidebar"
|
||||
mobile_todos_per_page: Aufgaben pro Seite (Mobile Version)
|
||||
verbose_action_descriptors: "Ausf\xC3\xBChrlich Aktion Deskriptoren"
|
||||
sms_context: Standard-E-Mail-Kontext
|
||||
staleness_starts: Anfang des Abgestandenheit
|
||||
sms_context: Standard-E-Mail-Kontext
|
||||
title_date_format: Titel Datumsformat
|
||||
show_number_completed: "Zeige Zahl der abgeschlossenen Ma\xC3\x9Fnahmen"
|
||||
refresh: Aktualisierungsintverall (in Minuten)
|
||||
week_starts: Woche startet am
|
||||
time_zone: Zeit Zone
|
||||
due_style: "F\xC3\xA4llig stijl"
|
||||
locale: Zahle
|
||||
sms_email: Per E-Mail
|
||||
show_project_on_todo_done: Zur Projektseite wechseln, wenn To-Do abgeschlossen
|
||||
show_completed_projects_in_sidebar: Zeige abgeschlossene Projekte in der Sidebar
|
||||
user:
|
||||
last_name: Nachname
|
||||
first_name: Vorname
|
||||
locale: Zahle
|
||||
due_style: "F\xC3\xA4llig stijl"
|
||||
time_zone: Zeit Zone
|
||||
show_project_on_todo_done: Zur Projektseite wechseln, wenn To-Do abgeschlossen
|
||||
sms_email: Per E-Mail
|
||||
first_name: Name
|
||||
show_completed_projects_in_sidebar: Zeige abgeschlossene Projekte in der Sidebar
|
||||
errors:
|
||||
messages:
|
||||
greater_than_or_equal_to: "muss gr\xC3\xB6\xC3\x9Fer oder gleich %{count} sein"
|
||||
record_invalid: "Validierung fehlgeschlagen: %{Fehler}"
|
||||
confirmation: "stimmt nicht mit der Best\xC3\xA4tigung \xC3\xBCberein"
|
||||
less_than_or_equal_to: muss kleiner oder gleich %{count} sein
|
||||
blank: "muss ausgef\xC3\xBCllt werden"
|
||||
invalid: "ist nicht g\xC3\xBCltig"
|
||||
exclusion: "ist nicht verf\xC3\xBCgbar"
|
||||
odd: muss ungerade sein
|
||||
even: muss gerade sein
|
||||
too_short: ist zu kurz (nicht weniger als %{count} Zeichen)
|
||||
wrong_length: "hat die falsche L\xC3\xA4nge (muss genau %{count} Zeichen haben)"
|
||||
empty: "muss ausgef\xC3\xBCllt werden"
|
||||
less_than: muss kleiner als %{count} sein
|
||||
greater_than: "muss gr\xC3\xB6\xC3\x9Fer als %{count} sein"
|
||||
equal_to: muss genau %{count} sein
|
||||
accepted: muss akzeptiert werden
|
||||
too_long: ist zu lang (nicht mehr als %{count} Zeichen)
|
||||
taken: ist bereits vergeben
|
||||
inclusion: "ist kein g\xC3\xBCltiger Wert"
|
||||
not_a_number: ist keine Zahl
|
||||
models:
|
||||
project:
|
||||
attributes:
|
||||
|
|
@ -196,27 +222,6 @@ de:
|
|||
blank: Projekt muss einen Namen haben
|
||||
too_long: Projektname muss weniger als 256 Zeichen haben
|
||||
taken: existiert bereits
|
||||
messages:
|
||||
record_invalid: "Validierung fehlgeschlagen: %{Fehler}"
|
||||
greater_than_or_equal_to: "muss gr\xC3\xB6\xC3\x9Fer oder gleich %{count} sein"
|
||||
confirmation: "stimmt nicht mit der Best\xC3\xA4tigung \xC3\xBCberein"
|
||||
less_than_or_equal_to: muss kleiner oder gleich %{count} sein
|
||||
blank: "muss ausgef\xC3\xBCllt werden"
|
||||
invalid: "ist nicht g\xC3\xBCltig"
|
||||
exclusion: "ist nicht verf\xC3\xBCgbar"
|
||||
odd: muss ungerade sein
|
||||
too_short: ist zu kurz (nicht weniger als %{count} Zeichen)
|
||||
wrong_length: "hat die falsche L\xC3\xA4nge (muss genau %{count} Zeichen haben)"
|
||||
empty: "muss ausgef\xC3\xBCllt werden"
|
||||
even: muss gerade sein
|
||||
less_than: muss kleiner als %{count} sein
|
||||
greater_than: "muss gr\xC3\xB6\xC3\x9Fer als %{count} sein"
|
||||
equal_to: muss genau %{count} sein
|
||||
accepted: muss akzeptiert werden
|
||||
too_long: ist zu lang (nicht mehr als %{count} Zeichen)
|
||||
taken: ist bereits vergeben
|
||||
not_a_number: ist keine Zahl
|
||||
inclusion: "ist kein g\xC3\xBCltiger Wert"
|
||||
full_messages:
|
||||
format: "%{attribute} %{message}"
|
||||
template:
|
||||
|
|
@ -224,20 +229,22 @@ de:
|
|||
header:
|
||||
one: "Konnte dieses %{model} Objekt nicht speichern: 1 Fehler."
|
||||
other: "Konnte dieses %{model} Objekt nicht speichern: %{count} Fehler."
|
||||
data:
|
||||
import_successful: Import war erfolgreich.
|
||||
import_errors: Beim Import sind Fehler aufgetreten.
|
||||
stats:
|
||||
totals_active_project_count: Von diesen sind %{count} aktive Projekte
|
||||
tag_cloud_title: Tag-Cloud aller Aktionen
|
||||
actions: Aktionen
|
||||
tag_cloud_description: Diese Tag-Cloud beinhaltet Tags aller Aktionen (abgeschlossen, nicht abgeschlossen, sichtbar und/oder unsichtbar)
|
||||
tag_cloud_90days_title: Tag-Cloud-Aktionen in den letzten 90 Tagen
|
||||
totals_active_project_count: Von diesen sind %{count} aktive Projekte
|
||||
actions: Aktionen
|
||||
actions_last_year_legend:
|
||||
number_of_actions: Anzahl Aktionen
|
||||
months_ago: Monate zuvor
|
||||
totals_first_action: Seit deiner ersten Aktion am %{date}
|
||||
actions_avg_completion_time: Durchschnittlich hast du %{count} Tage gebraucht, um eine Aktion abzuschliessen.
|
||||
running_time_legend:
|
||||
actions: Aufgaben
|
||||
percentage: Prozentsatz
|
||||
weeks: "Vergangene Zeit einer Aktion (Wochen). Klick auf eine Leiste f\xC3\xBCr mehr Informationen."
|
||||
actions_dow_30days_title: Wochentag (letzte 30 Tage)
|
||||
totals_action_count: hattest du insgesamt %{count} Aktionen
|
||||
legend:
|
||||
number_of_days: Anzahl vergangene Tage
|
||||
|
|
@ -249,58 +256,55 @@ de:
|
|||
months_ago: Monate zuvor
|
||||
current_running_time_of_incomplete_visible_actions: "Aktuelle Laufzeit unvollst\xC3\xA4ndiger sichtbarer Aufgaben"
|
||||
totals_deferred_actions: "von denen %{count} im Notizbuch zur\xC3\xBCckgestellt sind"
|
||||
running_time_legend:
|
||||
actions: Aufgaben
|
||||
percentage: Prozentsatz
|
||||
weeks: "Vergangene Zeit einer Aktion (Wochen). Klick auf eine Leiste f\xC3\xBCr mehr Informationen."
|
||||
top10_longrunning: "Top 10 der am l\xC3\xA4ngsten laufenden Projekte"
|
||||
actions_dow_30days_title: Wochentag (letzte 30 Tage)
|
||||
actions_lastyear_title: Aktionen der letzten 12 Monate
|
||||
totals_actions_completed: "%{count} davon sind abgeschlossen."
|
||||
totals_incomplete_actions: "Du hast %{count} unvollst\xC3\xA4ndige Aktionen"
|
||||
totals_unique_tags: Von diesen Tags sind %{count} einmalig..
|
||||
actions_avg_completed_30days: und %{count} durchschnittlich davon erledigt.
|
||||
top5_contexts: Top 5 aller Kontexte
|
||||
action_completion_time_title: Fertigstellungszeit (alle abgeschlossenen Aktionen)
|
||||
actions_last_year: Aktionen im letzten Jahr
|
||||
totals_context_count: Du hast %{count} Kontexte.
|
||||
projects: Projekte
|
||||
actions_lastyear_title: Aktionen der letzten 12 Monate
|
||||
totals_actions_completed: "%{count} davon sind abgeschlossen."
|
||||
totals_incomplete_actions: "Du hast %{count} unvollst\xC3\xA4ndige Aktionen"
|
||||
totals_visible_context_count: Von diesen sind %{count} sichtbare Kontexte
|
||||
totals_blocked_actions: "%{count} h\xC3\xA4ngen vom Abschluss anderer Aktionen ab."
|
||||
actions_day_of_week_title: Wochentag (alle Aktionen)
|
||||
totals_project_count: Du hast %{count} Projekte.
|
||||
action_completion_time_title: Fertigstellungszeit (alle abgeschlossenen Aktionen)
|
||||
actions_last_year: Aktionen im letzten Jahr
|
||||
projects: Projekte
|
||||
totals_context_count: Du hast %{count} Kontexte.
|
||||
actions_min_max_completion_days: "Das Minimum/Maximum an Tagen einer Vervollst\xC3\xA4ndigung ist %{min}/%{max}."
|
||||
tags: Tags
|
||||
actions_min_completion_time: "Die minimale Zeit betr\xC3\xA4gt %{time}."
|
||||
no_tags_available: "keine Tags verf\xC3\xBCgbar"
|
||||
tags: Tags
|
||||
running_time_all: "Aktuelle Laufzeit aller unvollst\xC3\xA4ndigen Aktionen."
|
||||
actions_day_of_week_title: Wochentag (alle Aktionen)
|
||||
totals_project_count: Du hast %{count} Projekte.
|
||||
tag_cloud_90days_description: Diese Tag-Cloud beinhaltet Tags der Aktionen, die in den letzten 90 Tagen erstellt oder abgeschlossen wurden.
|
||||
running_time_all: "Aktuelle Laufzeit aller unvollst\xC3\xA4ndigen Aktionen."
|
||||
more_stats_will_appear: "Weitere Statistiken werden verf\xC3\xBCgbar, wenn einige Aufgaben hinzugef\xC3\xBCgt wurden."
|
||||
actions_30days_title: _Aktionen der letzten 30 Tage
|
||||
top5_visible_contexts_with_incomplete_actions: "Top 5 der sichtbaren Kontexte mit unvollst\xC3\xA4ndigen Aktionen"
|
||||
time_of_day: Tageszeit (alle Aktionen)
|
||||
totals_hidden_project_count: "%{count} sind versteckt"
|
||||
actions_further: und danach
|
||||
tod30: Tageszeit (letzte 30 Tage)
|
||||
totals_hidden_project_count: "%{count} sind versteckt"
|
||||
totals_tag_count: Du hast %{count} Tags in Aktionen.
|
||||
more_stats_will_appear: "Weitere Statistiken werden verf\xC3\xBCgbar, wenn einige Aufgaben hinzugef\xC3\xBCgt wurden."
|
||||
tod30: Tageszeit (letzte 30 Tage)
|
||||
click_to_return: "Klick auf %{link} um zur Statistikseite zur\xC3\xBCckzukehren."
|
||||
click_to_show_actions_from_week: Klick auf %{link} um die Aktionen von Woche %{week} und danach anzuzeigen.
|
||||
other_actions_label: (andere)
|
||||
top10_projects_30days: Top-10-Projekt der letzten 30 Tage
|
||||
top10_projects: Top 10 aller Projekte
|
||||
spread_of_running_actions_for_visible_contexts: Verteilung der laufenden Aufgaben aller sichtbaren Kontexte
|
||||
actions_avg_created: In den letzten 12 Monaten hast du im Durchschnitt %{count} Aktionen erstellt
|
||||
actions_selected_from_week: "Aktionen ausgew\xC3\xA4hlt ab Woche"
|
||||
spread_of_actions_for_all_context: Aufgabenverteilung aller Kontexte
|
||||
totals_completed_project_count: und %{count} sind abgeschlossene Projekte.
|
||||
click_to_show_actions_from_week: Klick auf %{link} um die Aktionen von Woche %{week} und danach anzuzeigen.
|
||||
actions_selected_from_week: "Aktionen ausgew\xC3\xA4hlt ab Woche"
|
||||
actions_avg_created: In den letzten 12 Monaten hast du im Durchschnitt %{count} Aktionen erstellt
|
||||
spread_of_actions_for_all_context: Aufgabenverteilung aller Kontexte
|
||||
click_to_return_link: hier
|
||||
totals_hidden_context_count: und %{count} sind versteckte Kontexte.
|
||||
actions_avg_completed: und %{count} durchschnittlich davon monatlich erledigt
|
||||
contexts: Kontexte
|
||||
totals: Ingesamt
|
||||
time_of_day_legend:
|
||||
number_of_actions: Anzahl Aufgaben
|
||||
time_of_day: Tageszeit
|
||||
click_to_return_link: hier
|
||||
contexts: Kontexte
|
||||
totals_hidden_context_count: und %{count} sind versteckte Kontexte.
|
||||
actions_avg_completed: und %{count} durchschnittlich davon monatlich erledigt
|
||||
click_to_update_actions: Klicke auf eine Leiste in der Grafik um die Aktionen unten zu aktualisieren.
|
||||
no_actions_selected: "Es sind keine Aufgaben ausgew\xC3\xA4hlt."
|
||||
labels:
|
||||
month_avg_completed: "%{months} Monat durchschnittlich fertig gestellt"
|
||||
completed: Erledigt
|
||||
|
|
@ -308,22 +312,20 @@ de:
|
|||
avg_created: Durchschnittlich erstellt
|
||||
avg_completed: Durchschnittlich fertiggestellt
|
||||
created: Erstellt
|
||||
no_actions_selected: "Es sind keine Aufgaben ausgew\xC3\xA4hlt."
|
||||
click_to_update_actions: Klicke auf eine Leiste in der Grafik um die Aktionen unten zu aktualisieren.
|
||||
running_time_all_legend:
|
||||
actions: Aktionen
|
||||
percentage: Prozentsatz
|
||||
running_time: "Laufzeit einer Aktion (Wochen). Klick auf eine Leiste f\xC3\xBCr mehr Informationen."
|
||||
action_selection_title: TRACKS::Aktionsauswahl
|
||||
actions_actions_avg_created_30days: In den letzten 30 Tagen hast du im Durchschnitt %{count} Aktionen erstellt
|
||||
tod30_legend:
|
||||
number_of_actions: Anzahl Aufgaben
|
||||
time_of_day: Tageszeit
|
||||
action_selection_title: TRACKS::Aktionsauswahl
|
||||
todos:
|
||||
completed_actions: Erledigte Aufgaben
|
||||
show_from: Anzeigen ab dem
|
||||
error_starring_recurring: Konnte die Hervorhebung der wiederkehrenden Aufgabe \'%{description}\' nicht durchführen
|
||||
recurring_action_deleted: Die Aktion wurde gelöscht. Da dies eine wiederkehrende Aktion ist, wurde eine neue erstellt.
|
||||
completed_actions: Erledigte Aufgaben
|
||||
completed_recurring: Abgeschlossene wiederkehrende To-Dos
|
||||
added_new_next_action: Neue Aktion angelegt
|
||||
completed_rest_of_previous_month: Fertiggestellt den Rest des Vormonats
|
||||
|
|
@ -340,76 +342,77 @@ de:
|
|||
no_hidden_actions: Momentan sind keine versteckten Aufgaben vorhanden
|
||||
edit_action_with_description: Aktion '%{description}' bearbeiten
|
||||
action_due_on: "(Aktion f\xC3\xA4llig am %{date})"
|
||||
tags: Tags (Komma-separiert)
|
||||
action_deleted_success: Die nächste Aktion erfolgreich gelöscht
|
||||
archived_tasks_title: TRACKS::Archivierte erledigte Aufgaben
|
||||
remove_dependency: Abhängigkeit löschen (löscht nicht die Aufgabe)
|
||||
list_incomplete_next_actions: Unerledigte Folge-Aufgaben anzeigen
|
||||
mobile_todos_page_title: Alle Aufgaben
|
||||
tags: Tags (Komma-separiert)
|
||||
new_related_todo_created: "Eine neue To-Do wurde hinzugef\xC3\xBCgt, die zu dieser wiederkehrenden To-Do geh\xC3\xB6rt"
|
||||
context_changed: Kontext zu %{name} gewechselt
|
||||
mobile_todos_page_title: Alle Aufgaben
|
||||
add_another_dependency: "F\xC3\xBCgen Sie eine andere Abh\xC3\xA4ngigkeit"
|
||||
delete_recurring_action_title: "Wiederkehrende Aktion '%{description}' l\xC3\xB6schen"
|
||||
removed_predecessor: "%{successor} entfernt als Abh\xC3\xA4ngigkeit von %{predecessor}."
|
||||
recurring_actions_title: TRACKS::Wiederkehrende Aktionen
|
||||
next_action_needed: Es muss mindestens eine folgende Aktion angelegt werden
|
||||
action_deleted_error: Fehler beim Löschen der Aufgabe
|
||||
action_saved: Aktion gespeichert
|
||||
scheduled_overdue: "Planm\xC3\xA4\xC3\x9Fig angezeigt vor %{days} Tagen"
|
||||
action_deleted_error: Fehler beim Löschen der Aufgabe
|
||||
next_actions_description: "Filter:"
|
||||
edit_action: Aktion bearbeiten
|
||||
added_new_context: "Neuer Kontext hinzugef\xC3\xBCgt"
|
||||
next_actions_description: "Filter:"
|
||||
added_new_project: "Neues Projekt hinzugef\xC3\xBCgt"
|
||||
list_incomplete_next_actions_with_limit: Zeige die letzten %{count} unerledigten Folge-Aufgaben
|
||||
set_to_pending: "%{task} als ausstehend markiert"
|
||||
next_actions_title_additions:
|
||||
completed: Aufgaben erledigt
|
||||
due_today: heute fällig
|
||||
due_within_a_week: diese Woche fällig
|
||||
added_new_project: "Neues Projekt hinzugef\xC3\xBCgt"
|
||||
list_incomplete_next_actions_with_limit: Zeige die letzten %{count} unerledigten Folge-Aufgaben
|
||||
set_to_pending: "%{task} als ausstehend markiert"
|
||||
older_completed_items: "Ältere erledigte Aufgaben"
|
||||
append_in_this_project: in diesem Projekt
|
||||
error_deleting_item: Beim Löschen von %{description} trat ein Fehler auf
|
||||
task_list_title: TRACKS::Aufgaben anzeigen
|
||||
no_actions_due_this_week: Keine zu erledigenden Aufgaben für den Rest der Woche
|
||||
delete_recurring_action_confirm: Soll die wiederkehrende Aktion '%{description}' wirklich gelöscht werden?
|
||||
recurring_pattern_removed: Das Wiederauftreten Muster ist aus entfernt %{count}
|
||||
no_recurring_todos: Im Augenblick gibt es keine wiederkehrenden To-Dos
|
||||
error_completing_todo: Beim Abschliessen/Aktivieren der wiederkehrenden To-Do %{description} ist ein Fehler aufgetreten
|
||||
recurring_pattern_removed: Das Wiederauftreten Muster ist aus entfernt %{count}
|
||||
convert_to_project: In Projekt umwandeln
|
||||
no_deferred_pending_actions: Momentan sind keine aufgeschobenen oder ausstehenden Aufgaben vorhanden.
|
||||
delete_recurring_action_confirm: Soll die wiederkehrende Aktion '%{description}' wirklich gelöscht werden?
|
||||
completed_last_day: In den letzten 24 Stunden erledigt
|
||||
all_completed: Alle abgeschlossenen Aktionen
|
||||
error_saving_recurring: Es gab einen Fehler beim Speichern der wiederkehrenden todo '%{description}'
|
||||
show_in_days: Anzeigen in %{days} Tagen
|
||||
no_project: --Kein Projekt--
|
||||
completed_more_than_x_days_ago: Vor mehr als %{count} Tagen erledigt
|
||||
feed_title_in_context: im Kontext '%{context}'
|
||||
new_related_todo_created_short: hat einen neuen todo
|
||||
completed_tagged_page_title: "TRACKS:: Erledigte Aufgaben mit Tag %{tag_name}"
|
||||
no_project: --Kein Projekt--
|
||||
show_in_days: Anzeigen in %{days} Tagen
|
||||
error_saving_recurring: Es gab einen Fehler beim Speichern der wiederkehrenden todo '%{description}'
|
||||
completed_more_than_x_days_ago: Vor mehr als %{count} Tagen erledigt
|
||||
all_completed: Alle abgeschlossenen Aktionen
|
||||
feed_title_in_context: im Kontext '%{context}'
|
||||
older_than_days: "Älter als %{count} Tage"
|
||||
completed_tagged_page_title: "TRACKS:: Erledigte Aufgaben mit Tag %{tag_name}"
|
||||
edit: Bearbeiten
|
||||
pending: Ausstehend
|
||||
completed_actions_with: Abgeschlossene Aktionen mit dem Tag %{tag_name}
|
||||
completed_tasks_title: TRACKS::Erledigte Aufgaben
|
||||
deleted_success: "Die Aktion wurde erfolgreich gel\xC3\xB6scht."
|
||||
completed_tasks_title: TRACKS::Erledigte Aufgaben
|
||||
feed_title_in_project: im Projekt '%{project}'
|
||||
clear_due_date: Fälligkeitsdatum leeren
|
||||
error_removing_dependency: "Beim Entfernen der Abh\xC3\xA4ngigkeit ist ein Fehler aufgetreten"
|
||||
hidden_actions: Verstecke Aufgaben
|
||||
was_due_on_date: war am %{date} fällig
|
||||
error_removing_dependency: "Beim Entfernen der Abh\xC3\xA4ngigkeit ist ein Fehler aufgetreten"
|
||||
show_on_date: Anzeigen am %{date}
|
||||
was_due_on_date: war am %{date} fällig
|
||||
recurrence_period: Wiederholungszeitraum
|
||||
deferred_actions_with: "Zur\xC3\xBCckgestellte Aktionen mit dem Tag '%{tag_name}'"
|
||||
recurring_deleted_success: "Die wiederkehrende Aktion wurde erfolgreich gel\xC3\xB6scht."
|
||||
confirm_delete: "Bist du sicher, dass du die Aktion '%{description}' l\xC3\xB6schen m\xC3\xB6chtest?"
|
||||
deferred_tasks_title: TRACKS::Notizbuch
|
||||
next_actions_title: TRACKS::Weitere Aufgaben
|
||||
recurring_deleted_success: "Die wiederkehrende Aktion wurde erfolgreich gel\xC3\xB6scht."
|
||||
next_action_description: "Beschreibung der n\xC3\xA4chsten Aktion"
|
||||
next_actions_title: TRACKS::Weitere Aufgaben
|
||||
deferred_tasks_title: TRACKS::Notizbuch
|
||||
no_completed_actions_with: Keine abgeschlossenen Aktionen mit dem Tag '%{tag_name}'
|
||||
clear_show_from_date: Datum leeren
|
||||
calendar_page_title: TRACKS::Kalender
|
||||
unresolved_dependency: "Der Wert, den Sie in die Abh\xC3\xA4ngigkeit Feld eingegeben nicht zu einer bestehenden Aktion zu l\xC3\xB6sen. Dieser Wert wird nicht mit dem Rest der Aktion gerettet werden. Weiter gehen?"
|
||||
in_hidden_state: als versteckt markiert
|
||||
unresolved_dependency: "Der Wert, den Sie in die Abh\xC3\xA4ngigkeit Feld eingegeben nicht zu einer bestehenden Aktion zu l\xC3\xB6sen. Dieser Wert wird nicht mit dem Rest der Aktion gerettet werden. Weiter gehen?"
|
||||
completed_last_x_days: In den letzten %{count} Tagen erledigt
|
||||
show_today: Heute anzeigen
|
||||
no_actions_found_title: Keine Aktionen gefunden
|
||||
next_actions_due_date:
|
||||
|
|
@ -418,49 +421,49 @@ de:
|
|||
due_today: "Heute f\xC3\xA4llig"
|
||||
overdue_by_plural: "\xC3\x9Cberf\xC3\xA4llig mit %{days} Tagen"
|
||||
due_tomorrow: "F\xC3\xA4llig morgen"
|
||||
completed_last_x_days: In den letzten %{count} Tagen erledigt
|
||||
added_new_next_action_singular: Neue weiterführende Aufgabe angelegt
|
||||
no_actions_with: "Im Augenblick gibt es keine unvollst\xC3\xA4ndigen Aktionen mit dem Tag '%{tag_name}'"
|
||||
defer_x_days:
|
||||
one: "Einen Tag zur\xC3\xBCckstellen"
|
||||
other: "%{count} Tage zur\xC3\xBCckstellen"
|
||||
added_new_next_action_singular: Neue weiterführende Aufgabe angelegt
|
||||
no_completed_actions: Momentan sind keine erledigten Aufgaben vorhanden.
|
||||
feeds:
|
||||
completed: "Erledigt: %{date}"
|
||||
due: "F&auuml;llig: %{date}"
|
||||
deferred_pending_actions: Aufgeschobene/ausstehende Aufgaben
|
||||
has_x_pending:
|
||||
one: Hat eine ausstehende Aktion
|
||||
other: Hat %{count} ausstehende Aktionen
|
||||
recurring_todos: Wiederkehrende To-Dos
|
||||
deferred_pending_actions: Aufgeschobene/ausstehende Aufgaben
|
||||
delete_action: "Aktion l\xC3\xB6schen"
|
||||
error_deleting_recurring: "Beim L\xC3\xB6schen der wiederkehrenden To-Do %{description} ist ein Fehler aufgetreten"
|
||||
cannot_add_dependency_to_completed_todo: "Kann nicht hinzugef\xC3\xBCgt werden diese Aktion als eine Abh\xC3\xA4ngigkeit zu einer abgeschlossenen Aktion!"
|
||||
recurring_todos: Wiederkehrende To-Dos
|
||||
delete: "L\xC3\xB6schen"
|
||||
drag_action_title: "Auf andere Aktion ziehen, um sie als Abh\xC3\xA4ngigkeit zu definieren"
|
||||
cannot_add_dependency_to_completed_todo: "Kann nicht hinzugef\xC3\xBCgt werden diese Aktion als eine Abh\xC3\xA4ngigkeit zu einer abgeschlossenen Aktion!"
|
||||
no_last_completed_actions: Keine abgeschlossene Aktionen gefunden
|
||||
depends_on: "H\xC3\xA4ngt ab von"
|
||||
tickler_items_due:
|
||||
one: Ein Notizbuch-Eintrag ist nun fällig - lade die Seite neu, um sie zu sehen.
|
||||
other: "%{count} Notizbuch-Einträge sind nun fällig - lade die Seite neu, um sie zu sehen."
|
||||
action_marked_complete: Die Aktion <strong>'%{description}'</strong> wurde als <strong>%{completed}</strong> markiert.
|
||||
new_related_todo_not_created_short: nicht schaffen todo
|
||||
completed_today: Heute Fertiggestellt
|
||||
added_new_next_action_plural: Neue weiterführende Aufgaben angelegt
|
||||
new_related_todo_not_created_short: nicht schaffen todo
|
||||
completed_rest_of_week: Fertiggestellt den Rest dieser Woche
|
||||
error_starring: Konnte die Hervorhebung von \'%{description}\' nicht durchführen
|
||||
calendar:
|
||||
get_in_ical_format: Diesen Kalender im iCal Format herunterladen
|
||||
due_next_week: Nächste Woche fällig
|
||||
due_this_week: Die restliche Woche zu erledigen
|
||||
no_actions_due_next_week: Keine Aufgaben für die kommende Woche
|
||||
no_actions_due_today: Heute sind keine Aufgaben fällig
|
||||
due_this_week: Die restliche Woche zu erledigen
|
||||
due_today: Heute zu erledigen
|
||||
no_actions_due_today: Heute sind keine Aufgaben fällig
|
||||
due_next_month_and_later: Im %{month} und später fällig
|
||||
no_actions_due_after_this_month: Nach diesem Monat sind keine Aufgaben fällig
|
||||
due_this_month: Im %{month} fällig
|
||||
no_actions_due_this_month: Keine Aktionen für den Rest des Monats
|
||||
show_tomorrow: Morgen anzeigen
|
||||
action_deferred: Die Aktion \'% {description}\' wurde vertagt
|
||||
recurrence:
|
||||
ends_on_number_times: Endet nach %{number} Mal
|
||||
ends_on_date: Endet am %{date}
|
||||
|
|
@ -472,10 +475,7 @@ de:
|
|||
daily_options: "Einstellungen f\xC3\xBCr sich t\xC3\xA4glich wiederholenden Aktionen"
|
||||
monthly: Monatlich
|
||||
starts_on: Beginnt am
|
||||
show_option_always: immer
|
||||
daily: "T\xC3\xA4glich"
|
||||
pattern:
|
||||
third: Drittel
|
||||
month_names:
|
||||
-
|
||||
- Januar
|
||||
|
|
@ -492,19 +492,18 @@ de:
|
|||
- Oktober
|
||||
- November
|
||||
- Dezember
|
||||
third: Drittel
|
||||
every_n: jeden %{n}
|
||||
on_day_n: am Tag %{n}
|
||||
every_xth_day_of_every_n_months: "jedes %{x} %{day} jedes %{n_months} \xE2\x80\x8B"
|
||||
second: zweite
|
||||
on_day_n: am Tag %{n}
|
||||
weekly: "w\xC3\xB6chentlich"
|
||||
from: von
|
||||
weekly: "w\xC3\xB6chentlich"
|
||||
last: zuletzt
|
||||
every_day: jeden Tag
|
||||
the_xth_day_of_month: der %{x} %{day} von %{month}
|
||||
times: "f\xC3\xBCr %{number} Zeiten"
|
||||
on_work_days: an Wochentagen
|
||||
the_xth_day_of_month: der %{x} %{day} von %{month}
|
||||
first: erste
|
||||
show: Show
|
||||
day_names:
|
||||
- Sonntag
|
||||
- Montag
|
||||
|
|
@ -513,70 +512,73 @@ de:
|
|||
- Donnerstag
|
||||
- Freitag
|
||||
- Samstag
|
||||
show: Show
|
||||
on_work_days: an Wochentagen
|
||||
every_year_on: jedes Jahr in %{date}
|
||||
fourth: vierte
|
||||
due: "F\xC3\xA4llig"
|
||||
until: bis
|
||||
every_month: jeden Monat
|
||||
yearly_every_x_day: "Jeden %{day}. %{month} "
|
||||
until: bis
|
||||
show_option_always: immer
|
||||
daily: "T\xC3\xA4glich"
|
||||
recurrence_on_options: Setze Wiederholung auf
|
||||
yearly_every_x_day: "Jeden %{day}. %{month} "
|
||||
daily_every_number_day: Alle %{number} Tage
|
||||
show_options: To-Do anzeigen
|
||||
weekly_every_number_week: Kehrt jede %{number}. Woche wieder am
|
||||
ends_on: Endet am
|
||||
show_options: To-Do anzeigen
|
||||
show_days_before: "%{days} Tage bevor die To-Do f\xC3\xA4llig ist"
|
||||
from_tickler: the date todo comes from tickler (no due date set)
|
||||
no_end_date: Kein Enddatum
|
||||
day_x_on_every_x_month: Tag %{day} in jedem %{month}. Monat
|
||||
yearly_every_xth_day: Den %{day} %{day_of_week} des %{month}
|
||||
yearly_options: "Einstellungen f\xC3\xBCr sich j\xC3\xA4hrlich wiederholende Aktionen"
|
||||
yearly: "J\xC3\xA4hrlich"
|
||||
show_days_before: "%{days} Tage bevor die To-Do f\xC3\xA4llig ist"
|
||||
from_tickler: the date todo comes from tickler (no due date set)
|
||||
yearly_every_xth_day: Den %{day} %{day_of_week} des %{month}
|
||||
monthly_every_xth_day: Der %{day} %{day_of_week} eines jeden %{month}. Monats
|
||||
action_deferred: Die Aktion \'% {description}\' wurde vertagt
|
||||
yearly: "J\xC3\xA4hrlich"
|
||||
tagged_page_title: TRACKS::Als '%{tag_name}' markiert
|
||||
no_completed_recurring: Im Augenblick gibt es keine abgeschlossenen wiederkehrenden To-Dos
|
||||
added_dependency: "%{dependency} als Abhängigkeit hinzugefügt."
|
||||
completed_rest_of_month: Fertiggestellt den Rest des Monats
|
||||
no_deferred_actions: Zur Zeit sind keine zurückgestellten Aktionen vorhanden.
|
||||
all_completed_tagged_page_title: "TRACKS:: Alle erledigten Aufgaben mit Tag %{tag_name}"
|
||||
no_deferred_actions: Zur Zeit sind keine zurückgestellten Aktionen vorhanden.
|
||||
completed_rest_of_month: Fertiggestellt den Rest des Monats
|
||||
recurrence_completed: Nach dieser wiederkehrenden Aktion, die du gerade abgeschlossen hast, folgt keine mehr. Die Wiederholung endet hiermit
|
||||
due: Fällig
|
||||
no_actions_found: "Momentan gibt es keine unvollst\xC3\xA4ndigen Aktionen."
|
||||
in_pending_state: und als ausstehend markiert
|
||||
error_toggle_complete: "K\xC3\xB6nnte nicht diese Marke todo komplett"
|
||||
due: Fällig
|
||||
action_marked_complete_error: Die Aktion <strong>'%{description}'</strong> wurde aufgrund eines Fehlers NICHT als <strong>%{completed}</strong> markiert.
|
||||
recurring_action_saved: Wiederkehrende Aktion gespeichert
|
||||
depends_on_separate_with_commas: Hängt ab von (Komma-separiert)
|
||||
action_saved_to_tickler: Aktion im Notizbuch gespeichert
|
||||
completed_in_archive:
|
||||
one: Es befindet sich eine erledigte Aufgabe im Archiv.
|
||||
other: Es befinden sich %{count} erledigte Aufgaben im Archiv.
|
||||
overdue: "Überfällig"
|
||||
recurring_action_saved: Wiederkehrende Aktion gespeichert
|
||||
action_saved_to_tickler: Aktion im Notizbuch gespeichert
|
||||
to_tickler: ", im Notizbuch hinterlegt"
|
||||
next_actions_description_additions:
|
||||
completed: In den letzten %{count} Tagen
|
||||
due_date: mit einem Datum %{due_date} oder früher
|
||||
overdue: "Überfällig"
|
||||
add_new_recurring: "F\xC3\xBCge eine neue wiederkehrende Aktion hinzu"
|
||||
no_incomplete_actions: Es gibt keine unerledigten Aufgaben
|
||||
add_new_recurring: "F\xC3\xBCge eine neue wiederkehrende Aktion hinzu"
|
||||
notes:
|
||||
delete_confirmation: "Bist du sicher, dass du die Notiz '%{id}' l\xC3\xB6schen m\xC3\xB6chtest?"
|
||||
delete_item_title: Eintrag löschen
|
||||
delete_note_title: Notiz '%{id}' löschen
|
||||
deleted_note: "Notiz '%{id}' l\xC3\xB6schen"
|
||||
note_link_title: Notiz %{id} anzeigen
|
||||
show_note_title: Notiz anzeigen
|
||||
deleted_note: "Notiz '%{id}' l\xC3\xB6schen"
|
||||
edit_item_title: Eintrag bearbeiten
|
||||
note_location_link: "In:"
|
||||
no_notes_available: "Derzeit gibt es keine Notizen: f\xC3\xBCge Notizen von der jeweiligen Projektseite hinzu."
|
||||
note_header: Notiz %{id}
|
||||
no_notes_available: "Derzeit gibt es keine Notizen: f\xC3\xBCge Notizen von der jeweiligen Projektseite hinzu."
|
||||
delete_note_confirm: Soll die Notiz '%{id}' wirklich gelöscht werden?
|
||||
states:
|
||||
hidden_plural: Versteckte
|
||||
completed: Erledigt
|
||||
completed_plural: Erledigte
|
||||
visible_plural: Sichtbare
|
||||
active_plural: Aktive
|
||||
visible: Sichtbar
|
||||
active_plural: Aktive
|
||||
active: Aktiv
|
||||
hidden: Versteckt
|
||||
time:
|
||||
|
|
@ -589,81 +591,86 @@ de:
|
|||
long: "%A, %d. %B %Y, %H:%M Uhr"
|
||||
pm: nachmittags
|
||||
projects:
|
||||
deferred_actions: "Aufgeschobene Aufgaben f\xC3\xBCr dieses Projekt"
|
||||
was_marked_hidden: wurde als verborgen markiert
|
||||
edit_project_title: Projekt bearbeiten
|
||||
default_tags_removed_notice: Standard-Tags entfernt
|
||||
default_context_set: Standard-Kontext des Projekts auf %{default_context} gesetzt
|
||||
no_actions_in_project: "Momentan gibt es keine unvollst\xC3\xA4ndigen Aktionen in diesem Projekt"
|
||||
deferred_actions: "Aufgeschobene Aufgaben f\xC3\xBCr dieses Projekt"
|
||||
was_marked_hidden: wurde als verborgen markiert
|
||||
all_completed_tasks_title: "TRACKS:: Alle auflisten Abgeschlossene Aktionen in Project '%{project_name}'"
|
||||
page_title: "TRACKS::Projekt: %{project}"
|
||||
hide_form: Fomular verstecken
|
||||
no_notes_attached: "Im Augenblick sind keine Notizen mit diesem Projekt verkn\xC3\xBCpft."
|
||||
deferred_actions_empty: "Es gibt keine aufgeschobenen Aufgaben f\xC3\xBCr dieses Projekt"
|
||||
this_project: Dieses Projekt
|
||||
show_form_title: Neues Projekt anlegen
|
||||
project_state: Projekt ist %{state}
|
||||
list_completed_projects: "TRACKS:: Liste Abgeschlossene Projekte"
|
||||
to_new_project_page: Zu neuem Projekt weiterleiten
|
||||
no_notes_attached: "Im Augenblick sind keine Notizen mit diesem Projekt verkn\xC3\xBCpft."
|
||||
this_project: Dieses Projekt
|
||||
deferred_actions_empty: "Es gibt keine aufgeschobenen Aufgaben f\xC3\xBCr dieses Projekt"
|
||||
project_state: Projekt ist %{state}
|
||||
no_last_completed_projects: Keine abgeschlossene Projekte gefunden
|
||||
no_last_completed_recurring_todos: "Keine abgeschlossene sich wiederholende To-Dos gefunden"
|
||||
todos_append: an dieses Projekt
|
||||
no_last_completed_recurring_todos: Keine abgeschlossene sich wiederholende To-Dos gefunden
|
||||
notes: Notizen
|
||||
todos_append: an dieses Projekt
|
||||
notes_empty: "Es gibt keine Notizen f\xC3\xBCr dieses Projekt"
|
||||
no_projects: Keine Projekte vorhanden
|
||||
hide_form_title: Formular verstecken
|
||||
with_no_default_context: hat keinen Standardwert Kontext
|
||||
delete_project: Projekt löschen
|
||||
completed_actions_empty: "Es gibt keine erledigten Aufgaben f\xC3\xBCr dieses Projekt"
|
||||
delete_project_confirmation: Soll das Projekt '%{name}' wirklich gelöscht werden?
|
||||
with_default_context: mit einem Standard-Rahmen von '%{context_name}'
|
||||
with_no_default_context: hat keinen Standardwert Kontext
|
||||
show_form: Projekt erstellen
|
||||
actions_in_project_title: Die Aktionen in diesem Projekt
|
||||
add_project: Projekt hinzufügen
|
||||
delete_project_confirmation: Soll das Projekt '%{name}' wirklich gelöscht werden?
|
||||
with_default_context: mit einem Standard-Rahmen von '%{context_name}'
|
||||
completed_projects: Abgeschlossene Projekte
|
||||
with_default_tags: und mit '%{tags}' als Standard-Tags
|
||||
add_note: "Notiz hinzuf\xC3\xBCgen"
|
||||
list_projects: TRACKS::Projektliste
|
||||
set_default_tags_notice: Standard-Tags des Projekts auf %{default_tags} setzen
|
||||
is_active: ist aktiv
|
||||
settings: Einstellungen
|
||||
project_saved_status: Projekt gespeichert
|
||||
completed_projects: Abgeschlossene Projekte
|
||||
completed_tasks_title: "TRACKS:: Liste Abgeschlossene Aktionen in Project '%{project_name}'"
|
||||
is_active: ist aktiv
|
||||
add_project: Projekt hinzufügen
|
||||
settings: Einstellungen
|
||||
add_note: "Notiz hinzuf\xC3\xBCgen"
|
||||
delete_project_title: Projekt löschen
|
||||
completed_tasks_title: "TRACKS:: Liste Abgeschlossene Aktionen in Project '%{project_name}'"
|
||||
hidden_projects: Versteckte Projekte
|
||||
add_note_submit: "Notiz hinzuf\xC3\xBCgen"
|
||||
was_marked_complete: wurde als erledigt markiert
|
||||
completed_actions: "Erledigte Aufgaben f\xC3\xBCr dieses Projekt"
|
||||
default_context_removed: Standard-Kontext entfernt
|
||||
edit_project_settings: Edit Project Settings
|
||||
active_projects: Aktive Projekte
|
||||
default_context: Der Standard-Kontext dieses Projektes ist %{context}
|
||||
status_project_name_changed: "Projektname ge\xC3\xA4ndert"
|
||||
no_default_context: Dieses Projekt hat keinen Standard-Kontext
|
||||
with_no_default_tags: und hat keinen Standardwert Tags
|
||||
edit_project_settings: Edit Project Settings
|
||||
default_context: Der Standard-Kontext dieses Projektes ist %{context}
|
||||
status_project_name_changed: "Projektname ge\xC3\xA4ndert"
|
||||
active_projects: Aktive Projekte
|
||||
state: Dieses Projekt ist %{state}
|
||||
errors:
|
||||
user_unauthorized: "401 Unauthorized: Nur administrative Benutzer d\xC3\xBCrfen auf diese Funktion zugreifen."
|
||||
preferences:
|
||||
staleness_starts_after: Abgestandenheit startet nach %{days} Tagen
|
||||
change_identity_url: "\xC3\x84ndere deine Identit\xC3\xA4ts-URL"
|
||||
open_id_url: "Deine OpenID-URL lautet:"
|
||||
staleness_starts_after: Abgestandenheit startet nach %{days} Tagen
|
||||
change_password: "Passwort \xC3\xA4ndern"
|
||||
page_title: TRACKS::Einstellungen
|
||||
title: Deine Einstellungen
|
||||
token_description: "Token (f\xC3\xBCr die Verwendung in Feeds und der API)"
|
||||
is_false: Nein
|
||||
show_number_completed: "Zeige %{number} erledigte Eintr\xC3\xA4ge"
|
||||
is_false: Nein
|
||||
page_title_edit: "TRACKS::Einstellungen \xC3\xA4ndern"
|
||||
is_true: Ja
|
||||
edit_preferences: Einstellungen bearbeiten
|
||||
sms_context_none: Keine
|
||||
generate_new_token: Neues Token generieren
|
||||
token_header: Dein Token
|
||||
authentication_header: Deine Authentifizierung
|
||||
current_authentication_type: Dein Authentifizierungsart ist %{auth_type}
|
||||
change_authentication_type: "Authentifzierungsart \xC3\xA4ndern"
|
||||
authentication_header: Deine Authentifizierung
|
||||
generate_new_token_confirm: "Bist du sicher? Wenn du ein neues Token generierst, wird dies das alte Token ersetzen und jegliche externe Nutzung st\xC3\xB6ren, die das alte Token verwendet."
|
||||
tabs:
|
||||
authentication: Authentication
|
||||
tracks_behavior: Tracks Verhalten
|
||||
profile: Profil
|
||||
date_and_time: Datum und Uhrzeit
|
||||
errors:
|
||||
user_unauthorized: "401 Unauthorized: Nur administrative Benutzer d\xC3\xBCrfen auf diese Funktion zugreifen."
|
||||
date:
|
||||
month_names:
|
||||
-
|
||||
|
|
@ -681,10 +688,6 @@ de:
|
|||
- Oktober
|
||||
- November
|
||||
- Dezember
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
abbr_day_names:
|
||||
- So
|
||||
- Mo
|
||||
|
|
@ -693,8 +696,13 @@ de:
|
|||
- Do
|
||||
- Fr
|
||||
- Sa
|
||||
order:
|
||||
- :day
|
||||
- :month
|
||||
- :year
|
||||
formats:
|
||||
only_day: "%e"
|
||||
longer: "%A, %d. %B %Y"
|
||||
default: "%d.%m.%Y"
|
||||
short: "%e. %b"
|
||||
month_day: "%d. %B"
|
||||
|
|
@ -725,19 +733,17 @@ de:
|
|||
- Dez
|
||||
support:
|
||||
array:
|
||||
last_word_connector: " und "
|
||||
words_connector: ", "
|
||||
last_word_connector: " und "
|
||||
two_words_connector: " und "
|
||||
select:
|
||||
prompt: "Bitte w\xC3\xA4hlen Sie"
|
||||
footer:
|
||||
send_feedback: Senden Sie Feedback zu %{version}
|
||||
shared:
|
||||
multiple_next_actions: Mehrere neue Aufgaben (eine pro Zeile)
|
||||
toggle_single: Weitere Aktion erstellen
|
||||
hide_form: Formular verstecken
|
||||
add_action: "Aufgabe hinzuf\xC3\xBCgen"
|
||||
add_actions: "Aufgaben hinzuf\xC3\xBCgen"
|
||||
add_action: "Aufgabe hinzuf\xC3\xBCgen"
|
||||
tags_for_all_actions: "Tags f\xC3\xBCr alle Aufgaben (mit Kommas trennen)"
|
||||
project_for_all_actions: "Projekt f\xC3\xBCr alle Aufgaben"
|
||||
context_for_all_actions: "Kontext f\xC3\xBCr alle Aufgaben"
|
||||
|
|
@ -746,6 +752,8 @@ de:
|
|||
separate_tags_with_commas: mit Kommas trennen
|
||||
toggle_multi_title: "Zwischen Einzel- und Mehrfachformular f\xC3\xBCr neue Aufgaben umschalten"
|
||||
hide_action_form_title: "Formular f\xC3\xBCr neue Aufgaben verstecken"
|
||||
footer:
|
||||
send_feedback: Senden Sie Feedback zu %{version}
|
||||
sidebar:
|
||||
list_name_active_contexts: Aktive Kontexte
|
||||
list_name_active_projects: Aktive Projekte
|
||||
|
|
@ -754,71 +762,71 @@ de:
|
|||
list_name_hidden_projects: Versteckte Projekte
|
||||
list_name_hidden_contexts: Versteckte Kontexte
|
||||
users:
|
||||
auth_type_update_error: "Beim Ändern der Authentifizierung trat ein Fehler auf: %{error_messages}"
|
||||
openid_url_verified: Die URL %{url} wurde erfolgreich als Identität verifiziert und Deine Authentifizierung auf OpenID umgestellt.
|
||||
destroy_successful: "Benutzer %{login} wurde erfolgreich gel\xC3\xB6scht"
|
||||
total_contexts: Alle Kontexte
|
||||
successfully_deleted_user: Benutzer %{username} erfolgreich gelöscht.
|
||||
failed_to_delete_user: Löschen des Benutzers %{username} fehlgeschlagen
|
||||
total_contexts: Alle Kontexte
|
||||
first_user_heading: "Willkommen bei TRACKS. Als erstes legen Sie bitte einen Administrator-Zugang an:"
|
||||
openid_url_verified: Die URL %{url} wurde erfolgreich als Identität verifiziert und Deine Authentifizierung auf OpenID umgestellt.
|
||||
auth_type_update_error: "Beim Ändern der Authentifizierung trat ein Fehler auf: %{error_messages}"
|
||||
successfully_deleted_user: Benutzer %{username} erfolgreich gelöscht.
|
||||
destroy_successful: "Benutzer %{login} wurde erfolgreich gel\xC3\xB6scht"
|
||||
new_token_generated: Neuer Token erfolgreich generiert
|
||||
total_projects: Alle Projekte
|
||||
signup_successful: Benutzer %{username} erfolgreich angelegt.
|
||||
user_created: Benutzer angelegt.
|
||||
change_password_submit: "Passwort \xC3\xA4ndern"
|
||||
no_signups_title: TRACKS::Anmeldung nicht erlaubt
|
||||
user_created: Benutzer angelegt.
|
||||
account_signup: Accounteinrichtung
|
||||
manage_users: Benutzer verwalten
|
||||
account_signup: Accounteinrichtung
|
||||
password_updated: Passwort aktualisiert.
|
||||
confirm_password: "Passwort best\xC3\xA4tigen"
|
||||
signup: Registrieren
|
||||
new_user_heading: "Einen neuen Benutzer anlegen:"
|
||||
auth_type_updated: Authentifizierungs-Art erfolgreich geändert.
|
||||
total_actions: Alle Aufgaben
|
||||
signup: Registrieren
|
||||
desired_login: "Gew\xC3\xBCnschter Benutzername"
|
||||
confirm_password: "Passwort best\xC3\xA4tigen"
|
||||
new_user_heading: "Einen neuen Benutzer anlegen:"
|
||||
destroy_error: "Beim L\xC3\xB6schen des Benutzers %{login} ist ein Fehler aufgetreten."
|
||||
choose_password: "Passwort w\xC3\xA4hlen"
|
||||
change_password_title: TRACKS::Passwort ändern
|
||||
change_auth_type_title: TRACKS::Authentifizierungstyp ändern
|
||||
change_password_prompt: "Gib dein neues Passwort in die unten stehenden Felder ein und klicke auf 'Passwort \xC3\xA4ndern' um dein altes Passwort durch das neue zu ersetzen."
|
||||
password_confirmation_label: "Passwort best\xC3\xA4tigen"
|
||||
destroy_error: "Beim L\xC3\xB6schen des Benutzers %{login} ist ein Fehler aufgetreten."
|
||||
label_auth_type: Authentifizierungsart
|
||||
new_password_label: Neues Passwort
|
||||
register_with_cas: Mit deinem CAS-Benutzernamen
|
||||
new_user_title: TRACKS::Als Administrator anmelden
|
||||
destroy_user: "Benutzer l\xC3\xB6schen"
|
||||
total_users_count: Derzeit existieren %{count} Benutzer
|
||||
destroy_confirmation: "Achtung: der Benutzer '%{login}' wird mit all seinen Aufgaben, Kontexten, Projekten und Notizen gel\xC3\xB6scht. Bist du sicher, dass du fortfahren m\xC3\xB6chtest?"
|
||||
signup_new_user: Neuen Benutzer anlegen
|
||||
destroy_confirmation: "Achtung: der Benutzer '%{login}' wird mit all seinen Aufgaben, Kontexten, Projekten und Notizen gel\xC3\xB6scht. Bist du sicher, dass du fortfahren m\xC3\xB6chtest?"
|
||||
change_authentication_type: "Authentifizierungsart \xC3\xA4ndern"
|
||||
openid_ok_pref_failed: Die URL %{url} wurde erfolgreich als Identität verifiziert, beim Speichern der Einstellungen trat jedoch ein Fehler auf.
|
||||
auth_change_submit: "Authentifizierungsart \xC3\xA4ndern"
|
||||
identity_url: Identity-URL
|
||||
change_authentication_type: "Authentifizierungsart \xC3\xA4ndern"
|
||||
total_notes: Alle Notizen
|
||||
select_authentication_type: "W\xC3\xA4hle deine neue Authentifizierungsart und klicke 'Authentifizierungsart \xC3\xA4ndern' an, um deine aktuellen Einstellungen zu \xC3\xBCberschreiben."
|
||||
feedlist:
|
||||
choose_context: "Kontext f\xC3\xBCr den Feed w\xC3\xA4hlen"
|
||||
actions_due_today: "Heute oder fr\xC3\xBCher f\xC3\xA4llig"
|
||||
choose_context: "Kontext f\xC3\xBCr den Feed w\xC3\xA4hlen"
|
||||
rss_feed: RSS-Feed
|
||||
legend: "Legende:"
|
||||
ical_feed: iCal-Feed
|
||||
all_contexts: Alle Kontexte
|
||||
legend: "Legende:"
|
||||
rss_feed: RSS-Feed
|
||||
choose_project: "Projekt f\xC3\xBCr den Feed w\xC3\xA4hlen"
|
||||
all_projects: Alle Projekte
|
||||
project_needed: Es muss mindestens ein Projekt existieren, bevor ein Feed abonniert werden kann.
|
||||
select_feed_for_project: "Feed f\xC3\xBCr dieses Projekt ausw\xC3\xA4hlen"
|
||||
active_projects_wo_next: Aktive Projekte ohne ausstehende Aufgaben
|
||||
project_needed: Es muss mindestens ein Projekt existieren, bevor ein Feed abonniert werden kann.
|
||||
active_starred_actions: Alle markierten, aktiven Aufgaben
|
||||
projects_and_actions: Aktive Projekte und deren Aufgaben
|
||||
context_needed: Es muss mindestens ein Kontext existieren, bevor ein Feed abonniert werden kann.
|
||||
select_feed_for_context: "Feed f\xC3\xBCr diesen Kontext ausw\xC3\xA4hlen"
|
||||
notice_incomplete_only: "Hinweis: Alle Feeds zeigen nur Aufgaben, die noch nicht als erledigt markiert wurden."
|
||||
projects_and_actions: Aktive Projekte und deren Aufgaben
|
||||
actions_due_next_week: "In den n\xC3\xA4chsten 7 Tagen oder fr\xC3\xBCher f\xC3\xA4llige Aufgaben"
|
||||
plain_text_feed: Plain-Text-Feed
|
||||
notice_incomplete_only: "Hinweis: Alle Feeds zeigen nur Aufgaben, die noch nicht als erledigt markiert wurden."
|
||||
last_fixed_number: Die letzten %{number} Aufgaben
|
||||
all_actions: Alle Aufgaben
|
||||
actions_completed_last_week: In den letzten 7 Tagen abgeschlossene Aufgaben
|
||||
context_centric_actions: "Feeds f\xC3\xBCr unvollst\xC3\xA4ndige Aufgaben in einem bestimmten Kontext"
|
||||
plain_text_feed: Plain-Text-Feed
|
||||
project_centric: "Feeds f\xC3\xBCr unvollst\xC3\xA4ndige Aufgaben in einem bestimmten Kontext"
|
||||
contexts:
|
||||
delete_context_title: Kontext löschen
|
||||
|
|
@ -832,20 +840,20 @@ de:
|
|||
no_contexts_active: Derzeit gibt es keine aktiven Kontexte
|
||||
context_hide: Auf Startseite ausblenden?
|
||||
hidden_contexts: Versteckte Kontexte
|
||||
save_status_message: Kontext gespeichert
|
||||
add_context: "Kontext hinzuf\xC3\xBCgen"
|
||||
show_form: Neuen Kontext erstellen
|
||||
visible_contexts: Sichtbare Kontexte
|
||||
save_status_message: Kontext gespeichert
|
||||
add_context: "Kontext hinzuf\xC3\xBCgen"
|
||||
update_status_message: "Kontextname wurde ge\xC3\xA4ndert"
|
||||
context_name: Kontextname
|
||||
completed_tasks_title: "TRACKS:: Abgeschlossene Ma\xC3\x9Fnahmen im context '%{context_name}'"
|
||||
new_context_post: "' wird ebenfalls angelegt. Fortfahren?"
|
||||
status_active: Kontext ist aktiv
|
||||
no_contexts_hidden: Derzeit gibt es keine versteckten Kontexte
|
||||
new_context_pre: Der neue Kontext '
|
||||
no_actions: "Momentan gibt es keine unvollst\xC3\xA4ndigen Aufgaben in diesem Kontext"
|
||||
last_completed_in_context: in diesem Kontext (letzte %{number})
|
||||
context_deleted: "Gel\xC3\xB6schter Kontext '%{name}'"
|
||||
no_contexts_hidden: Derzeit gibt es keine versteckten Kontexte
|
||||
new_context_pre: Der neue Kontext '
|
||||
status_hidden: Kontext ist versteckt
|
||||
datetime:
|
||||
prompts:
|
||||
|
|
@ -860,12 +868,12 @@ de:
|
|||
one: weniger als eine Minute
|
||||
other: weniger als %{count} Minuten
|
||||
zero: weniger als 1 Minute
|
||||
almost_x_years:
|
||||
one: fast 1 Jahr
|
||||
other: fast %{count} Jahre
|
||||
x_days:
|
||||
one: 1 Tag
|
||||
other: "%{count} Tage"
|
||||
almost_x_years:
|
||||
one: fast 1 Jahr
|
||||
other: fast %{count} Jahre
|
||||
x_seconds:
|
||||
one: 1 Sekunde
|
||||
other: "%{count} Sekunden"
|
||||
|
|
@ -893,10 +901,10 @@ de:
|
|||
other: mehr als %{count} Jahre
|
||||
half_a_minute: eine halbe Minute
|
||||
login:
|
||||
login_cas: zum CAS gehen
|
||||
openid_identity_url_not_found: "Sorry, aber es existiert kein Benutzer mit der Identit\xC3\xA4ts-URL (%{identity_url})"
|
||||
user_no_expiry: Angemeldet bleiben
|
||||
login_cas: zum CAS gehen
|
||||
sign_in: Anmeldung
|
||||
openid_identity_url_not_found: "Sorry, aber es existiert kein Benutzer mit der Identit\xC3\xA4ts-URL (%{identity_url})"
|
||||
successful_with_session_info: "Anmeldung erfolgreich:"
|
||||
please_login: Bitte melde dich an, um Tracks zu nutzen
|
||||
cas_logged_in_greeting: Hallo, %{username}! Du bist authentifiziert.
|
||||
|
|
@ -909,14 +917,14 @@ de:
|
|||
account_login: Account-Anmeldung
|
||||
session_will_not_expire: Sitzung wird nicht ablaufen.
|
||||
successful: "Anmeldung erfolgreich. Willkommen zur\xC3\xBCck!"
|
||||
option_separator: oder,
|
||||
session_time_out: Sitzung abgelaufen. Bitte %{link}
|
||||
session_will_expire: "Sitzung wird nach %{hours} Stunde(n) der Inaktivit\xC3\xA4t ablaufen."
|
||||
option_separator: oder,
|
||||
login_standard: "zur\xC3\xBCck zum Standard-Login"
|
||||
logged_out: Sie wurden von Tracks abgemeldet.
|
||||
login_with_openid: Mit einer OpenID anmelden
|
||||
unsuccessful: Anmeldung war nicht erfolgreich.
|
||||
log_in_again: Erneut anmelden.
|
||||
logged_out: Sie wurden von Tracks abgemeldet.
|
||||
search:
|
||||
contexts_matching_query: Kontexte entsprechen der Suche
|
||||
tags_matching_query: Tags entsprechen der Suche
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -85,7 +85,10 @@ ActionController::Routing::Routes.draw do |map|
|
|||
i.google_gadget 'integrations/google_gadget.xml', :controller => 'integrations', :action => 'google_gadget', :format => 'xml'
|
||||
end
|
||||
|
||||
map.preferences 'preferences', :controller => 'preferences', :action => 'index'
|
||||
map.with_options :controller => :preferences do |p|
|
||||
p.preferences 'preferences', :action => 'index'
|
||||
p.preferences_date_format 'preferences/render_date_format', :action => 'render_date_format'
|
||||
end
|
||||
|
||||
map.with_options :controller => :stats do |stats|
|
||||
stats.stats 'stats', :action => 'index'
|
||||
|
|
|
|||
|
|
@ -10,10 +10,33 @@ Feature: Manage preferences
|
|||
And I have logged in as "testuser" with password "secret"
|
||||
|
||||
Scenario: I can change my password
|
||||
Given this is a pending scenario
|
||||
When I go to the preferences page
|
||||
And I set the password and confirmation to "secret123"
|
||||
When I log out of Tracks
|
||||
And I go to the login page
|
||||
And I submit the login form as user "testuser" with password "secret"
|
||||
Then I should see "Login unsuccessful"
|
||||
When I submit the login form as user "testuser" with password "secret123"
|
||||
Then I should see "Login successful"
|
||||
|
||||
Scenario: I can leave password field empty and the password will not be changed
|
||||
When I go to the preferences page
|
||||
And I set the password and confirmation to ""
|
||||
When I log out of Tracks
|
||||
And I go to the login page
|
||||
And I submit the login form as user "testuser" with password ""
|
||||
Then I should see "Login unsuccessful"
|
||||
When I submit the login form as user "testuser" with password "secret"
|
||||
Then I should see "Login successful"
|
||||
|
||||
Scenario: The password and the confirmation need to be the same
|
||||
When I go to the preferences page
|
||||
And I set the password to "secret" and confirmation to "wrong"
|
||||
Then I should see "Password doesn't match confirmation"
|
||||
|
||||
Scenario: I can generate a new token
|
||||
Given this is a pending scenario
|
||||
|
||||
Scenario: I can edit preferences
|
||||
Given this is a pending scenario
|
||||
When I go to the preferences page
|
||||
Then I should see "Logout (testuser)"
|
||||
When I edit my last name to "Tester"
|
||||
Then I should see "Logout (Tester)"
|
||||
|
|
@ -25,10 +25,14 @@ When /^my session expires$/ do
|
|||
# use expire_session to force expiry of session
|
||||
js = '$.ajax({type: "GET", url: "/login/expire_session", dataType: "script", async: false});'
|
||||
selenium.run_script(js);
|
||||
|
||||
|
||||
# force check of expiry bypassing timeout
|
||||
js = '$.ajax({type: "GET", url: "/login/check_expiry", dataType: "script", async: false});'
|
||||
selenium.run_script(js);
|
||||
|
||||
sleep(2)
|
||||
end
|
||||
|
||||
When /^I log out of Tracks$/ do
|
||||
When "I go to the logout page"
|
||||
end
|
||||
|
|
|
|||
15
features/step_definitions/preferences_steps.rb
Normal file
15
features/step_definitions/preferences_steps.rb
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
When /^I edit my last name to "([^"]*)"$/ do |last_name|
|
||||
fill_in "user[last_name]", :with => last_name
|
||||
click_button "prefs_submit"
|
||||
end
|
||||
|
||||
When /^I set the password and confirmation to "([^"]*)"$/ do |new_password|
|
||||
When "I set the password to \"#{new_password}\" and confirmation to \"#{new_password}\""
|
||||
end
|
||||
|
||||
When /^I set the password to "([^"]*)" and confirmation to "([^"]*)"$/ do |new_password, new_password_confirmation|
|
||||
fill_in "user[password]", :with => new_password
|
||||
fill_in "user[password_confirmation]", :with => new_password_confirmation
|
||||
click_button "prefs_submit"
|
||||
end
|
||||
|
||||
|
|
@ -2,7 +2,7 @@ Given /^the following user records?$/ do |table|
|
|||
User.delete_all
|
||||
table.hashes.each do |hash|
|
||||
user = Factory(:user, hash)
|
||||
user.create_preference
|
||||
user.create_preference({:locale => 'en'})
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -55,6 +55,8 @@ module NavigationHelpers
|
|||
signup_path(options)
|
||||
when /the login page/
|
||||
login_path(options)
|
||||
when /the logout page/
|
||||
logout_path(options)
|
||||
when /the notes page/
|
||||
notes_path(options)
|
||||
when /the calendar page/
|
||||
|
|
|
|||
|
|
@ -629,7 +629,7 @@ var ProjectItems = {
|
|||
|
||||
var UsersPage = {
|
||||
setup_behavior: function() {
|
||||
/* delete button to delete a usedr from the list */
|
||||
/* delete button to delete a user from the list */
|
||||
$('a.delete_user_button').live('click', function(evt){
|
||||
var confirm_message = $(this).attr("x_confirm_message")
|
||||
if(confirm(confirm_message)){
|
||||
|
|
@ -641,6 +641,47 @@ var UsersPage = {
|
|||
}
|
||||
}
|
||||
|
||||
var PreferencesPage = {
|
||||
get_date_format: function(tag_name) {
|
||||
var value = $('input[name="prefs['+tag_name+']"]').val();
|
||||
var element = 'span[id="prefs.'+tag_name+'"]';
|
||||
var url = 'preferences/render_date_format';
|
||||
var param = "date_format="+encodeURIComponent( value );
|
||||
generic_get_script_for_list(element, url, param);
|
||||
},
|
||||
setup_getter_for_date_format: function(tag_name) {
|
||||
$('input[name="prefs['+tag_name+']"]').change(function() {
|
||||
PreferencesPage.get_date_format(tag_name);
|
||||
});
|
||||
},
|
||||
setup_behavior: function() {
|
||||
$( "#tabs" ).tabs();
|
||||
|
||||
$( "button#prefs_submit" ).button();
|
||||
|
||||
$('input[name="user[auth_type]"]').change(function() {
|
||||
var value = $('input[name="user[auth_type]"]:checked').val();
|
||||
$('#open_id')[0].style.display = value == 'open_id' ? 'block' : 'none'
|
||||
$('#database')[0].style.display = value == 'database' ? 'block' : 'none'
|
||||
});
|
||||
|
||||
$('input[name="date_picker1"]').change(function() {
|
||||
var value = $('input[name="date_picker1"]:checked').val();
|
||||
$('input[name="prefs[date_format]"]').val(value);
|
||||
PreferencesPage.get_date_format('date_format');
|
||||
});
|
||||
|
||||
$('input[name="date_picker2"]').change(function() {
|
||||
var value = $('input[name="date_picker2"]:checked').val();
|
||||
$('input[name="prefs[title_date_format]"]').val(value);
|
||||
PreferencesPage.get_date_format('title_date_format');
|
||||
});
|
||||
|
||||
PreferencesPage.setup_getter_for_date_format('date_format');
|
||||
PreferencesPage.setup_getter_for_date_format('title_date_format');
|
||||
}
|
||||
}
|
||||
|
||||
var ProjectListPage = {
|
||||
update_state_count: function(state, count) {
|
||||
$('#'+state+'-projects-count').html(count);
|
||||
|
|
@ -1238,7 +1279,7 @@ $(document).ready(function() {
|
|||
TodoItemsContainer.setup_container_toggles();
|
||||
|
||||
/* enable page specific behavior */
|
||||
$([ 'IntegrationsPage', 'NotesPage', 'ProjectListPage', 'ContextListPage',
|
||||
$([ 'PreferencesPage', 'IntegrationsPage', 'NotesPage', 'ProjectListPage', 'ContextListPage',
|
||||
'FeedsPage', 'RecurringTodosPage', 'TodoItems', 'TracksPages',
|
||||
'TracksForm', 'SearchPage', 'UsersPage' ]).each(function() {
|
||||
eval(this+'.setup_behavior();');
|
||||
|
|
|
|||
|
|
@ -1,33 +1,36 @@
|
|||
/* @override http://0.0.0.0:3000/stylesheets/standard.css?1181841150 */
|
||||
|
||||
/* @override http://0.0.0.0:3000/stylesheets/standard.css?1180885851 */
|
||||
|
||||
div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td {
|
||||
div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td {
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse:collapse;
|
||||
border-spacing:0;
|
||||
}
|
||||
fieldset,img {
|
||||
|
||||
fieldset,img {
|
||||
border:0;
|
||||
}
|
||||
|
||||
ol,ul {
|
||||
list-style:none;
|
||||
}
|
||||
|
||||
caption,th {
|
||||
text-align:left;
|
||||
}
|
||||
|
||||
h1,h2,h3,h4,h5,h6 {
|
||||
font-size:100%;
|
||||
font-weight:normal;
|
||||
}
|
||||
|
||||
q:before,q:after {
|
||||
content:'';
|
||||
}
|
||||
abbr,acronym { border:0;
|
||||
|
||||
abbr,acronym {
|
||||
border:0;
|
||||
}
|
||||
|
||||
body {
|
||||
|
|
@ -54,7 +57,7 @@ a, a:link, a:active, a:visited {
|
|||
a:hover {
|
||||
color: #fff;
|
||||
background-color: #cc3334;
|
||||
}
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 304%;
|
||||
|
|
@ -115,19 +118,6 @@ a.show_successors:hover, a.link_to_successors:hover {background-image: url(../im
|
|||
padding-left: 5px;
|
||||
}
|
||||
|
||||
body.preferences div#display_box {
|
||||
margin-right:510px;
|
||||
}
|
||||
|
||||
body.preferences div#input_box {
|
||||
width:490px;
|
||||
right:15px;
|
||||
}
|
||||
|
||||
body.preferences select#prefs_time_zone, body.preferences select#prefs_sms_context_id {
|
||||
width: 250px;
|
||||
}
|
||||
|
||||
#single_box {
|
||||
width: 60%;
|
||||
margin: 80px auto;
|
||||
|
|
@ -145,6 +135,8 @@ body.preferences select#prefs_time_zone, body.preferences select#prefs_sms_conte
|
|||
margin: 0px 15px 90px 15px;
|
||||
}
|
||||
|
||||
/* recurring todos */
|
||||
|
||||
#recurring_timespan, #recurring_target {
|
||||
border: none;
|
||||
clear: both;
|
||||
|
|
@ -206,10 +198,10 @@ body.preferences select#prefs_time_zone, body.preferences select#prefs_sms_conte
|
|||
}
|
||||
|
||||
.recurring_container {
|
||||
padding: 0px 5px 0px 5px;
|
||||
padding: 0px 5px 0px 5px;
|
||||
border: 1px solid #999;
|
||||
margin: 0px 0px 0px 0px;
|
||||
background: #fff;
|
||||
background: #fff;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
|
|
@ -219,7 +211,7 @@ body.preferences select#prefs_time_zone, body.preferences select#prefs_sms_conte
|
|||
text-align: center;
|
||||
clear: both;
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* Navigation links at the top */
|
||||
|
||||
|
|
@ -278,7 +270,7 @@ body.preferences select#prefs_time_zone, body.preferences select#prefs_sms_conte
|
|||
padding-left: 15px;
|
||||
margin-top: 15px;
|
||||
margin-bottom: 5px;
|
||||
white-space: nowrap; /* added 2006-05-17 for safari display, timfm */
|
||||
white-space: nowrap; /* added 2006-05-17 for safari display, timfm */
|
||||
}
|
||||
#date h1 {
|
||||
font-size: 152%;
|
||||
|
|
@ -293,14 +285,14 @@ body.preferences select#prefs_time_zone, body.preferences select#prefs_sms_conte
|
|||
}
|
||||
|
||||
.container {
|
||||
padding: 0px 5px 0px 5px;
|
||||
padding: 0px 5px 0px 5px;
|
||||
border: 1px solid #999;
|
||||
margin: 0px 0px 15px 0px;
|
||||
background: #fff;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.completed {
|
||||
background: #eee;
|
||||
background: #eee;
|
||||
}
|
||||
|
||||
.container h2 {
|
||||
|
|
@ -309,9 +301,9 @@ body.preferences select#prefs_time_zone, body.preferences select#prefs_sms_conte
|
|||
margin-top: 0px;
|
||||
margin-left: -5px;
|
||||
margin-right: -5px;
|
||||
margin-bottom: 0px;
|
||||
margin-bottom: 0px;
|
||||
color: #666;
|
||||
position:static;
|
||||
position:static;
|
||||
}
|
||||
|
||||
.container_toggle img {
|
||||
|
|
@ -342,7 +334,7 @@ div#input_box {
|
|||
|
||||
#input_box h2 {
|
||||
color: #999;
|
||||
|
||||
|
||||
}
|
||||
|
||||
#input_box ul {list-style-type: circle; font-size: 0.9em;}
|
||||
|
|
@ -410,7 +402,7 @@ div.item-container {
|
|||
|
||||
a.recurring_icon {
|
||||
vertical-align: middle;
|
||||
background-color: transparent;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
a.icon {
|
||||
|
|
@ -454,11 +446,43 @@ input.item-checkbox {
|
|||
padding: 0px;
|
||||
}
|
||||
|
||||
a.footer_link {color: #cc3334; font-style: normal;}
|
||||
a.footer_link:hover {color: #fff; background-color: #cc3334 !important;}
|
||||
|
||||
/* preferences */
|
||||
|
||||
body.preferences div#display_box {
|
||||
margin-right:510px;
|
||||
}
|
||||
|
||||
body.preferences div#input_box {
|
||||
width:490px;
|
||||
right:15px;
|
||||
}
|
||||
|
||||
body.preferences select#prefs_time_zone, body.preferences select#prefs_sms_context_id {
|
||||
width: 250px;
|
||||
}
|
||||
|
||||
body.preferences div#footer {
|
||||
margin-right:410px;
|
||||
}
|
||||
|
||||
/* The notes which may be attached to an item */
|
||||
/* override jquery css to match tracks defaults better */
|
||||
|
||||
body.preferences div.ui-widget {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
body.preferences div.ui-tabs li a {
|
||||
padding: 0.1em 1em;
|
||||
}
|
||||
|
||||
body.preferences div.pref_new_token a {
|
||||
color: #CC3334;
|
||||
}
|
||||
|
||||
/* The notes which may be attached to an item */
|
||||
.todo_notes {
|
||||
margin: 5px;
|
||||
padding: 5px;
|
||||
|
|
@ -538,13 +562,16 @@ div.add_note_link {
|
|||
margin-top:12px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
div#project_status > div {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#project_status span {
|
||||
margin-right:5px;
|
||||
background-color:white;
|
||||
}
|
||||
|
||||
#project_status .active_state {
|
||||
font-weight:bold;
|
||||
}
|
||||
|
|
@ -555,8 +582,6 @@ div#default_context > div{
|
|||
div#default_tags > div{
|
||||
padding:10px;
|
||||
}
|
||||
a.footer_link {color: #cc3334; font-style: normal;}
|
||||
a.footer_link:hover {color: #fff; background-color: #cc3334 !important;}
|
||||
|
||||
/* Tag formatting */
|
||||
|
||||
|
|
@ -568,9 +593,9 @@ span.tag {
|
|||
margin-right: 2px;
|
||||
}
|
||||
|
||||
span.tag a,
|
||||
span.tag a:link,
|
||||
span.tag a:active,
|
||||
span.tag a,
|
||||
span.tag a:link,
|
||||
span.tag a:active,
|
||||
span.tag a:visited {
|
||||
color: #000;
|
||||
}
|
||||
|
|
@ -599,16 +624,16 @@ h4.alert {
|
|||
}
|
||||
|
||||
h4.warning {
|
||||
border: 1px solid #ED2E38;
|
||||
border: 1px solid #ED2E38;
|
||||
background-color: #F6979C;
|
||||
color: #000;
|
||||
}
|
||||
h4.error {
|
||||
color:#fff;
|
||||
color:#fff;
|
||||
background:#c00;
|
||||
}
|
||||
h4.notice {
|
||||
border: 1px solid #007E00;
|
||||
border: 1px solid #007E00;
|
||||
background-color: #c2ffc2;
|
||||
color: #007E00;
|
||||
}
|
||||
|
|
@ -616,14 +641,14 @@ h4.notice {
|
|||
/* *****/
|
||||
|
||||
.project_completed {
|
||||
border: 1px solid #007E00;
|
||||
border: 1px solid #007E00;
|
||||
background-color: #c2ffc2;
|
||||
padding: 5px;
|
||||
color: #007E00;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Draw attention to some text
|
||||
/* Draw attention to some text
|
||||
Same format as traffic lights */
|
||||
.red {
|
||||
color: #fff;
|
||||
|
|
@ -671,7 +696,7 @@ Same format as traffic lights */
|
|||
.highlight {
|
||||
background: #ffC;
|
||||
padding: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
/* Backgrounds marking out 'staleness' of a task based on age of creation date
|
||||
The colour of the background gets progressively yellower with age */
|
||||
|
|
@ -809,6 +834,7 @@ div.project_settings {
|
|||
font-size: 10px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
#project-next-prev {
|
||||
text-align:right;
|
||||
}
|
||||
|
|
@ -830,7 +856,7 @@ form {
|
|||
|
||||
/* expand form contents to fill the whole form */
|
||||
.inline-form table,
|
||||
.inline-form textarea#item_notes,
|
||||
.inline-form textarea#item_notes,
|
||||
.inline-form input#item_description {
|
||||
width: 100%;
|
||||
}
|
||||
|
|
@ -839,6 +865,7 @@ form {
|
|||
.inline-form table td.label {
|
||||
width: 13ex;
|
||||
}
|
||||
|
||||
#todo_new_action_container, #project_new_project_container, #context_new_container, #recurring_new_container {
|
||||
background: #ddd;
|
||||
width: 270px;
|
||||
|
|
@ -855,8 +882,8 @@ form {
|
|||
padding-top: 50px;
|
||||
}
|
||||
|
||||
#todo_new_action_container input,
|
||||
#todo_new_action_container textarea,
|
||||
#todo_new_action_container input,
|
||||
#todo_new_action_container textarea,
|
||||
#project_new_project_container input,
|
||||
#project_new_project_container textarea,
|
||||
#context_new_container input {
|
||||
|
|
@ -918,6 +945,7 @@ input#go_to_project, input#context_hide {
|
|||
.hide_form {
|
||||
text-align:right;
|
||||
}
|
||||
|
||||
#todo-form-new-action label, .edit_todo_form label {
|
||||
display: block;
|
||||
padding-bottom: 3px;
|
||||
|
|
@ -946,15 +974,15 @@ input, select, textarea {
|
|||
}
|
||||
|
||||
.feed {
|
||||
font-family: verdana, sans-serif;
|
||||
font-size: 10px;
|
||||
font-weight:bold;
|
||||
text-decoration:none;
|
||||
color: white;
|
||||
background-color: #F60;
|
||||
border:1px solid;
|
||||
border-color: #FC9 #630 #330 #F96;
|
||||
padding:0px 3px 0px 3px;
|
||||
font-family: verdana, sans-serif;
|
||||
font-size: 10px;
|
||||
font-weight:bold;
|
||||
text-decoration:none;
|
||||
color: white;
|
||||
background-color: #F60;
|
||||
border:1px solid;
|
||||
border-color: #FC9 #630 #330 #F96;
|
||||
padding:0px 3px 0px 3px;
|
||||
margin:0px;
|
||||
}
|
||||
|
||||
|
|
@ -972,7 +1000,7 @@ input, select, textarea {
|
|||
}
|
||||
|
||||
div.message {
|
||||
margin: 5px 0px;
|
||||
margin: 5px 0px;
|
||||
background: #FAF4B5;
|
||||
padding: 2px;
|
||||
}
|
||||
|
|
@ -1005,9 +1033,6 @@ div.message {
|
|||
border: 4px dotted #999;
|
||||
}
|
||||
|
||||
.context_target.hover {
|
||||
}
|
||||
|
||||
/* Error message styles */
|
||||
.fieldWithErrors {
|
||||
padding: 2px;
|
||||
|
|
@ -1045,7 +1070,7 @@ div.message {
|
|||
list-style-type: disc;
|
||||
list-style-position: inside;
|
||||
margin-left:7px;
|
||||
color: #333;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
ul#prefs {list-style-type: disc; margin-left: 15px;}
|
||||
|
|
@ -1054,21 +1079,26 @@ ul#prefs {list-style-type: disc; margin-left: 15px;}
|
|||
margin-top:20px;
|
||||
margin-bottom:10px;
|
||||
}
|
||||
#token_area .description{
|
||||
|
||||
#token_area .description{
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
#token_area form {
|
||||
width:100%;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.prefscontainer .actions {
|
||||
text-align:center;
|
||||
margin-bottom:20px;
|
||||
}
|
||||
|
||||
.authtype_container .actions {
|
||||
margin-top:20px;
|
||||
margin-bottom:20px;
|
||||
margin-bottom:20px;
|
||||
}
|
||||
|
||||
#feedlegend {
|
||||
padding: 2px;
|
||||
background-color: #D2D3D6;
|
||||
|
|
@ -1076,39 +1106,48 @@ ul#prefs {list-style-type: disc; margin-left: 15px;}
|
|||
padding: 5px 20px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#feedlegend h3, #feedlegend dl, #feedlegend dt, #feedlegend dd {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#feedlegend dt {
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
#feedlegend dd {
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
#feedlegend p {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
#feeds img.rss-icon {
|
||||
margin-bottom: -4px;
|
||||
}
|
||||
|
||||
#feeds li {
|
||||
font-size:13px;
|
||||
font-family: "Lucida Grande", Verdana, Geneva, Arial, sans-serif;
|
||||
}
|
||||
|
||||
#feeds li h4 {
|
||||
margin-top: 12px;
|
||||
margin-bottom: 4px;
|
||||
font-weight: normal;
|
||||
font-style:oblique;
|
||||
}
|
||||
|
||||
input.open_id {
|
||||
background: url(../images/open-id-login-bg.gif) no-repeat;
|
||||
background-color: #fff;
|
||||
background: url(../images/open-id-login-bg.gif) no-repeat;
|
||||
background-color: #fff;
|
||||
background-position: 0 50%;
|
||||
color: #000;
|
||||
padding-left: 18px;
|
||||
width:182px;
|
||||
}
|
||||
|
||||
div.page_name_auto_complete {
|
||||
width: 100%;
|
||||
background: #fff;
|
||||
|
|
@ -1132,12 +1171,12 @@ div.page_name_auto_complete ul li {
|
|||
color: #000;
|
||||
}
|
||||
|
||||
div.page_name_auto_complete ul li.selected {
|
||||
background-color: #ffb;
|
||||
div.page_name_auto_complete ul li.selected {
|
||||
background-color: #ffb;
|
||||
}
|
||||
|
||||
div.page_name_auto_complete ul strong.highlight {
|
||||
color: #800;
|
||||
div.page_name_auto_complete ul strong.highlight {
|
||||
color: #800;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
|
@ -1160,7 +1199,7 @@ table.users_table {
|
|||
table.export_table {
|
||||
border: 1px solid #666;
|
||||
background-color: #fff;
|
||||
border-spacing: 0px;
|
||||
border-spacing: 0px;
|
||||
}
|
||||
|
||||
.export_table th {color: #fff; background-color: #000;}
|
||||
|
|
@ -1177,7 +1216,7 @@ http://particletree.com/features/rediscovering-the-button-element/ */
|
|||
border:1px solid #dedede;
|
||||
border-top:1px solid #eee;
|
||||
border-left:1px solid #eee;
|
||||
|
||||
|
||||
font-family:"Lucida Grande", Verdana, Geneva, Arial, sans-serif;
|
||||
font-size:80%;
|
||||
line-height:100%;
|
||||
|
|
@ -1280,24 +1319,28 @@ button.positive, .widgets a.positive{
|
|||
background-position:center center;
|
||||
background-color:black;
|
||||
}
|
||||
|
||||
.stats_content .open-flash-chart, .stats_content .stats_module {
|
||||
float: left;
|
||||
width: 450px;
|
||||
margin-right:20px;
|
||||
padding-bottom:20px;
|
||||
}
|
||||
|
||||
.stats_content h2
|
||||
{
|
||||
clear:both;
|
||||
margin-top:15px;
|
||||
margin-bottom:15px;
|
||||
}
|
||||
|
||||
div.integrations h2 {
|
||||
margin-top:40px;
|
||||
padding-top:20px;
|
||||
margin-bottom:10px;
|
||||
border-top:1px solid #ccc;
|
||||
}
|
||||
|
||||
div.integrations p, div.integrations li {
|
||||
font-size:1.0em;
|
||||
}
|
||||
|
|
@ -1309,17 +1352,20 @@ div.integrations pre {
|
|||
div.integrations li {
|
||||
list-style-type: disc;
|
||||
list-style-position: inside;
|
||||
margin-left:30px;
|
||||
margin-left:30px;
|
||||
}
|
||||
|
||||
div.integrations textarea {
|
||||
margin:10px;
|
||||
padding:3px;
|
||||
width:80%;
|
||||
background-color:#ddd;
|
||||
}
|
||||
|
||||
.defer-container {
|
||||
float:right;
|
||||
}
|
||||
|
||||
.defer-container a:hover {
|
||||
background-color: inherit;
|
||||
}
|
||||
|
|
@ -1329,6 +1375,7 @@ div.auto_complete {
|
|||
background: #fff;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
div.auto_complete ul {
|
||||
border:1px solid #888;
|
||||
margin:0;
|
||||
|
|
@ -1336,22 +1383,29 @@ div.auto_complete ul {
|
|||
width:100%;
|
||||
list-style-type:none;
|
||||
}
|
||||
|
||||
div.auto_complete ul li {
|
||||
font-size: 1.0em;
|
||||
margin:0;
|
||||
padding:3px;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
div.auto_complete ul li.selected {
|
||||
background-color: #ffb;
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
div.auto_complete ul strong.highlight {
|
||||
color: #800;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
.ui-datepicker {
|
||||
z-index: 1000;
|
||||
|
||||
.ui-datepicker {
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.ui-autocomplete-loading {
|
||||
background: white url('/images/ui-anim_basic_16x16.gif') right center no-repeat;
|
||||
}
|
||||
.ui-autocomplete-loading { background: white url('/images/ui-anim_basic_16x16.gif') right center no-repeat; }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue