inbox 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (152) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +18 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +162 -74
  5. data/Rakefile +35 -30
  6. data/VERSION +1 -0
  7. data/example/.gitignore +16 -0
  8. data/example/Gemfile +39 -0
  9. data/example/README.rdoc +28 -0
  10. data/{test/dummy → example}/Rakefile +1 -2
  11. data/{app/views/inbox/emails/index.html.erb → example/app/assets/images/.keep} +0 -0
  12. data/example/app/assets/javascripts/application.js +16 -0
  13. data/example/app/assets/javascripts/welcome.js.coffee +3 -0
  14. data/example/app/assets/stylesheets/application.css +15 -0
  15. data/example/app/assets/stylesheets/welcome.css.scss +3 -0
  16. data/example/app/controllers/application_controller.rb +61 -0
  17. data/{test/dummy/db/development.sqlite3 → example/app/controllers/concerns/.keep} +0 -0
  18. data/{test/dummy → example}/app/helpers/application_helper.rb +0 -0
  19. data/example/app/helpers/welcome_helper.rb +2 -0
  20. data/{test/dummy/db/production.sqlite3 → example/app/mailers/.keep} +0 -0
  21. data/{test/dummy/db/test.sqlite3 → example/app/models/.keep} +0 -0
  22. data/{test/dummy/log/test.log → example/app/models/concerns/.keep} +0 -0
  23. data/example/app/views/layouts/application.html.erb +14 -0
  24. data/example/app/views/welcome/index.html.erb +2 -0
  25. data/example/bin/bundle +3 -0
  26. data/example/bin/rails +8 -0
  27. data/example/bin/rake +8 -0
  28. data/example/bin/spring +18 -0
  29. data/{test/dummy → example}/config.ru +1 -1
  30. data/example/config/application.rb +23 -0
  31. data/example/config/boot.rb +4 -0
  32. data/{test/dummy → example}/config/database.yml +8 -8
  33. data/example/config/environment.rb +5 -0
  34. data/example/config/environments/development.rb +39 -0
  35. data/example/config/environments/production.rb +82 -0
  36. data/example/config/environments/test.rb +41 -0
  37. data/example/config/initializers/assets.rb +8 -0
  38. data/{test/dummy → example}/config/initializers/backtrace_silencers.rb +1 -1
  39. data/example/config/initializers/cookies_serializer.rb +3 -0
  40. data/example/config/initializers/filter_parameter_logging.rb +4 -0
  41. data/example/config/initializers/inflections.rb +16 -0
  42. data/{test/dummy → example}/config/initializers/mime_types.rb +0 -1
  43. data/example/config/initializers/session_store.rb +3 -0
  44. data/{test/dummy → example}/config/initializers/wrap_parameters.rb +6 -6
  45. data/example/config/locales/en.yml +23 -0
  46. data/example/config/routes.rb +59 -0
  47. data/example/config/secrets.yml +22 -0
  48. data/example/db/seeds.rb +7 -0
  49. data/{test/dummy/public/favicon.ico → example/lib/assets/.keep} +0 -0
  50. data/example/lib/tasks/.keep +0 -0
  51. data/example/log/.keep +0 -0
  52. data/example/public/404.html +67 -0
  53. data/example/public/422.html +67 -0
  54. data/example/public/500.html +66 -0
  55. data/example/public/favicon.ico +0 -0
  56. data/example/public/robots.txt +5 -0
  57. data/example/test/controllers/.keep +0 -0
  58. data/example/test/controllers/welcome_controller_test.rb +9 -0
  59. data/example/test/fixtures/.keep +0 -0
  60. data/example/test/fixtures/users.yml +11 -0
  61. data/example/test/helpers/.keep +0 -0
  62. data/example/test/helpers/welcome_helper_test.rb +4 -0
  63. data/example/test/integration/.keep +0 -0
  64. data/example/test/mailers/.keep +0 -0
  65. data/example/test/models/.keep +0 -0
  66. data/{test/integration/navigation_test.rb → example/test/models/user_test.rb} +1 -4
  67. data/example/test/test_helper.rb +10 -0
  68. data/example/vendor/assets/javascripts/.keep +0 -0
  69. data/example/vendor/assets/stylesheets/.keep +0 -0
  70. data/inbox.gemspec +327 -0
  71. data/lib/contact.rb +10 -0
  72. data/lib/draft.rb +28 -0
  73. data/lib/file.rb +31 -0
  74. data/lib/inbox.rb +81 -20
  75. data/lib/message.rb +37 -0
  76. data/lib/namespace.rb +51 -0
  77. data/lib/restful_model.rb +76 -0
  78. data/lib/restful_model_collection.rb +131 -0
  79. data/lib/tag.rb +9 -0
  80. data/lib/thread.rb +60 -0
  81. data/lib/version.rb +3 -0
  82. data/spec/inbox_spec.rb +79 -0
  83. data/spec/restful_model_spec.rb +18 -0
  84. data/spec/spec_helper.rb +1 -0
  85. data/tasks/rspec.rake +3 -0
  86. metadata +1038 -181
  87. data/MIT-LICENSE +0 -20
  88. data/app/assets/images/inbox/results_bg.png +0 -0
  89. data/app/assets/images/inbox/tree_bg.png +0 -0
  90. data/app/assets/javascripts/inbox/application.js +0 -8
  91. data/app/assets/javascripts/inbox/emails.js +0 -2
  92. data/app/assets/stylesheets/inbox/application.css +0 -7
  93. data/app/assets/stylesheets/inbox/emails.css +0 -59
  94. data/app/assets/stylesheets/inbox/panel.css.erb +0 -229
  95. data/app/assets/stylesheets/inbox/reset.css +0 -53
  96. data/app/controllers/inbox/application_controller.rb +0 -4
  97. data/app/controllers/inbox/emails_controller.rb +0 -52
  98. data/app/helpers/inbox/application_helper.rb +0 -4
  99. data/app/helpers/inbox/emails_helper.rb +0 -4
  100. data/app/mailers/inbox/email_mailer.rb +0 -11
  101. data/app/models/inbox/email.rb +0 -51
  102. data/app/views/inbox/emails/new.html.erb +0 -9
  103. data/app/views/inbox/emails/show.html.erb +0 -48
  104. data/app/views/layouts/inbox/application.html.erb +0 -15
  105. data/app/views/layouts/inbox/inbox.html.erb +0 -25
  106. data/config/routes.rb +0 -6
  107. data/lib/inbox/engine.rb +0 -9
  108. data/lib/inbox/version.rb +0 -3
  109. data/lib/tasks/inbox_tasks.rake +0 -4
  110. data/test/dummy/app/assets/javascripts/application.js +0 -9
  111. data/test/dummy/app/assets/stylesheets/application.css +0 -7
  112. data/test/dummy/app/controllers/application_controller.rb +0 -3
  113. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  114. data/test/dummy/config/application.rb +0 -45
  115. data/test/dummy/config/boot.rb +0 -10
  116. data/test/dummy/config/environment.rb +0 -5
  117. data/test/dummy/config/environments/development.rb +0 -32
  118. data/test/dummy/config/environments/production.rb +0 -60
  119. data/test/dummy/config/environments/test.rb +0 -42
  120. data/test/dummy/config/initializers/inflections.rb +0 -10
  121. data/test/dummy/config/initializers/secret_token.rb +0 -7
  122. data/test/dummy/config/initializers/session_store.rb +0 -8
  123. data/test/dummy/config/locales/en.yml +0 -5
  124. data/test/dummy/config/routes.rb +0 -4
  125. data/test/dummy/log/development.log +0 -3641
  126. data/test/dummy/public/404.html +0 -26
  127. data/test/dummy/public/422.html +0 -26
  128. data/test/dummy/public/500.html +0 -26
  129. data/test/dummy/script/rails +0 -6
  130. data/test/dummy/tmp/cache/assets/C4D/8B0/sprockets%2F5e1b589842222e2ea0043890c2c84539 +0 -0
  131. data/test/dummy/tmp/cache/assets/C6F/5C0/sprockets%2F259fb59d511a70d46436201b6770a04a +0 -0
  132. data/test/dummy/tmp/cache/assets/CF2/F90/sprockets%2F5378bb2470df984ccf2643991a6e476d +0 -0
  133. data/test/dummy/tmp/cache/assets/D0B/330/sprockets%2F582a2b19d6be92a0393afa63894d721a +0 -0
  134. data/test/dummy/tmp/cache/assets/D1B/CE0/sprockets%2F09c9c18794df089e62443d3debb117e5 +0 -0
  135. data/test/dummy/tmp/cache/assets/D1D/BA0/sprockets%2F29888f599d35bb11e4a8183d6dc5e23a +0 -0
  136. data/test/dummy/tmp/cache/assets/D1F/600/sprockets%2Fdd3578c9bd0719efe092c59655a25c55 +0 -0
  137. data/test/dummy/tmp/cache/assets/D21/920/sprockets%2F85fd59fe11746a33f5f917a923d84be3 +0 -0
  138. data/test/dummy/tmp/cache/assets/D4D/FB0/sprockets%2Fd5743837e8babdab4825364c4ee86f73 +0 -0
  139. data/test/dummy/tmp/cache/assets/D4F/520/sprockets%2F88ecb483df9e177ee775202ba0691ec7 +0 -0
  140. data/test/dummy/tmp/cache/assets/D6E/300/sprockets%2Fcc54b61039f74d6b8a2a7d04ad9d77f0 +0 -0
  141. data/test/dummy/tmp/cache/assets/D74/390/sprockets%2F5eda33e637dd54ff6a27bb76c482a473 +0 -0
  142. data/test/dummy/tmp/cache/assets/D76/170/sprockets%2Ffa5e461b362e11c80d5fd9e877fb63e2 +0 -0
  143. data/test/dummy/tmp/cache/assets/D7F/2D0/sprockets%2F141c2c9cb5235c8d21a00fbc8d7a2ab1 +0 -0
  144. data/test/dummy/tmp/cache/assets/D84/AA0/sprockets%2F5e841fe9d79e3ebf4333be8842b77bc5 +0 -0
  145. data/test/dummy/tmp/cache/assets/DA0/520/sprockets%2Fb8e93a54478c1f1a0e750ef2cbf74f3c +0 -0
  146. data/test/dummy/tmp/cache/assets/DC1/520/sprockets%2Feb8cea402f0bf04560adcd0cb8807b88 +0 -0
  147. data/test/dummy/tmp/mails/1345541756.4616725 +0 -11
  148. data/test/functional/inbox/email_test.rb +0 -9
  149. data/test/functional/inbox/emails_controller_test.rb +0 -16
  150. data/test/inbox_test.rb +0 -7
  151. data/test/test_helper.rb +0 -10
  152. data/test/unit/helpers/inbox/emails_helper_test.rb +0 -6
data/MIT-LICENSE DELETED
@@ -1,20 +0,0 @@
1
- Copyright 2011 YOURNAME
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Binary file
Binary file
@@ -1,8 +0,0 @@
1
- // This is a manifest file that'll be compiled into including all the files listed below.
2
- // Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
3
- // be included in the compiled file accessible from http://example.com/assets/application.js
4
- // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
5
- // the compiled file.
6
- //
7
-
8
- //= require_tree .
@@ -1,2 +0,0 @@
1
- // Place all the behaviors and hooks related to the matching controller here.
2
- // All this logic will automatically be available in application.js.
@@ -1,7 +0,0 @@
1
- /*
2
- * This is a manifest file that'll automatically include all the stylesheets available in this directory
3
- * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
4
- * the top of the compiled file, but it's generally better to create a new file per style scope.
5
- *= require_self
6
- *= require_tree .
7
- */
@@ -1,59 +0,0 @@
1
- /*
2
- Place all the styles related to the matching controller here.
3
- They will automatically be included in application.css.
4
- */
5
-
6
- #message_headers {
7
- width: 75%;
8
- padding: 20px 0 20px 0;
9
- margin: 0;
10
- background: #fff;
11
- font-size: 12px;
12
- font-family: "Lucida Grande";
13
- border-bottom: 1px solid #dedede;
14
- overflow: hidden;
15
- float: left;
16
- }
17
-
18
- #message_headers dl {
19
- margin: 0;
20
- padding: 0;
21
- }
22
-
23
- #message_headers dt {
24
- width: 60px;
25
- padding: 1px;
26
- float: left;
27
- text-align: right;
28
- font-weight: bold;
29
- color: #7f7f7f;
30
- }
31
-
32
- #message_headers dd {
33
- margin-left: 70px;
34
- padding: 1px;
35
- }
36
-
37
- #message_headers p.alternate {
38
- position: absolute;
39
- top: 0;
40
- right: 15px;
41
- }
42
-
43
- #message_headers p.alternate a {
44
- color: #09c;
45
- }
46
-
47
- pre#message_body {
48
- padding: 10px;
49
- white-space: pre-wrap;
50
- }
51
-
52
- .clear {
53
- clear: both;
54
- display: block;
55
- overflow: hidden;
56
- visibility: hidden;
57
- width: 0;
58
- height: 0;
59
- }
@@ -1,229 +0,0 @@
1
- /* Panel (begin) */
2
- .panel
3
- {
4
- float: left;
5
- width: 25%;
6
- height: 1000px;
7
- top: 0;
8
- left: 0;
9
- background: #FFF;
10
- font-family: "Helvetica Neue", "Arial", sans-serif;
11
- }
12
-
13
- /* Header with search box (begin) */
14
- .panel .header
15
- {
16
- width: 100%;
17
- height: 29px;
18
- border-bottom: 1px solid #666;
19
- position: relative;
20
- left: 0; top: 0;
21
- background: #e8e8e8;
22
- }
23
-
24
- .panel .header div
25
- {
26
- margin: 0 7px;
27
- }
28
- .panel .header table
29
- {
30
- height: 29px;
31
- width: 100%;
32
- }
33
-
34
- .panel .header table td
35
- {
36
- vertical-align: middle;
37
- text-align: middle;
38
- }
39
-
40
- .panel .header label
41
- {
42
- position: absolute;
43
- font-size: 12px;
44
- line-height: 29px;
45
- margin-left: 3px;
46
- color: #777;
47
- cursor: text;
48
- }
49
-
50
- .panel .header table input
51
- {
52
- width: 100%;
53
- box-sizing: border-box;
54
- -moz-box-sizing: border-box;
55
- -webkit-box-sizing: border-box;
56
- display: inline-block;
57
- -webkit-appearance: searchfield;
58
- height: 22px;
59
- //height: auto;
60
- }
61
-
62
- /* Header with search box (end) */
63
-
64
-
65
- /* Results (begin) */
66
- .panel .result
67
- {
68
-
69
- height: 1000px;
70
- bottom: 0;
71
- left: 0;
72
- width: 100%;
73
-
74
- overflow-y: scroll;
75
- overflow-x: hidden;
76
- -overflow-y: hidden;
77
- background: #EEE url(<%= image_path("inbox/results_bg.png") %>);
78
- z-index: 2;
79
- //zoom:1;
80
- }
81
-
82
- .panel .result ul
83
- {
84
- font-size: 0.8em;
85
- width: 100%;
86
- background: #EEE url(<%= image_path("inbox/results_bg.png") %>);
87
- //zoom:1;
88
- }
89
-
90
- .panel .result ul li
91
- {
92
- height: 46px;
93
- overflow: hidden;
94
- padding: 4px 10px 0 10px;
95
- cursor: pointer;
96
- }
97
-
98
- .panel .result ul li h1
99
- {
100
- font-size: 13px;
101
- font-weight: normal;
102
- color: #333;
103
- margin-bottom: 2px;
104
- white-space: nowrap;
105
- }
106
-
107
- .panel .result ul li p
108
- {
109
- font-size: 11px;
110
- color: #333;
111
- margin-bottom: 2px;
112
- white-space: nowrap;
113
- }
114
-
115
- .panel .result ul li h1 i,
116
- .panel .result ul li p.snippet
117
- {
118
- color: #777;
119
- }
120
-
121
- .panel .result ul li b
122
- {
123
- color: #000;
124
- }
125
-
126
- .panel .result ul li.current
127
- {
128
- background: #C52F24;
129
- }
130
-
131
- .panel .result ul li.current h1,
132
- .panel .result ul li.current p
133
- {
134
- color: #D9D9D9;
135
- }
136
-
137
- .panel .result ul li.current h1 i,
138
- .panel .result ul li.current p.snippet
139
- {
140
- color: #ACACAC;
141
- }
142
-
143
- .panel .result ul li.current b
144
- {
145
- color: #FFF;
146
- }
147
-
148
-
149
- .panel .result ul li:hover,
150
- .panel .result ul li.selected
151
- {
152
- background: #d0d0d0;
153
- }
154
-
155
- .panel .result ul li.current:hover
156
- {
157
- background: #C52F24;
158
- }
159
-
160
- .panel .result ul li .badge
161
- {
162
- margin-right: 0.4em;
163
- margin-left: -0.2em;
164
- padding: 0 0.2em;
165
- color: #000;
166
- border-radius: 3px;
167
- }
168
-
169
- .panel .result ul li .badge_1
170
- {
171
- background: #ACDBF4;
172
- }
173
-
174
- .panel .result ul li.current .badge_1
175
- {
176
- background: #97BFD7;
177
- }
178
-
179
- .panel .result ul li .badge_2
180
- {
181
- background: #ACF3C3;
182
- }
183
-
184
- .panel .result ul li.current .badge_2
185
- {
186
- background: #98D7AC;
187
- }
188
-
189
- .panel .result ul li .badge_3
190
- {
191
- background: #E0F3AC;
192
- }
193
-
194
- .panel .result ul li.current .badge_3
195
- {
196
- background: #C4D798;
197
- }
198
-
199
- .panel .result ul li .badge_4
200
- {
201
- background: #D7CA98;
202
- }
203
-
204
- .panel .result ul li.current .badge_4
205
- {
206
- background: #A6B0AC;
207
- }
208
-
209
- .panel .result ul li .badge_5
210
- {
211
- background: #F3C8AC;
212
- }
213
-
214
- .panel .result ul li.current .badge_5
215
- {
216
- background: #D7B198;
217
- }
218
-
219
- .panel .result ul li .badge_6
220
- {
221
- background: #F3ACC3;
222
- }
223
-
224
- .panel .result ul li.current .badge_6
225
- {
226
- background: #D798AB;
227
- }
228
-
229
- /* Panel (end) */
@@ -1,53 +0,0 @@
1
- /* http://meyerweb.com/eric/tools/css/reset/ */
2
- /* v1.0 | 20080212 */
3
-
4
- html, body, div, span, applet, object, iframe,
5
- h1, h2, h3, h4, h5, h6, p, blockquote, pre,
6
- a, abbr, acronym, address, big, cite, code,
7
- del, dfn, em, font, img, ins, kbd, q, s, samp,
8
- small, strike, strong, sub, sup, tt, var,
9
- b, u, i, center,
10
- dl, dt, dd, ol, ul, li,
11
- fieldset, form, label, legend,
12
- table, caption, tbody, tfoot, thead, tr, th, td {
13
- margin: 0;
14
- padding: 0;
15
- border: 0;
16
- outline: 0;
17
- font-size: 100%;
18
- vertical-align: baseline;
19
- background: transparent;
20
- }
21
- body {
22
- line-height: 1;
23
- }
24
- ol, ul {
25
- list-style: none;
26
- }
27
- blockquote, q {
28
- quotes: none;
29
- }
30
- blockquote:before, blockquote:after,
31
- q:before, q:after {
32
- content: '';
33
- content: none;
34
- }
35
-
36
- /* remember to define focus styles! */
37
- :focus {
38
- outline: 0;
39
- }
40
-
41
- /* remember to highlight inserts somehow! */
42
- ins {
43
- text-decoration: none;
44
- }
45
- del {
46
- text-decoration: line-through;
47
- }
48
-
49
- /* tables still need 'cellspacing="0"' in the markup */
50
- table {
51
- border-collapse: collapse;
52
- border-spacing: 0;
53
- }
@@ -1,4 +0,0 @@
1
- module Inbox
2
- class ApplicationController < ::ApplicationController
3
- end
4
- end
@@ -1,52 +0,0 @@
1
- require 'mail'
2
- require 'pathname'
3
-
4
- module Inbox
5
- class EmailsController < ApplicationController
6
-
7
- layout 'inbox/inbox'
8
- before_filter do
9
- @mail = params[:mail]
10
- mailer = case ActionMailer::Base.delivery_method
11
- when :test
12
- Mail::TestMailer
13
- when :inbox
14
- Inbox::FileDelivery.new ActionMailer::Base.inbox_settings
15
- else
16
- raise "ArgumentError"
17
- end
18
-
19
- @emails = mailer.deliveries.select{|e| Array.wrap(e.to).any?{|m| m.include?(@mail) } }.reverse
20
- end
21
-
22
- def index
23
-
24
- end
25
-
26
- def show
27
- @email = @emails.find{|e| e.message_id == params[:id] }
28
- @body_part = @email
29
-
30
- if @email.multipart?
31
- format = "." + (params[:format] || :html).to_s
32
- content_type = Rack::Mime.mime_type(format)
33
- @body_part = @email.parts.find { |part| part.content_type.match(content_type) } || @email.parts.first
34
- end
35
- end
36
-
37
- def new
38
- @email = Email.new()
39
- end
40
-
41
- def create
42
- @email = Email.new(params[:email])
43
- if @email.valid?
44
- @email.deliver
45
- redirect_to :action => :index
46
- else
47
- render :new
48
- end
49
- end
50
-
51
- end
52
- end