taskwarrior-web 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +4 -0
- data/CHANGELOG.md +4 -0
- data/Gemfile +7 -2
- data/README.md +2 -0
- data/config.ru +0 -2
- data/lib/taskwarrior-web/app.rb +1 -1
- data/lib/taskwarrior-web/command.rb +0 -1
- data/lib/taskwarrior-web/command_builders/base.rb +1 -1
- data/lib/taskwarrior-web/command_builders/v1.rb +1 -2
- data/lib/taskwarrior-web/public/js/application.js +5 -3
- data/lib/taskwarrior-web/runner.rb +1 -1
- data/spec/app/app_spec.rb +24 -4
- data/spec/app/helpers_spec.rb +29 -0
- data/spec/files/taskrc +27 -0
- data/spec/models/command_builders/base_spec.rb +0 -7
- data/spec/models/command_builders/v1_spec.rb +21 -0
- data/spec/models/config_spec.rb +14 -0
- data/taskwarrior-web.gemspec +1 -4
- metadata +21 -50
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
@@ -3,5 +3,10 @@ source "http://rubygems.org"
|
|
3
3
|
# Specify your gem's dependencies in taskwarrior-web.gemspec
|
4
4
|
gemspec
|
5
5
|
|
6
|
-
|
7
|
-
gem '
|
6
|
+
group :local do
|
7
|
+
gem 'rb-fsevent', :require => false
|
8
|
+
gem 'growl', :require => false
|
9
|
+
gem 'simplecov'
|
10
|
+
gem 'guard-rspec'
|
11
|
+
gem 'guard-bundler'
|
12
|
+
end
|
data/README.md
CHANGED
@@ -33,6 +33,8 @@ The current featureset includes:
|
|
33
33
|
"due".
|
34
34
|
* If you are on a Mac and use Fluid.app, you get a dock badge showing the
|
35
35
|
number of pending tasks.
|
36
|
+
* Optional Basic HTTP Auth protection. To enable, set `task-web.user` and
|
37
|
+
`task-web.passwd` in your `.taskrc` file.
|
36
38
|
|
37
39
|
## Known Issues
|
38
40
|
|
data/config.ru
CHANGED
data/lib/taskwarrior-web/app.rb
CHANGED
@@ -22,14 +22,13 @@ module TaskwarriorWeb::CommandBuilder::V1
|
|
22
22
|
@command_string.gsub!(':id', @id.to_s)
|
23
23
|
return self
|
24
24
|
else
|
25
|
-
raise MissingTaskIDError
|
25
|
+
raise TaskwarriorWeb::CommandBuilder::MissingTaskIDError
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
29
|
def assign_id_from_uuid
|
30
30
|
@all_tasks ||= TaskwarriorWeb::Task.query('status.not' => [:deleted, :completed])
|
31
31
|
@id = @all_tasks.index { |task| task.uuid == @id } + 1
|
32
|
-
puts "@id in v1.rb:19: #{@id}"
|
33
32
|
end
|
34
33
|
|
35
34
|
end
|
@@ -79,19 +79,21 @@ var initAutocomplete = function() {
|
|
79
79
|
var initTaskCompletion = function() {
|
80
80
|
$('input.complete').click(function() {
|
81
81
|
// Cache the checkbox in case we need to restore it.
|
82
|
+
var container $(this).parent();
|
83
|
+
var checkbox = container.html();
|
82
84
|
var row = $(this).closest('tr');
|
83
|
-
|
85
|
+
container.html('<img src="/images/ajax-loader.gif" />');
|
84
86
|
$.ajax({
|
85
87
|
url: '/ajax/task-complete/' + $(this).data('task-id'),
|
86
88
|
type: 'POST',
|
87
89
|
success: function(data) {
|
88
90
|
var message = (data === '') ? 'Task marked as completed.' : data;
|
89
91
|
set_message(message, 'success');
|
90
|
-
row.
|
92
|
+
row.fadeOut();
|
91
93
|
},
|
92
94
|
error: function(data) {
|
93
95
|
set_message('There was an error when marking the task as completed.', 'error');
|
94
|
-
|
96
|
+
container.html(checkbox);
|
95
97
|
}
|
96
98
|
});
|
97
99
|
});
|
data/spec/app/app_spec.rb
CHANGED
@@ -15,13 +15,33 @@ describe "My App" do
|
|
15
15
|
TaskwarriorWeb::Runner.should_receive(:run).any_number_of_times.and_return('{}')
|
16
16
|
end
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
['/', '/tasks'].each do |path|
|
19
|
+
describe "GET #{path}" do
|
20
|
+
it 'should redirect to /tasks/pending' do
|
21
|
+
get path
|
22
|
+
follow_redirect!
|
23
|
+
|
24
|
+
last_request.url.should =~ /tasks\/pending/
|
25
|
+
last_response.should be_ok
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe 'GET /projects' do
|
31
|
+
it 'should redirect to /projects/overview' do
|
32
|
+
get '/projects'
|
21
33
|
follow_redirect!
|
22
34
|
|
23
|
-
last_request.url.should =~ /
|
35
|
+
last_request.url.should =~ /projects\/overview/
|
24
36
|
last_response.should be_ok
|
25
37
|
end
|
26
38
|
end
|
39
|
+
|
40
|
+
describe 'GET /ajax/count' do
|
41
|
+
it 'should return the current pending task count' do
|
42
|
+
TaskwarriorWeb::Task.should_receive(:count).and_return(15)
|
43
|
+
get '/ajax/count'
|
44
|
+
last_response.body.should eq('15')
|
45
|
+
end
|
46
|
+
end
|
27
47
|
end
|
data/spec/app/helpers_spec.rb
CHANGED
@@ -30,7 +30,36 @@ describe TaskwarriorWeb::App::Helpers do
|
|
30
30
|
helpers.format_date('2012-01-11').should == '11/01/2012'
|
31
31
|
end
|
32
32
|
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '#colorize_date' do
|
36
|
+
context 'when no timestamp is given' do
|
37
|
+
it 'should simply return' do
|
38
|
+
TaskwarriorWeb::Config.should_not_receive(:due)
|
39
|
+
helpers.colorize_date(nil)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'with a due setting specified' do
|
44
|
+
before do
|
45
|
+
TaskwarriorWeb::Config.should_receive(:due).any_number_of_times.and_return(3)
|
46
|
+
end
|
33
47
|
|
48
|
+
it 'should return "today" when a given date is today' do
|
49
|
+
helpers.colorize_date(Time.now.to_s).should eq('today')
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'should return "overdue" when a date is before today' do
|
53
|
+
helpers.colorize_date(Time.at(0).to_s).should eq('overdue')
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe '#auto_link' do
|
59
|
+
it 'should just call Rinku.auto_link' do
|
60
|
+
Rinku.should_receive(:auto_link).with('hello', :all, 'target="_blank"')
|
61
|
+
helpers.auto_link('hello')
|
62
|
+
end
|
34
63
|
end
|
35
64
|
end
|
36
65
|
|
data/spec/files/taskrc
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# [Created by task 2.0.0 3/22/2012 16:07:48]
|
2
|
+
# Taskwarrior program configuration file.
|
3
|
+
# For more documentation, see http://taskwarrior.org or try 'man task', 'man task-faq',
|
4
|
+
# 'man task-tutorial', 'man task-color', 'man task-sync' or 'man taskrc'
|
5
|
+
|
6
|
+
# Here is an example of entries that use the default, override and blank values
|
7
|
+
# variable=foo -- By specifying a value, this overrides the default
|
8
|
+
# variable= -- By specifying no value, this means no default
|
9
|
+
# #variable=foo -- By commenting out the line, or deleting it, this uses the default
|
10
|
+
|
11
|
+
# Use the command 'task show' to see all defaults and overrides
|
12
|
+
|
13
|
+
# Files
|
14
|
+
data.location=/home/vagrant/.task
|
15
|
+
|
16
|
+
# Color theme (uncomment one to use)
|
17
|
+
#include /usr/local/Cellar/task/2.0.0/share/doc/task/rc/light-16.theme
|
18
|
+
#include /usr/local/Cellar/task/2.0.0/share/doc/task/rc/light-256.theme
|
19
|
+
#include /usr/local/Cellar/task/2.0.0/share/doc/task/rc/dark-16.theme
|
20
|
+
#include /usr/local/Cellar/task/2.0.0/share/doc/task/rc/dark-256.theme
|
21
|
+
#include /usr/local/Cellar/task/2.0.0/share/doc/task/rc/dark-red-256.theme
|
22
|
+
#include /usr/local/Cellar/task/2.0.0/share/doc/task/rc/dark-green-256.theme
|
23
|
+
#include /usr/local/Cellar/task/2.0.0/share/doc/task/rc/dark-blue-256.theme
|
24
|
+
#include /usr/local/Cellar/task/2.0.0/share/doc/task/rc/dark-violets-256.theme
|
25
|
+
#include /usr/local/Cellar/task/2.0.0/share/doc/task/rc/dark-yellow-green.theme
|
26
|
+
#include /usr/local/Cellar/task/2.0.0/share/doc/task/rc/dark-gray-256.theme
|
27
|
+
|
@@ -1,6 +1,5 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
2
|
require 'taskwarrior-web/command'
|
3
|
-
require 'ostruct'
|
4
3
|
|
5
4
|
describe TaskwarriorWeb::CommandBuilder::Base do
|
6
5
|
describe '#substitute_parts' do
|
@@ -8,12 +7,6 @@ describe TaskwarriorWeb::CommandBuilder::Base do
|
|
8
7
|
@command = TaskwarriorWeb::Command.new(:complete, 34588)
|
9
8
|
end
|
10
9
|
|
11
|
-
it 'should replace the :id string with the given task ID' do
|
12
|
-
TaskwarriorWeb::Task.should_receive(:query).and_return([OpenStruct.new(:uuid => 34588)])
|
13
|
-
@command.task_command.substitute_parts
|
14
|
-
@command.command_string.should eq('1 done')
|
15
|
-
end
|
16
|
-
|
17
10
|
it 'should throw an error if the command has no task ID' do
|
18
11
|
@command.id = nil
|
19
12
|
expect { @command.substitute_parts }.to raise_error(TaskwarriorWeb::CommandBuilder::MissingTaskIDError)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
require 'taskwarrior-web/command_builders/v1'
|
3
|
+
require 'taskwarrior-web/command'
|
4
|
+
require 'ostruct'
|
5
|
+
|
6
|
+
describe TaskwarriorWeb::CommandBuilder::V1 do
|
7
|
+
describe '#substitute_parts' do
|
8
|
+
before do
|
9
|
+
TaskwarriorWeb::Command.class_eval do |class_name|
|
10
|
+
include TaskwarriorWeb::CommandBuilder::V1
|
11
|
+
end
|
12
|
+
@command = TaskwarriorWeb::Command.new(:complete, 34588)
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should replace the :id string with the given task ID' do
|
16
|
+
TaskwarriorWeb::Task.should_receive(:query).and_return([OpenStruct.new(:uuid => 34588)])
|
17
|
+
@command.task_command.substitute_parts
|
18
|
+
@command.command_string.should eq('1 done')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
require 'taskwarrior-web/config'
|
3
|
+
require 'ostruct'
|
4
|
+
|
5
|
+
describe TaskwarriorWeb::Config do
|
6
|
+
describe '.property' do
|
7
|
+
it 'should call #get_value on the config file object' do
|
8
|
+
file = OpenStruct.new
|
9
|
+
TaskwarriorWeb::Config.should_receive(:file).and_return(file)
|
10
|
+
file.should_receive(:get_value).with('testing')
|
11
|
+
TaskwarriorWeb::Config.property('testing')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/taskwarrior-web.gemspec
CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "taskwarrior-web"
|
6
|
-
s.version = '1.0.
|
6
|
+
s.version = '1.0.1'
|
7
7
|
s.platform = Gem::Platform::RUBY
|
8
8
|
s.authors = ["Jake Bell"]
|
9
9
|
s.email = ["jake@theunraveler.com"]
|
@@ -23,9 +23,6 @@ Gem::Specification.new do |s|
|
|
23
23
|
s.add_development_dependency('rake')
|
24
24
|
s.add_development_dependency('rack-test')
|
25
25
|
s.add_development_dependency('rspec')
|
26
|
-
s.add_development_dependency('simplecov')
|
27
|
-
s.add_development_dependency('guard-rspec')
|
28
|
-
s.add_development_dependency('guard-bundler')
|
29
26
|
|
30
27
|
s.files = `git ls-files`.split("\n")
|
31
28
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: taskwarrior-web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-03
|
12
|
+
date: 2012-04-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sinatra
|
16
|
-
requirement: &
|
16
|
+
requirement: &70130852817600 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70130852817600
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: parseconfig
|
27
|
-
requirement: &
|
27
|
+
requirement: &70130852816500 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70130852816500
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: vegas
|
38
|
-
requirement: &
|
38
|
+
requirement: &70130852815980 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70130852815980
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rinku
|
49
|
-
requirement: &
|
49
|
+
requirement: &70130852815260 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70130852815260
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rake
|
60
|
-
requirement: &
|
60
|
+
requirement: &70130852814200 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70130852814200
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rack-test
|
71
|
-
requirement: &
|
71
|
+
requirement: &70130852812760 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70130852812760
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rspec
|
82
|
-
requirement: &
|
82
|
+
requirement: &70130852811760 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,40 +87,7 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
91
|
-
- !ruby/object:Gem::Dependency
|
92
|
-
name: simplecov
|
93
|
-
requirement: &70160263362440 !ruby/object:Gem::Requirement
|
94
|
-
none: false
|
95
|
-
requirements:
|
96
|
-
- - ! '>='
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
version: '0'
|
99
|
-
type: :development
|
100
|
-
prerelease: false
|
101
|
-
version_requirements: *70160263362440
|
102
|
-
- !ruby/object:Gem::Dependency
|
103
|
-
name: guard-rspec
|
104
|
-
requirement: &70160263361760 !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
110
|
-
type: :development
|
111
|
-
prerelease: false
|
112
|
-
version_requirements: *70160263361760
|
113
|
-
- !ruby/object:Gem::Dependency
|
114
|
-
name: guard-bundler
|
115
|
-
requirement: &70160263359760 !ruby/object:Gem::Requirement
|
116
|
-
none: false
|
117
|
-
requirements:
|
118
|
-
- - ! '>='
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
version: '0'
|
121
|
-
type: :development
|
122
|
-
prerelease: false
|
123
|
-
version_requirements: *70160263359760
|
90
|
+
version_requirements: *70130852811760
|
124
91
|
description: This gem provides a graphical frontend for the Taskwarrior task manager.
|
125
92
|
It is based on Sinatra.
|
126
93
|
email:
|
@@ -188,11 +155,13 @@ files:
|
|
188
155
|
- lib/taskwarrior-web/views/task_form.erb
|
189
156
|
- spec/app/app_spec.rb
|
190
157
|
- spec/app/helpers_spec.rb
|
158
|
+
- spec/files/taskrc
|
191
159
|
- spec/models/command_builder_spec.rb
|
192
160
|
- spec/models/command_builders/base_spec.rb
|
193
161
|
- spec/models/command_builders/v1_spec.rb
|
194
162
|
- spec/models/command_builders/v2_spec.rb
|
195
163
|
- spec/models/command_spec.rb
|
164
|
+
- spec/models/config_spec.rb
|
196
165
|
- spec/models/runner_spec.rb
|
197
166
|
- spec/models/task_spec.rb
|
198
167
|
- spec/spec_helper.rb
|
@@ -217,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
217
186
|
version: '0'
|
218
187
|
segments:
|
219
188
|
- 0
|
220
|
-
hash: -
|
189
|
+
hash: -1240316319720686914
|
221
190
|
requirements: []
|
222
191
|
rubyforge_project: taskwarrior-web
|
223
192
|
rubygems_version: 1.8.11
|
@@ -227,11 +196,13 @@ summary: Web frontend for taskwarrior command line task manager.
|
|
227
196
|
test_files:
|
228
197
|
- spec/app/app_spec.rb
|
229
198
|
- spec/app/helpers_spec.rb
|
199
|
+
- spec/files/taskrc
|
230
200
|
- spec/models/command_builder_spec.rb
|
231
201
|
- spec/models/command_builders/base_spec.rb
|
232
202
|
- spec/models/command_builders/v1_spec.rb
|
233
203
|
- spec/models/command_builders/v2_spec.rb
|
234
204
|
- spec/models/command_spec.rb
|
205
|
+
- spec/models/config_spec.rb
|
235
206
|
- spec/models/runner_spec.rb
|
236
207
|
- spec/models/task_spec.rb
|
237
208
|
- spec/spec_helper.rb
|