taskwarrior-web 1.1.4 → 1.1.5

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.
@@ -0,0 +1,99 @@
1
+ /*
2
+ * jQuery Hotkeys Plugin
3
+ * Copyright 2010, John Resig
4
+ * Dual licensed under the MIT or GPL Version 2 licenses.
5
+ *
6
+ * Based upon the plugin by Tzury Bar Yochay:
7
+ * http://github.com/tzuryby/hotkeys
8
+ *
9
+ * Original idea by:
10
+ * Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/
11
+ */
12
+
13
+ (function(jQuery){
14
+
15
+ jQuery.hotkeys = {
16
+ version: "0.8",
17
+
18
+ specialKeys: {
19
+ 8: "backspace", 9: "tab", 13: "return", 16: "shift", 17: "ctrl", 18: "alt", 19: "pause",
20
+ 20: "capslock", 27: "esc", 32: "space", 33: "pageup", 34: "pagedown", 35: "end", 36: "home",
21
+ 37: "left", 38: "up", 39: "right", 40: "down", 45: "insert", 46: "del",
22
+ 96: "0", 97: "1", 98: "2", 99: "3", 100: "4", 101: "5", 102: "6", 103: "7",
23
+ 104: "8", 105: "9", 106: "*", 107: "+", 109: "-", 110: ".", 111 : "/",
24
+ 112: "f1", 113: "f2", 114: "f3", 115: "f4", 116: "f5", 117: "f6", 118: "f7", 119: "f8",
25
+ 120: "f9", 121: "f10", 122: "f11", 123: "f12", 144: "numlock", 145: "scroll", 191: "/", 224: "meta"
26
+ },
27
+
28
+ shiftNums: {
29
+ "`": "~", "1": "!", "2": "@", "3": "#", "4": "$", "5": "%", "6": "^", "7": "&",
30
+ "8": "*", "9": "(", "0": ")", "-": "_", "=": "+", ";": ": ", "'": "\"", ",": "<",
31
+ ".": ">", "/": "?", "\\": "|"
32
+ }
33
+ };
34
+
35
+ function keyHandler( handleObj ) {
36
+ // Only care when a possible input has been specified
37
+ if ( typeof handleObj.data !== "string" ) {
38
+ return;
39
+ }
40
+
41
+ var origHandler = handleObj.handler,
42
+ keys = handleObj.data.toLowerCase().split(" ");
43
+
44
+ handleObj.handler = function( event ) {
45
+ // Don't fire in text-accepting inputs that we didn't directly bind to
46
+ if ( this !== event.target && (/textarea|select/i.test( event.target.nodeName ) ||
47
+ event.target.type === "text") ) {
48
+ return;
49
+ }
50
+
51
+ // Keypress represents characters, not special keys
52
+ var special = event.type !== "keypress" && jQuery.hotkeys.specialKeys[ event.which ],
53
+ character = String.fromCharCode( event.which ).toLowerCase(),
54
+ key, modif = "", possible = {};
55
+
56
+ // check combinations (alt|ctrl|shift+anything)
57
+ if ( event.altKey && special !== "alt" ) {
58
+ modif += "alt+";
59
+ }
60
+
61
+ if ( event.ctrlKey && special !== "ctrl" ) {
62
+ modif += "ctrl+";
63
+ }
64
+
65
+ // TODO: Need to make sure this works consistently across platforms
66
+ if ( event.metaKey && !event.ctrlKey && special !== "meta" ) {
67
+ modif += "meta+";
68
+ }
69
+
70
+ if ( event.shiftKey && special !== "shift" ) {
71
+ modif += "shift+";
72
+ }
73
+
74
+ if ( special ) {
75
+ possible[ modif + special ] = true;
76
+
77
+ } else {
78
+ possible[ modif + character ] = true;
79
+ possible[ modif + jQuery.hotkeys.shiftNums[ character ] ] = true;
80
+
81
+ // "$" can be triggered as "Shift+4" or "Shift+$" or just "$"
82
+ if ( modif === "shift+" ) {
83
+ possible[ jQuery.hotkeys.shiftNums[ character ] ] = true;
84
+ }
85
+ }
86
+
87
+ for ( var i = 0, l = keys.length; i < l; i++ ) {
88
+ if ( possible[ keys[i] ] ) {
89
+ return origHandler.apply( this, arguments );
90
+ }
91
+ }
92
+ };
93
+ }
94
+
95
+ jQuery.each([ "keydown", "keyup", "keypress" ], function() {
96
+ jQuery.event.special[ this ] = { add: keyHandler };
97
+ });
98
+
99
+ })( jQuery );
@@ -40,22 +40,22 @@ module TaskwarriorWeb::CommandBuilder::Base
40
40
 
41
41
  def parse_params
42
42
  string = ''
43
- string << %Q( #{@params.delete(:description).shellescape}) if @params.has_key?(:description)
43
+ string << %( #{@params.delete(:description).shellescape}) if @params.has_key?(:description)
44
44
 
45
45
  if tags = @params.delete(:tags)
46
46
  tag_indicator = TaskwarriorWeb::Config.property('tag.indicator') || '+'
47
- tags.each { |tag| string << %Q( #{tag_indicator}#{tag.to_s.shellescape}) }
47
+ tags.each { |tag| string << %( #{tag_indicator}#{tag.to_s.shellescape}) }
48
48
  end
49
49
 
50
50
  if tags = @params.delete(:remove_tags)
51
- tags.each { |tag| string << %Q( -#{tag.to_s.shellescape}) }
51
+ tags.each { |tag| string << %( -#{tag.to_s.shellescape}) }
52
52
  end
53
53
 
54
54
  @params.each do |attr, value|
55
55
  if value.respond_to? :each
56
- value.each { |val| string << %Q( #{attr.to_s}:\\"#{val.to_s.shellescape}\\") }
56
+ value.each { |val| string << %( #{attr.to_s}:\\"#{val.to_s.shellescape}\\") }
57
57
  else
58
- string << %Q( #{attr.to_s}:\\"#{value.to_s.shellescape}\\")
58
+ string << %( #{attr.to_s}:\\"#{value.to_s.shellescape}\\")
59
59
  end
60
60
  end
61
61
 
@@ -0,0 +1,3 @@
1
+ module TaskwarriorWeb
2
+ VERSION = '1.1.5'
3
+ end
@@ -0,0 +1,10 @@
1
+ <div class="pull-left">
2
+ <p>TaskwarriorWeb <%= TaskwarriorWeb::VERSION %></p>
3
+ </div>
4
+ <div class="pull-right">
5
+ <p>
6
+ <a data-toggle="modal" data-target="#hotkeys" href="#">Hotkeys</a>
7
+ &nbsp;|&nbsp;
8
+ <a href="http://github.com/theunraveler/taskwarrior-web/issues">Report a bug</a>
9
+ </p>
10
+ </div>
@@ -0,0 +1,18 @@
1
+ <div id="hotkeys" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
2
+ <div class="modal-header">
3
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
4
+ <h3 id="myModalLabel">Hotkeys</h3>
5
+ </div>
6
+ <div class="modal-body">
7
+ <p>TaskwarriorWeb includes hotkeys for quick navigation to commonly-used parts of the application.</p>
8
+ <ul>
9
+ <li><code>1</code>: Go to the "Tasks" (/tasks) page</li>
10
+ <li><code>2</code>: Go to the "Projects" (/projects) page</li>
11
+ <li><code>n</code>: Create a new task</li>
12
+ <li><code>h</code>: Displays and dismisses this help dialog</li>
13
+ </ul>
14
+ </div>
15
+ <div class="modal-footer">
16
+ <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
17
+ </div>
18
+ </div>
@@ -3,7 +3,7 @@
3
3
  <a href="/" class="brand">TaskwarriorWeb</a>
4
4
  <%= render_navigation :level => 1 %>
5
5
  <ul class="nav pull-right">
6
- <li<% if @current_page =~ %r{^/tasks/new/?} %> class="active"<% end %>>
6
+ <li<% if @current_page =~ %r(^/tasks/new/?) %> class="active"<% end %>>
7
7
  <a href="/tasks/new">
8
8
  <i class="icon-plus"></i>
9
9
  Add a Task
@@ -3,23 +3,33 @@
3
3
  <title><%= @title %> | TaskwarriorWeb</title>
4
4
 
5
5
  <!-- Styles -->
6
- <% ['bootstrap.min', 'datepicker', 'styles'].each do |file| %>
6
+ <% %w(bootstrap.min datepicker styles).each do |file| %>
7
7
  <link rel="stylesheet" href="<%= url("/css/#{file}.css") %>">
8
8
  <% end %>
9
9
 
10
10
  <!-- Scripts -->
11
- <% ['jquery.min', 'bootstrap', 'bootstrap-datepicker', 'application'].each do |file| %>
11
+ <% %w(jquery.min bootstrap bootstrap-datepicker jquery.hotkeys application).each do |file| %>
12
12
  <script text="text/javascript" src="<%= url("/js/#{file}.js") %>"></script>
13
13
  <% end %>
14
14
  </head>
15
15
 
16
16
  <body data-spy="scroll" data-offset="60" data-target="#sidebar">
17
- <div id="page" class="container">
18
- <%= erb :_topbar %>
19
- <%= erb :_subnav %>
20
- <section class="content">
21
- <%= erb :_flash %>
22
- <%= yield %>
23
- </section>
17
+ <div id="wrap">
18
+ <div id="page" class="container">
19
+ <%= erb :_topbar %>
20
+ <%= erb :_subnav %>
21
+ <section class="content">
22
+ <%= erb :_flash %>
23
+ <%= yield %>
24
+ </section>
25
+ </div>
26
+ <div id="push"></div>
24
27
  </div>
28
+ <div id="footer">
29
+ <div class="container muted">
30
+ <%= erb :_footer %>
31
+ </div>
32
+ </div>
33
+ <%= erb :_hotkeys %>
34
+ </body>
25
35
  </html>
@@ -1,47 +1,49 @@
1
1
  <% can_edit = @can_edit && params[:status].in?(['pending', 'waiting']) %>
2
2
 
3
3
  <div id="listing">
4
- <table class="table table-striped table-hover">
5
- <thead>
6
- <tr>
7
- <% if params[:status] == 'pending' %>
8
- <th></th>
9
- <% end %>
10
- <th>Description</th>
11
- <th>Project</th>
12
- <th>Due</th>
13
- <th>Tags</th>
14
- <th>Priority</th>
15
- <% if @can_edit %><th></th><% end %>
16
- </tr>
17
- </thead>
18
- <tbody>
19
- <% @tasks.each do |task| %>
20
- <% if task.status == 'pending' %>
21
- <tr class="<%= colorize_date(task.due) %>">
22
- <% else %>
23
- <tr class="<%= task.status %>">
24
- <% end %>
4
+ <% if @tasks.empty? and params[:status] == 'pending' %>
5
+ <h3>Congrats, you're in the clear!</h3>
6
+ <p><img src="/img/relax.jpg" alt="Relax" /></p>
7
+ <p>You've finished all of the things you need to do. Enjoy a nice break.</p>
8
+ <% else %>
9
+ <table class="table table-striped table-hover">
10
+ <thead>
11
+ <tr>
25
12
  <% if params[:status] == 'pending' %>
26
- <td><input type="checkbox" class="complete" data-task-id="<%= task.uuid %>" /></td>
13
+ <th></th>
27
14
  <% end %>
28
- <td>
29
- <%= task.description %>
30
- <% unless task.annotations.nil? || task.annotations.empty? %>
31
- <ul>
32
- <% task.annotations.each do |annotation| %>
33
- <li><%= format_date(annotation['entry']) %>: <%= auto_link(annotation['description']) %></li>
34
- <% end %>
35
- </ul>
36
- <% end %>
37
- </td>
38
- <td><a href="/projects/<%= linkify(task.project) %>"><%= task.project %></a></td>
39
- <td><%= format_date(task.due) unless task.due.nil? %></td>
40
- <td><%= task.tags.join(', ') unless task.tags.nil? %></td>
41
- <td><%= task.priority unless task.priority.nil? %></td>
42
- <% if can_edit %><td><%= crud_links(task) %></td><% end %>
15
+ <th>Description</th>
16
+ <th>Project</th>
17
+ <th>Due</th>
18
+ <th>Tags</th>
19
+ <th>Priority</th>
20
+ <% if @can_edit %><th></th><% end %>
43
21
  </tr>
44
- <% end %>
45
- </tbody>
46
- </table>
22
+ </thead>
23
+ <tbody>
24
+ <% @tasks.each do |task| %>
25
+ <tr class="<%= task.status == 'pending' ? colorize_date(task.due) : task.status %>">
26
+ <% if params[:status] == 'pending' %>
27
+ <td><input type="checkbox" class="complete" data-task-id="<%= task.uuid %>" /></td>
28
+ <% end %>
29
+ <td>
30
+ <%= task.description %>
31
+ <% unless task.annotations.nil? || task.annotations.empty? %>
32
+ <ul>
33
+ <% task.annotations.each do |annotation| %>
34
+ <li><%= format_date(annotation['entry']) %>: <%= auto_link(annotation['description']) %></li>
35
+ <% end %>
36
+ </ul>
37
+ <% end %>
38
+ </td>
39
+ <td><a href="/projects/<%= linkify(task.project) %>"><%= task.project %></a></td>
40
+ <td><%= format_date(task.due) unless task.due.nil? %></td>
41
+ <td><%= task.tags.join(', ') unless task.tags.nil? %></td>
42
+ <td><%= task.priority unless task.priority.nil? %></td>
43
+ <% if can_edit %><td><%= crud_links(task) %></td><% end %>
44
+ </tr>
45
+ <% end %>
46
+ </tbody>
47
+ </table>
48
+ <% end %>
47
49
  </div>
data/spec/app/app_spec.rb CHANGED
@@ -89,7 +89,7 @@ describe TaskwarriorWeb::App do
89
89
  describe 'GET /tasks/:uuid' do
90
90
  context 'given a non-existant task' do
91
91
  it 'should return a 404' do
92
- TaskwarriorWeb::Task.should_receive(:find_by_uuid).and_return([])
92
+ TaskwarriorWeb::Task.should_receive(:find).and_return(nil)
93
93
  get '/tasks/1'
94
94
  last_response.should be_not_found
95
95
  end
@@ -97,9 +97,9 @@ describe TaskwarriorWeb::App do
97
97
 
98
98
  context 'given an existing task' do
99
99
  before do
100
- TaskwarriorWeb::Task.should_receive(:find_by_uuid).and_return([
100
+ TaskwarriorWeb::Task.should_receive(:find).and_return(
101
101
  TaskwarriorWeb::Task.new({:uuid => 246, :description => 'Test task with a longer description'})
102
- ])
102
+ )
103
103
  get '/tasks/246'
104
104
  end
105
105
 
@@ -125,7 +125,7 @@ describe TaskwarriorWeb::App do
125
125
  describe 'PATCH /tasks/:uuid' do
126
126
  context 'given a non-existant task' do
127
127
  it 'should return a 404' do
128
- TaskwarriorWeb::Task.should_receive(:find_by_uuid).and_return([])
128
+ TaskwarriorWeb::Task.should_receive(:find).and_return(nil)
129
129
  patch '/tasks/429897527'
130
130
  last_response.should be_not_found
131
131
  end
@@ -133,7 +133,7 @@ describe TaskwarriorWeb::App do
133
133
 
134
134
  context 'given an existing task' do
135
135
  before do
136
- TaskwarriorWeb::Task.should_receive(:find_by_uuid).and_return(['hello'])
136
+ TaskwarriorWeb::Task.should_receive(:find).and_return('hello')
137
137
  end
138
138
 
139
139
  it 'should render an error message if the task is invalid' do
@@ -160,7 +160,7 @@ describe TaskwarriorWeb::App do
160
160
  describe 'GET /tasks/:uuid/delete' do
161
161
  context 'given a non-existant task' do
162
162
  it 'should return a 404' do
163
- TaskwarriorWeb::Task.should_receive(:find_by_uuid).and_return([])
163
+ TaskwarriorWeb::Task.should_receive(:find).and_return(nil)
164
164
  get '/tasks/429897527/delete'
165
165
  last_response.should be_not_found
166
166
  end
@@ -168,9 +168,9 @@ describe TaskwarriorWeb::App do
168
168
 
169
169
  context 'given an existing task' do
170
170
  before do
171
- TaskwarriorWeb::Task.should_receive(:find_by_uuid).and_return([
171
+ TaskwarriorWeb::Task.should_receive(:find).and_return(
172
172
  TaskwarriorWeb::Task.new({:uuid => 246, :description => 'Test task with a longer description'})
173
- ])
173
+ )
174
174
  get '/tasks/246/delete'
175
175
  end
176
176
 
@@ -189,7 +189,7 @@ describe TaskwarriorWeb::App do
189
189
  describe 'DELETE /tasks/:uuid' do
190
190
  context 'given a non-existant task' do
191
191
  it 'should return a 404' do
192
- TaskwarriorWeb::Task.should_receive(:find_by_uuid).and_return([])
192
+ TaskwarriorWeb::Task.should_receive(:find).any_number_of_times.and_return(nil)
193
193
  delete '/tasks/429897527'
194
194
  last_response.should be_not_found
195
195
  end
@@ -199,7 +199,7 @@ describe TaskwarriorWeb::App do
199
199
  before do
200
200
  @task = TaskwarriorWeb::Task.new
201
201
  @task.should_receive(:delete!).once.and_return('Success')
202
- TaskwarriorWeb::Task.should_receive(:find_by_uuid).and_return([@task])
202
+ TaskwarriorWeb::Task.should_receive(:find).and_return(@task)
203
203
  delete '/tasks/246'
204
204
  end
205
205
 
@@ -1,9 +1,10 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  $:.push File.expand_path("../lib", __FILE__)
3
+ require 'taskwarrior-web/version'
3
4
 
4
5
  Gem::Specification.new do |s|
5
6
  s.name = "taskwarrior-web"
6
- s.version = '1.1.4'
7
+ s.version = TaskwarriorWeb::VERSION
7
8
  s.platform = Gem::Platform::RUBY
8
9
  s.authors = ["Jake Bell"]
9
10
  s.email = ["jake@theunraveler.com"]
@@ -16,7 +17,6 @@ Gem::Specification.new do |s|
16
17
  s.required_ruby_version = '>= 1.9.0'
17
18
 
18
19
  s.add_dependency('sinatra')
19
- s.add_dependency('rack-protection', '= 1.2.0')
20
20
  s.add_dependency('parseconfig')
21
21
  s.add_dependency('vegas')
22
22
  s.add_dependency('rinku')
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.1.4
4
+ version: 1.1.5
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-11 00:00:00.000000000 Z
12
+ date: 2012-12-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
16
- requirement: &70119053211780 !ruby/object:Gem::Requirement
16
+ requirement: &70339183153940 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,21 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70119053211780
25
- - !ruby/object:Gem::Dependency
26
- name: rack-protection
27
- requirement: &70119053210420 !ruby/object:Gem::Requirement
28
- none: false
29
- requirements:
30
- - - =
31
- - !ruby/object:Gem::Version
32
- version: 1.2.0
33
- type: :runtime
34
- prerelease: false
35
- version_requirements: *70119053210420
24
+ version_requirements: *70339183153940
36
25
  - !ruby/object:Gem::Dependency
37
26
  name: parseconfig
38
- requirement: &70119053207520 !ruby/object:Gem::Requirement
27
+ requirement: &70339183153200 !ruby/object:Gem::Requirement
39
28
  none: false
40
29
  requirements:
41
30
  - - ! '>='
@@ -43,10 +32,10 @@ dependencies:
43
32
  version: '0'
44
33
  type: :runtime
45
34
  prerelease: false
46
- version_requirements: *70119053207520
35
+ version_requirements: *70339183153200
47
36
  - !ruby/object:Gem::Dependency
48
37
  name: vegas
49
- requirement: &70119053206120 !ruby/object:Gem::Requirement
38
+ requirement: &70339183152460 !ruby/object:Gem::Requirement
50
39
  none: false
51
40
  requirements:
52
41
  - - ! '>='
@@ -54,10 +43,10 @@ dependencies:
54
43
  version: '0'
55
44
  type: :runtime
56
45
  prerelease: false
57
- version_requirements: *70119053206120
46
+ version_requirements: *70339183152460
58
47
  - !ruby/object:Gem::Dependency
59
48
  name: rinku
60
- requirement: &70119053204860 !ruby/object:Gem::Requirement
49
+ requirement: &70339183151460 !ruby/object:Gem::Requirement
61
50
  none: false
62
51
  requirements:
63
52
  - - ! '>='
@@ -65,10 +54,10 @@ dependencies:
65
54
  version: '0'
66
55
  type: :runtime
67
56
  prerelease: false
68
- version_requirements: *70119053204860
57
+ version_requirements: *70339183151460
69
58
  - !ruby/object:Gem::Dependency
70
59
  name: versionomy
71
- requirement: &70119053203840 !ruby/object:Gem::Requirement
60
+ requirement: &70339183150820 !ruby/object:Gem::Requirement
72
61
  none: false
73
62
  requirements:
74
63
  - - ! '>='
@@ -76,10 +65,10 @@ dependencies:
76
65
  version: '0'
77
66
  type: :runtime
78
67
  prerelease: false
79
- version_requirements: *70119053203840
68
+ version_requirements: *70339183150820
80
69
  - !ruby/object:Gem::Dependency
81
70
  name: activesupport
82
- requirement: &70119053202860 !ruby/object:Gem::Requirement
71
+ requirement: &70339183149320 !ruby/object:Gem::Requirement
83
72
  none: false
84
73
  requirements:
85
74
  - - ! '>='
@@ -87,10 +76,10 @@ dependencies:
87
76
  version: '0'
88
77
  type: :runtime
89
78
  prerelease: false
90
- version_requirements: *70119053202860
79
+ version_requirements: *70339183149320
91
80
  - !ruby/object:Gem::Dependency
92
81
  name: sinatra-simple-navigation
93
- requirement: &70119053201860 !ruby/object:Gem::Requirement
82
+ requirement: &70339183147120 !ruby/object:Gem::Requirement
94
83
  none: false
95
84
  requirements:
96
85
  - - ! '>='
@@ -98,10 +87,10 @@ dependencies:
98
87
  version: '0'
99
88
  type: :runtime
100
89
  prerelease: false
101
- version_requirements: *70119053201860
90
+ version_requirements: *70339183147120
102
91
  - !ruby/object:Gem::Dependency
103
92
  name: rack-flash3
104
- requirement: &70119053200880 !ruby/object:Gem::Requirement
93
+ requirement: &70339183146020 !ruby/object:Gem::Requirement
105
94
  none: false
106
95
  requirements:
107
96
  - - ! '>='
@@ -109,10 +98,10 @@ dependencies:
109
98
  version: '0'
110
99
  type: :runtime
111
100
  prerelease: false
112
- version_requirements: *70119053200880
101
+ version_requirements: *70339183146020
113
102
  - !ruby/object:Gem::Dependency
114
103
  name: rake
115
- requirement: &70119053199920 !ruby/object:Gem::Requirement
104
+ requirement: &70339183144680 !ruby/object:Gem::Requirement
116
105
  none: false
117
106
  requirements:
118
107
  - - ! '>='
@@ -120,10 +109,10 @@ dependencies:
120
109
  version: '0'
121
110
  type: :development
122
111
  prerelease: false
123
- version_requirements: *70119053199920
112
+ version_requirements: *70339183144680
124
113
  - !ruby/object:Gem::Dependency
125
114
  name: rack-test
126
- requirement: &70119053199280 !ruby/object:Gem::Requirement
115
+ requirement: &70339183142960 !ruby/object:Gem::Requirement
127
116
  none: false
128
117
  requirements:
129
118
  - - ! '>='
@@ -131,10 +120,10 @@ dependencies:
131
120
  version: '0'
132
121
  type: :development
133
122
  prerelease: false
134
- version_requirements: *70119053199280
123
+ version_requirements: *70339183142960
135
124
  - !ruby/object:Gem::Dependency
136
125
  name: rspec
137
- requirement: &70119053198520 !ruby/object:Gem::Requirement
126
+ requirement: &70339183141820 !ruby/object:Gem::Requirement
138
127
  none: false
139
128
  requirements:
140
129
  - - ! '>='
@@ -142,10 +131,10 @@ dependencies:
142
131
  version: '0'
143
132
  type: :development
144
133
  prerelease: false
145
- version_requirements: *70119053198520
134
+ version_requirements: *70339183141820
146
135
  - !ruby/object:Gem::Dependency
147
136
  name: rspec-html-matchers
148
- requirement: &70119053197620 !ruby/object:Gem::Requirement
137
+ requirement: &70339183140920 !ruby/object:Gem::Requirement
149
138
  none: false
150
139
  requirements:
151
140
  - - ! '>='
@@ -153,7 +142,7 @@ dependencies:
153
142
  version: '0'
154
143
  type: :development
155
144
  prerelease: false
156
- version_requirements: *70119053197620
145
+ version_requirements: *70339183140920
157
146
  description: This gem provides a graphical frontend for the Taskwarrior task manager.
158
147
  It is based on Sinatra.
159
148
  email:
@@ -188,9 +177,11 @@ files:
188
177
  - lib/taskwarrior-web/public/img/ajax-loader.gif
189
178
  - lib/taskwarrior-web/public/img/glyphicons-halflings-white.png
190
179
  - lib/taskwarrior-web/public/img/glyphicons-halflings.png
180
+ - lib/taskwarrior-web/public/img/relax.jpg
191
181
  - lib/taskwarrior-web/public/js/application.js
192
182
  - lib/taskwarrior-web/public/js/bootstrap-datepicker.js
193
183
  - lib/taskwarrior-web/public/js/bootstrap.js
184
+ - lib/taskwarrior-web/public/js/jquery.hotkeys.js
194
185
  - lib/taskwarrior-web/public/js/jquery.min.js
195
186
  - lib/taskwarrior-web/services/builder.rb
196
187
  - lib/taskwarrior-web/services/builder/base.rb
@@ -200,8 +191,11 @@ files:
200
191
  - lib/taskwarrior-web/services/parser/csv.rb
201
192
  - lib/taskwarrior-web/services/parser/json.rb
202
193
  - lib/taskwarrior-web/services/runner.rb
194
+ - lib/taskwarrior-web/version.rb
203
195
  - lib/taskwarrior-web/views/404.erb
204
196
  - lib/taskwarrior-web/views/_flash.erb
197
+ - lib/taskwarrior-web/views/_footer.erb
198
+ - lib/taskwarrior-web/views/_hotkeys.erb
205
199
  - lib/taskwarrior-web/views/_subnav.erb
206
200
  - lib/taskwarrior-web/views/_task_form.erb
207
201
  - lib/taskwarrior-web/views/_topbar.erb
@@ -245,7 +239,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
245
239
  version: '0'
246
240
  segments:
247
241
  - 0
248
- hash: 389848294763805571
242
+ hash: -1474998614985479488
249
243
  requirements: []
250
244
  rubyforge_project: taskwarrior-web
251
245
  rubygems_version: 1.8.11