commenteux 1.1.2 → 1.1.3
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.
- checksums.yaml +4 -4
- data/README.rdoc +19 -1
- data/app/assets/javascripts/commenteux/application.js.coffee +18 -16
- data/app/controllers/commenteux/notes_controller.rb +66 -18
- data/app/helpers/commenteux/notes_helper.rb +5 -3
- data/app/helpers/commenteux/users_helper.rb +11 -0
- data/app/views/commenteux/notes/index.html.erb +13 -4
- data/app/views/commenteux/notes/new.html.erb +11 -2
- data/config/cucumber.yml +2 -0
- data/lib/commenteux/version.rb +1 -1
- data/spec/controllers/commenteux/notes_controller_spec.rb +135 -25
- data/spec/dummy/app/models/dummy_model.rb +1 -1
- data/spec/dummy/app/models/dummy_no_role_model.rb +3 -0
- data/spec/dummy/config/locales/en.yml +2 -0
- data/spec/dummy/db/migrate/20150612102101_create_dummy_no_role_models.rb +10 -0
- data/spec/dummy/db/schema.rb +7 -1
- data/spec/dummy/log/development.log +14 -1142
- data/spec/dummy/log/test.log +2334 -47
- data/spec/dummy/tmp/cache/assets/test/sprockets/{af00b28760a09c0a6fd6fe584cbb839d → 0ea5157d06860900da5e91e9e9e5c5ae} +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/1961e9a889917e26f9b92f7e3678b9d8 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/{6e1da15bffb0094059fbe56ddb206c07 → 4c0092a53cfc0cf92b75c45eea8e0c9c} +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/{1957ff8c0d834428d5beca5bf51669b2 → d47c40f60d1e15e0c67f7f18a27a34e2} +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/db2a42fb4a2ea58dddbe086ea7cbd8c3 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/{9fbd3d6762f09cbefd55f6775cf9bebe → e8a6cef31bf116819ca4efd46d92cf23} +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/spec/dummy/tmp/capybara/capybara-201506160848572837541916.html +50 -0
- data/spec/dummy/tmp/capybara/capybara-201506160849002657266256.html +1 -0
- data/spec/dummy/tmp/capybara/capybara-201506160849005456490075.html +1 -0
- data/spec/dummy/tmp/capybara/capybara-201506160849006051257852.html +50 -0
- data/spec/dummy/tmp/capybara/capybara-201506160849009617311507.html +1 -0
- data/spec/dummy/tmp/capybara/capybara-201506160851032943006672.html +49 -0
- data/spec/dummy/tmp/capybara/capybara-201506160851033032648231.html +0 -0
- data/spec/dummy/tmp/capybara/capybara-201506160851033315623084.html +0 -0
- data/spec/dummy/tmp/capybara/capybara-201506160851038790165986.html +0 -0
- data/spec/dummy/tmp/capybara/capybara-201506160855125750188512.html +49 -0
- data/spec/dummy/tmp/capybara/capybara-20150616085514290901703.html +46 -0
- data/spec/dummy/tmp/capybara/capybara-201506160902299004854094.html +50 -0
- data/spec/dummy/tmp/capybara/capybara-201506160903467053840829.html +50 -0
- data/spec/dummy/tmp/capybara/capybara-201506160908177506055011.html +0 -0
- data/spec/dummy/tmp/capybara/capybara-201506160908405071238114.html +1 -0
- data/spec/dummy/tmp/capybara/capybara-201506160912457681959819.html +50 -0
- data/spec/dummy/tmp/capybara/capybara-201506160914361347465054.html +50 -0
- data/spec/dummy/tmp/capybara/capybara-201506160919206069916380.html +50 -0
- data/spec/dummy/tmp/capybara/capybara-201506160919495766672705.html +50 -0
- data/spec/dummy/tmp/capybara/capybara-201506160921512325089167.html +50 -0
- data/spec/dummy/tmp/capybara/capybara-201506160925246853939548.html +50 -0
- data/spec/dummy/tmp/capybara/capybara-20150616092631910193376.html +0 -0
- data/spec/dummy/tmp/capybara/capybara-201506160927256081238729.html +50 -0
- data/spec/dummy/tmp/capybara/capybara-201506160929587747316609.html +50 -0
- data/spec/dummy/tmp/capybara/capybara-201506160932376393920368.html +50 -0
- data/spec/dummy/tmp/capybara/capybara-201506160949097224889578.html +1 -0
- data/spec/dummy/tmp/capybara/capybara-201506161015165425533754.html +0 -0
- data/spec/dummy/tmp/capybara/capybara-201506161017005963312932.html +50 -0
- data/spec/dummy/tmp/capybara/capybara-201506161018087481300351.html +50 -0
- data/spec/dummy/tmp/capybara/capybara-201506161018585177596998.html +50 -0
- data/spec/dummy/tmp/capybara/capybara-201506161021234628016602.html +0 -0
- data/spec/dummy/tmp/capybara/capybara-201506161021316159221359.html +1 -0
- data/spec/dummy/tmp/capybara/capybara-201506161022216700801596.html +50 -0
- data/spec/dummy/tmp/capybara/capybara-201506161028066297282377.html +1 -0
- data/spec/dummy/tmp/capybara/capybara-201506161028161304521095.html +50 -0
- data/spec/dummy/tmp/capybara/capybara-201506161029222052955082.html +50 -0
- data/spec/dummy/tmp/capybara/capybara-201506161030551952925736.html +50 -0
- data/spec/dummy/tmp/capybara/capybara-201506170925205207947945.html +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-08-48-57.908.html +50 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-08-48-57.908.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-08-49-00.472.html +50 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-08-49-00.472.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-08-51-03.616.html +49 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-08-51-03.616.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-08-55-12.417.html +49 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-08-55-12.417.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-08-55-14.688.html +46 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-08-55-14.688.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-09-02-29.270.html +50 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-09-02-29.270.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-09-03-46.063.html +50 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-09-03-46.063.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-09-12-46.560.html +50 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-09-12-46.560.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-09-14-36.456.html +50 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-09-14-36.456.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-09-19-20.502.html +50 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-09-19-20.502.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-09-19-49.861.html +50 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-09-19-49.861.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-09-21-51.126.html +50 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-09-21-51.126.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-09-25-24.066.html +50 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-09-25-24.066.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-09-27-25.369.html +50 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-09-27-25.369.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-09-29-58.010.html +50 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-09-29-58.010.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-09-32-37.472.html +50 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-09-32-37.472.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-10-17-00.415.html +50 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-10-17-00.415.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-10-18-08.307.html +50 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-10-18-08.307.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-10-18-58.249.html +50 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-10-18-58.249.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-10-22-21.961.html +50 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-10-22-21.961.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-10-28-16.319.html +50 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-10-28-16.319.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-10-29-22.339.html +50 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-10-29-22.339.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-10-30-55.591.html +50 -0
- data/spec/dummy/tmp/capybara/screenshot_2015-06-16-10-30-55.591.png +0 -0
- data/spec/fabricators/comments_frabricator.rb +2 -0
- data/spec/fabricators/dummy_no_role_models_fabricator.rb +3 -0
- data/spec/helpers/commenteux/notes_helper_spec.rb +13 -5
- data/spec/helpers/commenteux/users_helper_spec.rb +14 -0
- metadata +189 -42
- data/spec/dummy/tmp/cache/assets/development/sprockets/078e8a1b7bb61498dbae0070239e8f4c +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/1957ff8c0d834428d5beca5bf51669b2 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/1961e9a889917e26f9b92f7e3678b9d8 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/6e1da15bffb0094059fbe56ddb206c07 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/9fbd3d6762f09cbefd55f6775cf9bebe +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/af00b28760a09c0a6fd6fe584cbb839d +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/d72f8bdb1dcb7ea80d1869cb2c6ebbd3 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/db2a42fb4a2ea58dddbe086ea7cbd8c3 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/ec516d6bcfdc219883f1ddb03b5a635b +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/d72f8bdb1dcb7ea80d1869cb2c6ebbd3 +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f1e671df55b878d7fbe5a58b5f44de2a38142503
|
|
4
|
+
data.tar.gz: 030a6567a0510f321234ab9a424f58244eea358c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e5ef9c7633f91ad572074481bb8f9e0f28a10cca5e82eed9776ece971bf5c2f410d1727c2cb2395e389f05346d5ee196b9e619e9c20f0ed9476992bf73bc5da6
|
|
7
|
+
data.tar.gz: 8917b3a7be7a7c277c30193a870fcc9e81aa825a3f8fe179e9764debe52a2977ad2ec73c5330f5790b522e446830561d9e2141e4ba3ec47d725492d83ad8f887
|
data/README.rdoc
CHANGED
|
@@ -33,6 +33,13 @@ The routes that will be available are :
|
|
|
33
33
|
where :resource is the name of your model (you can use namespace)
|
|
34
34
|
|
|
35
35
|
|
|
36
|
+
==== Model
|
|
37
|
+
Add acts_as_commentable in your model who will have comments
|
|
38
|
+
|
|
39
|
+
acts_as_commentable :private, :public
|
|
40
|
+
|
|
41
|
+
:private, :public are a example if specific role needed.
|
|
42
|
+
|
|
36
43
|
====Include the needed javascript file in your application.js or application.js.coffee
|
|
37
44
|
|
|
38
45
|
==== Javascript
|
|
@@ -43,9 +50,11 @@ where :resource is the name of your model (you can use namespace)
|
|
|
43
50
|
Call url of commenteux screens, for exemple, like that:
|
|
44
51
|
|
|
45
52
|
<%= link_to "<i class='icon-file-text text-blue'></i> Notes".html_safe,
|
|
46
|
-
"/commenteux/client::contract/#{@contract.id}?parent_div=ajax_target",
|
|
53
|
+
"/commenteux/client::contract/#{@contract.id}?parent_div=ajax_target&roles=public,private",
|
|
47
54
|
:id => "notes_tab", :data => {:remote => true} %>
|
|
48
55
|
|
|
56
|
+
where roles is obligated when specific roles are declared in the model.
|
|
57
|
+
|
|
49
58
|
With a binding like that in your application.js
|
|
50
59
|
|
|
51
60
|
$(document).delegate '#notes_tab', 'ajax:success', (e, data, status, xhr) ->
|
|
@@ -53,6 +62,13 @@ With a binding like that in your application.js
|
|
|
53
62
|
$('#notes_tab_header').addClass('active')
|
|
54
63
|
$('#ajax_target').html(xhr.responseText)
|
|
55
64
|
|
|
65
|
+
==== Rails Internationalization (en.yml)
|
|
66
|
+
If specific roles of acts_as_commentable are declared in model, declare their labels under en: like that:
|
|
67
|
+
|
|
68
|
+
en:
|
|
69
|
+
public: "Administrator"
|
|
70
|
+
private: "Delivery man"
|
|
71
|
+
|
|
56
72
|
|
|
57
73
|
== Credits
|
|
58
74
|
|
|
@@ -64,6 +80,8 @@ With a binding like that in your application.js
|
|
|
64
80
|
|
|
65
81
|
{Rémi Gagnon}[http://github.com/rgagnon]
|
|
66
82
|
|
|
83
|
+
{Nicolas Demers}[http://github.com/nickdemers]
|
|
84
|
+
|
|
67
85
|
== More
|
|
68
86
|
|
|
69
87
|
http://www.groupefungo.ca
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
|
|
2
1
|
$ () ->
|
|
3
|
-
|
|
4
2
|
$(document).delegate '#new_notes_link', 'click', (e) ->
|
|
5
3
|
#console.log('new_notes_link click')
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
parent= $(@).data('parent')
|
|
9
|
-
resource =
|
|
4
|
+
e.stopPropagation()
|
|
5
|
+
e.preventDefault()
|
|
6
|
+
parent = $(@).data('parent')
|
|
7
|
+
resource = $(@).data('resource')
|
|
10
8
|
id = $(@).data('id')
|
|
9
|
+
roles = $(@).data('roles')
|
|
11
10
|
#console.log('parent_div = ' + parent)
|
|
12
11
|
#console.log('resource = ' + resource)
|
|
13
12
|
#console.log('resource_id = ' + id)
|
|
@@ -17,12 +16,13 @@ $ () ->
|
|
|
17
16
|
dataType: "html"
|
|
18
17
|
data:
|
|
19
18
|
"parent_div": parent
|
|
19
|
+
"roles": roles
|
|
20
20
|
success: (returnData) ->
|
|
21
21
|
#console.log('success')
|
|
22
22
|
#console.log("#" + parent)
|
|
23
23
|
#console.log(returnData)
|
|
24
|
-
if parent
|
|
25
|
-
$("#" + parent
|
|
24
|
+
if parent and parent != 'null'
|
|
25
|
+
$("#" + parent).html(returnData)
|
|
26
26
|
else
|
|
27
27
|
#console.log('no parent')
|
|
28
28
|
$('body').html(returnData)
|
|
@@ -33,22 +33,23 @@ $ () ->
|
|
|
33
33
|
@
|
|
34
34
|
|
|
35
35
|
$(document).delegate '#new_comments', 'ajax:success', (e, data, status, xhr) ->
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
e.stopPropagation()
|
|
37
|
+
e.preventDefault()
|
|
38
38
|
#console.log('new_comments ajax success')
|
|
39
39
|
parent = $('#new_comments').attr('data-parent')
|
|
40
|
-
if parent
|
|
40
|
+
if parent and parent != 'null'
|
|
41
41
|
$('#' + parent).html(xhr.responseText)
|
|
42
42
|
else
|
|
43
43
|
$('body').html(xhr.responseText)
|
|
44
44
|
|
|
45
45
|
$(document).delegate '#new_notes_cancelled', 'click', (e) ->
|
|
46
46
|
#console.log('new_notes_cancelled click')
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
parent= $(@).data('parent')
|
|
50
|
-
resource =
|
|
47
|
+
e.stopPropagation()
|
|
48
|
+
e.preventDefault()
|
|
49
|
+
parent = $(@).data('parent')
|
|
50
|
+
resource = $(@).data('resource')
|
|
51
51
|
id = $(@).data('id')
|
|
52
|
+
roles = $(@).data('roles')
|
|
52
53
|
#console.log('parent_div = ' + parent)
|
|
53
54
|
#console.log('resource = ' + resource)
|
|
54
55
|
#console.log('resource_id = ' + id)
|
|
@@ -58,12 +59,13 @@ $ () ->
|
|
|
58
59
|
dataType: "html"
|
|
59
60
|
data:
|
|
60
61
|
"parent_div": parent
|
|
62
|
+
"roles": roles
|
|
61
63
|
success: (returnData) ->
|
|
62
64
|
#console.log('success')
|
|
63
65
|
#console.log("#" + parent)
|
|
64
66
|
#console.log(returnData)
|
|
65
67
|
if parent
|
|
66
|
-
$("#" + parent
|
|
68
|
+
$("#" + parent).html(returnData)
|
|
67
69
|
else
|
|
68
70
|
#console.log('no parent')
|
|
69
71
|
$('body').html(returnData)
|
|
@@ -2,16 +2,30 @@ require_dependency "commenteux/application_controller"
|
|
|
2
2
|
|
|
3
3
|
module Commenteux
|
|
4
4
|
class NotesController < ApplicationController
|
|
5
|
+
helper UsersHelper
|
|
6
|
+
|
|
7
|
+
def index
|
|
8
|
+
resource = fetch_resource
|
|
9
|
+
@roles = params[:roles]
|
|
10
|
+
list_roles = manage_roles_parameter(params[:roles])
|
|
11
|
+
@comments = get_comments(resource, list_roles)
|
|
12
|
+
@parent_div = params[:parent_div]
|
|
13
|
+
|
|
14
|
+
if request.xhr?
|
|
15
|
+
render :layout => false
|
|
16
|
+
end
|
|
5
17
|
|
|
6
|
-
def comments_params
|
|
7
|
-
comments_permit_fields = [:title, :comment, :user_id]
|
|
8
|
-
params.require(:comments).permit(
|
|
9
|
-
comments_permit_fields)
|
|
10
18
|
end
|
|
11
19
|
|
|
12
|
-
def
|
|
20
|
+
def new
|
|
13
21
|
resource = fetch_resource
|
|
14
|
-
@
|
|
22
|
+
@roles = params[:roles]
|
|
23
|
+
@list_roles = manage_roles_parameter(params[:roles])
|
|
24
|
+
role = nil
|
|
25
|
+
if @list_roles and @list_roles.length > 0
|
|
26
|
+
role = @list_roles[0][0]
|
|
27
|
+
end
|
|
28
|
+
@comments = get_comment_model_method(resource, role).new
|
|
15
29
|
@parent_div = params[:parent_div]
|
|
16
30
|
|
|
17
31
|
if request.xhr?
|
|
@@ -20,6 +34,25 @@ module Commenteux
|
|
|
20
34
|
|
|
21
35
|
end
|
|
22
36
|
|
|
37
|
+
def create
|
|
38
|
+
resource = fetch_resource
|
|
39
|
+
comments_params
|
|
40
|
+
get_comment_model_method(resource, params[:comments][:role]).create(comments_params)
|
|
41
|
+
@parent_div = params[:parent_div]
|
|
42
|
+
roles = ''
|
|
43
|
+
if params[:roles]
|
|
44
|
+
roles = '&roles=' + params[:roles]
|
|
45
|
+
end
|
|
46
|
+
redirect_to "/commenteux/#{@resource.downcase}/#{@resource_id}?parent_div=" + @parent_div + roles
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
protected
|
|
50
|
+
def comments_params
|
|
51
|
+
comments_permit_fields = [:title, :comment, :user_id, :role, :roles]
|
|
52
|
+
params.require(:comments).permit(
|
|
53
|
+
comments_permit_fields)
|
|
54
|
+
end
|
|
55
|
+
|
|
23
56
|
def fetch_resource
|
|
24
57
|
@resource = params[:resource]
|
|
25
58
|
@class_name = classify_namespace(params[:resource])
|
|
@@ -41,22 +74,37 @@ module Commenteux
|
|
|
41
74
|
const
|
|
42
75
|
end
|
|
43
76
|
|
|
44
|
-
def
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
77
|
+
def get_comments(resource, roles)
|
|
78
|
+
comments = []
|
|
79
|
+
if roles and roles.length > 0
|
|
80
|
+
roles.each do |role|
|
|
81
|
+
comments += get_comment_model_method(resource, role[0]).all
|
|
82
|
+
end
|
|
83
|
+
else
|
|
84
|
+
comments = get_comment_model_method(resource, nil).all
|
|
51
85
|
end
|
|
86
|
+
comments
|
|
87
|
+
end
|
|
52
88
|
|
|
89
|
+
def get_comment_model_method(resource, role)
|
|
90
|
+
if role
|
|
91
|
+
role_comments = role + "_comments"
|
|
92
|
+
else
|
|
93
|
+
role_comments = "comments"
|
|
94
|
+
end
|
|
95
|
+
resource.send(role_comments)
|
|
53
96
|
end
|
|
54
97
|
|
|
55
|
-
def
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
98
|
+
def manage_roles_parameter(roles_parameter)
|
|
99
|
+
roles = []
|
|
100
|
+
if roles_parameter and roles_parameter.include?(',')
|
|
101
|
+
splitted = roles_parameter.split(',')
|
|
102
|
+
for str in splitted do
|
|
103
|
+
values = [str, I18n.t(str)]
|
|
104
|
+
roles << values
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
roles
|
|
60
108
|
end
|
|
61
109
|
|
|
62
110
|
end
|
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
<table class="table">
|
|
3
3
|
<thead>
|
|
4
4
|
<tr>
|
|
5
|
-
<th>Commentaire</th>
|
|
6
|
-
<th>Fait par</th>
|
|
7
|
-
<th>Date</th>
|
|
5
|
+
<th class="col-md-6">Commentaire</th>
|
|
6
|
+
<th class="col-md-2">Fait par</th>
|
|
7
|
+
<th class="col-md-2">Date</th>
|
|
8
|
+
<% if display_role?(@roles) %>
|
|
9
|
+
<th class="col-md-2">Rôle</th>
|
|
10
|
+
<% end %>
|
|
8
11
|
</tr>
|
|
9
12
|
</thead>
|
|
10
13
|
|
|
@@ -19,6 +22,11 @@
|
|
|
19
22
|
<td>
|
|
20
23
|
<%= comment.created_at.in_time_zone('Eastern Time (US & Canada)').strftime("%Y-%m-%d %H:%M:%S") %>
|
|
21
24
|
</td>
|
|
25
|
+
<% if display_role?(@roles) %>
|
|
26
|
+
<td>
|
|
27
|
+
<%= I18n.t(comment.role) %>
|
|
28
|
+
</td>
|
|
29
|
+
<% end %>
|
|
22
30
|
</tr>
|
|
23
31
|
<% end %>
|
|
24
32
|
</table>
|
|
@@ -27,4 +35,5 @@
|
|
|
27
35
|
<%= link_to "Nouveau", "#", :id => "new_notes_link", :class => 'btn btn-primary',
|
|
28
36
|
:data => {:parent => @parent_div,
|
|
29
37
|
:resource => @resource.downcase,
|
|
30
|
-
:id => @resource_id
|
|
38
|
+
:id => @resource_id,
|
|
39
|
+
:roles => @roles} %>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<%= simple_form_for @comments, as: 'comments', url: "/commenteux/#{@resource.downcase}/#{@resource_id}?parent_div=#{@parent_div}",
|
|
1
|
+
<%= simple_form_for @comments, as: 'comments', url: "/commenteux/#{@resource.downcase}/#{@resource_id}?parent_div=#{@parent_div}&roles=#{@roles.blank? ? '' : @roles}",
|
|
2
2
|
:remote => true, :data => {:parent => @parent_div}, wrapper: :bootstrap do |c| %>
|
|
3
3
|
|
|
4
4
|
<div style="display:none">
|
|
@@ -11,6 +11,14 @@
|
|
|
11
11
|
</div>
|
|
12
12
|
<% end %>
|
|
13
13
|
|
|
14
|
+
<% unless @list_roles.blank? %>
|
|
15
|
+
|
|
16
|
+
<%= c.input :role, collection: @list_roles, as: :radio_buttons, :label_method => :last, :value_method => :first,
|
|
17
|
+
:input_html => {:data => {:required => true}}, label: 'Rôle',
|
|
18
|
+
:item_wrapper_class => 'inline' %>
|
|
19
|
+
|
|
20
|
+
<% end %>
|
|
21
|
+
|
|
14
22
|
<div class="form-actions form-actions-padding-sm">
|
|
15
23
|
<div class="row">
|
|
16
24
|
<div class="col-md-10 col-md-offset-5">
|
|
@@ -22,7 +30,8 @@
|
|
|
22
30
|
<%= link_to "Annuler", "#", :id => "new_notes_cancelled", :class => 'btn',
|
|
23
31
|
:data => {:parent => @parent_div,
|
|
24
32
|
:resource => @resource.downcase,
|
|
25
|
-
:id => @resource_id
|
|
33
|
+
:id => @resource_id,
|
|
34
|
+
:roles => @roles} %>
|
|
26
35
|
|
|
27
36
|
</div>
|
|
28
37
|
</div>
|
data/config/cucumber.yml
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
|
|
3
3
|
rerun_opts = rerun.to_s.strip.empty? ? "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
|
|
4
4
|
std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags ~@wip"
|
|
5
|
+
#std_opts = "-r features/support/ -r features/step_definitions --format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags ~@wip"
|
|
5
6
|
%>
|
|
6
7
|
default: <%= std_opts %> features
|
|
7
8
|
wip: --tags @wip:3 --wip features
|
|
8
9
|
rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip
|
|
10
|
+
|
data/lib/commenteux/version.rb
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
|
+
|
|
3
4
|
module Commenteux
|
|
4
|
-
describe NotesController do
|
|
5
|
+
describe Commenteux::NotesController do
|
|
5
6
|
routes { Commenteux::Engine.routes }
|
|
6
7
|
|
|
7
8
|
before(:each) do
|
|
@@ -11,22 +12,40 @@ module Commenteux
|
|
|
11
12
|
|
|
12
13
|
describe "GET 'index'" do
|
|
13
14
|
|
|
14
|
-
it "doit fetché la ressource passé en paramètre, le layout de l'application hôte sera
|
|
15
|
+
it "doit fetché la ressource passé en paramètre, le layout de l'application hôte sera utilisé, avec le paramètre rôle" do
|
|
16
|
+
comment_comments = double("comment_comments")
|
|
17
|
+
delivery_man_comments = double("delivery_man_comments")
|
|
18
|
+
list_roles = [comment_comments, delivery_man_comments]
|
|
19
|
+
|
|
20
|
+
expect(DummyModel).to receive(:find).with('1') {@dummy_model}
|
|
15
21
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
get 'index',
|
|
22
|
+
expect(subject).to receive(:manage_roles_parameter).with('comments,delivery_man') {list_roles}
|
|
23
|
+
expect(subject).to receive(:get_comments).with(@dummy_model, list_roles) {[comment_comments, delivery_man_comments]}
|
|
24
|
+
|
|
25
|
+
get 'index', resource: 'dummy_model', resource_id: '1', roles: 'comments,delivery_man'
|
|
20
26
|
|
|
21
27
|
assert_template layout: 'application'
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "doit fetché la ressource passé en paramètre, le layout de l'application hôte sera utilisé, sans le paramètre rôle" do
|
|
31
|
+
comment_comments = double("comment_comments")
|
|
32
|
+
delivery_man_comments = double("delivery_man_comments")
|
|
33
|
+
|
|
34
|
+
expect(DummyModel).to receive(:find).with('1') {@dummy_model}
|
|
35
|
+
|
|
36
|
+
expect(subject).to receive(:manage_roles_parameter).with(nil) {[]}
|
|
37
|
+
expect(subject).to receive(:get_comments).with(@dummy_model, []) {[comment_comments, delivery_man_comments]}
|
|
22
38
|
|
|
39
|
+
get 'index', resource: 'dummy_model', resource_id: '1'
|
|
40
|
+
|
|
41
|
+
assert_template layout: 'application'
|
|
23
42
|
end
|
|
24
43
|
|
|
25
44
|
it "si l'appel provient d'un call Ajax, on n'affiche pas de layout" do
|
|
26
45
|
|
|
27
|
-
DummyModel.
|
|
28
|
-
@dummy_model.
|
|
29
|
-
@comments.
|
|
46
|
+
expect(DummyModel).to receive(:find).with('1') {@dummy_model}
|
|
47
|
+
expect(@dummy_model).to receive(:comments) {@comments}
|
|
48
|
+
expect(@comments).to receive(:all) {[]}
|
|
30
49
|
xhr :get, 'index', 'resource' => 'dummy_model', 'resource_id' => '1'
|
|
31
50
|
|
|
32
51
|
assert_template layout: false
|
|
@@ -37,11 +56,11 @@ module Commenteux
|
|
|
37
56
|
|
|
38
57
|
describe "GET 'new'" do
|
|
39
58
|
|
|
40
|
-
it "doit fetché la ressource en paramètre et préparé le nouveau commentaire a saisir, le layout de l'application hôte sera
|
|
59
|
+
it "doit fetché la ressource en paramètre et préparé le nouveau commentaire a saisir, le layout de l'application hôte sera utilisé, sans le paramètre rôle" do
|
|
41
60
|
|
|
42
|
-
subject.
|
|
43
|
-
@dummy_model.
|
|
44
|
-
@comments.
|
|
61
|
+
expect(subject).to receive(:fetch_resource) {@dummy_model}
|
|
62
|
+
expect(@dummy_model).to receive(:send).with('comments') {@comments}
|
|
63
|
+
expect(@comments).to receive(:new)
|
|
45
64
|
|
|
46
65
|
get 'new', 'resource' => 'dummy_model', 'resource_id' => '1'
|
|
47
66
|
|
|
@@ -49,11 +68,23 @@ module Commenteux
|
|
|
49
68
|
|
|
50
69
|
end
|
|
51
70
|
|
|
71
|
+
it "doit fetché la ressource en paramètre et préparé le nouveau commentaire a saisir, le layout de l'application hôte sera utilisé, avec le paramètre rôle" do
|
|
72
|
+
|
|
73
|
+
expect(subject).to receive(:fetch_resource) {@dummy_model}
|
|
74
|
+
expect(@dummy_model).to receive(:send).with('comments_comments') {@comments}
|
|
75
|
+
expect(@comments).to receive(:new)
|
|
76
|
+
|
|
77
|
+
get 'new', 'resource' => 'dummy_model', 'resource_id' => '1', 'roles' => 'comments,delivery_man'
|
|
78
|
+
|
|
79
|
+
assert_template layout: 'application'
|
|
80
|
+
|
|
81
|
+
end
|
|
82
|
+
|
|
52
83
|
it "si l'appel provient d'un call Ajax, on n'affiche pas de layout" do
|
|
53
84
|
|
|
54
|
-
subject.
|
|
55
|
-
@dummy_model.
|
|
56
|
-
@comments.
|
|
85
|
+
expect(subject).to receive(:fetch_resource) {@dummy_model}
|
|
86
|
+
expect(@dummy_model).to receive(:send).with('comments') {@comments}
|
|
87
|
+
expect(@comments).to receive(:new)
|
|
57
88
|
|
|
58
89
|
xhr :get, 'new', 'resource' => 'dummy_model', 'resource_id' => '1'
|
|
59
90
|
|
|
@@ -65,30 +96,109 @@ module Commenteux
|
|
|
65
96
|
|
|
66
97
|
describe "POST 'create'" do
|
|
67
98
|
|
|
68
|
-
it "Doit créer le commentaire saisi sur la ressource en paramètre" do
|
|
99
|
+
it "Doit créer le commentaire saisi sur la ressource en paramètre, rôle spécifié en paramètre" do
|
|
100
|
+
|
|
101
|
+
expect(DummyModel).to receive(:find).with('1') {@dummy_model}
|
|
102
|
+
expect(@dummy_model).to receive(:send).with('delivery_man_comments') {@comments}
|
|
103
|
+
expect(@comments).to receive(:create).with({ 'title' => 'Titre', 'comment' => 'Commentaire', 'role' => 'delivery_man'})
|
|
69
104
|
|
|
70
|
-
|
|
71
|
-
@dummy_model.stub(:comments) { @comments }
|
|
72
|
-
@comments.should_receive(:create).with( { 'title' => 'Titre', 'comment' => 'Commentaire'} )
|
|
105
|
+
post 'create', 'resource' => 'dummy_model', 'resource_id' => '1', 'parent_div' => 'parent_div', 'comments' => { 'title' => 'Titre', 'comment' => 'Commentaire', 'role' => 'delivery_man'}, 'roles' => 'comments,delivery_man'
|
|
73
106
|
|
|
74
|
-
|
|
107
|
+
expect(subject).to redirect_to("/commenteux/dummy_model/1?parent_div=parent_div&roles=comments,delivery_man")
|
|
75
108
|
|
|
76
109
|
end
|
|
77
110
|
|
|
111
|
+
it "Doit créer le commentaire saisi sur la ressource en paramètre, rôle non spécifié en paramètre" do
|
|
112
|
+
|
|
113
|
+
expect(DummyModel).to receive(:find).with('1') {@dummy_model}
|
|
114
|
+
expect(@dummy_model).to receive(:send).with('comments') {@comments}
|
|
115
|
+
expect(@comments).to receive(:create).with({ 'title' => 'Titre', 'comment' => 'Commentaire'})
|
|
116
|
+
|
|
117
|
+
post 'create', 'resource' => 'dummy_model', 'resource_id' => '1', 'parent_div' => 'parent_div', 'comments' => { 'title' => 'Titre', 'comment' => 'Commentaire'}
|
|
118
|
+
|
|
119
|
+
expect(subject).to redirect_to("/commenteux/dummy_model/1?parent_div=parent_div")
|
|
120
|
+
end
|
|
78
121
|
end
|
|
79
122
|
|
|
80
123
|
describe "Comportement de la méthode 'classify_namespace'" do
|
|
81
124
|
|
|
82
125
|
it "s'il n'y a pas de namespace, on fait un simple classify" do
|
|
83
|
-
|
|
84
|
-
|
|
126
|
+
dummyModel = controller.send(:classify_namespace, 'dummy_model')
|
|
127
|
+
expect(dummyModel).to eq 'DummyModel'
|
|
128
|
+
|
|
129
|
+
customer = controller.send(:classify_namespace, 'customer')
|
|
130
|
+
expect(customer).to eq 'Customer'
|
|
85
131
|
end
|
|
86
132
|
|
|
87
133
|
it "s'il y a un namespace, on fait un classify sur tous les éléments" do
|
|
88
|
-
|
|
89
|
-
|
|
134
|
+
customer = controller.send(:classify_namespace, 'client::customers')
|
|
135
|
+
expect(customer).to eq 'Client::Customer'
|
|
136
|
+
|
|
137
|
+
dummyModel = controller.send(:classify_namespace, 'namespace::dummy_model')
|
|
138
|
+
expect(dummyModel).to eq 'Namespace::DummyModel'
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
describe "Comportement de la méthode 'get_comments'" do
|
|
144
|
+
|
|
145
|
+
it "s'il y a plusieurs roles de spécifiés" do
|
|
146
|
+
comments1 = double("comments1")
|
|
147
|
+
comments2 = double("comments2")
|
|
148
|
+
|
|
149
|
+
expect(@dummy_model).to receive(:send).with('comments_comments') {comments1}
|
|
150
|
+
expect(comments1).to receive(:all) {[comments1]}
|
|
151
|
+
|
|
152
|
+
expect(@dummy_model).to receive(:send).with('delivery_man_comments') {comments2}
|
|
153
|
+
expect(comments2).to receive(:all) {[comments2]}
|
|
154
|
+
|
|
155
|
+
comments = controller.send(:get_comments, @dummy_model, [['comments','Admin'],['delivery_man','Livreur']])
|
|
156
|
+
|
|
157
|
+
expect(comments[0]).to eq comments1
|
|
158
|
+
expect(comments[1]).to eq comments2
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
it "s'il y a aucun role de spécifié" do
|
|
162
|
+
comments1 = double("comments1")
|
|
163
|
+
|
|
164
|
+
expect(@dummy_model).to receive(:comments) {comments1}
|
|
165
|
+
expect(comments1).to receive(:all) {[comments1]}
|
|
166
|
+
|
|
167
|
+
comments = controller.send(:get_comments, @dummy_model, nil)
|
|
168
|
+
|
|
169
|
+
expect(comments[0]).to eq comments1
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
describe "Comportement de la méthode 'get_comment_method'" do
|
|
175
|
+
|
|
176
|
+
it "s'il y a un rôle spécifié" do
|
|
177
|
+
expect(@dummy_model).to receive(:send).with("delivery_man_comments") {@comments}
|
|
178
|
+
controller.send(:get_comment_model_method, @dummy_model, "delivery_man")
|
|
90
179
|
end
|
|
91
180
|
|
|
181
|
+
it "s'il n'y a pas de rôle spécifié" do
|
|
182
|
+
expect(@dummy_model).to receive(:send).with("comments") {@comments}
|
|
183
|
+
controller.send(:get_comment_model_method, @dummy_model, nil)
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
describe "Comportement de la méthode 'manage_roles_parameter'" do
|
|
189
|
+
it "avec paramètres" do
|
|
190
|
+
list_roles = controller.send(:manage_roles_parameter, 'comments,delivery_man')
|
|
191
|
+
|
|
192
|
+
expect(list_roles).to eq [['comments','Administrateur'],['delivery_man','Livreur']]
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
describe "Comportement de la méthode 'manage_roles_parameter'" do
|
|
197
|
+
it "sans paramètre" do
|
|
198
|
+
list_roles = controller.send(:manage_roles_parameter, nil)
|
|
199
|
+
|
|
200
|
+
expect(list_roles).to eq []
|
|
201
|
+
end
|
|
92
202
|
end
|
|
93
203
|
|
|
94
204
|
end
|
data/spec/dummy/db/schema.rb
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
#
|
|
12
12
|
# It's strongly recommended that you check this file into your version control system.
|
|
13
13
|
|
|
14
|
-
ActiveRecord::Schema.define(version:
|
|
14
|
+
ActiveRecord::Schema.define(version: 20150612102101) do
|
|
15
15
|
|
|
16
16
|
create_table "comments", force: true do |t|
|
|
17
17
|
t.string "title", limit: 50, default: ""
|
|
@@ -34,4 +34,10 @@ ActiveRecord::Schema.define(version: 20140312000846) do
|
|
|
34
34
|
t.datetime "updated_at"
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
+
create_table "dummy_no_role_models", force: true do |t|
|
|
38
|
+
t.text "text"
|
|
39
|
+
t.datetime "created_at"
|
|
40
|
+
t.datetime "updated_at"
|
|
41
|
+
end
|
|
42
|
+
|
|
37
43
|
end
|