home page is restored, so is context view
24
Gemfile
|
|
@ -57,20 +57,16 @@ gem 'bcrypt-ruby', '~> 3.0.0'
|
||||||
# Deploy with Capistrano
|
# Deploy with Capistrano
|
||||||
# gem 'capistrano'
|
# gem 'capistrano'
|
||||||
|
|
||||||
# To use debugger
|
group :development do
|
||||||
# gem 'ruby-debug19', :require => 'ruby-debug'
|
if RUBY_VERSION.to_f >= 1.9
|
||||||
|
# gem "ruby-debug19", :require => 'ruby-debug'
|
||||||
|
gem "mongrel", "1.2.0.pre2"
|
||||||
# group :development do
|
else
|
||||||
# if RUBY_VERSION.to_f >= 1.9
|
# gem "ruby-debug"
|
||||||
# gem "ruby-debug19"
|
# gem "mongrel"
|
||||||
# gem "mongrel", "1.2.0.pre2"
|
end
|
||||||
# else
|
gem "yard"
|
||||||
# gem "ruby-debug"
|
end
|
||||||
# gem "mongrel"
|
|
||||||
# end
|
|
||||||
# gem "yard"
|
|
||||||
# end
|
|
||||||
#
|
#
|
||||||
# group :test do
|
# group :test do
|
||||||
# gem "test-unit", "1.2.3"
|
# gem "test-unit", "1.2.3"
|
||||||
|
|
|
||||||
|
|
@ -41,9 +41,11 @@ GEM
|
||||||
coffee-script-source
|
coffee-script-source
|
||||||
execjs
|
execjs
|
||||||
coffee-script-source (1.3.1)
|
coffee-script-source (1.3.1)
|
||||||
|
daemons (1.0.10)
|
||||||
erubis (2.7.0)
|
erubis (2.7.0)
|
||||||
execjs (1.3.0)
|
execjs (1.3.0)
|
||||||
multi_json (~> 1.0)
|
multi_json (~> 1.0)
|
||||||
|
gem_plugin (0.2.3)
|
||||||
highline (1.5.2)
|
highline (1.5.2)
|
||||||
hike (1.2.1)
|
hike (1.2.1)
|
||||||
htmlentities (4.3.1)
|
htmlentities (4.3.1)
|
||||||
|
|
@ -58,6 +60,9 @@ GEM
|
||||||
mime-types (~> 1.16)
|
mime-types (~> 1.16)
|
||||||
treetop (~> 1.4.8)
|
treetop (~> 1.4.8)
|
||||||
mime-types (1.18)
|
mime-types (1.18)
|
||||||
|
mongrel (1.2.0.pre2)
|
||||||
|
daemons (~> 1.0.10)
|
||||||
|
gem_plugin (~> 0.2.3)
|
||||||
multi_json (1.2.0)
|
multi_json (1.2.0)
|
||||||
mysql2 (0.3.11)
|
mysql2 (0.3.11)
|
||||||
nokogiri (1.4.7)
|
nokogiri (1.4.7)
|
||||||
|
|
@ -115,6 +120,7 @@ GEM
|
||||||
execjs (>= 0.3.0)
|
execjs (>= 0.3.0)
|
||||||
multi_json (>= 1.0.2)
|
multi_json (>= 1.0.2)
|
||||||
will_paginate (3.0.3)
|
will_paginate (3.0.3)
|
||||||
|
yard (0.7.5)
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
ruby
|
ruby
|
||||||
|
|
@ -129,6 +135,7 @@ DEPENDENCIES
|
||||||
htmlentities (~> 4.3.0)
|
htmlentities (~> 4.3.0)
|
||||||
jquery-rails
|
jquery-rails
|
||||||
mail
|
mail
|
||||||
|
mongrel (= 1.2.0.pre2)
|
||||||
mysql2
|
mysql2
|
||||||
rails (= 3.2.3)
|
rails (= 3.2.3)
|
||||||
rails_autolink
|
rails_autolink
|
||||||
|
|
@ -139,3 +146,4 @@ DEPENDENCIES
|
||||||
swf_fu
|
swf_fu
|
||||||
uglifier (>= 1.0.3)
|
uglifier (>= 1.0.3)
|
||||||
will_paginate
|
will_paginate
|
||||||
|
yard
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 781 B After Width: | Height: | Size: 781 B |
|
Before Width: | Height: | Size: 596 B After Width: | Height: | Size: 596 B |
|
Before Width: | Height: | Size: 244 B After Width: | Height: | Size: 244 B |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 156 B After Width: | Height: | Size: 156 B |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 587 B After Width: | Height: | Size: 587 B |
|
Before Width: | Height: | Size: 109 B After Width: | Height: | Size: 109 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 138 B After Width: | Height: | Size: 138 B |
|
Before Width: | Height: | Size: 3 KiB After Width: | Height: | Size: 3 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 496 B After Width: | Height: | Size: 496 B |
|
Before Width: | Height: | Size: 425 B After Width: | Height: | Size: 425 B |
|
Before Width: | Height: | Size: 501 B After Width: | Height: | Size: 501 B |
|
Before Width: | Height: | Size: 441 B After Width: | Height: | Size: 441 B |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 905 B After Width: | Height: | Size: 905 B |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 216 B After Width: | Height: | Size: 216 B |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 764 B After Width: | Height: | Size: 764 B |
|
Before Width: | Height: | Size: 192 B After Width: | Height: | Size: 192 B |
|
Before Width: | Height: | Size: 618 B After Width: | Height: | Size: 618 B |
|
Before Width: | Height: | Size: 69 B After Width: | Height: | Size: 69 B |
|
Before Width: | Height: | Size: 337 B After Width: | Height: | Size: 337 B |
|
Before Width: | Height: | Size: 271 B After Width: | Height: | Size: 271 B |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 161 B |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 237 B After Width: | Height: | Size: 237 B |
|
Before Width: | Height: | Size: 410 B After Width: | Height: | Size: 410 B |
|
Before Width: | Height: | Size: 598 B After Width: | Height: | Size: 598 B |
|
Before Width: | Height: | Size: 475 B After Width: | Height: | Size: 475 B |
|
Before Width: | Height: | Size: 814 B After Width: | Height: | Size: 814 B |
|
Before Width: | Height: | Size: 642 B After Width: | Height: | Size: 642 B |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 84 B After Width: | Height: | Size: 84 B |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 935 B After Width: | Height: | Size: 935 B |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 328 B After Width: | Height: | Size: 328 B |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 515 B After Width: | Height: | Size: 515 B |
|
|
@ -12,4 +12,6 @@
|
||||||
//
|
//
|
||||||
//= require jquery
|
//= require jquery
|
||||||
//= require jquery_ujs
|
//= require jquery_ujs
|
||||||
|
//= require ../../../vendor/assets/javascripts/jquery-ui-1.8.17.custom.min
|
||||||
|
//= require_tree ../../../vendor/assets/javascripts
|
||||||
//= require_tree .
|
//= require_tree .
|
||||||
|
|
|
||||||
|
|
@ -9,5 +9,7 @@
|
||||||
* compiled file, but it's generally better to create a new file per style scope.
|
* compiled file, but it's generally better to create a new file per style scope.
|
||||||
*
|
*
|
||||||
*= require_self
|
*= require_self
|
||||||
*= require_tree .
|
* require_tree .
|
||||||
|
*= require tracks
|
||||||
|
*= require_tree ../../../vendor/assets/stylesheets
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -106,35 +106,35 @@ h3 {
|
||||||
|
|
||||||
/* Rules for the icon links */
|
/* Rules for the icon links */
|
||||||
|
|
||||||
img.edit_item {background-image: url(../images/edit_off.png); background-repeat: no-repeat; border: none;}
|
img.edit_item {background-image: url(/assets/edit_off.png); background-repeat: no-repeat; border: none;}
|
||||||
a:hover img.edit_item {background-image: url(../images/edit_on.png); background-color: transparent; background-repeat: no-repeat; border: none;}
|
a:hover img.edit_item {background-image: url(/assets/edit_on.png); background-color: transparent; background-repeat: no-repeat; border: none;}
|
||||||
|
|
||||||
img.delete_item {background-image: url(../images/delete_off.png); background-repeat: no-repeat; border: none;}
|
img.delete_item {background-image: url(/assets/delete_off.png); background-repeat: no-repeat; border: none;}
|
||||||
a:hover img.delete_item {background-image: url(../images/delete_on.png);background-color: transparent;background-repeat: no-repeat; border: none;}
|
a:hover img.delete_item {background-image: url(/assets/delete_on.png);background-color: transparent;background-repeat: no-repeat; border: none;}
|
||||||
|
|
||||||
a.undecorated_link {background-color:transparent;color:transparent;}
|
a.undecorated_link {background-color:transparent;color:transparent;}
|
||||||
img.todo_star {background-image: url(../images/staricons.png); background-repeat: no-repeat; border:none; background-position: -32px 0px;}
|
img.todo_star {background-image: url(/assets/staricons.png); background-repeat: no-repeat; border:none; background-position: -32px 0px;}
|
||||||
img.todo_star.starred{ background-position: 0px 0px; }
|
img.todo_star.starred{ background-position: 0px 0px; }
|
||||||
a:hover img.todo_star { background-position: -48px 0px;}
|
a:hover img.todo_star { background-position: -48px 0px;}
|
||||||
a:hover img.todo_star.starred { background-position: -16px 0px; }
|
a:hover img.todo_star.starred { background-position: -16px 0px; }
|
||||||
|
|
||||||
a.to_top {background: transparent url(../images/top_off.png) no-repeat;}
|
a.to_top {background: transparent url(/assets/top_off.png) no-repeat;}
|
||||||
a.to_top:hover {background: transparent url(../images/top_on.png) no-repeat;}
|
a.to_top:hover {background: transparent url(/assets/top_on.png) no-repeat;}
|
||||||
|
|
||||||
a.up {background: transparent url(../images/up_off.png) no-repeat;}
|
a.up {background: transparent url(/assets/up_off.png) no-repeat;}
|
||||||
a.up:hover {background: transparent url(../images/up_on.png) no-repeat;}
|
a.up:hover {background: transparent url(/assets/up_on.png) no-repeat;}
|
||||||
|
|
||||||
a.down {background: transparent url(../images/down_off.png) no-repeat;}
|
a.down {background: transparent url(/assets/down_off.png) no-repeat;}
|
||||||
a.down:hover {background: transparent url(../images/down_on.png) no-repeat;}
|
a.down:hover {background: transparent url(/assets/down_on.png) no-repeat;}
|
||||||
|
|
||||||
a.to_bottom {background: transparent url(../images/bottom_off.png) no-repeat;}
|
a.to_bottom {background: transparent url(/assets/bottom_off.png) no-repeat;}
|
||||||
a.to_bottom:hover {background: transparent url(../images/bottom_on.png) no-repeat;}
|
a.to_bottom:hover {background: transparent url(/assets/bottom_on.png) no-repeat;}
|
||||||
|
|
||||||
a.show_notes, a.link_to_notes {background-image: url(../images/notes_off.png); background-repeat: no-repeat; padding: 1px; background-color: transparent;}
|
a.show_notes, a.link_to_notes {background-image: url(/assets/notes_off.png); background-repeat: no-repeat; padding: 1px; background-color: transparent;}
|
||||||
a.show_notes:hover, a.link_to_notes:hover {background-image: url(../images/notes_on.png); background-repeat: no-repeat; padding: 1px; background-color: transparent;}
|
a.show_notes:hover, a.link_to_notes:hover {background-image: url(/assets/notes_on.png); background-repeat: no-repeat; padding: 1px; background-color: transparent;}
|
||||||
|
|
||||||
a.show_successors, a.link_to_successors {background-image: url(../images/successor_off.png); background-repeat: no-repeat; padding: 1px; background-color: transparent;}
|
a.show_successors, a.link_to_successors {background-image: url(/assets/successor_off.png); background-repeat: no-repeat; padding: 1px; background-color: transparent;}
|
||||||
a.show_successors:hover, a.link_to_successors:hover {background-image: url(../images/successor_on.png); background-repeat: no-repeat; padding: 1px; background-color: transparent;}
|
a.show_successors:hover, a.link_to_successors:hover {background-image: url(/assets/successor_on.png); background-repeat: no-repeat; padding: 1px; background-color: transparent;}
|
||||||
|
|
||||||
/* Structural divs */
|
/* Structural divs */
|
||||||
|
|
||||||
|
|
@ -255,7 +255,7 @@ a.show_successors:hover, a.link_to_successors:hover {background-image: url(../im
|
||||||
|
|
||||||
#develop-notify-bar {
|
#develop-notify-bar {
|
||||||
line-height:0.5;
|
line-height:0.5;
|
||||||
background-image: url(/images/construction.gif);
|
background-image: url(/assets/construction.gif);
|
||||||
background-repeat: repeat-x;
|
background-repeat: repeat-x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -384,8 +384,8 @@ ul.predecessor_list li {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* deleting dependency from new form of a todo */
|
/* deleting dependency from new form of a todo */
|
||||||
img.icon_delete_dep {width: 10px; background-image: url(../images/icon_delete.png); background-repeat: no-repeat; background-position: -9px 0; border: none; color:black;}
|
img.icon_delete_dep {width: 10px; background-image: url(/assets/icon_delete.png); background-repeat: no-repeat; background-position: -9px 0; border: none; color:black;}
|
||||||
a:hover img.icon_delete_dep {width: 10px; background-image: url(../images/icon_delete.png); background-repeat: no-repeat; background-position: 0 0; border: none; color:black; background-color: black;}
|
a:hover img.icon_delete_dep {width: 10px; background-image: url(/assets/icon_delete.png); background-repeat: no-repeat; background-position: 0 0; border: none; color:black; background-color: black;}
|
||||||
a.icon_delete_dep:hover {width: 10px; background-color: black;}
|
a.icon_delete_dep:hover {width: 10px; background-color: black;}
|
||||||
|
|
||||||
/* deleting dependency from edit form of a todo */
|
/* deleting dependency from edit form of a todo */
|
||||||
|
|
@ -1161,7 +1161,7 @@ ul#prefs {list-style-type: disc; margin-left: 15px;}
|
||||||
}
|
}
|
||||||
|
|
||||||
input.open_id {
|
input.open_id {
|
||||||
background: url(../images/open-id-login-bg.gif) no-repeat;
|
background: url(/assets/open-id-login-bg.gif) no-repeat;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
background-position: 0 50%;
|
background-position: 0 50%;
|
||||||
color: #000;
|
color: #000;
|
||||||
|
|
@ -1428,5 +1428,5 @@ div.auto_complete ul strong.highlight {
|
||||||
}
|
}
|
||||||
|
|
||||||
.ui-autocomplete-loading {
|
.ui-autocomplete-loading {
|
||||||
background: white url('/images/ui-anim_basic_16x16.gif') right center no-repeat;
|
background: white url('/assets/ui-anim_basic_16x16.gif') right center no-repeat;
|
||||||
}
|
}
|
||||||
|
|
@ -95,10 +95,10 @@ class ApplicationController < ActionController::Base
|
||||||
if count == 0 && deferred_count > 0
|
if count == 0 && deferred_count > 0
|
||||||
word = deferred_count == 1 ? string.singularize : string.pluralize
|
word = deferred_count == 1 ? string.singularize : string.pluralize
|
||||||
word = "deferred " + word
|
word = "deferred " + word
|
||||||
deferred_count.to_s + " " + word
|
return (deferred_count.to_s + " " + word).html_safe
|
||||||
else
|
else
|
||||||
word = count == 1 ? string.singularize : string.pluralize
|
word = count == 1 ? string.singularize : string.pluralize
|
||||||
count.to_s + " " + word
|
return (count.to_s + " " + word).html_safe
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -263,7 +263,7 @@ class ContextsController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_context_from_params
|
def set_context_from_params
|
||||||
@context = current_user.contexts.find_by_params(params)
|
@context = current_user.contexts.find(params[:id])
|
||||||
rescue
|
rescue
|
||||||
@context = nil
|
@context = nil
|
||||||
end
|
end
|
||||||
|
|
@ -276,11 +276,8 @@ class ContextsController < ApplicationController
|
||||||
def init_todos
|
def init_todos
|
||||||
set_context_from_params
|
set_context_from_params
|
||||||
unless @context.nil?
|
unless @context.nil?
|
||||||
@context.todos.send :with_scope, :find => { :include => Todo::DEFAULT_INCLUDES } do
|
|
||||||
@done = @context.done_todos
|
|
||||||
end
|
|
||||||
|
|
||||||
@max_completed = current_user.prefs.show_number_completed
|
@max_completed = current_user.prefs.show_number_completed
|
||||||
|
@done = @context.todos.completed.all(:limit => @max_completed)
|
||||||
|
|
||||||
# @not_done_todos = @context.not_done_todos TODO: Temporarily doing this
|
# @not_done_todos = @context.not_done_todos TODO: Temporarily doing this
|
||||||
# search manually until I can work out a way to do the same thing using
|
# search manually until I can work out a way to do the same thing using
|
||||||
|
|
|
||||||
|
|
@ -192,18 +192,17 @@ module ApplicationHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def sidebar_html_for_titled_list (list, title)
|
def sidebar_html_for_titled_list (list, title)
|
||||||
return content_tag(:h3, title+" (#{list.length})") +
|
return content_tag(:h3, title+" (#{list.length})") + content_tag(:ul, sidebar_html_for_list(list))
|
||||||
content_tag(:ul, sidebar_html_for_list(list))
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def sidebar_html_for_list(list)
|
def sidebar_html_for_list(list)
|
||||||
if list.empty?
|
if list.empty?
|
||||||
return content_tag(:li, t('sidebar.list_empty'))
|
return content_tag(:li, t('sidebar.list_empty')).html_safe
|
||||||
else
|
else
|
||||||
return list.inject("") do |html, item|
|
return list.inject("") do |html, item|
|
||||||
link = (item.class == "Project") ? link_to_project( item ) : link_to_context(item)
|
link = (item.class == "Project") ? link_to_project( item ) : link_to_context(item)
|
||||||
html << content_tag(:li, link + " (" + count_undone_todos_phrase(item)+")")
|
html << content_tag(:li, link + " (" + count_undone_todos_phrase(item)+")")
|
||||||
end
|
end.html_safe
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ module TodosHelper
|
||||||
|
|
||||||
def collapsed_notes_image(todo)
|
def collapsed_notes_image(todo)
|
||||||
link = link_to(image_tag( 'blank.png', :width=>'16', :height=>'16', :border=>'0' ), "#", {:class => 'show_notes', :title => 'Show notes'})
|
link = link_to(image_tag( 'blank.png', :width=>'16', :height=>'16', :border=>'0' ), "#", {:class => 'show_notes', :title => 'Show notes'})
|
||||||
notes = content_tag(:div, {:class => "todo_notes", :id => dom_id(todo, 'notes'), :style => "display:none"}) { todo.rendered_notes }
|
notes = content_tag(:div, {:class => "todo_notes", :id => dom_id(todo, 'notes'), :style => "display:none"}) { todo.rendered_notes.html_safe }
|
||||||
return link+notes
|
return link+notes
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -133,7 +133,7 @@ module TodosHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def tag_list(todo=@todo, mobile=false)
|
def tag_list(todo=@todo, mobile=false)
|
||||||
content_tag(:span, :class => 'tags') { todo.tags.all_except_starred.collect{|tag| tag_span(tag, mobile)}.join('') }
|
content_tag(:span, :class => 'tags') { todo.tags.all_except_starred.collect{|tag| tag_span(tag, mobile)}.join('').html_safe }
|
||||||
end
|
end
|
||||||
|
|
||||||
def tag_list_mobile(todo=@todo)
|
def tag_list_mobile(todo=@todo)
|
||||||
|
|
@ -166,7 +166,7 @@ module TodosHelper
|
||||||
str << item_link_to_project( todo )
|
str << item_link_to_project( todo )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return str
|
return str.html_safe
|
||||||
end
|
end
|
||||||
|
|
||||||
# Uses the 'staleness_starts' value from settings.yml (in days) to colour the
|
# Uses the 'staleness_starts' value from settings.yml (in days) to colour the
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<% @not_done = @not_done_todos.select {|t| t.context_id == context.id } %>
|
<% @not_done = @not_done_todos.select {|t| t.context_id == context.id } %>
|
||||||
<div id="c<%= context.id %>" class="container context" <%= "style=\"display:none\"" if collapsible && @not_done.empty? %>>
|
<div id="c<%= context.id %>" class="container context" style="display:<%= (collapsible && @not_done.empty?) ? "none" : "block" %>">
|
||||||
<h2>
|
<h2>
|
||||||
<% if collapsible -%>
|
<% if collapsible -%>
|
||||||
<a href="#" class="container_toggle" id="toggle_c<%= context.id %>"><%= image_tag("collapse.png") %></a>
|
<a href="#" class="container_toggle" id="toggle_c<%= context.id %>"><%= image_tag("collapse.png") %></a>
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
<div id="display_box">
|
<div id="display_box">
|
||||||
<%= render :partial => "contexts/context", :object => @context, :locals => { :collapsible => false } %>
|
<%= render :partial => @context, :locals => { :collapsible => false } %>
|
||||||
<%= render :partial => "todos/deferred", :object => @deferred, :locals => { :collapsible => false, :append_descriptor => t('contexts.todos_append'), :parent_container_type => 'context', :pending => @pending } %>
|
<%= render :partial => "todos/deferred", :object => @deferred, :locals => { :collapsible => false, :append_descriptor => t('contexts.todos_append'), :parent_container_type => 'context', :pending => @pending } %>
|
||||||
<% unless @max_completed==0 -%>
|
<% unless @max_completed==0 -%>
|
||||||
<%= render :partial => "todos/completed", :object => @done, :locals => { :suppress_context => true, :collapsible => false, :append_descriptor => t('contexts.last_completed_in_context', :number=>prefs.show_number_completed) } %>
|
<%= render :partial => "todos/completed", :object => @done, :locals => { :suppress_context => true, :collapsible => false, :append_descriptor => t('contexts.last_completed_in_context', :number=>prefs.show_number_completed) } %>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
</div><!-- [end:display_box] -->
|
</div>
|
||||||
|
|
||||||
<div id="input_box">
|
<div id="input_box">
|
||||||
<%= render :partial => "shared/add_new_item_form" %>
|
<%= render :partial => "shared/add_new_item_form" %>
|
||||||
<%= render :file => "sidebar/sidebar.html.erb" %>
|
<%= render :file => "sidebar/sidebar.html.erb" %>
|
||||||
</div><!-- End of input box -->
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -2,24 +2,16 @@
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
<%#= stylesheet_link_tag 'standard','superfish','niftyCorners', 'jquery-ui-1.8.17.custom', :cache => 'tracks-cached' %>
|
<%= stylesheet_link_tag "application", :media => "all" %>
|
||||||
<%= stylesheet_link_tag "print", :media => "print" %>
|
<%= stylesheet_link_tag "print", :media => "print" %>
|
||||||
<%#= javascript_include_tag 'jquery-1.7.1.min', 'jquery-ui-1.8.17.custom.min',
|
<%= javascript_include_tag "application" %>
|
||||||
'jquery.truncator','jquery.jeditable.mini', 'jquery.cookie', 'jquery.blockUI',
|
|
||||||
'jquery.form',
|
|
||||||
:cache => 'jquery-cached' %>
|
|
||||||
<%#= javascript_tag_for_i18n_datepicker %>
|
|
||||||
<%#= javascript_include_tag 'hoverIntent','superfish','application',
|
|
||||||
'accesskey-hints','niftycube','swfobject',
|
|
||||||
:cache => 'tracks-cached' %>
|
|
||||||
<% #= javascript_include_tag('jquery.simulate.drag-sortable') if ENV['RAILS_ENV']=='cucumber' -%>
|
|
||||||
<%= javascript_tag "var AUTH_TOKEN = #{form_authenticity_token.inspect};" if protect_against_forgery? %>
|
|
||||||
<%= javascript_tag "var TAG_NAME = '#{@tag_name}';" if @tag_name %>
|
|
||||||
<%= csrf_meta_tag %>
|
<%= csrf_meta_tag %>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var SOURCE_VIEW = '<%=@source_view%>';
|
var SOURCE_VIEW = '<%=@source_view%>';
|
||||||
var defaultContexts = <%= default_contexts_for_autocomplete rescue '{}' %>;
|
var AUTH_TOKEN = '<%= protect_against_forgery? ? form_authenticity_token.inspect : "" %>'
|
||||||
var defaultTags = <%= default_tags_for_autocomplete rescue '{}' %>;
|
var TAG_NAME = '<%= @tag_name ? @tag_name : "" %>'
|
||||||
|
var defaultContexts = <%= default_contexts_for_autocomplete.html_safe rescue '{}' %>;
|
||||||
|
var defaultTags = <%= default_tags_for_autocomplete.html_safe rescue '{}' %>;
|
||||||
var dateFormat = '<%= date_format_for_date_picker %>';
|
var dateFormat = '<%= date_format_for_date_picker %>';
|
||||||
var weekStart = '<%= current_user.prefs.week_starts %>';
|
var weekStart = '<%= current_user.prefs.week_starts %>';
|
||||||
function relative_to_root(path) { return '<%= root_url %>'+path; };
|
function relative_to_root(path) { return '<%= root_url %>'+path; };
|
||||||
|
|
@ -41,7 +33,7 @@
|
||||||
<body class="<%= controller.controller_name %>">
|
<body class="<%= controller.controller_name %>">
|
||||||
|
|
||||||
<div id="topbar">
|
<div id="topbar">
|
||||||
<%= NOTIFY_BAR %>
|
<%= NOTIFY_BAR.html_safe %>
|
||||||
|
|
||||||
<div id="date">
|
<div id="date">
|
||||||
<h1>
|
<h1>
|
||||||
|
|
@ -68,7 +60,7 @@
|
||||||
<ul>
|
<ul>
|
||||||
<li><%= navigation_link( t('common.contexts'), contexts_path, {:accesskey=>"c", :title=>t('layouts.navigation.contexts_title')} ) %></li>
|
<li><%= navigation_link( t('common.contexts'), contexts_path, {:accesskey=>"c", :title=>t('layouts.navigation.contexts_title')} ) %></li>
|
||||||
<li><%= navigation_link( t('common.notes'), notes_path, {:accesskey => "o", :title => t('layouts.navigation.notes_title')} ) %></li>
|
<li><%= navigation_link( t('common.notes'), notes_path, {:accesskey => "o", :title => t('layouts.navigation.notes_title')} ) %></li>
|
||||||
<li><%= navigation_link( t('common.review'), review_path, {:accesskey => "r", :title => t('layouts.navigation.review_title')} ) %></li>
|
<li><%= navigation_link( t('common.review'), review_path, {:accesskey => "r", :title => t('layouts.navigation.review_title')} ) %></li>
|
||||||
<li><%= navigation_link( t('layouts.navigation.recurring_todos'), {:controller => "recurring_todos", :action => "index"}, :title => t('layouts.navigation.recurring_todos_title')) %></li>
|
<li><%= navigation_link( t('layouts.navigation.recurring_todos'), {:controller => "recurring_todos", :action => "index"}, :title => t('layouts.navigation.recurring_todos_title')) %></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,14 @@
|
||||||
<%
|
<% todo = edit_form -%>
|
||||||
todo = edit_form
|
<%= form_for(todo, :html=> { :name=>'todo', :id => dom_id(@todo, 'form'), :class => 'inline-form edit_todo_form' }) do |t|%>
|
||||||
form_for(todo, :html=> { :name=>'todo', :id => dom_id(@todo, 'form'), :class => 'inline-form edit_todo_form' }) do |t|%>
|
<div id="edit_error_status">
|
||||||
<div id="edit_error_status"><%= error_messages_for("todo", :object_name => 'action') %></div>
|
<% if todo.errors.any? -%>
|
||||||
|
<ul>
|
||||||
|
<% todo.errors.full_messages.each do |msg| %>
|
||||||
|
<li><%= msg %></li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
<% end -%>
|
||||||
|
</div>
|
||||||
|
|
||||||
<%= t.hidden_field( "id" ) -%>
|
<%= t.hidden_field( "id" ) -%>
|
||||||
<%= source_view_tag( @source_view ) -%>
|
<%= source_view_tag( @source_view ) -%>
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<%- todo = new_multi_todo_form -%>
|
<%- todo = new_multi_todo_form -%>
|
||||||
|
|
||||||
<div id="todo_multi_add" style="display:none">
|
<div id="todo_multi_add" style="display:none">
|
||||||
<% form_for(todo, :html=> { :id=>'todo-form-multi-new-action', :name=>'todo', :class => 'inline-form' }) do |t| %>
|
<%= form_for(todo, :html=> { :id=>'todo-form-multi-new-action', :name=>'todo', :class => 'inline-form' }) do |t| %>
|
||||||
<input id="default_project_name_id" name="default_project_name" type="hidden" value="<%=h @initial_project_name-%>" />
|
<input id="default_project_name_id" name="default_project_name" type="hidden" value="<%=h @initial_project_name-%>" />
|
||||||
<input id="default_context_name_id" name="default_context_name" type="hidden" value="<%=h @initial_context_name-%>" />
|
<input id="default_context_name_id" name="default_context_name" type="hidden" value="<%=h @initial_context_name-%>" />
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<%- todo = new_todo_form -%>
|
<%- todo = new_todo_form -%>
|
||||||
|
|
||||||
<div id="todo_new_action">
|
<div id="todo_new_action">
|
||||||
<% form_for(todo, :html=> { :id=>'todo-form-new-action', :name=>'todo', :class => 'inline-form new_todo_form' }) do |t|%>
|
<%= form_for(todo, :html=> { :id=>'todo-form-new-action', :name=>'todo', :class => 'inline-form new_todo_form' }) do |t|%>
|
||||||
<input id="default_project_name_id" name="default_project_name" type="hidden" value="<%= h(@initial_project_name)-%>" />
|
<input id="default_project_name_id" name="default_project_name" type="hidden" value="<%= h(@initial_project_name)-%>" />
|
||||||
<input id="default_context_name_id" name="default_context_name" type="hidden" value="<%= h(@initial_context_name)-%>" />
|
<input id="default_context_name_id" name="default_context_name" type="hidden" value="<%= h(@initial_context_name)-%>" />
|
||||||
<input type="hidden" id="new_todo_starred" name="new_todo_starred" value="false" />
|
<input type="hidden" id="new_todo_starred" name="new_todo_starred" value="false" />
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<div id="display_box">
|
<div id="display_box">
|
||||||
<div id="no_todos_in_view" class="container context" <%= "style=\"display:none\"" unless @not_done_todos.empty? %> >
|
<div id="no_todos_in_view" class="container context" style="display:<%= @not_done_todos.empty? ? "block" : "none" %>">
|
||||||
<h2><%= t('todos.no_actions_found_title')%></h2>
|
<h2><%= t('todos.no_actions_found_title')%></h2>
|
||||||
<div class="message"><p><%= t('todos.no_actions_found') %></p></div>
|
<div class="message"><p><%= t('todos.no_actions_found') %></p></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -110,7 +110,14 @@ function html_for_new_context() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function html_for_error_messages() {
|
function html_for_error_messages() {
|
||||||
return "<%= escape_javascript(error_messages_for('todo')) %>";
|
<%
|
||||||
|
error_messages = ""
|
||||||
|
if @todo.errors.any?
|
||||||
|
list_of_messages = @todo.errors.full_messages.inject("") { |all, msg| all += context_tag(:li, msg) }
|
||||||
|
error_messages = content_tag(:ul, list_of_messages)
|
||||||
|
end
|
||||||
|
-%>
|
||||||
|
return "<%= escape_javascript(error_messages) %>";
|
||||||
}
|
}
|
||||||
|
|
||||||
function update_predecessors(next_steps) {
|
function update_predecessors(next_steps) {
|
||||||
|
|
|
||||||
|
|
@ -1,69 +0,0 @@
|
||||||
/*
|
|
||||||
* AccessKey Hints
|
|
||||||
*
|
|
||||||
* Checks all HTML elements on this page that can have an accesskey attribute
|
|
||||||
* (<a>, <area>, <button>, <input>, <label>, <legend> and <textarea>)
|
|
||||||
* and creates or appends the title attribute to include platform-specific
|
|
||||||
* hint in the title, i.e. "Alt+S" (Win)
|
|
||||||
* or "Ctrl+S)" (Mac). If a title exists, a space plus the hint wrapped in
|
|
||||||
* parentheses is appended. The only exception is if the title already contains
|
|
||||||
* 'accesskey', 'Alt+' or 'Ctrl+' (case-insensitive) in which case this script
|
|
||||||
* will leave it alone.
|
|
||||||
*
|
|
||||||
* Use the following markup to include the library:
|
|
||||||
* <script type="text/javascript" src="access-key-hints.js"></script>
|
|
||||||
*/
|
|
||||||
var accessKeyHintsAdder = {
|
|
||||||
|
|
||||||
run : function() {
|
|
||||||
var elemTypes = new Array('a','area','button','input','label','legend','textarea');
|
|
||||||
for(var i = 0; i < elemTypes.length; i++)
|
|
||||||
{
|
|
||||||
accessKeyHintsAdder.addHint(document.getElementsByTagName(elemTypes[i]));
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
addHint : function(elems) {
|
|
||||||
var elem;
|
|
||||||
var i = 0;
|
|
||||||
|
|
||||||
processElements:
|
|
||||||
while(elem = elems.item(i++))
|
|
||||||
{
|
|
||||||
var accessKey = elem.getAttributeNode("accesskey");
|
|
||||||
if (!accessKey || !accessKey.value)
|
|
||||||
continue processElements;
|
|
||||||
|
|
||||||
var title = elem.getAttributeNode("title");
|
|
||||||
if (title && title.value)
|
|
||||||
{
|
|
||||||
var overrides = new Array('accesskey','alt+','ctrl+');
|
|
||||||
for (var j=0; j < overrides.length; j++)
|
|
||||||
{
|
|
||||||
if (title.value.toLowerCase().indexOf(overrides[j]) != -1)
|
|
||||||
continue processElements;
|
|
||||||
}
|
|
||||||
elem.setAttribute("title", title.value + ' (' + this.getHintText(accessKey.value) + ')');
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
elem.setAttribute("title", this.getHintText(accessKey.value));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
getHintText : function(accessKey) {
|
|
||||||
return this.getModifier() + '+' + accessKey.toUpperCase();
|
|
||||||
},
|
|
||||||
|
|
||||||
getModifier : function() {
|
|
||||||
var ua = navigator.userAgent.toLowerCase();
|
|
||||||
if (ua.indexOf('mac') == -1)
|
|
||||||
return 'Alt';
|
|
||||||
else
|
|
||||||
return 'Ctrl';
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
$(accessKeyHintsAdder.run);
|
|
||||||