muck-services 0.1.12 → 0.1.13
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.
- data/Rakefile +1 -0
- data/VERSION +1 -1
- data/app/controllers/muck/feeds_controller.rb +28 -14
- data/app/controllers/muck/visits_controller.rb +1 -0
- data/app/helpers/muck_services_service_helper.rb +6 -0
- data/app/models/aggregation.rb +7 -1
- data/app/models/attention_type.rb +9 -0
- data/app/models/entry.rb +2 -2
- data/app/models/personal_recommendation.rb +3 -0
- data/app/views/entries/_result.html.erb +1 -1
- data/app/views/feeds/new.html.erb +1 -0
- data/app/views/feeds/new_oai_rss.html.erb +2 -2
- data/app/views/services/_personal_recommendations.html.erb +5 -0
- data/app/views/visits/_frame_scripts.html.erb +1 -0
- data/app/views/visits/_recommendations.html.erb +12 -0
- data/app/views/visits/_toolbar.html.erb +1 -0
- data/app/views/visits/show.html.erb +1 -0
- data/db/migrate/20091115011828_add_aggregations_for_personal_recs.rb +9 -0
- data/db/migrate/20091116094447_rename_action_table.rb +38 -0
- data/lib/muck_services/tasks.rb +25 -0
- data/locales/en.yml +3 -0
- data/muck-services.gemspec +10 -3
- data/public/javascripts/muck_services.js +14 -4
- data/public/stylesheets/{muck_services.css → muck-services.css} +15 -0
- metadata +10 -4
data/Rakefile
CHANGED
@@ -59,6 +59,7 @@ begin
|
|
59
59
|
gem.add_dependency "muck-users"
|
60
60
|
gem.add_dependency "muck-comments"
|
61
61
|
gem.add_development_dependency "shoulda"
|
62
|
+
gem.rubyforge_project = 'muck-services'
|
62
63
|
gem.files.exclude "public/images/service_icons/source/*"
|
63
64
|
gem.files.exclude "test/*"
|
64
65
|
gem.test_files.exclude 'test/feed_archive/**'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.13
|
@@ -18,7 +18,7 @@ class Muck::FeedsController < ApplicationController
|
|
18
18
|
@feed = Feed.find(params[:id])
|
19
19
|
@entries = @feed.entries.paginate(:page => @page, :per_page => @per_page)
|
20
20
|
respond_to do |format|
|
21
|
-
format.html { render :template => 'feeds/show', :layout =>
|
21
|
+
format.html { render :template => 'feeds/show', :layout => get_layout_by_params }
|
22
22
|
format.pjs do
|
23
23
|
render :update do |page|
|
24
24
|
page.replace_html('feed-container', :partial => 'feeds/feed', :object => @feed)
|
@@ -29,31 +29,28 @@ class Muck::FeedsController < ApplicationController
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def new
|
32
|
+
setup_new
|
32
33
|
respond_to do |format|
|
33
|
-
format.html { render :template => 'feeds/new', :layout =>
|
34
|
+
format.html { render :template => 'feeds/new', :layout => get_layout_by_params }
|
34
35
|
end
|
35
36
|
end
|
36
37
|
|
37
38
|
def new_oai_rss
|
38
|
-
|
39
|
-
@feed.default_language = Language.find_by_locale('en')
|
40
|
-
@feed.service_id = MuckServices::Services::RSS
|
41
|
-
@oai_endpoint = OaiEndpoint.new
|
42
|
-
@oai_endpoint.default_language = @feed.default_language
|
39
|
+
setup_new
|
43
40
|
respond_to do |format|
|
44
|
-
format.html { render :template => 'feeds/new_oai_rss', :layout =>
|
41
|
+
format.html { render :template => 'feeds/new_oai_rss', :layout => get_layout_by_params }
|
45
42
|
end
|
46
43
|
end
|
47
44
|
|
48
45
|
def new_extended
|
49
46
|
respond_to do |format|
|
50
|
-
format.html { render :template => 'feeds/new_extended', :layout =>
|
47
|
+
format.html { render :template => 'feeds/new_extended', :layout => get_layout_by_params }
|
51
48
|
end
|
52
49
|
end
|
53
50
|
|
54
51
|
def create
|
55
52
|
|
56
|
-
Feed.discover_feeds(params[:feed][:uri])
|
53
|
+
Feed.discover_feeds(params[:feed][:uri]) unless params[:feed][:uri].blank?
|
57
54
|
|
58
55
|
@feed = Feed.new(params[:feed])
|
59
56
|
@feed.contributor = current_user # record the user that submitted the feed for auditing purposes
|
@@ -75,7 +72,7 @@ class Muck::FeedsController < ApplicationController
|
|
75
72
|
def edit
|
76
73
|
@feed = Feed.find(params[:id])
|
77
74
|
respond_to do |format|
|
78
|
-
format.html { render :template => 'feeds/edit', :layout =>
|
75
|
+
format.html { render :template => 'feeds/edit', :layout => get_layout_by_params }
|
79
76
|
end
|
80
77
|
end
|
81
78
|
|
@@ -114,7 +111,7 @@ class Muck::FeedsController < ApplicationController
|
|
114
111
|
if success
|
115
112
|
flash[:notice] = t('muck.services.feed_successfully_created')
|
116
113
|
respond_to do |format|
|
117
|
-
format.html { redirect_to feed_path(@feed) }
|
114
|
+
format.html { redirect_to feed_path(@feed, :layout => get_layout_by_params) }
|
118
115
|
format.pjs { redirect_to feed_path(@feed, :layout => 'popup') }
|
119
116
|
format.json { render :json => @feed.as_json }
|
120
117
|
format.xml { head :created, :location => feed_url(@feed) }
|
@@ -122,7 +119,7 @@ class Muck::FeedsController < ApplicationController
|
|
122
119
|
else
|
123
120
|
fail_template = params[:new_template] || 'feeds/new'
|
124
121
|
respond_to do |format|
|
125
|
-
format.html { render :template => fail_template }
|
122
|
+
format.html { render :template => fail_template, :layout => get_layout_by_params }
|
126
123
|
format.pjs { render :template => fail_template, :layout => false }
|
127
124
|
format.json { render :json => @feed.as_json }
|
128
125
|
format.xml { render :xml => @feed.errors.to_xml }
|
@@ -136,7 +133,7 @@ class Muck::FeedsController < ApplicationController
|
|
136
133
|
respond_to do |format|
|
137
134
|
if success
|
138
135
|
flash[:notice] = t('muck.services.feed_successfully_updated')
|
139
|
-
format.html { redirect_to feed_path(@feed) }
|
136
|
+
format.html { redirect_to feed_path(@feed, :layout => get_layout_by_params) }
|
140
137
|
format.xml { head :ok }
|
141
138
|
else
|
142
139
|
format.html { render :template => "feeds/edit" }
|
@@ -154,4 +151,21 @@ class Muck::FeedsController < ApplicationController
|
|
154
151
|
end
|
155
152
|
end
|
156
153
|
|
154
|
+
def setup_new
|
155
|
+
@page_title = t('muck.services.add_new_feed_title')
|
156
|
+
@feed = Feed.new
|
157
|
+
@feed.default_language = Language.find_by_locale('en')
|
158
|
+
@feed.service_id = MuckServices::Services::RSS
|
159
|
+
@oai_endpoint = OaiEndpoint.new
|
160
|
+
@oai_endpoint.default_language = @feed.default_language
|
161
|
+
end
|
162
|
+
|
163
|
+
def get_layout_by_params
|
164
|
+
if params[:layout].empty?
|
165
|
+
true
|
166
|
+
else
|
167
|
+
params[:layout]
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
157
171
|
end
|
@@ -9,6 +9,7 @@ class Muck::VisitsController < ApplicationController
|
|
9
9
|
@page_title = @entry.title
|
10
10
|
@resource_uri = @entry.resource_uri
|
11
11
|
@share = Share.new(:title => @entry.title, :uri => @resource_uri, :entry_id => @entry.id) if GlobalConfig.enable_services_shares
|
12
|
+
@recommendations = @entry.recommendations(5)
|
12
13
|
|
13
14
|
if GlobalConfig.enable_services_comments
|
14
15
|
# Show the activities related to this entry
|
@@ -5,6 +5,12 @@ module MuckServicesServiceHelper
|
|
5
5
|
identity_feeds = parent.identity_feeds.find(:all, :include => [{:feed => :service}])
|
6
6
|
render :partial => 'services/summary', :locals => { :identity_feeds => identity_feeds }
|
7
7
|
end
|
8
|
+
|
9
|
+
# Render personal recommendations
|
10
|
+
def personal_recommendations(user, limit = 5)
|
11
|
+
recommendations = user.recommended_resources
|
12
|
+
render :partial => 'services/personal_recommendations', :locals => { :recommendations => recommendations }
|
13
|
+
end
|
8
14
|
|
9
15
|
# Render a view with all services in categories.
|
10
16
|
# service_categories: Results from a query to service_categories. For performance try something like this:
|
data/app/models/aggregation.rb
CHANGED
@@ -19,12 +19,14 @@ class Aggregation < ActiveRecord::Base
|
|
19
19
|
has_friendly_id :terms, :use_slug => true
|
20
20
|
|
21
21
|
belongs_to :ownable, :polymorphic => true
|
22
|
-
has_many :aggregation_feeds
|
22
|
+
has_many :aggregation_feeds, :conditions => ['feed_type = ?', 'Feed']
|
23
|
+
has_many :aggregation_oai_endpoints, :conditions => ['feed_type = ?', 'OaiEndpoint']
|
23
24
|
has_many :feeds, :through => :aggregation_feeds
|
24
25
|
|
25
26
|
named_scope :by_title, :order => "title ASC"
|
26
27
|
named_scope :recent, lambda { { :conditions => ['created_at > ?', 1.week.ago] } }
|
27
28
|
named_scope :newest, :order => "created_at DESC"
|
29
|
+
|
28
30
|
|
29
31
|
# Builds and then adds feeds for a given terms
|
30
32
|
# user: User to be associated with each feed. Default is nil which makes each feed global.
|
@@ -88,5 +90,9 @@ class Aggregation < ActiveRecord::Base
|
|
88
90
|
false
|
89
91
|
end
|
90
92
|
end
|
93
|
+
|
94
|
+
def self.global_feeds_id
|
95
|
+
@@global_feeds_id = Aggregation.find_by_terms('global_feeds').id
|
96
|
+
end
|
91
97
|
|
92
98
|
end
|
data/app/models/entry.rb
CHANGED
@@ -49,7 +49,7 @@ class Entry < ActiveRecord::Base
|
|
49
49
|
|
50
50
|
@@default_time_on_page = 60.0
|
51
51
|
|
52
|
-
acts_as_solr({:if => false, :fields => [{:feed_id => :integer}, {:grain_size => :string}, {:tags => :string}]}, {:type_field => :type_s})
|
52
|
+
acts_as_solr({:if => false, :fields => [{:aggregation => :integer}, {:feed_id => :integer}, {:grain_size => :string}, {:tags => :string}]}, {:type_field => :type_s})
|
53
53
|
|
54
54
|
def resource_uri
|
55
55
|
self.direct_link.nil? ? self.permalink : self.direct_link
|
@@ -61,7 +61,7 @@ class Entry < ActiveRecord::Base
|
|
61
61
|
|
62
62
|
def self.search(search_terms, grain_size = nil, language = "en", limit = 10, offset = 0, operator = :or)
|
63
63
|
raise MuckServices::Exceptions::LanguageNotSupported, I18n.t('muck.services.language_not_supported') unless Recommender::Languages.supported_languages.include?(language)
|
64
|
-
query = (!grain_size.nil? && grain_size != 'all') ? (search_terms + ") AND (grain_size:#{grain_size}") : search_terms
|
64
|
+
query = ((!grain_size.nil? && grain_size != 'all') ? (search_terms + ") AND (grain_size:#{grain_size}") : search_terms) + ") AND (aggregation:#{Aggregation.global_feeds_id}"
|
65
65
|
return find_by_solr(query, :limit => limit, :offset => offset, :scores => true,
|
66
66
|
:select => "entries.id, entries.title, entries.permalink, entries.direct_link, entries.published_at, entries.description, entries.feed_id, feeds.short_title AS collection",
|
67
67
|
:joins => "INNER JOIN feeds ON feeds.id = entries.feed_id", :core => language, :operator => operator)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<% link = visit_path(result) %>
|
2
2
|
<p>
|
3
|
-
<%= link_to result.title + " (" + result.collection + ")", link, :class => "title_link", :rel => "nofollow" %>
|
3
|
+
<%= link_to result.title + " (" + (result.collection.nil? ? result.feed_id.to_s : result.collection) + ")", link, :class => "title_link", :rel => "nofollow" %>
|
4
4
|
- <%= link_to t('muck.services.related_resources'), resource_path(result), :class => "related_resources_link", :rel => "nofollow" %>
|
5
5
|
<% if !result.direct_link.nil? %> - <%= link_to t('muck.services.metadata'), result.permalink, :class => "catalog_link" %><% end %>
|
6
6
|
<% if result.description.length > 0 %><br/><span class="description"><%= truncate_words(result.description) %></span><% end %>
|
@@ -3,6 +3,7 @@
|
|
3
3
|
<% custom_form_for(:feed, :url => polymorphic_url([@parent, :feeds])) do |f| -%>
|
4
4
|
<%= f.text_field :uri, { :label => t('muck.services.add_feed_url' ) } %>
|
5
5
|
<%= f.text_field :title, { :label => t('muck.services.title' ) } %>
|
6
|
+
<%= hidden_field_tag :layout, params[:layout] %>
|
6
7
|
<div class="button form-row">
|
7
8
|
<%= submit_tag t('muck.services.add_feed'), :id => 'add_feed_uri' %>
|
8
9
|
<span id="finding_uri_message" style="display:none;">
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<ul id="add_oai_rss_feed_menu">
|
4
4
|
<li><a id="add_rss" href="#"><%= t('muck.services.add_rss') %></a></li>
|
5
5
|
<li><a id="add_oai" href="#"><%= t('muck.services.add_oai') %></a></li>
|
6
|
-
|
6
|
+
</ul>
|
7
7
|
|
8
8
|
<div id="rss" class="add_data_container">
|
9
9
|
<h1><%= t('muck.services.add_rss_feed') %></h1>
|
@@ -14,7 +14,7 @@
|
|
14
14
|
<%= f.muck_services_language_select :default_language_id %>
|
15
15
|
<%= f.hidden_field :service_id %>
|
16
16
|
<%= hidden_field_tag :new_template, 'feeds/new_oai_rss' %>
|
17
|
-
<%= hidden_field_tag :layout,
|
17
|
+
<%= hidden_field_tag :layout, params[:layout] %>
|
18
18
|
<div class="button form-row">
|
19
19
|
<%= submit_tag t('muck.services.add_feed'), :id => 'add_feed_uri' %>
|
20
20
|
<span id="finding_uri_message" style="display:none;">
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<div id="recs_panel">
|
2
|
+
<h3 id="recs_header"><%= t('muck.services.gm_title') %></h3>
|
3
|
+
<ul id="recs_list">
|
4
|
+
<% @recommendations.each_with_index do |r, i| %>
|
5
|
+
<li <%= i%2 == 0 ? 'class="even"' : ''%>><%= link_to "#{r.title} (#{r.collection})", visit_path(r.dest_entry_id) %></li>
|
6
|
+
<% end %>
|
7
|
+
</ul>
|
8
|
+
<div id="more_recs"><%= link_to t('muck.services.gm_more_prompt'), resource_path(@entry) %></div>
|
9
|
+
</div>
|
10
|
+
<script type="text/javascript">
|
11
|
+
initRecsPanel();
|
12
|
+
</script>
|
@@ -13,6 +13,7 @@
|
|
13
13
|
<% end -%>
|
14
14
|
</div>
|
15
15
|
<div id="tools" class="section">
|
16
|
+
<%= link_to t('muck.services.show_related_resources'), '#', :style => "display:none", :id => "show_recommendations_link", :onclick => 'jQuery("#recs_panel").show();jQuery("#show_recommendations_link").hide();return false;' %>
|
16
17
|
<%#= link_to t('muck.services.remix'), new_content_path(@entry), :id => 'share' - copy the page into the content system %>
|
17
18
|
<%#= link_to t('muck.services.save'), new_content_path(@entry), :id => 'share' - save the content for use later on %>
|
18
19
|
<% if logged_in? -%>
|
@@ -1,6 +1,7 @@
|
|
1
1
|
<%= render :partial => 'visits/toolbar' %>
|
2
2
|
<%= render :partial => 'visits/comments_tool' %>
|
3
3
|
<%= render :partial => 'visits/share_tool' %>
|
4
|
+
<%= render :partial => 'visits/recommendations' %>
|
4
5
|
<div id="frame_content" class="framed_content">
|
5
6
|
<iframe id="content_iframe" class="framed_content" name="iframe" src="<%= @resource_uri %>" frameborder="0" scrolling="auto" noresize="noresize"></iframe>
|
6
7
|
</div>
|
@@ -0,0 +1,38 @@
|
|
1
|
+
class RenameActionTable < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
rename_table :action_types, :attention_types
|
4
|
+
rename_column :attention_types, :action_type, :name
|
5
|
+
rename_column :attention_types, :weight, :default_weight
|
6
|
+
|
7
|
+
change_column :attentions, :attentionable_type, :string, :default => 'User'
|
8
|
+
rename_column :attentions, :action_type, :attention_type_id
|
9
|
+
change_column :attentions, :attention_type_id, :integer
|
10
|
+
change_column :attentions, :weight, :integer, :default => 5
|
11
|
+
add_column :attentions, :created_at, :datetime
|
12
|
+
add_index :attentions, :attention_type_id
|
13
|
+
add_index :attentions, :entry_id
|
14
|
+
|
15
|
+
remove_column :personal_recommendations, :rank
|
16
|
+
add_column :personal_recommendations, :created_at, :datetime
|
17
|
+
add_column :personal_recommendations, :visited_at, :datetime
|
18
|
+
add_index :personal_recommendations, :personal_recommendable_id
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.down
|
22
|
+
remove_index :personal_recommendations, :personal_recommendable_id
|
23
|
+
remove_column :personal_recommendations, :visited_at
|
24
|
+
remove_column :personal_recommendations, :created_at
|
25
|
+
add_column :personal_recommendations, :rank, :integer
|
26
|
+
|
27
|
+
remove_index :attentions, :entry_id
|
28
|
+
remove_index :attentions, :attention_type_id
|
29
|
+
remove_column :attentions, :created_at
|
30
|
+
change_column :attentions, :weight, :float
|
31
|
+
change_column :attentions, :attention_type_id, :string
|
32
|
+
rename_column :attentions, :attention_type_id, :action_type
|
33
|
+
|
34
|
+
rename_column :attention_types, :default_weight, :weight
|
35
|
+
rename_column :attention_types, :name, :action_type
|
36
|
+
rename_table :attention_types, :action_types
|
37
|
+
end
|
38
|
+
end
|
data/lib/muck_services/tasks.rb
CHANGED
@@ -87,6 +87,31 @@ module MuckServices
|
|
87
87
|
system "rsync -ruv #{path}/public ."
|
88
88
|
end
|
89
89
|
|
90
|
+
desc "Create global_feeds aggregation and add feeds to it"
|
91
|
+
task :create_global_feeds => :environment do
|
92
|
+
admin_id = User.find_by_login('admin').id
|
93
|
+
global_aggregation = Aggregation.create(:title => 'global_feeds', :terms => 'global_feeds',
|
94
|
+
:description => 'Feeds included in the site indexes.',
|
95
|
+
:ownable_id => admin_id, :ownable_type => 'User')
|
96
|
+
global_aggregation = Aggregation.find_by_title('global_feeds')
|
97
|
+
global_aggregation.feeds << Feed.find(:all, :conditions => "uri LIKE 'http://www.oercommons.org%' OR id < 1047364815")
|
98
|
+
global_aggregation.save!
|
99
|
+
AggregationFeed.update_all("feed_type = 'Feed'")
|
100
|
+
OaiEndpoint.find(:all).each do |ep|
|
101
|
+
AggregationFeed.create(:aggregation_id => global_aggregation.id, :feed_type => 'OaiEndpoint', :feed_id => ep.id)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
desc "Add attention types"
|
106
|
+
task :add_attention_types => :environment do
|
107
|
+
AttentionType.create(:id => AttentionType::WRITE, :name => 'write', :default_weight => 10)
|
108
|
+
AttentionType.create(:id => AttentionType::BOOKMARK, :name => 'bookmark', :default_weight => 5)
|
109
|
+
AttentionType.create(:id => AttentionType::SEARCH, :name => 'search', :default_weight => 3)
|
110
|
+
AttentionType.create(:id => AttentionType::CLICK, :name => 'click', :default_weight => 4)
|
111
|
+
AttentionType.create(:id => AttentionType::SHARE, :name => 'share', :default_weight => 6)
|
112
|
+
AttentionType.create(:id => AttentionType::DISCUSS, :name => 'discuss', :default_weight => 7)
|
113
|
+
end
|
114
|
+
|
90
115
|
end
|
91
116
|
|
92
117
|
end
|
data/locales/en.yml
CHANGED
@@ -3,6 +3,7 @@ en:
|
|
3
3
|
activity_templates:
|
4
4
|
entry_comment: Comment
|
5
5
|
services:
|
6
|
+
add_new_feed_title: "Add a new feed"
|
6
7
|
no_tags: "No tags available yet"
|
7
8
|
collections: Collections
|
8
9
|
demo: Demo
|
@@ -25,6 +26,7 @@ en:
|
|
25
26
|
related_resources: related
|
26
27
|
rss: RSS
|
27
28
|
xml: XML
|
29
|
+
personal_recommendations: Recommendations
|
28
30
|
atom: Atom
|
29
31
|
rdf: RDF
|
30
32
|
related_resources_title: Related Resources
|
@@ -32,6 +34,7 @@ en:
|
|
32
34
|
details: Details
|
33
35
|
gm_title: Related Resources
|
34
36
|
gm_more_prompt: More Related Resources
|
37
|
+
show_related_resources: Show Related Resources
|
35
38
|
direct_link: '[direct link]'
|
36
39
|
search: search
|
37
40
|
search_link: Find Resources!
|
data/muck-services.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{muck-services}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.13"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Joel Duffin", "Justin Ball"]
|
12
|
-
s.date = %q{2009-11-
|
12
|
+
s.date = %q{2009-11-17}
|
13
13
|
s.description = %q{This gem contains the rails specific code for dealing with feeds, aggregations and recommendations. It is meant to work with the muck-raker gem.}
|
14
14
|
s.email = %q{justin@tatemae.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -42,12 +42,14 @@ Gem::Specification.new do |s|
|
|
42
42
|
"app/models/aggregation.rb",
|
43
43
|
"app/models/aggregation_feed.rb",
|
44
44
|
"app/models/attention.rb",
|
45
|
+
"app/models/attention_type.rb",
|
45
46
|
"app/models/click.rb",
|
46
47
|
"app/models/entry.rb",
|
47
48
|
"app/models/feed.rb",
|
48
49
|
"app/models/feed_parent.rb",
|
49
50
|
"app/models/identity_feed.rb",
|
50
51
|
"app/models/oai_endpoint.rb",
|
52
|
+
"app/models/personal_recommendation.rb",
|
51
53
|
"app/models/recommendation.rb",
|
52
54
|
"app/models/service.rb",
|
53
55
|
"app/models/service_category.rb",
|
@@ -138,6 +140,7 @@ Gem::Specification.new do |s|
|
|
138
140
|
"app/views/service_templates/_zotero_group.html.erb",
|
139
141
|
"app/views/services/_edit_service.html.erb",
|
140
142
|
"app/views/services/_new_service.html.erb",
|
143
|
+
"app/views/services/_personal_recommendations.html.erb",
|
141
144
|
"app/views/services/_summary.html.erb",
|
142
145
|
"app/views/services/_view_service.html.erb",
|
143
146
|
"app/views/services_mailer/notification_feed_added.text.ar.html.erb",
|
@@ -329,6 +332,7 @@ Gem::Specification.new do |s|
|
|
329
332
|
"app/views/topics/videos.html.erb",
|
330
333
|
"app/views/visits/_comments_tool.html.erb",
|
331
334
|
"app/views/visits/_frame_scripts.html.erb",
|
335
|
+
"app/views/visits/_recommendations.html.erb",
|
332
336
|
"app/views/visits/_share_tool.html.erb",
|
333
337
|
"app/views/visits/_toolbar.html.erb",
|
334
338
|
"app/views/visits/show.html.erb",
|
@@ -365,6 +369,8 @@ Gem::Specification.new do |s|
|
|
365
369
|
"db/migrate/20090924200750_add_uri_data_template_to_services.rb",
|
366
370
|
"db/migrate/20091006183742_add_feed_count_to_aggregation.rb",
|
367
371
|
"db/migrate/20091022150615_add_uri_key_to_services.rb",
|
372
|
+
"db/migrate/20091115011828_add_aggregations_for_personal_recs.rb",
|
373
|
+
"db/migrate/20091116094447_rename_action_table.rb",
|
368
374
|
"lib/active_record/acts/muck_aggregation_owner.rb",
|
369
375
|
"lib/active_record/acts/muck_feed_owner.rb",
|
370
376
|
"lib/active_record/acts/muck_feed_parent.rb",
|
@@ -688,12 +694,13 @@ Gem::Specification.new do |s|
|
|
688
694
|
"public/javascripts/muck_services.js",
|
689
695
|
"public/javascripts/recommenderextension.user.js",
|
690
696
|
"public/stylesheets/frame.css",
|
691
|
-
"public/stylesheets/
|
697
|
+
"public/stylesheets/muck-services.css",
|
692
698
|
"rails/init.rb"
|
693
699
|
]
|
694
700
|
s.homepage = %q{http://github.com/tatemae/muck-services}
|
695
701
|
s.rdoc_options = ["--charset=UTF-8"]
|
696
702
|
s.require_paths = ["lib"]
|
703
|
+
s.rubyforge_project = %q{muck-services}
|
697
704
|
s.rubygems_version = %q{1.3.5}
|
698
705
|
s.summary = %q{Feeds, aggregations and services for muck}
|
699
706
|
s.test_files = [
|
@@ -2,7 +2,7 @@ function apply_show_entry_content(){
|
|
2
2
|
jQuery('.combined-feed-list .feed-item .feed-title').hover(
|
3
3
|
function () {
|
4
4
|
jQuery(this).next('.combined-feed-list .feed-item .feed-content').show();
|
5
|
-
},
|
5
|
+
},
|
6
6
|
function () {
|
7
7
|
jQuery(this).next('.combined-feed-list .feed-item .feed-content').hide();
|
8
8
|
}
|
@@ -10,7 +10,7 @@ function apply_show_entry_content(){
|
|
10
10
|
jQuery('.combined-feed-list .feed-item .feed-content').hover(
|
11
11
|
function () {
|
12
12
|
jQuery(this).show();
|
13
|
-
},
|
13
|
+
},
|
14
14
|
function () {
|
15
15
|
jQuery(this).hide();
|
16
16
|
}
|
@@ -19,8 +19,9 @@ function apply_show_entry_content(){
|
|
19
19
|
|
20
20
|
function show_tool(tool) {
|
21
21
|
jQuery('.tool').hide();
|
22
|
-
jQuery(
|
22
|
+
jQuery('#content_iframe').width('75%');
|
23
23
|
jQuery('#' + tool + '_tool').show();
|
24
|
+
jQuery('#recs_panel').css("left", jQuery("#content_iframe").width() - 252);
|
24
25
|
maximize_space();
|
25
26
|
return false;
|
26
27
|
}
|
@@ -58,7 +59,7 @@ function setup_entry_comment_submit(){
|
|
58
59
|
}
|
59
60
|
function apply_frame_comment_hover(){
|
60
61
|
jQuery('.comment_holder').hover(
|
61
|
-
function () { jQuery(this).addClass('comment-hover'); },
|
62
|
+
function () { jQuery(this).addClass('comment-hover'); },
|
62
63
|
function () { jQuery(this).removeClass('comment-hover'); } );
|
63
64
|
}
|
64
65
|
function setup_share_submit(){
|
@@ -91,4 +92,13 @@ jQuery(document).ready(function() {
|
|
91
92
|
function maximize_iframe_height() {
|
92
93
|
var frame = jQuery("#content_iframe");
|
93
94
|
frame.height(jQuery(window).height() - jQuery('#toolbar').height());
|
95
|
+
jQuery('#recs_panel').css("left", jQuery("#content_iframe").width() - 252);
|
96
|
+
}
|
97
|
+
|
98
|
+
function initRecsPanel() {
|
99
|
+
var panel = jQuery("#recs_panel");
|
100
|
+
panel.append("<div id='rec_close_box' title='Close'>x</div>");
|
101
|
+
jQuery("#rec_close_box").click(function() {jQuery("#recs_panel").hide();jQuery("#show_recommendations_link").show();return false;});
|
102
|
+
panel.css("left", jQuery("#toolbar").width() - 250);
|
103
|
+
panel.draggable();
|
94
104
|
}
|
@@ -88,3 +88,18 @@ ul.google-trends{margin:0;padding:0;list-style:none;}
|
|
88
88
|
.search-container .gsc-control{width:100%;}
|
89
89
|
/* edit aggregation */
|
90
90
|
#edit-aggregation-controls .box{margin:10px 0;}
|
91
|
+
|
92
|
+
#add_oai_rss_feed{margin:50px auto 300px auto;width:340px;}
|
93
|
+
ul#add_oai_rss_feed_menu{list-style:none;}
|
94
|
+
ul#add_oai_rss_feed_menu li{display:inline;margin:0 5px;}
|
95
|
+
|
96
|
+
/* recommender panel */
|
97
|
+
#recs_panel{position:absolute;top:30px;width:250px;background-color:white;border:1px solid #999;}
|
98
|
+
#recs_header{color:#777;background-color:white;font-weight:bold;font-size:16px;font-family:Arial,Helvetica,sans-serif;margin: 2px 3px 0 3px; padding: 2px;}
|
99
|
+
#recs_list{margin: 1px; padding: 1px; list-style-type: none;}
|
100
|
+
#recs_list li{margin-left: 0px; padding: 3px; list-style-type: none; font-size: 12px;}
|
101
|
+
.even{background-color:#E6E6E6;}
|
102
|
+
#more_recs{margin:4px 0 6px;padding:0;text-align:center;}
|
103
|
+
#recs_panel a{color:#3987DC;text-decoration:none;}
|
104
|
+
#recs_panel a:hover{text-decoration:underline;}
|
105
|
+
#rec_close_box {margin:3px; position:absolute; top:0px; right:0px; font-family:arial,sans-serif;padding:1px; width:16px; border:1px solid #BBBBBB; text-align:center; cursor:pointer; color:#BBB; font-size:10px; background-color:#fff; font-weight:bold; z-index:999;}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: muck-services
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joel Duffin
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-11-
|
13
|
+
date: 2009-11-17 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -168,12 +168,14 @@ files:
|
|
168
168
|
- app/models/aggregation.rb
|
169
169
|
- app/models/aggregation_feed.rb
|
170
170
|
- app/models/attention.rb
|
171
|
+
- app/models/attention_type.rb
|
171
172
|
- app/models/click.rb
|
172
173
|
- app/models/entry.rb
|
173
174
|
- app/models/feed.rb
|
174
175
|
- app/models/feed_parent.rb
|
175
176
|
- app/models/identity_feed.rb
|
176
177
|
- app/models/oai_endpoint.rb
|
178
|
+
- app/models/personal_recommendation.rb
|
177
179
|
- app/models/recommendation.rb
|
178
180
|
- app/models/service.rb
|
179
181
|
- app/models/service_category.rb
|
@@ -264,6 +266,7 @@ files:
|
|
264
266
|
- app/views/service_templates/_zotero_group.html.erb
|
265
267
|
- app/views/services/_edit_service.html.erb
|
266
268
|
- app/views/services/_new_service.html.erb
|
269
|
+
- app/views/services/_personal_recommendations.html.erb
|
267
270
|
- app/views/services/_summary.html.erb
|
268
271
|
- app/views/services/_view_service.html.erb
|
269
272
|
- app/views/services_mailer/notification_feed_added.text.ar.html.erb
|
@@ -455,6 +458,7 @@ files:
|
|
455
458
|
- app/views/topics/videos.html.erb
|
456
459
|
- app/views/visits/_comments_tool.html.erb
|
457
460
|
- app/views/visits/_frame_scripts.html.erb
|
461
|
+
- app/views/visits/_recommendations.html.erb
|
458
462
|
- app/views/visits/_share_tool.html.erb
|
459
463
|
- app/views/visits/_toolbar.html.erb
|
460
464
|
- app/views/visits/show.html.erb
|
@@ -491,6 +495,8 @@ files:
|
|
491
495
|
- db/migrate/20090924200750_add_uri_data_template_to_services.rb
|
492
496
|
- db/migrate/20091006183742_add_feed_count_to_aggregation.rb
|
493
497
|
- db/migrate/20091022150615_add_uri_key_to_services.rb
|
498
|
+
- db/migrate/20091115011828_add_aggregations_for_personal_recs.rb
|
499
|
+
- db/migrate/20091116094447_rename_action_table.rb
|
494
500
|
- lib/active_record/acts/muck_aggregation_owner.rb
|
495
501
|
- lib/active_record/acts/muck_feed_owner.rb
|
496
502
|
- lib/active_record/acts/muck_feed_parent.rb
|
@@ -814,7 +820,7 @@ files:
|
|
814
820
|
- public/javascripts/muck_services.js
|
815
821
|
- public/javascripts/recommenderextension.user.js
|
816
822
|
- public/stylesheets/frame.css
|
817
|
-
- public/stylesheets/
|
823
|
+
- public/stylesheets/muck-services.css
|
818
824
|
- rails/init.rb
|
819
825
|
has_rdoc: true
|
820
826
|
homepage: http://github.com/tatemae/muck-services
|
@@ -839,7 +845,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
839
845
|
version:
|
840
846
|
requirements: []
|
841
847
|
|
842
|
-
rubyforge_project:
|
848
|
+
rubyforge_project: muck-services
|
843
849
|
rubygems_version: 1.3.5
|
844
850
|
signing_key:
|
845
851
|
specification_version: 3
|