taskwarrior-web 0.0.12 → 0.0.13
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/CHANGELOG.md +5 -0
- data/Gemfile.lock +3 -3
- data/lib/taskwarrior-web/app.rb +17 -0
- data/public/js/application.js +26 -7
- data/taskwarrior-web.gemspec +1 -1
- metadata +15 -15
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
taskwarrior-web (0.0.
|
4
|
+
taskwarrior-web (0.0.13)
|
5
5
|
parseconfig
|
6
6
|
rinku
|
7
7
|
sinatra
|
@@ -12,7 +12,7 @@ GEM
|
|
12
12
|
specs:
|
13
13
|
diff-lcs (1.1.3)
|
14
14
|
parseconfig (0.5.2)
|
15
|
-
rack (1.4.
|
15
|
+
rack (1.4.1)
|
16
16
|
rack-protection (1.2.0)
|
17
17
|
rack
|
18
18
|
rake (0.9.2.2)
|
@@ -30,7 +30,7 @@ GEM
|
|
30
30
|
rack-protection (~> 1.2)
|
31
31
|
tilt (~> 1.3, >= 1.3.3)
|
32
32
|
tilt (1.3.3)
|
33
|
-
vegas (0.1.
|
33
|
+
vegas (0.1.11)
|
34
34
|
rack (>= 1.0.0)
|
35
35
|
|
36
36
|
PLATFORMS
|
data/lib/taskwarrior-web/app.rb
CHANGED
@@ -6,6 +6,7 @@ require 'parseconfig'
|
|
6
6
|
require 'json'
|
7
7
|
require 'time'
|
8
8
|
require 'rinku'
|
9
|
+
require 'digest'
|
9
10
|
|
10
11
|
module TaskwarriorWeb
|
11
12
|
class App < Sinatra::Base
|
@@ -14,9 +15,21 @@ module TaskwarriorWeb
|
|
14
15
|
set :root, @@root
|
15
16
|
set :app_file, __FILE__
|
16
17
|
|
18
|
+
def protected!
|
19
|
+
response['WWW-Authenticate'] = %(Basic realm="Taskworrior Web") and throw(:halt, [401, "Not authorized\n"]) and return unless authorized?
|
20
|
+
end
|
21
|
+
|
22
|
+
def authorized?
|
23
|
+
@auth ||= Rack::Auth::Basic::Request.new(request.env)
|
24
|
+
@auth.provided? && @auth.basic? && @auth.credentials &&
|
25
|
+
@auth.credentials[0] == TaskwarriorWeb::Config.file.get_value('task-web.user') &&
|
26
|
+
Digest::MD5.hexdigest(@auth.credentials[1]) == TaskwarriorWeb::Config.file.get_value('task-web.passwd')
|
27
|
+
end
|
28
|
+
|
17
29
|
# Before filter
|
18
30
|
before do
|
19
31
|
@current_page = request.path_info
|
32
|
+
protected! if TaskwarriorWeb::Config.file.get_value('task-web.user')
|
20
33
|
end
|
21
34
|
|
22
35
|
# Helpers
|
@@ -155,6 +168,10 @@ module TaskwarriorWeb
|
|
155
168
|
tags.compact!.uniq!.to_json
|
156
169
|
end
|
157
170
|
|
171
|
+
get '/ajax/count/?' do
|
172
|
+
TaskwarriorWeb::Task.count(:status => :pending).to_s
|
173
|
+
end
|
174
|
+
|
158
175
|
# Error handling
|
159
176
|
not_found do
|
160
177
|
@title = 'Page Not Found'
|
data/public/js/application.js
CHANGED
@@ -4,6 +4,7 @@ $(document).ready(function() {
|
|
4
4
|
initCompleteTask();
|
5
5
|
initDatePicker();
|
6
6
|
initAutocomplete();
|
7
|
+
refreshDockBadge();
|
7
8
|
});
|
8
9
|
|
9
10
|
var initPolling = function() {
|
@@ -40,6 +41,8 @@ var refreshPageContents = function() {
|
|
40
41
|
url: window.location,
|
41
42
|
success: function(data) {
|
42
43
|
$('#listing').replaceWith($('#listing', data));
|
44
|
+
refreshSubnavCount();
|
45
|
+
refreshDockBadge();
|
43
46
|
}
|
44
47
|
});
|
45
48
|
};
|
@@ -65,13 +68,8 @@ var initCompleteTask = function() {
|
|
65
68
|
success: function(data) {
|
66
69
|
row.fadeOut('slow', function() {
|
67
70
|
row.remove();
|
68
|
-
|
69
|
-
|
70
|
-
var oldCount = subnavItem.text().match(/((\d))/);
|
71
|
-
var newCount = parseInt(oldCount[0]) - 1
|
72
|
-
var newVal = subnavItem.text().replace(oldCount[0], newCount);
|
73
|
-
console.log(newVal);
|
74
|
-
subnavItem.text(newVal);
|
71
|
+
refreshSubnavCount();
|
72
|
+
refreshDockBadge();
|
75
73
|
});
|
76
74
|
}
|
77
75
|
});
|
@@ -124,6 +122,27 @@ var initAutocomplete = function() {
|
|
124
122
|
});
|
125
123
|
};
|
126
124
|
|
125
|
+
// Count updating.
|
126
|
+
|
127
|
+
var getCount = function(callback) {
|
128
|
+
$.ajax({
|
129
|
+
url: '/ajax/count',
|
130
|
+
success: callback
|
131
|
+
});
|
132
|
+
};
|
133
|
+
|
134
|
+
var refreshDockBadge = function() {
|
135
|
+
getCount(function(data) {
|
136
|
+
window.fluid.dockBadge = data;
|
137
|
+
});
|
138
|
+
};
|
139
|
+
|
140
|
+
var refreshSubnavCount = function() {
|
141
|
+
getCount(function(data) {
|
142
|
+
$('#subnav-bar ul li:first-child a').text('Pending ('+data+')');
|
143
|
+
});
|
144
|
+
};
|
145
|
+
|
127
146
|
function set_message(msg, severity) {
|
128
147
|
severity = severity ? severity : 'info';
|
129
148
|
$('#flash-messages').append('<div class="message ' + severity + '">' + msg + '</div>');
|
data/taskwarrior-web.gemspec
CHANGED
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: 0.0.
|
4
|
+
version: 0.0.13
|
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-
|
12
|
+
date: 2012-02-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sinatra
|
16
|
-
requirement: &
|
16
|
+
requirement: &2162191880 !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: *2162191880
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: parseconfig
|
27
|
-
requirement: &
|
27
|
+
requirement: &2162191420 !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: *2162191420
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: vegas
|
38
|
-
requirement: &
|
38
|
+
requirement: &2162191000 !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: *2162191000
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rinku
|
49
|
-
requirement: &
|
49
|
+
requirement: &2162190580 !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: *2162190580
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rake
|
60
|
-
requirement: &
|
60
|
+
requirement: &2162190160 !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: *2162190160
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
|
-
requirement: &
|
71
|
+
requirement: &2162189740 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2162189740
|
80
80
|
description: This gem provides a graphical frontend for the Taskwarrior task manager.
|
81
81
|
It is based on Sinatra.
|
82
82
|
email:
|
@@ -157,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
157
157
|
version: '0'
|
158
158
|
segments:
|
159
159
|
- 0
|
160
|
-
hash:
|
160
|
+
hash: -705373290022093367
|
161
161
|
requirements: []
|
162
162
|
rubyforge_project: taskwarrior-web
|
163
163
|
rubygems_version: 1.8.11
|