fix #1123 and fix #1124 and refactor drag and drop a bit

This commit is contained in:
Reinier Balt 2011-03-11 21:01:24 +01:00
parent 15a2eb6f08
commit bc73b18bed
9 changed files with 364 additions and 311 deletions

View file

@ -241,15 +241,19 @@ class TodosController < ApplicationController
@predecessor = current_user.todos.find(params['predecessor'])
@todo = current_user.todos.find(params['successor'])
@original_state = @todo.state
# Add predecessor
@todo.add_predecessor(@predecessor)
@todo.state = 'pending'
@saved = @todo.save
unless @predecessor.completed?
# Add predecessor
@todo.add_predecessor(@predecessor)
@todo.state = 'pending'
@saved = @todo.save
@status_message = t('todos.added_dependency', :dependency => @predecessor.description)
@status_message += t('todos.set_to_pending', :task => @todo.description) unless @original_state == 'pending'
else
@saved = false
end
respond_to do |format|
format.js {
@status_message = t('todos.added_dependency', :dependency => @predecessor.description)
@status_message += t('todos.set_to_pending', :task => @todo.description) unless @original_state == 'pending'
}
format.js
end
end
@ -342,7 +346,8 @@ class TodosController < ApplicationController
@saved = @todo.save
@context_changed = true
@message = t('todos.context_changed', :name => @context.name)
@status_message = t('todos.context_changed', :name => @context.name)
determine_down_count
determine_remaining_in_context_count(@original_item_context_id)
respond_to do |format|

View file

@ -1,6 +1,11 @@
<% if !@saved -%>
<% if !@saved
if @predecessor.completed? -%>
TracksPages.page_notify('error', "<%= t('todos.cannot_add_dependency_to_completed_todo') %>", 8);
$('#<%=dom_id(@todo)%>').html(html_for_todo());
<% else -%>
TracksPages.page_notify('error', "<%= t('todos.unable_to_add_dependency') %>", 8);
<% else -%>
<% end
else -%>
remove_successor_from_page();
replace_updated_predecessor();
regenerate_predecessor_family();
@ -19,7 +24,7 @@ function replace_updated_predecessor() {
function show_in_tickler_box() {
$("#tickler-empty-nd").hide();
$('#tickler').append( html_for_deferred_todo() );
$('#tickler').append( html_for_todo() );
}
function regenerate_predecessor_family() {
@ -37,9 +42,12 @@ function html_for_predecessor() {
return "<%= escape_javascript(render(:partial => @predecessor, :locals => { :parent_container_type => parent_container_type })) %>";
}
function html_for_deferred_todo() {
<% end # if !@saved
# following js is needed in case of an error with dragging onto a completed action althoug
%>
function html_for_todo() {
return "<%= escape_javascript(render(:partial => @todo, :locals => { :parent_container_type => parent_container_type })) %>";
}
<% end # if !@saved
%>

View file

@ -557,6 +557,7 @@ en:
set_to_pending: "%{task} set to pending"
append_in_this_project: "in this project"
unable_to_add_dependency: "Unable to add dependency"
cannot_add_dependency_to_completed_todo : "Cannot add this action as a dependency to a completed action!"
calendar:
due_today: "Due today"
no_actions_due_today: "No actions due today"

View file

@ -27,8 +27,8 @@ nl:
opensearch_description: Zoek in Tracks
gmail_description: Gadget om Tracks toe te voegen aan Gmail als een gadget
applescript_next_action_prompt: "Omschrijving van de actie:"
applescript_success_before_id: Nieuwe actie met ID
applescript_success_after_id: gemaakt
applescript_success_before_id: Nieuwe actie met ID
common:
third: Derde
actions: Acties
@ -36,43 +36,43 @@ nl:
add: Toevoegen
logout: Log uit
go_back: Ga terug
second: Tweede
none: Geen
second: Tweede
cancel: Annuleer
optional: optioneel
notes: Notities
server_error: Een fout heeft op de server plaatsgevonden
forum: Forum
server_error: Een fout heeft op de server plaatsgevonden
last: Laatste
action: Actie
projects: Projecten
project: Project
ok: Ok
contribute: Bijdragen
ok: Ok
first: Eerste
website: Website
numbered_step: Stap %{number}
fourth: Vierde
website: Website
context: Context
errors_with_fields: Er waren problemen met de volgende velden
drag_handle: SLEEP
fourth: Vierde
sort:
by_task_count_title: Sorteer op aantal acties
by_task_count_title_confirm: Weet u zeker dat u deze projecten alphabetisch wilt sorteren? Dat zal de huidige sorteervolgorde aanpassen.
alphabetically: Alphabetisch
alphabetically_title: Sorteer projecten alphabetisch
sort: Sorteer
alphabetically_title: Sorteer projecten alphabetisch
alphabetically_confirm: Weet u zeker dat u deze projecten alphabetisch wilt sorteren? Dat zal de huidige sorteervolgorde aanpassen.
by_task_count: Bij aantal acties
errors_with_fields: Er waren problemen met de volgende velden
create: Maken
drag_handle: SLEEP
description: Beschrijving
contexts: Contexten
update: Bijwerken
wiki: Wiki
bugs: Fouten
wiki: Wiki
email: E-mail
ajaxError: Er is een fout opgetreden bij het ophalen van gegevens van de server
search: Zoeken
ajaxError: Er is een fout opgetreden bij het ophalen van gegevens van de server
layouts:
toggle_notes: Toggle notities
next_actions_rss_feed: RSS-feed van de acties
@ -87,26 +87,26 @@ nl:
contexts: 2-Contexten
home: 1-Start
navigation:
manage_users_title: Toevoegen of verwijderen gebruikers
recurring_todos: Terugkerende acties
manage_users_title: Toevoegen of verwijderen gebruikers
api_docs: REST API Docs
feeds: Feeds
stats: Statistieken
starred: Ster
notes_title: Toon alle notities
stats: Statistieken
tickler_title: Tickler
manage_users: Beheren gebruikers
export_title: Import en export van gegevens
integrations_: Integreer Tracks
preferences: Voorkeuren
calendar_title: Kalender met acties met deadline
integrations_: Integreer Tracks
feeds_title: Zie een lijst met beschikbare feeds
calendar_title: Kalender met acties met deadline
stats_title: Zie je statistieken
home_title: Start
starred_title: Zie je ster acties
recurring_todos_title: Beheren terugkerende acties
tickler: Tickler
recurring_todos_title: Beheren terugkerende acties
completed_tasks: Gereed
stats_title: Zie je statistieken
view: Bekijk
organize: Organiseer
completed_tasks_title: Afgerond
@ -152,19 +152,19 @@ nl:
show_hidden_projects_in_sidebar: Toon verborgen projecten in sidebar
show_hidden_contexts_in_sidebar: Toon verborgen contexten in sidebar
date_format: Datum formaat
staleness_starts: Begin van markeren openstaande actie
mobile_todos_per_page: Acties per pagina (mobiel)
sms_context: Standaard context voor email
verbose_action_descriptors: Context en project uitschrijven in actielijst
mobile_todos_per_page: Acties per pagina (mobiel)
show_number_completed: Aantal te tonen afgeronde acties
staleness_starts: Begin van markeren openstaande actie
title_date_format: Datum formaat in titel
show_number_completed: Aantal te tonen afgeronde acties
refresh: Ververs interval (in minuten)
week_starts: Week start op
time_zone: Tijdzone
due_style: Deadline stijl
locale: Taal
sms_email: Van email
show_project_on_todo_done: Ga naar project pagina wanneer actie gereed is
sms_email: Van email
show_completed_projects_in_sidebar: Toon afgeronde projecten in sidebar
user:
last_name: Achternaam
@ -179,8 +179,8 @@ nl:
exclusion: is gereserveerd
invalid: mag niet een komma (',') karakter bevatten
odd: moet oneven zijn
empty: mag niet leeg zijn
wrong_length: heeft de verkeerde lengte (moet %{count} karakters lang zijn)
empty: mag niet leeg zijn
even: moet even zijn
too_short: is te kort (minimum is %{count} karakters)
less_than: moet kleiner zijn dan %{count}
@ -206,52 +206,49 @@ nl:
full_messages:
format: "%{attribute} %{message}"
stats:
totals_active_project_count: Van deze zijn %{count} actieve projecten
tag_cloud_title: Tag Cloud voor alle acties
tag_cloud_description: Deze tag cloud bevat tags van alle acties (afgerond, niet voltooid, zichtbaar en / of verborgen)
tag_cloud_90days_title: Tag cloud met acties in afgelopen 90 dagen
actions_avg_completion_time: Van al uw afgeronde acties, de gemiddelde tijd dat dit in beslag nam is %{count} dagen.
totals_active_project_count: Van deze zijn %{count} actieve projecten
actions_last_year_legend:
number_of_actions: Aantal acties
months_ago: Maanden geleden
totals_first_action: Sinds uw eerste actie op %{date}
actions_dow_30days_title: Dag van de week (laatste 30 dagen)
current_running_time_of_incomplete_visible_actions: Huidige looptijd van onvolledige zichtbare acties
actions_avg_completion_time: Van al uw afgeronde acties, de gemiddelde tijd dat dit in beslag nam is %{count} dagen.
running_time_legend:
actions: Acties
percentage: Percentage
weeks: Looptijd van een actie (weken). Klik op een balk voor meer info
totals_action_count: u heeft een totaal van %{count} acties
totals_deferred_actions: waarvan %{count} uitgestelde acties in de tickler zijn
top10_longrunning: Top 10 langstlopende projecten
legend:
number_of_days: Aantal dagen geleden
actions: Acties
number_of_days: Aantal dagen geleden
number_of_actions: Aantal acties
day_of_week: Dag van de week
running_time: Looptijd van een actie (weken)
percentage: Percentage
months_ago: Maanden geleden
top10_longrunning: Top 10 langstlopende projecten
top5_contexts: Top 5 contexten
actions_lastyear_title: Acties in de afgelopen 12 maanden
actions_dow_30days_title: Dag van de week (laatste 30 dagen)
current_running_time_of_incomplete_visible_actions: Huidige looptijd van onvolledige zichtbare acties
totals_actions_completed: "%{count} van deze zijn voltooid."
totals_incomplete_actions: U heeft %{count} onvolledige acties
totals_unique_tags: Van deze tags zijn %{count} uniek.
actions_avg_completed_30days: en voltooide een gemiddelde van %{count} acties per dag.
totals_visible_context_count: Van deze zijn %{count} zichtbare contexten
totals_blocked_actions: "%{count} zijn afhankelijk van de voltooiing van hun acties."
top5_contexts: Top 5 contexten
actions_lastyear_title: Acties in de afgelopen 12 maanden
action_completion_time_title: Doorlooptijd (alle voltooide acties)
actions_last_year: Acties in de afgelopen jaren
totals_context_count: U heeft %{count} contexten.
actions_min_completion_time: De minimale tijd tot afronding is %{time}.
totals_visible_context_count: Van deze zijn %{count} zichtbare contexten
totals_blocked_actions: "%{count} zijn afhankelijk van de voltooiing van hun acties."
no_tags_available: geen tags beschikbaar
actions_day_of_week_title: Dag van de week (alle acties)
totals_project_count: U heeft %{count} projecten.
tags: Tags
actions_min_max_completion_days: De max-/minimum dagen tot voltooiing is %{min}/%{max}.
tag_cloud_90days_description: Deze tag cloud bevat tags van acties die zijn gemaakt of voltooid in de afgelopen 90 dagen.
running_time_all: Huidige looptijd van alle onvolledige acties
totals_tag_count: U heeft %{count} tags geplaatst op acties.
tags: Tags
actions_min_completion_time: De minimale tijd tot afronding is %{time}.
time_of_day: Tijd van de dag (alle acties)
actions_30days_title: Acties in de afgelopen 30 dagen
totals_hidden_project_count: "%{count} zijn verborgen"
@ -259,24 +256,31 @@ nl:
top5_visible_contexts_with_incomplete_actions: Top 5 zichtbare contexten met onvolledige acties
actions_further: en verder
tod30: Tijd van de dag (laatste 30 dagen)
totals_completed_project_count: en %{count} zijn afgeronde projecten.
click_to_return: Klik %{link} om terug te keren naar de statistieken pagina.
top10_projects_30days: Top 10 project in de laatste 30 dagen
actions_selected_from_week: Gekozen acties van week
tag_cloud_90days_description: Deze tag cloud bevat tags van acties die zijn gemaakt of voltooid in de afgelopen 90 dagen.
running_time_all: Huidige looptijd van alle onvolledige acties
totals_tag_count: U heeft %{count} tags geplaatst op acties.
top10_projects: Top 10 projecten
spread_of_running_actions_for_visible_contexts: Verdeling van actieve acties voor zichtbare contexten
spread_of_actions_for_all_context: Verdeling van acties voor alle contexten
actions_avg_created: In de afgelopen 12 maanden heeft u gemiddeld%{count} acties aangemaakt
click_to_show_actions_from_week: Klik %{link} om de acties van week %{week} en verder te zien.
other_actions_label: (anderen)
totals_completed_project_count: en %{count} zijn afgeronde projecten.
click_to_return: Klik %{link} om terug te keren naar de statistieken pagina.
top10_projects_30days: Top 10 project in de laatste 30 dagen
actions_selected_from_week: Gekozen acties van week
click_to_return_link: hier
totals_hidden_context_count: en %{count} zijn verborgen contexten.
actions_avg_completed: en voltooide een gemiddelde van %{count} acties per maand.
totals: Totalen
time_of_day_legend:
number_of_actions: Aantal acties
time_of_day: Tijd van de dag
click_to_return_link: hier
totals_hidden_context_count: en %{count} zijn verborgen contexten.
actions_avg_completed: en voltooide een gemiddelde van %{count} acties per maand.
no_actions_selected: Er zijn geen acties geselecteerd.
click_to_update_actions: Klik op een balk in de grafiek op de acties hieronder aan te passen.
running_time_all_legend:
actions: Acties
running_time: Looptijd van een actie (weken). Klik op een balk voor meer info
percentage: Percentage
labels:
month_avg_completed: "%{months} gem afgerond per maand"
completed: Afgerond
@ -284,23 +288,19 @@ nl:
avg_created: Gem gemaakt
avg_completed: Gem afgerond
created: Gemaakt
click_to_update_actions: Klik op een balk in de grafiek op de acties hieronder aan te passen.
running_time_all_legend:
actions: Acties
running_time: Looptijd van een actie (weken). Klik op een balk voor meer info
percentage: Percentage
action_selection_title: "TRACKS:: Actie selectie"
actions_actions_avg_created_30days: In de afgelopen 30 dagen heeft u gemiddeld %{count} acties gemaakt
no_actions_selected: Er zijn geen acties geselecteerd.
tod30_legend:
number_of_actions: Aantal acties
time_of_day: Tijd van de dag
action_selection_title: "TRACKS:: Actie selectie"
actions_actions_avg_created_30days: In de afgelopen 30 dagen heeft u gemiddeld %{count} acties gemaakt
todos:
recurring_action_deleted: Actie werd verwijderd. Omdat deze actie herhalend is. werd een nieuwe actie toegevoegd
completed_actions: Voltooide acties
show_from: Toon vanaf
error_starring_recurring: Kon niet de ster van deze terugkerende actie niet omgezetten \'%{description}\'
completed_actions: Voltooide acties
added_new_next_action: Nieuwe actie toegevoegd
recurring_action_deleted: Actie werd verwijderd. Omdat deze actie herhalend is. werd een nieuwe actie toegevoegd
completed_recurring: Afgesloten terugkerende todos
added_new_next_action: Nieuwe actie toegevoegd
blocked_by: Geblokkeerd door %{predecessors}
star_action: Markeer deze actie met een ster
completed_recurrence_completed: Er is geen actie na de terugkerende actie die u new verwijderd heeft. De herhaling is voltooid
@ -312,17 +312,17 @@ nl:
completed: Afgerond
no_deferred_actions_with: Geen uitgestelde acties met de tag '%{tag_name}'
no_hidden_actions: Momenteel zijn er geen verborgen acties gevonden
edit_action_with_description: Bewerk de actie '%{description}'
action_due_on: (deadline actie op %{date})
archived_tasks_title: "TRACKS:: Gearchiveerde voltooide taken"
edit_action_with_description: Bewerk de actie '%{description}'
remove_dependency: Verwijder afhankelijkheid (zal niet de actie zelf verwijderen)
archived_tasks_title: "TRACKS:: Gearchiveerde voltooide taken"
list_incomplete_next_actions: Toon onvoltooide acties
tags: Tags (gescheiden door komma's)
action_deleted_success: Actie succesvol verwijderd
mobile_todos_page_title: Alle acties
tags: Tags (gescheiden door komma's)
new_related_todo_created: Een nieuwe actie is toegevoegd, die behoort bij deze terugkerende todo
context_changed: Context veranderd in '%{name}'
add_another_dependency: Nog een afhankelijkheid toevoegen
mobile_todos_page_title: Alle acties
delete_recurring_action_title: Verwijder de terugkerende actie
removed_predecessor: "'%{successor}' is verwijderd als afhankelijkheid van '%{predecessor}'."
recurring_actions_title: TRACKS::Terugkerende acties
@ -333,7 +333,6 @@ nl:
edit_action: Actie bewerken
added_new_context: Nieuwe context toegevoegd
next_actions_description: "Filter:"
older_completed_items: Oudere voltooide items
list_incomplete_next_actions_with_limit: Toont de laatste %{count} onvoltooide acties
set_to_pending: "'%{task}' als wachtend ingesteld"
added_new_project: Nieuw project toegevoegd
@ -341,9 +340,10 @@ nl:
completed: acties voltooid
due_today: deadline vandaag
due_within_a_week: deadline binnen een week
task_list_title: TRACKS::Toon acties
older_completed_items: Oudere voltooide items
append_in_this_project: in dit project
error_deleting_item: Er is een fout opgetreden bij het verwijderen van het item '%{description}'
task_list_title: TRACKS::Toon acties
no_actions_due_this_week: Geen acties met deadline in rest van deze week
no_recurring_todos: Momenteel zijn er geen terugkerende acties
error_completing_todo: Er was een fout bij het voltooien / activeren van de terugkerende actie '%{description}'
@ -351,18 +351,18 @@ nl:
no_deferred_pending_actions: Momenteel zijn er geen uitgestelde of wachtende acties
delete_recurring_action_confirm: Weet u zeker dat u wilt de terugkerende actie '%{description}' wilt verwijderen?
completed_last_day: Voltooid in de laatste 24 uur
error_saving_recurring: Er is een fout opgetreden het opslaan van de terugkerende actie '%{description}'
no_project: -- Geen project --
show_in_days: Toon over %{days} dagen
no_project: -- Geen project --
error_saving_recurring: Er is een fout opgetreden het opslaan van de terugkerende actie '%{description}'
completed_more_than_x_days_ago: Voltooid meer dan %{count} dagen geleden
new_related_todo_created_short: een nieuwe actie gemaakt
feed_title_in_context: in context '%{context}'
completed_actions_with: Afgeronde acties met de tag %{tag_name}
older_than_days: Ouder dan %{count} dagen
edit: Bewerken
pending: Wachtend
completed_actions_with: Afgeronde acties met de tag %{tag_name}
deleted_success: De actie werd met succes verwijderd.
completed_tasks_title: TRACKS::Voltooide taken
deleted_success: De actie werd met succes verwijderd.
feed_title_in_project: In het project '%{project}'
clear_due_date: Maak deadline leeg
error_removing_dependency: Er is een fout opgetreden het verwijderen van de afhankelijke actie
@ -383,10 +383,10 @@ nl:
show_today: Toon vandaag
no_actions_found_title: Geen acties gevonden
completed_last_x_days: Voltooid in de laatste %{count} dagen
no_actions_with: Momenteel zijn er geen onvoltooide acties met de tag '%{tag_name}'
defer_x_days:
one: Een dag uitstellen
other: "%{count} dagen uitstellen"
no_actions_with: Momenteel zijn er geen onvoltooide acties met de tag '%{tag_name}'
added_new_next_action_singular: Nieuwe actie toegevoegd
no_completed_actions: Momenteel zijn er geen voltooide acties.
deferred_pending_actions: Uitgestelde/wachtende acties
@ -401,6 +401,7 @@ nl:
recurring_todos: Terugkerende acties
delete: Verwijder
drag_action_title: Sleep naar een andere actie om deze afhankelijk te maken van die actie
cannot_add_dependency_to_completed_todo: Kan deze actie niet als een afhankelijkheid van een voltooide actie toevoegen!
depends_on: Hangt af van
tickler_items_due:
one: Een tickler item wordt nu zichtbaar - vernieuw de pagina om het te zien.
@ -416,70 +417,70 @@ nl:
calendar:
get_in_ical_format: Ontvang deze agenda in iCal-formaat
due_next_week: Deadline deze week
due_this_week: Deadline in rest van deze week
no_actions_due_next_week: Geen acties met deadline in volgende week
no_actions_due_today: Geen acties met deadline vandaag
due_this_week: Deadline in rest van deze week
due_today: Deadline vandaag
no_actions_due_today: Geen acties met deadline vandaag
due_next_month_and_later: Deadline in %{month} en later
no_actions_due_after_this_month: Geen acties met deadline na deze maand
due_this_month: Deadline in rest van %{month}
no_actions_due_this_month: Geen acties met deadline in de rest van deze maand
due_this_month: Deadline in rest van %{month}
recurrence:
ends_on_date: Eindigt op %{date}
every_work_day: Elke werkdag
ends_on_number_times: Eindigt na %{number} keer
recurrence_on_due_date: de datum dat deadline van de actie is
weekly_options: Instellingen voor de wekelijkse terugkerende acties
monthly_options: Instellingen voor maandelijks terugkerende acties
weekly: Wekelijks
monthly: Maandelijks
monthly_options: Instellingen voor maandelijks terugkerende acties
starts_on: Begint op
daily_options: Instellingen voor dagelijks terugkerende acties
show_option_always: altijd
monthly: Maandelijks
daily: Dagelijks
yearly_every_x_day: Elke %{month} %{day}
show_option_always: altijd
recurrence_on_options: Stel herhaling in op
yearly_every_x_day: Elke %{month} %{day}
daily_every_number_day: Elke %{number} dag(en)
weekly_every_number_week: Herhaalt elke %{number} weken op
ends_on: Eindigt op
show_options: Toon de actie
yearly_options: Instellingen voor jaarlijks terugkerende acties
show_days_before: "%{days} dagen v\xC3\xB3\xC3\xB3r de deadline van actie"
yearly_every_xth_day: De %{day} %{day_of_week} van %{month}
ends_on: Eindigt op
weekly_every_number_week: Herhaalt elke %{number} weken op
from_tickler: de datum dat de actie uit de tickler komt (geen deadline ingesteld)
no_end_date: Geen einddatum
yearly_every_xth_day: De %{day} %{day_of_week} van %{month}
day_x_on_every_x_month: Dag %{day} op elke %{month} maand
yearly: Jaarlijks
yearly_options: Instellingen voor jaarlijks terugkerende acties
show_days_before: "%{days} dagen v\xC3\xB3\xC3\xB3r de deadline van actie"
monthly_every_xth_day: De %{day} %{day_of_week} van elke %{month} maand
yearly: Jaarlijks
tagged_page_title: TRACKS::Tagged met '%{tag_name}'
no_completed_recurring: Momenteel zijn er geen voltooide terugkerende acties
added_dependency: "%{dependency} als afhankelijkheid toegevoegd."
no_deferred_actions: Momenteel zijn er geen uitgestelde acties.
recurrence_completed: Er is geen volgende actie na de terugkerende actie die u zojuist hebt voltooid. De herhaling is voltooid
action_marked_complete_error: De actie <strong>'%{description}'</strong> is niet gemarkeerd als <strong>%{completed} vanwege een fout op de server.</strong>
no_actions_found: Momenteel zijn er geen onafgeronde acties.
in_pending_state: in wachtende toestand
due: Deadline
action_marked_complete_error: De actie <strong>'%{description}'</strong> is niet gemarkeerd als <strong>%{completed} vanwege een fout op de server.</strong>
next_actions_description_additions:
completed: in de afgelopen %{count} dagen
due_date: met een deadline %{due_date} of eerder
depends_on_separate_with_commas: Afhankelijk van (gescheiden door komma's)
action_saved_to_tickler: Actie opgeslagen in tickler
overdue: Achterstallig
recurring_action_saved: Terugkerende actie opgeslagen
action_saved_to_tickler: Actie opgeslagen in tickler
depends_on_separate_with_commas: Afhankelijk van (gescheiden door komma's)
completed_in_archive:
one: Er is een voltooide actie in het archief.
other: Er zijn %{count} afgeronde acties in het archief.
to_tickler: naar tickler
overdue: Achterstallig
add_new_recurring: Voeg een nieuwe terugkerende actie toe
next_actions_description_additions:
completed: in de afgelopen %{count} dagen
due_date: met een deadline %{due_date} of eerder
no_incomplete_actions: Er zijn geen onvoltooide acties
add_new_recurring: Voeg een nieuwe terugkerende actie toe
notes:
delete_note_title: Verwijder de notitie '%{id}'
delete_confirmation: Weet u zeker dat u de notitie '%{id}' wilt verwijderen?
delete_item_title: Verwijder item
deleted_note: Verwijder notitie '%{id}'
delete_note_title: Verwijder de notitie '%{id}'
note_link_title: Toon notitie %{id}
show_note_title: Toon notitie
deleted_note: Verwijder notitie '%{id}'
note_location_link: "In:"
edit_item_title: Item bewerken
note_header: Notitie %{id}
@ -487,6 +488,14 @@ nl:
delete_note_confirm: Weet u zeker dat u de notitie '%{id}' wilt verwijderen?
errors:
user_unauthorized: "401 Unauthorized: Alleen administratieve gebruikers mogen deze functie gebruiken."
time:
am: ochtend
formats:
default: "%A, %d %B %Y %H:%M:%S %z"
time: "%H:%M"
short: "%d %B %H:%M"
long: "%A, %d. %B %Y, %H:%M"
pm: middag
states:
hidden_plural: Verborgen
completed: Afgerond
@ -496,81 +505,73 @@ nl:
active_plural: Actieve
active: Actief
hidden: Verborgen
time:
am: ochtend
formats:
default: "%A, %d %B %Y %H:%M:%S %z"
time: "%H:%M"
short: "%d %B %H:%M"
long: "%A, %d. %B %Y, %H:%M"
pm: middag
preferences:
staleness_starts_after: Ophopen begint na %{days} dagen
open_id_url: Uw OpenID URL is
change_identity_url: Verander uw Identity URL
page_title: "TRACKS:: Voorkeuren"
open_id_url: Uw OpenID URL is
change_password: Wijzig uw wachtwoord
token_description: Token (voor feeds en API gebruik)
page_title: "TRACKS:: Voorkeuren"
title: Uw voorkeuren
token_description: Token (voor feeds en API gebruik)
show_number_completed: Toon %{number} voltooide items
edit_preferences: Voorkeuren bewerken
page_title_edit: "TRACKS:: Voorkeuren bewerken"
generate_new_token: Genereer een nieuwe token
sms_context_none: Geen
token_header: Uw token
change_authentication_type: Verander uw authenticatietype
authentication_header: Uw authenticatie
current_authentication_type: Uw authenticatietype is %{auth_type}
change_authentication_type: Verander uw authenticatietype
generate_new_token_confirm: Weet u dit zeker? Het genereren van een nieuw token zal de bestaande te vervangen en dit zal het extern gebruiken van de oude token laten mislukken.
projects:
no_actions_in_project: Momenteel zijn er geen onafgeronde acties in dit project
default_tags_removed_notice: De standaard tags zijn verwijderd
was_marked_hidden: is gemarkeerd als verborgen
default_context_set: Stel project standaard context in op %{default_context}
deferred_actions: Uitgestelde acties voor dit project
no_actions_in_project: Momenteel zijn er geen onafgeronde acties in dit project
edit_project_title: Bewerk project
page_title: "TRACKS:: Project: %{project}"
was_marked_hidden: is gemarkeerd als verborgen
default_tags_removed_notice: De standaard tags zijn verwijderd
default_context_set: Stel project standaard context in op %{default_context}
hide_form: Verberg formulier
deferred_actions_empty: Er zijn geen uitgestelde acties voor dit project
project_state: Project is %{state}.
page_title: "TRACKS:: Project: %{project}"
show_form_title: Maak een nieuw project
to_new_project_page: Ga naar de nieuwe projectpagina
this_project: Dit project
no_notes_attached: Momenteel zijn er geen notities toegevoegd aan dit project
deferred_actions_empty: Er zijn geen uitgestelde acties voor dit project
this_project: Dit project
project_state: Project is %{state}.
notes: Notities
todos_append: in dit project
notes_empty: Er zijn geen notities voor dit project
no_projects: Momenteel zijn er geen projecten
hide_form_title: Verberg nieuw project formulier
notes_empty: Er zijn geen notities voor dit project
completed_actions_empty: Er zijn nog geen afgeronde acties voor dit project
delete_project: Project verwijderen
with_no_default_context: zonder standaard context
completed_actions_empty: Er zijn nog geen afgeronde acties voor dit project
actions_in_project_title: Acties in dit project
with_default_context: met een standaard context '%{context_name}'
show_form: Toevoegen van een project
delete_project_confirmation: Weet u zeker dat u wilt het project '%{name} wilt verwijderen?
actions_in_project_title: Acties in dit project
with_default_context: met een standaard context '%{context_name}'
is_active: is actief
settings: Instellingen
completed_projects: Voltooide projecten
with_default_tags: en met '%{tags}' als de standaard tags
list_projects: "TRACKS:: Overzicht van projecten"
add_project: Voeg project toe
set_default_tags_notice: Stel project standaard tags in op %{default_tags}
add_note: Een notitie toevoegen
project_saved_status: Project opgeslagen
settings: Instellingen
completed_projects: Voltooide projecten
list_projects: "TRACKS:: Overzicht van projecten"
is_active: is actief
add_project: Voeg project toe
delete_project_title: Verwijder het project
hidden_projects: Verborgen projecten
default_context_removed: Standaard context verwijderd
delete_project_title: Verwijder het project
completed_actions: Afgeronde acties voor dit project
default_context_removed: Standaard context verwijderd
add_note_submit: Notitie toevoegen
was_marked_complete: is gemarkeerd als voltooid
with_no_default_tags: en zonder standaard tags
default_context: De standaard context voor dit project is %{context}
active_projects: Actieve projecten
edit_project_settings: Bewerk project instellingen
state: Dit project is %{state}
status_project_name_changed: Naam van het project werd gewijzigd
no_default_context: Dit project heeft geen standaard context
with_no_default_tags: en zonder standaard tags
edit_project_settings: Bewerk project instellingen
active_projects: Actieve projecten
state: Dit project is %{state}
date:
month_names:
-
@ -586,6 +587,10 @@ nl:
- Oktober
- November
- December
order:
- :day
- :month
- :year
abbr_day_names:
- Zo
- Ma
@ -594,10 +599,6 @@ nl:
- Do
- Vr
- Za
order:
- :day
- :month
- :year
formats:
only_day: "%e"
default: "%d-%m-%Y"
@ -634,20 +635,6 @@ nl:
prompt: Selecteer
footer:
send_feedback: Stuur reactie op %{version}
shared:
multiple_next_actions: Meerdere acties (een op elke regel)
toggle_single: Voeg een actie toe
hide_form: Verberg formulier
add_action: Actie toevoegen
add_actions: Toevoegen acties
tags_for_all_actions: Tags voor alle acties (scheiden met een komma)
toggle_multi: Voeg meerdere acties toe
toggle_single_title: Voeg een nieuwe actie toe
project_for_all_actions: Project voor alle acties
context_for_all_actions: Context voor alle acties
separate_tags_with_commas: gescheiden door komma's
toggle_multi_title: Toggle single / multi actie formulier
hide_action_form_title: Verberg nieuwe actie formulier
dates:
month_names:
- Januari
@ -670,56 +657,87 @@ nl:
- Donderdag
- Vrijdag
- Zaterdag
sidebar:
list_name_active_contexts: Actieve contexten
list_name_active_projects: Actieve projecten
list_empty: Geen
list_name_completed_projects: Voltooide projecten
list_name_hidden_projects: Verborgen projecten
list_name_hidden_contexts: Verborgen contexten
shared:
multiple_next_actions: Meerdere acties (een op elke regel)
toggle_single: Voeg een actie toe
hide_form: Verberg formulier
add_actions: Toevoegen acties
add_action: Actie toevoegen
tags_for_all_actions: Tags voor alle acties (scheiden met een komma)
toggle_single_title: Voeg een nieuwe actie toe
project_for_all_actions: Project voor alle acties
context_for_all_actions: Context voor alle acties
toggle_multi: Voeg meerdere acties toe
separate_tags_with_commas: gescheiden door komma's
toggle_multi_title: Toggle single / multi actie formulier
hide_action_form_title: Verberg nieuwe actie formulier
users:
openid_url_verified: Je hebt %{url} met succes geverifieerd als je identiteit en uw authenticatie type OpenID opgeslagen.
destroy_successful: Gebruiker %{login} met succes verwijderd
auth_type_update_error: "Er was een probleem met het bijwerken van uw authenticatietype: %{error_messages}"
total_contexts: Totaal aantal contexten
first_user_heading: "Welkom bij TRACKS. Om te beginnen, maak dan een admin account:"
successfully_deleted_user: Succesvol gebruiker %{username} verwijderd
failed_to_delete_user: Mislukt de gebruiker %{username} te verwijderen
openid_url_verified: Je hebt %{url} met succes geverifieerd als je identiteit en uw authenticatie type OpenID opgeslagen.
destroy_successful: Gebruiker %{login} met succes verwijderd
new_token_generated: Nieuwe token met succes gegenereerd
total_projects: Totaal aantal projecten
signup_successful: Aanmelding succesvol voor gebruiker %{username}.
new_token_generated: Nieuwe token met succes gegenereerd
no_signups_title: "TRACKS:: Geen nieuwe aanmeldingen"
user_created: Gebruiker aangemaakt.
change_password_submit: Wachtwoord wijzigen
account_signup: Aanmelden voor een account
password_updated: Wachtwoord bijgewerkt.
manage_users: Beheren gebruikers
signup: Aanmelden
confirm_password: Bevestig wachtwoord
password_updated: Wachtwoord bijgewerkt.
new_user_heading: "Registreer een nieuwe gebruiker:"
signup: Aanmelden
auth_type_updated: Authenticatietype bijgewerkt.
total_actions: Totaal aanal acties
desired_login: Gewenste login
password_confirmation_label: Bevestig wachtwoord
destroy_error: Er is een fout opgetreden bij het verwijderen van de gebruiker '%{login}'
choose_password: Kies een wachtwoord
confirm_password: Bevestig wachtwoord
change_password_title: TRACKS::Wachtwoord wijzigen
change_auth_type_title: TRACKS::Wijzig authenticatietype
change_password_prompt: Voer uw nieuwe wachtwoord in de onderstaande velden in en kies 'Wachtwoord wijzigen' om uw huidige wachtwoord met uw nieuwe te vervangen.
password_confirmation_label: Bevestig wachtwoord
destroy_error: Er is een fout opgetreden bij het verwijderen van de gebruiker '%{login}'
choose_password: Kies een wachtwoord
label_auth_type: Authenticatietype
new_password_label: Nieuw wachtwoord
register_with_cas: Met uw CAS gebruikersnaam
new_user_title: "TRACKS:: Aanmelden als de admin gebruiker"
destroy_user: Verwijder de gebruiker
total_users_count: Je hebt een totaal van %{count} gebruikers
new_user_title: "TRACKS:: Aanmelden als de admin gebruiker"
destroy_confirmation: "Waarschuwing: dit zal de gebruiker '%{login} verwijderen met al zijn acties, contexten, projecten en notities. Weet u zeker dat u wilt doorgaan?"
signup_new_user: Registreer nieuwe gebruiker
change_authentication_type: Wijzigen authenticatietype
identity_url: Identiteit URL
auth_change_submit: Wijzigen authenticatietype
openid_ok_pref_failed: Je hebt succesvol de %{url} geverifieerd als je identiteit, maar er was een probleem met het opslaan van uw authenticatie voorkeuren.
total_notes: Totaal aantal notities
change_authentication_type: Wijzigen authenticatietype
auth_change_submit: Wijzigen authenticatietype
select_authentication_type: Selecteer uw nieuwe authenticatie type en klik op 'Wijzigen authenticatietype' om uw huidige instellingen te vervangen.
total_notes: Totaal aantal notities
feedlist:
actions_due_today: Acties die vandaag of eerder af moeten
choose_context: Kies de context waar je een feed van wilt
rss_feed: RSS Feed
legend: Legenda
ical_feed: iCal feed
all_contexts: Alle contexten
all_projects: Alle projecten
choose_project: Kies het project waar je een feed van wilt
select_feed_for_project: Kies de feed voor dit project
active_projects_wo_next: Actieve projecten zonder acties
project_needed: "Er moet ten minste \xC3\xA9\xC3\xA9n project zijn voor een feed opgevraagd kan worden"
active_starred_actions: Alle gesterde, actieve acties
context_needed: "Er moet eerst ten minste \xC3\xA9\xC3\xA9n context zijn voor je een feed kan opvragen"
select_feed_for_context: Kies de feed voor deze context
projects_and_actions: Actieve projecten met hun acties
actions_due_next_week: Acties die binnen 7 dagen afgerond moeten
notice_incomplete_only: "Merk op: alle feeds laten alleen acties zien die niet afgerond zijn, tenzij anders vermeld."
plain_text_feed: Reguliere tekst feed
last_fixed_number: Laatste %{number} acties
all_actions: Alle acties
actions_completed_last_week: Acties afgerond in de afgelopen 7 dagen
context_centric_actions: Feeds voor onafgeronde acties in een specifieke context
project_centric: Feeds voor onafgeronde acties in een specifiek project
contexts:
delete_context_title: Verwijder context
hide_form: Verberg formulier
@ -731,44 +749,27 @@ nl:
hidden_contexts: Verborgen contexten
no_contexts_active: Momenteel zijn er geen actieve contexten
context_hide: Verberg van de start pagina?
visible_contexts: Zichtbare contexten
save_status_message: Context bewaard
show_form: Maak een nieuwe context
add_context: Context toevoegen
visible_contexts: Zichtbare contexten
save_status_message: Context bewaard
context_name: Context naam
update_status_message: Naam van de context was veranderd
status_active: Context is actief
new_context_post: "' zal ook gemaakt worden. Weet u dit zeker?"
context_deleted: De context '%{name}' is verwijderd
no_contexts_hidden: Momenteel zijn er geen verborgen contexten
new_context_pre: Nieuwe context '
no_actions: Momenteel zijn er geen onafgeronde acties in deze context
last_completed_in_context: in deze context (laatste %{number})
context_deleted: De context '%{name}' is verwijderd
no_contexts_hidden: Momenteel zijn er geen verborgen contexten
status_hidden: Context is verborgen
feedlist:
actions_due_today: Acties die vandaag of eerder af moeten
choose_context: Kies de context waar je een feed van wilt
ical_feed: iCal feed
all_contexts: Alle contexten
rss_feed: RSS Feed
legend: Legenda
all_projects: Alle projecten
choose_project: Kies het project waar je een feed van wilt
project_needed: "Er moet ten minste \xC3\xA9\xC3\xA9n project zijn voor een feed opgevraagd kan worden"
select_feed_for_project: Kies de feed voor dit project
active_projects_wo_next: Actieve projecten zonder acties
active_starred_actions: Alle gesterde, actieve acties
context_needed: "Er moet eerst ten minste \xC3\xA9\xC3\xA9n context zijn voor je een feed kan opvragen"
select_feed_for_context: Kies de feed voor deze context
projects_and_actions: Actieve projecten met hun acties
actions_due_next_week: Acties die binnen 7 dagen afgerond moeten
notice_incomplete_only: "Merk op: alle feeds laten alleen acties zien die niet afgerond zijn, tenzij anders vermeld."
context_centric_actions: Feeds voor onafgeronde acties in een specifieke context
plain_text_feed: Reguliere tekst feed
last_fixed_number: Laatste %{number} acties
all_actions: Alle acties
actions_completed_last_week: Acties afgerond in de afgelopen 7 dagen
project_centric: Feeds voor onafgeronde acties in een specifiek project
sidebar:
list_name_active_contexts: Actieve contexten
list_name_active_projects: Actieve projecten
list_empty: Geen
list_name_completed_projects: Voltooide projecten
list_name_hidden_projects: Verborgen projecten
list_name_hidden_contexts: Verborgen contexten
datetime:
prompts:
minute: Minuut
@ -816,33 +817,33 @@ nl:
half_a_minute: halve minuut
login:
user_no_expiry: Blijf ingelogd
login_cas: Ga naar het CAS
sign_in: Meld aan
openid_identity_url_not_found: Sorry, geen gebruiker met die identiteit URL bestaat (%{identity_url})
successful_with_session_info: "Login succesvol:"
please_login: Log in om Tracks te gebruiken
login_cas: Ga naar het CAS
cas_logged_in_greeting: Hallo, %{username}! U bent geauthenticeerd.
cas_no_user_found: Hallo,%{username}! Je hebt nog geen account op Tracks.
cas_login: CAS Inloggen
successful_with_session_info: "Login succesvol:"
please_login: Log in om Tracks te gebruiken
cas_username_not_found: Sorry, geen gebruiker met die CAS gebruikersnaam bestaat (%{username})
mobile_use_openid: ... if inloggen met een OpenID
cas_create_account: Als u willen vragen ga hier om %{signup_link}
mobile_use_openid: ... if inloggen met een OpenID
account_login: Account login
cas_signup_link: Aanvragen account
session_will_not_expire: sessie zal niet verlopen.
successful: Succesvol aangemeld. Welkom terug!
session_time_out: Sessie is verlopen. Gelieve %{link}
session_will_expire: sessie zal verlopen na %{hours} u(u)r(en) van inactiviteit.
option_separator: of,
session_time_out: Sessie is verlopen. Gelieve %{link}
login_standard: Ga terug naar de standaard login
log_in_again: opnieuw in te loggen.
logged_out: Je bent afgemeld bij Tracks.
login_with_openid: inloggen met een OpenID
unsuccessful: Login mislukt.
log_in_again: opnieuw in te loggen.
logged_out: Je bent afgemeld bij Tracks.
search:
contexts_matching_query: Contexten passend bij zoekopdracht
tags_matching_query: Tags passend bij zoekopdracht
todos_matching_query: Todos passend bij zoekopdracht
projects_matching_query: Projecten passend bij zoekopdracht
notes_matching_query: Notities passend bij zoekopdracht
no_results: Uw zoekopdracht heeft geen resultaten opgeleverd.
todos_matching_query: Todos passend bij zoekopdracht
projects_matching_query: Projecten passend bij zoekopdracht

View file

@ -1,6 +1,6 @@
Feature: dependencies
As a Tracks user
In order to keep track of complex todos
In order to keep track of complex todos that are dependent on each other
I want to assign and manage todo dependencies
Background:
@ -94,3 +94,16 @@ Feature: dependencies
Scenario: Deleting a successor will update predecessor
Given this is a pending scenario
@selenium @wip
Scenario: Dragging an action to a completed action will not add it as a dependency
Given I have a context called "@pc"
And I have a project "dependencies" that has the following todos
| description | context | completed |
| test 1 | @pc | no |
| test 2 | @pc | no |
| test 3 | @pc | yes |
When I visit the "dependencies" project
And I drag "test 1" to "test 3"
Then I should see an error flash message saying "Cannot add this action as a dependency to a completed action!"
And I should see "test 1" in project container for "dependencies"

View file

@ -15,8 +15,7 @@ When /^I drag "(.*)" to "(.*)"$/ do |dragged, target|
selenium.drag_and_drop_to_object(drag_name, drop_name)
arrow = "xpath=//div[@id='line_todo_#{drop_id}']/div/a[@class='show_successors']/img"
selenium.wait_for_element(arrow, :timeout_in_seconds => 5)
wait_for_ajax
end
When /^I expand the dependencies of "([^\"]*)"$/ do |todo_name|

View file

@ -34,3 +34,34 @@ Then /^I should not see the context "([^"]*)"$/ do |context_name|
!selenium.is_visible("xpath=//div[@id='c#{context.id}']")
end
end
Then /^I should see an error flash message saying "([^"]*)"$/ do |message|
xpath = "//div[@id='message_holder']/h4[@id='flash']"
text = response.selenium.get_text("xpath=#{xpath}")
text.should == message
end
Then /^I should see "([^"]*)" in context container for "([^"]*)"$/ do |todo_description, context_name|
context = @current_user.contexts.find_by_name(context_name)
context.should_not be_nil
todo = @current_user.todos.find_by_description(todo_description)
todo.should_not be_nil
xpath = "xpath=//div[@id=\"c#{context.id}\"]//div[@id='line_todo_#{todo.id}']"
selenium.wait_for_element(xpath, :timeout_in_seconds => 5)
selenium.is_visible(xpath).should be_true
end
Then /^I should see "([^"]*)" in project container for "([^"]*)"$/ do |todo_description, project_name|
todo = @current_user.todos.find_by_description(todo_description)
todo.should_not be_nil
project = @current_user.projects.find_by_name(project_name)
project.should_not be_nil
xpath = "//div[@id='p#{project.id}items']//div[@id='line_todo_#{todo.id}']"
selenium.wait_for_element("xpath=#{xpath}", :timeout_in_seconds => 5)
selenium.is_visible(xpath).should be_true
end

View file

@ -65,6 +65,9 @@ Given /^I have a project "([^"]*)" that has the following todos$/ do |project_na
unless todo[:tags].nil?
new_todo.tag_with(todo[:tags])
end
unless todo[:completed].nil?
new_todo.complete! if todo[:completed] == 'yes'
end
end
end

View file

@ -171,7 +171,7 @@ var TracksPages = {
Nifty("div#project_new_project_container","normal");
},
page_notify: function(type, message, fade_duration_in_sec) {
var flash = $('h4#flash');
var flash = $('div#message_holder');
flash.html("<h4 id=\'flash\' class=\'alert "+type+"\'>"+message+"</h4>");
flash = $('h4#flash');
flash.show();
@ -228,6 +228,33 @@ var TracksPages = {
selectFirst: true
});
},
setup_all_autocompleters: function() {
//fix for #1036 where closing a edit form before the autocomplete was filled
//resulted in a dropdown box that could not be removed. We remove all
//autocomplete boxes the hard way
$('.ac_results').remove();
// initialize autocompleters
ProjectItems.setup_autocomplete_for_projects('input[name=project_name]');
ContextItems.setup_autocomplete_for_contexts('input[name=context_name]');
ContextItems.setup_autocomplete_for_contexts('input[id="project_default_context_name"]');
TracksPages.setup_autocomplete_for_tag_list('input[name=tag_list]');
TracksPages.setup_autocomplete_for_tag_list('input[id="project_default_tags"]');
TodoItems.setup_autocomplete_for_predecessor();
},
setup_datepicker: function() {
$('input.Date').datepicker({
'dateFormat': dateFormat,
'firstDay': weekStart,
'showButtonPanel': true,
'showWeek': true,
'changeMonth': true,
'changeYear': true,
'maxDate': '+5y',
'minDate': '-1y',
'showAnim': '' /* leave empty, see #1117 */
});
},
setup_behavior: function () {
/* main menu */
$('ul.sf-menu').superfish({
@ -436,6 +463,53 @@ var TodoItems = {
selectFirst: true
});
},
drag_todo: function() {
$('.drop_target').show();
$(this).parents(".container").find(".context_target").hide();
},
drop_todo: function(evt, ui) {
/* Drag & Drop for successor/predecessor */
var dragged_todo = ui.draggable[0].id.split('_')[2];
var dropped_todo = this.id.split('_')[2];
ui.draggable.remove();
$('.drop_target').hide(); // IE8 doesn't call stop() in this situation
ajax_options = default_ajax_options_for_scripts('POST', relative_to_root('todos/add_predecessor'), $(this));
ajax_options.data += "&predecessor="+dropped_todo + "&successor="+dragged_todo
$.ajax(ajax_options);
},
drop_todo_on_context: function(evt, ui) {
/* Drag & drop for changing contexts */
var target = $(this).parent().get();
var dragged_todo = ui.draggable[0].id.split('_')[2];
var context_id = this.id.split('_')[1];
ui.draggable.remove();
$('.drop_target').hide();
ajax_options = default_ajax_options_for_scripts('POST', relative_to_root('todos/change_context'), target);
ajax_options.data += "&todo[id]="+dragged_todo + "&todo[context_id]="+context_id
$.ajax(ajax_options);
},
setup_drag_and_drop: function() {
$('.item-show').draggable({
handle: '.grip',
revert: 'invalid',
start: TodoItems.drag_todo,
stop: function() {
$('.drop_target').hide();
}
});
$('.item-show').droppable({
drop: TodoItems.drop_todo,
tolerance: 'pointer',
hoverClass: 'hover'
});
$('.context_target').droppable({
drop: TodoItems.drop_todo_on_context,
tolerance: 'pointer',
hoverClass: 'hover'
});
},
setup_behavior: function() {
/* show the notes of a todo */
$(".show_notes").live('click', function () {
@ -968,21 +1042,21 @@ function default_ajax_options_for_submit(ajax_type, element_to_block) {
var options = {
type: ajax_type,
async: true,
context: element_to_block,
block_element: element_to_block,
data: "_source_view=" + SOURCE_VIEW,
beforeSend: function() {
// console.debug('data: '+this.data);
if (this.context) {
$(this.context).block({
if (this.block_element) {
$(this.block_element).block({
message: null
});
}
},
complete: [function() {
if (this.context) {
$(this.context).unblock();
if (this.block_element) {
$(this.block_element).unblock();
}
enable_rich_interaction();
// delay a bit to wait for animations to finish
setTimeout(function(){enable_rich_interaction();}, 500);
}],
error: function(req, status) {
TracksPages.page_notify('error', i18n['common.ajaxError']+': '+status, 8);
@ -1098,30 +1172,9 @@ function project_defaults(){
function enable_rich_interaction(){
// called after completion of all AJAX calls
//fix for #1036 where closing a edit form before the autocomplete was filled
//resulted in a dropdown box that could not be removed. We remove all
//autocomplete boxes the hard way
$('.ac_results').remove();
$('input.Date').datepicker({
'dateFormat': dateFormat,
'firstDay': weekStart,
'showButtonPanel': true,
'showWeek': true,
'changeMonth': true,
'changeYear': true,
'maxDate': '+5y',
'minDate': '-1y',
'showAnim': '' /* leave empty, see #1117 */
});
/* Autocomplete */
ProjectItems.setup_autocomplete_for_projects('input[name=project_name]');
ContextItems.setup_autocomplete_for_contexts('input[name=context_name]');
ContextItems.setup_autocomplete_for_contexts('input[id="project_default_context_name"]');
TracksPages.setup_autocomplete_for_tag_list('input[name=tag_list]');
TracksPages.setup_autocomplete_for_tag_list('input[id="project_default_tags"]');
TodoItems.setup_autocomplete_for_predecessor();
TracksPages.setup_datepicker();
TracksPages.setup_all_autocompleters();
TodoItems.setup_drag_and_drop();
/* have to bind on keypress because of limitations of live() */
$('input[name=project_name]').live('keypress', function(){
@ -1134,72 +1187,11 @@ function enable_rich_interaction(){
$(this).attr('edited', 'true');
});
/* Drag & Drop for successor/predecessor */
function drop_todo(evt, ui) {
var dragged_todo = ui.draggable[0].id.split('_')[2];
var dropped_todo = this.id.split('_')[2];
ui.draggable.remove();
$('.drop_target').hide(); // IE8 doesn't call stop() in this situation
ajax_options = default_ajax_options_for_scripts('POST', relative_to_root('todos/add_predecessor'), $(this));
ajax_options.data += "&predecessor="+dropped_todo + "&successor="+dragged_todo
$.ajax(ajax_options);
}
function drag_todo(){
$('.drop_target').show();
$(this).parents(".container").find(".context_target").hide();
}
$('.item-show').draggable({
handle: '.grip',
revert: 'invalid',
start: drag_todo,
stop: function() {
$('.drop_target').hide();
}
});
$('.item-show').droppable({
drop: drop_todo,
tolerance: 'pointer',
hoverClass: 'hover'
});
/* Drag & drop for changing contexts */
function drop_todo_on_context(evt, ui) {
var target = $(this);
var dragged_todo = ui.draggable[0].id.split('_')[2];
var context_id = this.id.split('_')[1];
ui.draggable.remove();
target.block({
message: null
});
setTimeout(function() {
target.show()
}, 0);
$.post(relative_to_root('todos/change_context'),
{
"todo[id]": dragged_todo,
"todo[context_id]": context_id
},
function(){
target.unblock();
target.hide();
}, 'script');
}
$('.context_target').droppable({
drop: drop_todo_on_context,
tolerance: 'pointer',
hoverClass: 'hover'
});
/* Reset auto updater */
field_touched = false;
/* shrink the notes on the project pages. This is not live(), so this needs
* to be run after ajax adding of a new note */
* to be run after ajax adding of a new note */
$('.note_wrapper').truncate({
max_length: 90,
more: '',