Commit 3c41ae142f01a9aac524149665e223f629db14c0
Exists in
profile_api_improvements
and in
1 other branch
Merge branch 'field-of-interest' into 'master'
Ticket #85: The person_tags plugin now exposes a PersonTagsBlock The `person_tags` plugin exposes a block now, so people can show their interests in their profiles.  I also renamed `interest` to `tag` because it was in conflict with other Noosfero stuff. See merge request !963
Showing
12 changed files
with
85 additions
and
13 deletions
Show diff stats
plugins/person_tags/features/person_tags.feature
... | ... | @@ -10,9 +10,9 @@ Background: |
10 | 10 | Scenario: add tags to person |
11 | 11 | Given I am on joao's control panel |
12 | 12 | And I follow "Edit Profile" |
13 | - When I fill in "profile_data_interest_list" with "linux,debian" | |
13 | + When I fill in "profile_data_tag_list" with "linux,debian" | |
14 | 14 | And I press "Save" |
15 | 15 | And I go to joao's control panel |
16 | 16 | And I follow "Edit Profile" |
17 | - Then the "profile_data_interest_list" field should contain "linux" | |
18 | - And the "profile_data_interest_list" field should contain "debian" | |
17 | + Then the "profile_data_tag_list" field should contain "linux" | |
18 | + And the "profile_data_tag_list" field should contain "debian" | ... | ... |
plugins/person_tags/lib/ext/person.rb
plugins/person_tags/lib/person_tags_plugin.rb
... | ... | @@ -19,4 +19,18 @@ class PersonTagsPlugin < Noosfero::Plugin |
19 | 19 | def self.api_mount_points |
20 | 20 | [PersonTagsPlugin::API] |
21 | 21 | end |
22 | + | |
23 | + def self.extra_blocks | |
24 | + { | |
25 | + PersonTagsPlugin::InterestsBlock => { type: Person } | |
26 | + } | |
27 | + end | |
28 | + | |
29 | + def self.has_admin_url? | |
30 | + false | |
31 | + end | |
32 | + | |
33 | + def stylesheet? | |
34 | + true | |
35 | + end | |
22 | 36 | end | ... | ... |
plugins/person_tags/lib/person_tags_plugin/api.rb
plugins/person_tags/lib/person_tags_plugin/interests_block.rb
0 → 100644
... | ... | @@ -0,0 +1,29 @@ |
1 | +class PersonTagsPlugin::InterestsBlock < Block | |
2 | + def view_title | |
3 | + self.default_title | |
4 | + end | |
5 | + | |
6 | + def tags | |
7 | + owner.tag_list | |
8 | + end | |
9 | + | |
10 | + def extra_option | |
11 | + {} | |
12 | + end | |
13 | + | |
14 | + def self.description | |
15 | + _('Fields of Interest') | |
16 | + end | |
17 | + | |
18 | + def help | |
19 | + _('Things that this person is interested in') | |
20 | + end | |
21 | + | |
22 | + def default_title | |
23 | + _('Fields of Interest') | |
24 | + end | |
25 | + | |
26 | + def self.expire_on | |
27 | + { profile: [:profile] } | |
28 | + end | |
29 | +end | ... | ... |
plugins/person_tags/test/unit/api_test.rb
... | ... | @@ -10,7 +10,7 @@ class APITest < ActiveSupport::TestCase |
10 | 10 | |
11 | 11 | should 'return tags for a person' do |
12 | 12 | person = create_user('person').person |
13 | - person.interest_list.add('linux') | |
13 | + person.tag_list.add('linux') | |
14 | 14 | person.save! |
15 | 15 | person.reload |
16 | 16 | get "/api/v1/people/#{person.id}/tags?#{params.to_query}" | ... | ... |
plugins/person_tags/test/unit/person_tags_test.rb
... | ... | @@ -7,10 +7,10 @@ class PersonTagsPluginTest < ActiveSupport::TestCase |
7 | 7 | @environment.enable_plugin(PersonTagsPlugin) |
8 | 8 | end |
9 | 9 | |
10 | - should 'have interests' do | |
10 | + should 'have tags' do | |
11 | 11 | person = create_user('person').person |
12 | - assert_equal [], person.interests | |
13 | - person.interest_list.add('linux') | |
14 | - assert_equal ['linux'], person.interest_list | |
12 | + assert_equal [], person.tags | |
13 | + person.tag_list.add('linux') | |
14 | + assert_equal ['linux'], person.tag_list | |
15 | 15 | end |
16 | 16 | end | ... | ... |
... | ... | @@ -0,0 +1,14 @@ |
1 | +<%= block_title(block.view_title, block.subtitle) %> | |
2 | + | |
3 | +<div class="person-tags-block"> | |
4 | + <% unless block.tags.size == 0 %> | |
5 | + <ul> | |
6 | + <% block.tags.each do |tag| %> | |
7 | + <li><%= tag %></li> | |
8 | + <% end %> | |
9 | + </ul> | |
10 | + <% else %> | |
11 | + <div class="person-tags-block-none"><%= c_('None') %></div> | |
12 | + <% end %> | |
13 | + <br style="clear:both" /> | |
14 | +</div> | ... | ... |
plugins/person_tags/views/profile-editor-extras.html.erb
1 | 1 | <h2><%= _('Select your fields of interest') %></h2> |
2 | -<%= text_field_tag('profile_data[interest_list]', context.profile.interest_list.join(','), size: 64) %> | |
2 | +<%= text_field_tag('profile_data[tag_list]', context.profile.tag_list.join(','), size: 64) %> | |
3 | 3 | <br /> |
4 | 4 | <%= content_tag( 'small', _('Separate tags with commas') ) %> |
5 | 5 | |
6 | 6 | <script> |
7 | - jQuery('#profile_data_interest_list').inputosaurus(); | |
7 | + jQuery('#profile_data_tag_list').inputosaurus(); | |
8 | 8 | </script> | ... | ... |