muck-services 0.1.12 → 0.1.13
Sign up to get free protection for your applications and to get access to all the features.
- 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
|