knjtasks 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. data/.document +5 -0
  2. data/.rspec +1 -0
  3. data/Gemfile +18 -0
  4. data/Gemfile.lock +66 -0
  5. data/LICENSE.txt +20 -0
  6. data/README.rdoc +19 -0
  7. data/Rakefile +49 -0
  8. data/VERSION +1 -0
  9. data/files/database_schema.rb +174 -0
  10. data/lib/knjtasks.rb +172 -0
  11. data/locales/da_DK/LC_MESSAGES/default.mo +0 -0
  12. data/locales/da_DK/LC_MESSAGES/default.po +1153 -0
  13. data/locales/da_DK/title.txt +1 -0
  14. data/locales/en_GB/title.txt +1 -0
  15. data/models/class_comment.rb +44 -0
  16. data/models/class_customer.rb +13 -0
  17. data/models/class_email_check.rb +7 -0
  18. data/models/class_project.rb +22 -0
  19. data/models/class_task.rb +163 -0
  20. data/models/class_task_assigned_user.rb +62 -0
  21. data/models/class_task_check.rb +26 -0
  22. data/models/class_timelog.rb +82 -0
  23. data/models/class_user.rb +125 -0
  24. data/models/class_user_project_link.rb +66 -0
  25. data/models/class_user_rank.rb +3 -0
  26. data/models/class_user_rank_link.rb +17 -0
  27. data/models/class_user_task_list_link.rb +17 -0
  28. data/pages/admin.rhtml +7 -0
  29. data/pages/comment_edit.rhtml +121 -0
  30. data/pages/comment_update_id_per_obj.rhtml +41 -0
  31. data/pages/customer_edit.rhtml +69 -0
  32. data/pages/customer_search.rhtml +80 -0
  33. data/pages/customer_show.rhtml +50 -0
  34. data/pages/frontpage.rhtml +198 -0
  35. data/pages/project_edit.rhtml +129 -0
  36. data/pages/project_search.rhtml +82 -0
  37. data/pages/project_show.rhtml +203 -0
  38. data/pages/task_check_edit.rhtml +98 -0
  39. data/pages/task_edit.rhtml +168 -0
  40. data/pages/task_search.rhtml +131 -0
  41. data/pages/task_show.rhtml +454 -0
  42. data/pages/timelog_edit.rhtml +134 -0
  43. data/pages/timelog_search.rhtml +318 -0
  44. data/pages/user_edit.rhtml +223 -0
  45. data/pages/user_login.rhtml +83 -0
  46. data/pages/user_profile.rhtml +89 -0
  47. data/pages/user_rank_search.rhtml +95 -0
  48. data/pages/user_search.rhtml +136 -0
  49. data/pages/user_show.rhtml +87 -0
  50. data/pages/workstatus.rhtml +320 -0
  51. data/scripts/fckeditor_validate_login.rb +23 -0
  52. data/spec/knjtasks_spec.rb +115 -0
  53. data/spec/spec_helper.rb +12 -0
  54. data/threads/thread_mail_task_comments.rb +114 -0
  55. data/www/api/task.rhtml +9 -0
  56. data/www/api/user.rhtml +20 -0
  57. data/www/clean.rhtml +14 -0
  58. data/www/css/default.css +186 -0
  59. data/www/gfx/body_bg.jpg +0 -0
  60. data/www/gfx/button_bg.png +0 -0
  61. data/www/gfx/main_box_design.png +0 -0
  62. data/www/gfx/main_box_left.png +0 -0
  63. data/www/gfx/main_box_right.png +0 -0
  64. data/www/gfx/main_box_top.png +0 -0
  65. data/www/gfx/main_box_top_left.png +0 -0
  66. data/www/gfx/main_box_top_right.png +0 -0
  67. data/www/index.rhtml +154 -0
  68. data/www/js/default.js +112 -0
  69. metadata +208 -0
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,154 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2
+ <%
3
+ _site.load_request
4
+
5
+ show = _get["show"] if !_get["show"].to_s.empty?
6
+ show = "frontpage" if !show
7
+ showp = "../pages/#{show}.rhtml"
8
+
9
+ head_title = ""
10
+ head_titles = {
11
+ "frontpage" => _("Frontpage"),
12
+ "customer_search" => _("Customers"),
13
+ "project_search" => _("Projects"),
14
+ "task_search" => _("Tasks"),
15
+ "user_search" => _("Users"),
16
+ "timelog_search" => _("Timelogs"),
17
+ "workstatus" => _("Work-status"),
18
+ "admin" => _("Administration")
19
+ }
20
+
21
+ if head_titles.has_key?(_get["show"])
22
+ head_title = head_titles[_get["show"]]
23
+ elsif _get["show"] == "task_show" or (_get["show"] == "task_edit" and _get["task_id"])
24
+ begin
25
+ task = _ob.get(:Task, _get["task_id"])
26
+ head_title = task.name
27
+ rescue Errno::ENOENT
28
+ _hb.alert(_("That task could not be found.")).back
29
+ end
30
+ elsif _get["show"] == "project_show" or (_get["show"] == "project_edit" and _get["project_id"])
31
+ begin
32
+ project = _ob.get(:Project, _get["project_id"])
33
+ head_title = project.name
34
+ rescue Errno::ENOENT
35
+ _hb.alert(_("That project could not be found.")).back
36
+ end
37
+ end
38
+
39
+ if head_title.length == 0
40
+ head_title = "knjTasks"
41
+ else
42
+ head_title = "#{head_title} - knjTasks"
43
+ end
44
+
45
+ _hb.redirect("?show=user_login&backurl=#{Php4r.urlencode(_meta["REQUEST_URI"])}") if !_site.user and _get["show"] != "user_login" and _get["show"] != "test_browser" and _get["show"] != "test"
46
+ %>
47
+ <html>
48
+ <head>
49
+ <title><%=head_title.html%></title>
50
+
51
+ <link rel="stylesheet" type="text/css" href="css/default.css" />
52
+
53
+ <script type="text/javascript" src="<%=_site.args[:knjjs_url]%>/jquery.js"></script>
54
+ <script type="text/javascript" src="<%=_site.args[:knjjs_url]%>/jquery.md5.js"></script>
55
+ <script type="text/javascript" src="<%=_site.args[:knjjs_url]%>/modal.js"></script>
56
+ <script type="text/javascript" src="<%=_site.args[:knjjs_url]%>/events.js"></script>
57
+ <script type="text/javascript" src="<%=_site.args[:knjjs_url]%>/forms.js"></script>
58
+ <script type="text/javascript" src="<%=_site.args[:knjjs_url]%>/select.js"></script>
59
+
60
+ <script type="text/javascript" src="js/default.js"></script>
61
+ </head>
62
+ <body>
63
+ <script type="text/javascript">
64
+ var js_settings = {
65
+ "knjjs_url": "<%=_site.args[:knjjs_url]%>"
66
+ }
67
+
68
+ var locale_strings = {
69
+ "close": "<%=_('Close')%>",
70
+ "comment_edit_title": "<%=_('Edit comment')%>",
71
+ "timelog_edit_title": "<%=_('Edit timelog')%>",
72
+ "task_check_edit_title": "<%=_('Edit task-check')%>"
73
+ }
74
+ </script>
75
+
76
+ <center>
77
+ <table class="main_table" cellspacing="0" cellpadding="0">
78
+ <tr>
79
+ <td colspan="3" class="main_logo">
80
+ knjTasks
81
+ </td>
82
+ </tr>
83
+ <tr>
84
+ <td class="main_corner_top_left"></td>
85
+ <td class="main_side_top"></td>
86
+ <td class="main_corner_top_right"></td>
87
+ </tr>
88
+ <tr>
89
+ <td class="main_side_left"></td>
90
+ <td class="main_body">
91
+ <div class="main_menu_outer">
92
+ <div class="main_menu_inner">
93
+ <%
94
+ if _site.user
95
+ menu = [
96
+ {:name => _("Frontpage"), :link => "?show=frontpage"}
97
+ ]
98
+
99
+ if _site.has_rank?("admin") and (!_site.args.has_key?(:customers) or _site.args[:customers])
100
+ menu << {:name => _("Customers"), :link => "?show=customer_search"}
101
+ menu << {:name => _("Projects"), :link => "?show=project_search"}
102
+ end
103
+
104
+ menu << {:name => _("Tasks"), :link => "?show=task_search"}
105
+ menu << {:name => _("Users"), :link => "?show=user_search"}
106
+
107
+ if _site.has_rank?("admin")
108
+ menu << {:name => _("Timelogs"), :link => "?show=timelog_search"}
109
+ menu << {:name => _("Work-status"), :link => "?show=workstatus"}
110
+ menu << {:name => _("Administration"), :link => "?show=admin"}
111
+ end
112
+
113
+ menu << {:name => _("Your profile"), :link => "?show=user_profile"}
114
+ menu << {:name => _("Log out"), :link => "?show=user_login&choice=dologout"}
115
+ else
116
+ menu = [
117
+ {:name => _("Log in"), :link => "?show=user_login"}
118
+ ]
119
+ end
120
+
121
+ menu.each do |mi|
122
+ %>
123
+ <a href="<%=mi[:link]%>"><%=mi[:name]%></a>&nbsp;&nbsp;&nbsp;
124
+ <%
125
+ end
126
+ %>
127
+ </div>
128
+ </div>
129
+ <div class="main_content">
130
+ <%
131
+ _hb.import(showp)
132
+ %>
133
+ </div>
134
+ </td>
135
+ <td class="main_side_right"></td>
136
+ </tr>
137
+ <tr>
138
+ <td class="main_side_left"></td>
139
+ <td class="main_bottom">
140
+ <div style="padding-bottom: 15px;">
141
+ Language:
142
+ <select style="width: 100px;" onchange="location.href='<%=_meta["REQUEST_URI"]%>&amp;l=' + this.value;">
143
+ <%=Knj::Web.opts(_hb.gettext.lang_opts, _session[:locale])%>
144
+ </select>
145
+ </div>
146
+
147
+ <%=sprintf(_("Made by %s"), "<a href=\"mailto:k@spernj.org\">Kasper Johansen</a>")%>
148
+ </td>
149
+ <td class="main_side_right"></td>
150
+ </tr>
151
+ </table>
152
+ </center>
153
+ </body>
154
+ </html>
@@ -0,0 +1,112 @@
1
+ var events = new Events();
2
+
3
+ $(document).ready(function(){
4
+ modal_setup({
5
+ url: js_settings["knjjs_url"],
6
+ css: {
7
+ "border": "3px solid #4e4e4e",
8
+ "background-color": "#f6f6f6",
9
+ "padding": "10px",
10
+ "padding-top": "0px",
11
+ "padding-bottom": "14px",
12
+ "width": "700px",
13
+ "height": "700px",
14
+ "overflow": "auto"
15
+ },
16
+ css_header: {
17
+ "font-size": "16px",
18
+ "font-weight": "bold",
19
+ "padding-bottom": "7px",
20
+ "padding-top": "5px",
21
+ "color": "#000000"
22
+ }
23
+ });
24
+ });
25
+
26
+ function comment_delete(comment_id){
27
+ $.ajax({type: "GET", url: "clean.rhtml?show=comment_edit&choice=dodelete&comment_id=" + comment_id, cache: false, async: true, complete: function(data){
28
+ if (data.responseText.length > 0){
29
+ alert(data.responseText);
30
+ }
31
+
32
+ events.call("do_comments_update");
33
+ }});
34
+ }
35
+
36
+ function comment_edit(comment_id){
37
+ modal({title: locale_strings["comment_edit_title"], url: "clean.rhtml?show=comment_edit&comment_id=" + comment_id});
38
+ }
39
+
40
+ function project_remove_assigned_user(link_id){
41
+ $.ajax({type: "GET", url: "clean.rhtml?show=project_show&choice=doremoveassigneduser&link_id=" + link_id, cache: false, async: true, complete: function(data){
42
+ if (data.responseText.length > 0){
43
+ alert(data.responseText);
44
+ }
45
+
46
+ events.call("do_project_assigned_users_update");
47
+ }});
48
+ }
49
+
50
+ function project_assign_user(project_id, user_id){
51
+ $.ajax({type: "GET", url: "clean.rhtml?show=project_show&choice=doassignuser&project_id=" + project_id + "&user_id=" + user_id, cache: false, async: true, complete: function(data){
52
+ if (data.responseText.length > 0){
53
+ alert(data.responseText);
54
+ }
55
+
56
+ events.call("do_project_assigned_users_update");
57
+ }});
58
+ }
59
+
60
+ function timelog_delete(tlog_id){
61
+ $.ajax({type: "GET", url: "clean.rhtml?show=timelog_edit&choice=dodelete&timelog_id=" + tlog_id, cache: false, async: true, complete: function(data){
62
+ if (data.responseText.length > 0){
63
+ alert(data.responseText);
64
+ }
65
+
66
+ events.call("do_timelogs_update");
67
+ }});
68
+ }
69
+
70
+ function timelog_edit(tlog_id){
71
+ modal({title: locale_strings["timelog_edit_title"], height: 600, url: "clean.rhtml?show=timelog_edit&timelog_id=" + tlog_id});
72
+ }
73
+
74
+ function timelog_add(task_id){
75
+ modal({title: locale_strings["timelog_edit_title"], height: 600, url: "clean.rhtml?show=timelog_edit&task_id=" + task_id});
76
+ }
77
+
78
+ function task_remove_assigned(link_id){
79
+ $.ajax({type: "GET", url: "clean.rhtml?show=task_show&choice=removeassigned&link_id=" + link_id, cache: false, async: true, complete: function(data){
80
+ if (data.responseText.length > 0){
81
+ alert(data.responseText);
82
+ }
83
+
84
+ events.call("do_task_assigned_users_update");
85
+ }});
86
+ }
87
+
88
+ function task_check_edit(check_id){
89
+ modal({title: locale_strings["task_check_edit_title"], url: "clean.rhtml?show=task_check_edit&check_id=" + check_id});
90
+ }
91
+
92
+ function task_check_delete(check_id){
93
+ $.ajax({type: "GET", url: "clean.rhtml?show=task_check_edit&choice=dodelete&check_id=" + check_id, cache: false, async: true, complete: function(data){
94
+ if (data.responseText.length > 0){
95
+ alert(data.responseText);
96
+ }
97
+
98
+ events.call("do_task_check_update");
99
+ }});
100
+ }
101
+
102
+ function task_check_set(check_id, val){
103
+ if (val == "on"){
104
+ val = 1;
105
+ }
106
+
107
+ $.ajax({type: "GET", url: "clean.rhtml?show=task_check_edit&choice=setcheck&check_id=" + check_id + "&checkval=" + val, cache: false, async: true, complete: function(data){
108
+ if (data.responseText.length > 0){
109
+ alert(data.responseText);
110
+ }
111
+ }});
112
+ }
metadata ADDED
@@ -0,0 +1,208 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: knjtasks
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Kasper Johansen
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-10-11 00:00:00.000000000 +02:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: knjrbfw
17
+ requirement: &14707140 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *14707140
26
+ - !ruby/object:Gem::Dependency
27
+ name: datet
28
+ requirement: &14705900 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: *14705900
37
+ - !ruby/object:Gem::Dependency
38
+ name: hayabusa
39
+ requirement: &14704820 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ type: :runtime
46
+ prerelease: false
47
+ version_requirements: *14704820
48
+ - !ruby/object:Gem::Dependency
49
+ name: http2
50
+ requirement: &14703720 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: *14703720
59
+ - !ruby/object:Gem::Dependency
60
+ name: sqlite3
61
+ requirement: &14699200 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: *14699200
70
+ - !ruby/object:Gem::Dependency
71
+ name: rspec
72
+ requirement: &14698420 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 2.3.0
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: *14698420
81
+ - !ruby/object:Gem::Dependency
82
+ name: bundler
83
+ requirement: &14697620 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: 1.0.0
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: *14697620
92
+ - !ruby/object:Gem::Dependency
93
+ name: jeweler
94
+ requirement: &14696740 !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ~>
98
+ - !ruby/object:Gem::Version
99
+ version: 1.6.3
100
+ type: :development
101
+ prerelease: false
102
+ version_requirements: *14696740
103
+ description: A longer description will come...
104
+ email: k@spernj.org
105
+ executables: []
106
+ extensions: []
107
+ extra_rdoc_files:
108
+ - LICENSE.txt
109
+ - README.rdoc
110
+ files:
111
+ - .document
112
+ - .rspec
113
+ - Gemfile
114
+ - Gemfile.lock
115
+ - LICENSE.txt
116
+ - README.rdoc
117
+ - Rakefile
118
+ - VERSION
119
+ - files/database_schema.rb
120
+ - lib/knjtasks.rb
121
+ - locales/da_DK/LC_MESSAGES/default.mo
122
+ - locales/da_DK/LC_MESSAGES/default.po
123
+ - locales/da_DK/title.txt
124
+ - locales/en_GB/title.txt
125
+ - models/class_comment.rb
126
+ - models/class_customer.rb
127
+ - models/class_email_check.rb
128
+ - models/class_project.rb
129
+ - models/class_task.rb
130
+ - models/class_task_assigned_user.rb
131
+ - models/class_task_check.rb
132
+ - models/class_timelog.rb
133
+ - models/class_user.rb
134
+ - models/class_user_project_link.rb
135
+ - models/class_user_rank.rb
136
+ - models/class_user_rank_link.rb
137
+ - models/class_user_task_list_link.rb
138
+ - pages/admin.rhtml
139
+ - pages/comment_edit.rhtml
140
+ - pages/comment_update_id_per_obj.rhtml
141
+ - pages/customer_edit.rhtml
142
+ - pages/customer_search.rhtml
143
+ - pages/customer_show.rhtml
144
+ - pages/frontpage.rhtml
145
+ - pages/project_edit.rhtml
146
+ - pages/project_search.rhtml
147
+ - pages/project_show.rhtml
148
+ - pages/task_check_edit.rhtml
149
+ - pages/task_edit.rhtml
150
+ - pages/task_search.rhtml
151
+ - pages/task_show.rhtml
152
+ - pages/timelog_edit.rhtml
153
+ - pages/timelog_search.rhtml
154
+ - pages/user_edit.rhtml
155
+ - pages/user_login.rhtml
156
+ - pages/user_profile.rhtml
157
+ - pages/user_rank_search.rhtml
158
+ - pages/user_search.rhtml
159
+ - pages/user_show.rhtml
160
+ - pages/workstatus.rhtml
161
+ - scripts/fckeditor_validate_login.rb
162
+ - spec/knjtasks_spec.rb
163
+ - spec/spec_helper.rb
164
+ - threads/thread_mail_task_comments.rb
165
+ - www/api/task.rhtml
166
+ - www/api/user.rhtml
167
+ - www/clean.rhtml
168
+ - www/css/default.css
169
+ - www/gfx/body_bg.jpg
170
+ - www/gfx/button_bg.png
171
+ - www/gfx/main_box_design.png
172
+ - www/gfx/main_box_left.png
173
+ - www/gfx/main_box_right.png
174
+ - www/gfx/main_box_top.png
175
+ - www/gfx/main_box_top_left.png
176
+ - www/gfx/main_box_top_right.png
177
+ - www/index.rhtml
178
+ - www/js/default.js
179
+ has_rdoc: true
180
+ homepage: http://github.com/kaspernj/knjtasks
181
+ licenses:
182
+ - MIT
183
+ post_install_message:
184
+ rdoc_options: []
185
+ require_paths:
186
+ - lib
187
+ required_ruby_version: !ruby/object:Gem::Requirement
188
+ none: false
189
+ requirements:
190
+ - - ! '>='
191
+ - !ruby/object:Gem::Version
192
+ version: '0'
193
+ segments:
194
+ - 0
195
+ hash: -1063678652227390460
196
+ required_rubygems_version: !ruby/object:Gem::Requirement
197
+ none: false
198
+ requirements:
199
+ - - ! '>='
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ requirements: []
203
+ rubyforge_project:
204
+ rubygems_version: 1.6.2
205
+ signing_key:
206
+ specification_version: 3
207
+ summary: A task system for managing various projects, timelogs and much more.
208
+ test_files: []