muck-services 0.1.38 → 0.1.39

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.
Files changed (80) hide show
  1. data/README.rdoc +16 -16
  2. data/VERSION +1 -1
  3. data/app/controllers/muck/entries_controller.rb +5 -1
  4. data/app/controllers/muck/feeds_controller.rb +1 -1
  5. data/app/controllers/muck/recommendations_controller.rb +1 -1
  6. data/app/controllers/muck/topics_controller.rb +9 -9
  7. data/app/models/entry.rb +1 -1
  8. data/app/models/feed.rb +1 -0
  9. data/app/views/entries/_result_status.html.erb +1 -1
  10. data/app/views/entries/browse_by_tags.html.erb +1 -1
  11. data/app/views/entries/search.pjs.erb +18 -0
  12. data/app/views/entries/search.rdf.builder +36 -0
  13. data/app/views/entries/search.rss.builder +33 -0
  14. data/app/views/entries/search.xml.builder +17 -0
  15. data/{public/javascripts/recommenderextension.user.js → app/views/recommendations/greasemonkey.user.js.erb} +8 -6
  16. data/app/views/recommendations/index.pjs.erb +1 -1
  17. data/app/views/recommendations/real_time.pjs.erb +1 -0
  18. data/app/views/recommendations/real_time.xml.builder +1 -0
  19. data/app/views/services_mailer/notification_feed_added.text.html.erb +1 -1
  20. data/app/views/services_mailer/notification_feed_added.text.plain.erb +1 -1
  21. data/config/muck_services_routes.rb +2 -0
  22. data/lib/muck_services/tasks.rb +26 -25
  23. data/locales/ar.yml +2 -0
  24. data/locales/bg.yml +2 -0
  25. data/locales/ca.yml +3 -1
  26. data/locales/cs.yml +2 -0
  27. data/locales/da.yml +4 -2
  28. data/locales/de.yml +2 -0
  29. data/locales/el.yml +2 -0
  30. data/locales/en.yml +1 -1
  31. data/locales/es.yml +2 -0
  32. data/locales/et.yml +2 -0
  33. data/locales/fa.yml +2 -0
  34. data/locales/fi.yml +2 -0
  35. data/locales/fr.yml +2 -0
  36. data/locales/gl.yml +4 -2
  37. data/locales/hi.yml +2 -0
  38. data/locales/hr.yml +2 -0
  39. data/locales/hu.yml +2 -0
  40. data/locales/id.yml +3 -1
  41. data/locales/it.yml +3 -1
  42. data/locales/iw.yml +2 -0
  43. data/locales/ja.yml +2 -0
  44. data/locales/ko.yml +2 -0
  45. data/locales/lt.yml +2 -0
  46. data/locales/lv.yml +2 -0
  47. data/locales/mt.yml +2 -0
  48. data/locales/nl.yml +2 -0
  49. data/locales/no.yml +2 -0
  50. data/locales/pl.yml +2 -0
  51. data/locales/pt-PT.yml +2 -0
  52. data/locales/ro.yml +2 -0
  53. data/locales/ru.yml +2 -0
  54. data/locales/sk.yml +2 -0
  55. data/locales/sl.yml +2 -0
  56. data/locales/sq.yml +2 -0
  57. data/locales/sr.yml +2 -0
  58. data/locales/sv.yml +2 -0
  59. data/locales/th.yml +159 -157
  60. data/locales/tl.yml +2 -0
  61. data/locales/tr.yml +2 -0
  62. data/locales/uk.yml +2 -0
  63. data/locales/vi.yml +2 -0
  64. data/locales/zh-CN.yml +3 -1
  65. data/locales/zh-TW.yml +14 -12
  66. data/locales/zh.yml +3 -1
  67. data/muck-services.gemspec +8 -14
  68. data/test/rails_root/test/functional/feeds_controller_test.rb +4 -3
  69. data/test/rails_root/test/unit/feed_test.rb +1 -0
  70. metadata +89 -64
  71. data/app/views/search/_languages.html.erb +0 -6
  72. data/app/views/search/_result.html.erb +0 -9
  73. data/app/views/search/_search_box.html.erb +0 -9
  74. data/app/views/search/index.html.erb +0 -5
  75. data/app/views/search/results.atom.builder +0 -27
  76. data/app/views/search/results.html.erb +0 -35
  77. data/app/views/search/results.pjs.erb +0 -13
  78. data/app/views/search/results.rdf.builder +0 -24
  79. data/app/views/search/results.rss.builder +0 -31
  80. data/app/views/search/results.xml.builder +0 -19
data/README.rdoc CHANGED
@@ -47,27 +47,27 @@ Muck raker aggregates data feeds and analyzes the results to make recommendation
47
47
  === environment.rb
48
48
  Add the following to environment.rb to include all the required gems:
49
49
 
50
- config.gem "muck-feedbag", :lib => "feedbag", :source => "http://gems.github.com"
51
- config.gem "pauldix-feedzirra", :lib => 'feedzirra', :source => "http://gems.github.com"
52
- config.gem 'muck-engine', :lib => 'muck_engine'
53
- config.gem 'muck-users', :lib => 'muck_users'
54
- config.gem 'muck-solr', :lib => 'acts_as_solr'
55
- # The following are optional but almost always used so you may as well pull them in.
56
- config.gem 'muck-comments', :lib => 'muck_comments'
57
- config.gem 'muck-activities', :lib => 'muck_activities'
58
- config.gem 'muck-shares', :lib => 'muck_shares'
59
- config.gem 'muck-raker', :lib => 'muck_raker'
50
+ config.gem "muck-feedbag", :lib => "feedbag", :source => "http://gems.github.com"
51
+ config.gem "pauldix-feedzirra", :lib => 'feedzirra', :source => "http://gems.github.com"
52
+ config.gem 'muck-engine', :lib => 'muck_engine'
53
+ config.gem 'muck-users', :lib => 'muck_users'
54
+ config.gem 'muck-solr', :lib => 'acts_as_solr'
55
+
56
+ The following are optional but almost always used so you may as well pull them in.
57
+ config.gem 'muck-comments', :lib => 'muck_comments'
58
+ config.gem 'muck-activities', :lib => 'muck_activities'
59
+ config.gem 'muck-shares', :lib => 'muck_shares'
60
+ config.gem 'muck-raker', :lib => 'muck_raker'
60
61
 
61
62
  === Database
62
63
  There are a number of rake tasks meant to help you get your database setup:
63
- rake muck:services:db:bootstrap # Loads some feeds oai endpoints to get things started
64
- rake muck:services:db:bootstrap_services # Deletes and reloads all services and service categories
65
- rake muck:services:db:populate # Flags the languages that the muck raker supports
66
- rake muck:services:import_attention # Imports attention data for use in testing
64
+ rake muck:services:db:bootstrap # Loads some feeds oai endpoints to get things started
65
+ rake muck:services:db:bootstrap_services # Deletes and reloads all services and service categories
66
+ rake muck:services:db:populate # Flags the languages that the muck raker supports
67
+ rake muck:services:import_attention # Imports attention data for use in testing
67
68
 
68
69
  === Bring in required files - migrations etc:
69
- rake muck:services:sync # Sync files from muck services.
70
-
70
+ rake muck:services:sync # Sync files from muck services.
71
71
 
72
72
  === Identity Feeds
73
73
  Specific feeds can be attached to objects. For example, a user might produce a blog or a flickr photo stream. The identity feed system associated the resulting
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.38
1
+ 0.1.39
@@ -28,11 +28,15 @@ class Muck::EntriesController < ApplicationController
28
28
  end
29
29
 
30
30
  def search
31
- @search = params[:q]
31
+ @search = params[:q] || params[:terms]
32
32
  @grain_size = params[:grain_size] || 'all'
33
33
  _search
34
34
  respond_to do |format|
35
35
  format.html { render :template => 'entries/search' }
36
+ format.pjs { render :template => 'entries/search', :layout => false }
37
+ format.rdf { render :template => 'entries/search', :layout => false }
38
+ format.rss { render :template => 'entries/search', :layout => false }
39
+ format.xml { render :template => 'entries/search', :layout => false }
36
40
  end
37
41
  end
38
42
 
@@ -15,7 +15,7 @@ class Muck::FeedsController < ApplicationController
15
15
 
16
16
  # pass layout=popup to remove most of the chrome
17
17
  def show
18
- @feed = Feed.find(params[:id])
18
+ @feed = Feed.find(params[:id], :include => :contributor)
19
19
  @entries = @feed.entries.paginate(:page => @page, :per_page => @per_page)
20
20
  respond_to do |format|
21
21
  format.html { render :template => 'feeds/show', :layout => get_layout_by_params }
@@ -21,7 +21,7 @@ class Muck::RecommendationsController < ApplicationController
21
21
  @limit = params[:limit] ? params[:limit].to_i : 5
22
22
  @limit = 25 if @limit > 25
23
23
  @omit_feeds = params[:omit_feeds]
24
- @order = params[:order] || "rank"
24
+ @order = params[:order] == 'relevance' ? 'relevance desc' : (params[:order] || "rank asc, relevance desc")
25
25
 
26
26
  Entry.track_time_on_page(session, @uri)
27
27
  @entry = Entry.recommender_entry(@uri)
@@ -81,17 +81,17 @@ class Muck::TopicsController < ApplicationController
81
81
  @terms = CGI.unescape(params[:id])
82
82
  @page_title = @title = @terms.titleize
83
83
 
84
- @photo_feeds = Service.build_photo_feeds(@terms, current_user, params[:service_ids])
85
- @video_feeds = Service.build_video_feeds(@terms, current_user, params[:service_ids])
86
- @bookmark_feeds = Service.build_bookmark_feeds(@terms, current_user, params[:service_ids])
87
- @music_feeds = Service.build_music_feeds(@terms, current_user, params[:service_ids])
88
- @news_feeds = Service.build_news_feeds(@terms, current_user, params[:service_ids])
89
- @blog_feeds = Service.build_blog_feeds(@terms, current_user, params[:service_ids])
90
- @search_feeds = Service.build_search_feeds(@terms, current_user, params[:service_ids])
84
+ @photo_feeds = Service.build_photo_feeds(@terms, current_user, params[:service_ids]) || []
85
+ @video_feeds = Service.build_video_feeds(@terms, current_user, params[:service_ids]) || []
86
+ @bookmark_feeds = Service.build_bookmark_feeds(@terms, current_user, params[:service_ids]) || []
87
+ @music_feeds = Service.build_music_feeds(@terms, current_user, params[:service_ids]) || []
88
+ @news_feeds = Service.build_news_feeds(@terms, current_user, params[:service_ids]) || []
89
+ @blog_feeds = Service.build_blog_feeds(@terms, current_user, params[:service_ids]) || []
90
+ @search_feeds = Service.build_search_feeds(@terms, current_user, params[:service_ids]) || []
91
91
 
92
- @general_feeds = Service.build_general_feeds(@terms, current_user, params[:service_ids])
92
+ @general_feeds = Service.build_general_feeds(@terms, current_user, params[:service_ids]) || []
93
93
 
94
- @discovered_feeds = Overlord::GoogleFeedRequest.find_feeds(@terms)
94
+ @discovered_feeds = Overlord::GoogleFeedRequest.find_feeds(@terms) || []
95
95
 
96
96
  @feeds = @photo_feeds + @video_feeds + @bookmark_feeds + @music_feeds + @news_feeds + @blog_feeds + @search_feeds + @general_feeds + @discovered_feeds
97
97
 
data/app/models/entry.rb CHANGED
@@ -37,7 +37,7 @@ class Entry < ActiveRecord::Base
37
37
 
38
38
  has_many :related_to, :foreign_key => 'entry_id', :class_name => 'Recommendation'
39
39
  has_many :related_entries, :through => :related_to, :source => :dest_entry do
40
- def top(details=false, limit=5, omit_feeds=nil, order='rank desc, relevance desc')
40
+ def top(details=false, limit=5, omit_feeds=nil, order='rank asc, relevance desc')
41
41
  select = 'entries.feed_id, recommendations.id recommendation_id, recommendations.relevance, ' +
42
42
  'entries.title, feeds.short_title collection, recommendations.dest_entry_id '
43
43
  select << ', entries.author, entries.published_at, recommendations.clicks, entries.permalink, ' +
data/app/models/feed.rb CHANGED
@@ -39,6 +39,7 @@ class Feed < ActiveRecord::Base
39
39
  format :xml
40
40
 
41
41
  validates_presence_of :uri
42
+ validates_uniqueness_of :uri
42
43
 
43
44
  has_many :feed_parents
44
45
  has_many :identity_feeds
@@ -10,7 +10,7 @@
10
10
  <%= link_to('[' + t('muck.services.show_tagged_courses') + ']', @tag_filter.nil? ? {:q => @search, :grain_size => 'course'} : {:grain_size => 'course'}) %>
11
11
  <% end %>
12
12
  &nbsp;&nbsp;
13
- <%= link_to('[' + t('muck.services.explore', :topic => @search.titleize) + ']', topic_path(safe_id(@search))) rescue '' %>
13
+ <%= link_to('[' + t('muck.services.explore') + ']', topic_path(safe_id(@search))) rescue '' %>
14
14
  </span>
15
15
  </div>
16
16
  </div>
@@ -11,6 +11,6 @@
11
11
  </div>
12
12
  <% else %>
13
13
  <p><%= @grain_size == 'all' ? t('muck.services.no_tagged_resources', :tags => @search) : t('muck.services.no_tagged_courses', :tags => @tag_filter.split('/').join(', ')) %></p>
14
- <p><%= link_to('[' + t('muck.services.explore', :topic => @search.titleize) + ']', topic_path(safe_id(@search))) %></p>
14
+ <p><%= link_to('[' + t('muck.services.explore', :topic => @search.titleize) + ']', topic_path(safe_id(@search))) if @search %></p>
15
15
  <% end %>
16
16
  </div>
@@ -0,0 +1,18 @@
1
+ <% if !@results.blank? %>
2
+ <% cache({:locale => Language.locale_id, :format => 'pjs', :limit => @limit, :q => @query, :omit_feeds => @omit_feeds}) do %>
3
+ var recs = <%= @results.to_json %>;
4
+ var app = "<%= request.protocol + request.host_with_port + '/' %>";
5
+ document.write('<div class="oer_recommender_container">');
6
+ document.write('<div class="oer_recommender_list">');
7
+ for(nRec = 0; nRec < recs.length; nRec++) {
8
+ r = recs[nRec].entry;
9
+ if (r == null) r = recs[nRec].attributes;
10
+ if (r == null) r = recs[nRec];
11
+ document.write('<p class="oer_recommender_item">');
12
+ document.write('<a class="oer_recommender_recommendation_link" href="' + app + 'visits/' + r.id + '">' + r.title + ' (' + r.collection + ')</a>');
13
+ document.write('</p>');
14
+ }
15
+ document.write('</div>');
16
+ document.write('</div>');
17
+ <% end %>
18
+ <% end %>
@@ -0,0 +1,36 @@
1
+ headers["Content-Type"] = "application/rdf+xml"
2
+ xml.instruct!
3
+
4
+ xml.RDF :RDF, "xmlns:RDF" => "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "xmlns:result" => "http://www.folksemantic.com/rdf#" do
5
+
6
+ xml.RDF :Description, "RDF:about"=>"http://www.folksemantic.com/about/search/rdf" do
7
+ xml.result :name do
8
+ xml.text! 'Results for ' + html_escape(request.env["REQUEST_URI"])
9
+ end
10
+ end
11
+
12
+ @base_uri = request.protocol + request.host_with_port + '/visits/'
13
+ @results.each do |result|
14
+ uri = "#{@base_uri}#{result.id}"
15
+ xml.RDF :Description, "RDF:about" => uri do
16
+ xml.result :title do
17
+ xml.text! result.title
18
+ end
19
+ xml.result :uri do
20
+ xml.text! uri
21
+ end
22
+ xml.result :description do
23
+ xml.text! result.description
24
+ end
25
+ xml.result :permalink do
26
+ xml.text! result.permalink
27
+ end
28
+ end
29
+ end
30
+
31
+ xml.RDF :Seq, "RDF:about" => url_for(:only_path => false, :controller => 'entries') do
32
+ @results.each do |result|
33
+ xml.RDF :li, "RDF:resource" => "#{@base_uri}#{result.id}"
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,33 @@
1
+ headers["Content-Type"] = "application/rss+xml"
2
+ xml.instruct! :xml, :version=>"1.0"
3
+ xml.rss "version" => "2.0", "xmlns:dc" => "http://purl.org/dc/elements/1.1/" do
4
+ xml.channel do
5
+
6
+ xml.title 'Folksemantic - Search Results for: ' + URI.unescape(@search)
7
+ xml.link url_for(request.env["REQUEST_URI"])
8
+ xml.pubDate CGI.rfc1123_date Time.now
9
+ xml.description 'Folksemanic - Search Results for: ' + URI.unescape(@search)
10
+ xml.generator 'Folksemantic'
11
+
12
+ xml.image do
13
+ xml.title 'Folksemantic'
14
+ xml.url 'http://www.folksemantic.com/images/folksemantic/logo-folksemantic-sm.gif'
15
+ xml.link 'http://www.folksemantic.com/'
16
+ xml.description 'Search, recommend, collaborate, and remix open educational resources'
17
+ end
18
+
19
+ @base_uri = request.protocol + request.host_with_port + '/visits/'
20
+ @results.each do |result|
21
+ xml.item do
22
+ xml.title result.title
23
+ uri = "#{@base_uri}#{result.id}"
24
+ xml.link uri
25
+ xml.guid uri
26
+ xml.pubDate result.published_at
27
+ xml.description truncate_words(result.description)
28
+ end
29
+ end
30
+
31
+ end
32
+ end
33
+
@@ -0,0 +1,17 @@
1
+ headers["Content-Type"] = "application/xml"
2
+ xml.instruct!
3
+
4
+ xml.results(:search => URI.unescape(params[:terms]), :hits => @hit_count, :offset => @offset, :limit => @per_page)do
5
+ @base_uri = request.protocol + request.host_with_port + '/visits/'
6
+ @results.each do |result|
7
+ xml.result(:published_at => result.published_at, :relevance => result.solr_score) do
8
+ xml.id result.id
9
+ xml.title result.title
10
+ xml.description truncate_words(result.description)
11
+ xml.uri "#{@base_uri}#{result.id}"
12
+ xml.permalink result.permalink
13
+ xml.direct_link result.direct_link
14
+ xml.collection result.collection
15
+ end
16
+ end
17
+ end
@@ -1,7 +1,7 @@
1
1
  // ==UserScript==
2
- // @name RecommenderExtension
3
- // @namespace folksemanticsemanticFrames.com
4
- // @description Folksemantic Recommender GM Script - Recommends resources to a user based upon their current url.
2
+ // @name Folksemantic Recommender
3
+ // @namespace folksemantic.com
4
+ // @description Displays links to resources related to the web page a user is looking at.
5
5
  // @include *
6
6
  // ==/UserScript==
7
7
 
@@ -324,7 +324,7 @@ function positionSquatter(recommendersquat, bRealTime) {
324
324
 
325
325
  function squatterHeader(sTitle, bFrame) {
326
326
  border = bFrame ? "border-top:1px solid black;border-right:1px solid black;border-left:1px solid black;width:240px;" : "border:none;";
327
- return '<div id="recommendertop" style="color:#777;background-color:white;font-weight:bold;font-size:14px;font-family:Arial,Helvetica,sans-serif;margin: 2px 3px 0 3px; padding: 2px;' + border + '"><img src="' + sBaseUrl + '/images/folksemantic/logo-folksemantic-gm.gif" style="vertical-align:middle;"/>&nbsp;&nbsp;' + sTitle + '</div>';
327
+ return '<div id="recommendertop" style="text-align:left;color:#777;background-color:white;font-weight:bold;font-size:14px;font-family:Arial,Helvetica,sans-serif;margin: 2px 3px 0 3px; padding: 2px;' + border + '"><img src="' + sBaseUrl + '/images/folksemantic/logo-folksemantic-gm.gif" style="margin-left:2px;vertical-align:middle;"/>&nbsp;&nbsp;' + sTitle + '</div>';
328
328
  }
329
329
 
330
330
  function squatterContent(root, recommendations) {
@@ -366,8 +366,7 @@ function getRecs(sUrl) {
366
366
  });
367
367
  }
368
368
 
369
- var sBaseUrl = 'http://www.folksemantic.com/';
370
- //var sBaseUrl = 'http://localhost:3000/';
369
+ var sBaseUrl = '<%= request.protocol + request.host_with_port + '/' %>';
371
370
  var sServiceUrl = sBaseUrl + 'recommendations.xml?';
372
371
  var sShowDocUrl = sBaseUrl + 'resources/';
373
372
  var squatParent = null;
@@ -396,3 +395,6 @@ if (sUrlToGetRecsFor.indexOf('http') == 0 && bodyTags && bodyTags.length > 0)
396
395
  getRecs(sServiceUrl + "u=" + sUrlToGetRecsFor);
397
396
  }
398
397
  }
398
+
399
+
400
+
@@ -39,7 +39,7 @@ for(nRec = 0; nRec < recs.length; nRec++) {
39
39
  document.write('<br/><span class="oer_recommender_description">' + truncate(r.description) + '</span>');
40
40
  document.write('<br/><span class="oer_recommender_uri">' + r.permalink + '</span>');
41
41
  <% end -%>
42
- document.write('</a></p>');
42
+ document.write('</p>');
43
43
  }
44
44
  document.write('</div>');
45
45
  <% if params[:more_link] %>document.write('<div class="oer_recommender_more_link"><a href="' + app + 'resources/<%= @entry.id %>"><%= t('muck.services.gm_more_prompt') %></a></div>');<% end %>
@@ -1,4 +1,5 @@
1
1
  <%
2
+ # TODO: Update this (see real_time.html.erb)
2
3
  @json_recommendations = @entry.json_recommendations(@limit, params[:order] || "mixed", true, params[:omit_feeds] || nil)
3
4
  if !@json_recommendations.nil?
4
5
  @direct_link_text = params[:direct_link_text] || t('muck.services.direct_link')
@@ -1,3 +1,4 @@
1
+ # TODO: Update this (see real_time.html.erb)
1
2
  xml.instruct!
2
3
 
3
4
  if @entry.nil?
@@ -1,4 +1,4 @@
1
1
  <h2>A new feed has been added to <%= @application_name %></h2>
2
2
  <p>Title: <%= @feed.title %></p>
3
3
  <p>Uri: <%= @feed.uri %></p>
4
- <p>Manage feeds: <%= link_to feeds_path(:order => 'created_at', :asc => 'false'), feeds_path(:order => 'created_at', :asc => 'false') %></p>
4
+ <p>Manage feeds: <%= link_to feeds_url(:order => 'created_at', :asc => 'false'), feeds_url(:order => 'created_at', :asc => 'false') %></p>
@@ -4,4 +4,4 @@ Title: <%= @feed.title %>
4
4
 
5
5
  Uri: <%= @feed.uri %>
6
6
 
7
- Manage feeds: <
7
+ Manage feeds: <%= feeds_url(:order => 'created_at', :asc => 'false') %>
@@ -8,6 +8,7 @@ ActionController::Routing::Routes.draw do |map|
8
8
  map.connect '/feed_list', :controller => 'muck/feeds', :action => 'selection_list'
9
9
 
10
10
  map.connect 'resources/search', :controller => 'muck/entries', :action => 'search'
11
+ map.connect 'resources/search.:format', :controller => 'muck/entries', :action => 'search'
11
12
  map.connect 'resources/tags/*tags', :controller => 'muck/entries', :action => 'browse_by_tags'
12
13
  map.resources :resources, :controller => 'muck/entries'
13
14
 
@@ -28,6 +29,7 @@ ActionController::Routing::Routes.draw do |map|
28
29
 
29
30
  map.connect 'recommendations/real_time', :controller => 'muck/recommendations', :action => 'real_time'
30
31
  map.connect 'recommendations/get_button', :controller => 'muck/recommendations', :action => 'get_button'
32
+ map.connect 'recommendations/greasemonkey.user.js', :controller => 'muck/recommendations', :action => 'greasemonkey_script'
31
33
  map.resources :recommendations, :controller => 'muck/recommendations'
32
34
 
33
35
  map.resources :identity_feeds, :controller => 'muck/identity_feeds'
@@ -12,16 +12,18 @@ module MuckServices
12
12
  def define
13
13
 
14
14
  namespace :muck do
15
-
16
- namespace :services do
17
-
18
- desc "Imports attention data for use in testing"
19
- task :import_attention => :environment do
20
- require 'active_record/fixtures'
21
- ActiveRecord::Base.establish_connection(RAILS_ENV.to_sym)
22
- yml = File.join(RAILS_ROOT, 'db', 'bootstrap', 'attention')
23
- Fixtures.new(Attention.connection,"attention",Attention,yml).insert_fixtures
15
+
16
+ desc "Sync files from muck services."
17
+ namespace :sync do
18
+ task :services do
19
+ path = File.join(File.dirname(__FILE__), *%w[.. ..])
20
+ system "rsync -ruv #{path}/db ."
21
+ system "rsync -ruv #{path}/public ."
22
+ puts "Copied migrations and public files from muck-services"
24
23
  end
24
+ end
25
+
26
+ namespace :services do
25
27
 
26
28
  namespace :db do
27
29
 
@@ -53,14 +55,7 @@ module MuckServices
53
55
  yml = File.join(File.dirname(__FILE__), '..', '..', 'db', 'bootstrap',"feeds")
54
56
  Fixtures.new(Feed.connection,"feeds",Feed,yml).insert_fixtures
55
57
 
56
- ServiceCategory.delete_all
57
- yml = File.join(File.dirname(__FILE__), '..', '..', 'db', 'bootstrap',"service_categories")
58
- Fixtures.new(Service.connection,"service_categories",ServiceCategory,yml).insert_fixtures
59
-
60
- Service.delete_all
61
- yml = File.join(File.dirname(__FILE__), '..', '..', 'db', 'bootstrap',"services")
62
- Fixtures.new(Service.connection,"services",Service,yml).insert_fixtures
63
-
58
+ puts "Added some feeds and oai endpoints to the database"
64
59
  end
65
60
 
66
61
  desc "Deletes and reloads all services and service categories"
@@ -75,7 +70,7 @@ module MuckServices
75
70
  Service.delete_all
76
71
  yml = File.join(File.dirname(__FILE__), '..', '..', 'db', 'bootstrap',"services")
77
72
  Fixtures.new(Service.connection,"services",Service,yml).insert_fixtures
78
-
73
+ puts "Added services and service categories"
79
74
  end
80
75
 
81
76
  desc "Creates a global feeds aggregation and adds all existing feeds to it"
@@ -84,18 +79,14 @@ module MuckServices
84
79
  global_feeds_id = Aggregation.create(:title => 'global_feeds', :terms => 'global_feeds',
85
80
  :description => 'Feeds included in the site indexes.').id
86
81
  Feed.find(:all).each { |feed| AggregationFeed.create(:feed_id => feed.id, :aggregation_id => global_feeds_id) }
82
+ puts "Added a global feed aggregation and added all existing feeds to it"
83
+ else
84
+ puts "The global_feeds aggregation already exists. Delete the global aggregation and try again."
87
85
  end
88
86
  end
89
87
 
90
88
  end
91
89
 
92
- desc "Sync files from muck services."
93
- task :sync do
94
- path = File.join(File.dirname(__FILE__), *%w[.. ..])
95
- system "rsync -ruv #{path}/db ."
96
- system "rsync -ruv #{path}/public ."
97
- end
98
-
99
90
  desc "Add attention types"
100
91
  task :add_attention_types => :environment do
101
92
  AttentionType.create(:id => AttentionType::WRITE, :name => 'write', :default_weight => 10)
@@ -104,6 +95,16 @@ module MuckServices
104
95
  AttentionType.create(:id => AttentionType::CLICK, :name => 'click', :default_weight => 4)
105
96
  AttentionType.create(:id => AttentionType::SHARE, :name => 'share', :default_weight => 6)
106
97
  AttentionType.create(:id => AttentionType::DISCUSS, :name => 'discuss', :default_weight => 7)
98
+ puts "Added attention types"
99
+ end
100
+
101
+ desc "Imports attention data for use in testing"
102
+ task :import_attention => :environment do
103
+ require 'active_record/fixtures'
104
+ ActiveRecord::Base.establish_connection(RAILS_ENV.to_sym)
105
+ yml = File.join(RAILS_ROOT, 'db', 'bootstrap', 'attention')
106
+ Fixtures.new(Attention.connection,"attention",Attention,yml).insert_fixtures
107
+ puts "Added attention data"
107
108
  end
108
109
 
109
110
  end
data/locales/ar.yml CHANGED
@@ -72,6 +72,7 @@ ar:
72
72
  entries_count: الإدخالات
73
73
  entry_commment_contents: "وعلق على {{resource}}"
74
74
  explore: "البحث عن {{topic}}"
75
+ facebook: فيسبوك
75
76
  facebook_instructions: "على بلدي صلة صفحة ، انقر بالزر الايمن على &#39;بلدي صلة&#39; ونسخ الارتباط. نحن سوف تدرج تلقائيا ، والوضع ، وصلات والملاحظات."
76
77
  facebook_link: "يمكنك العثور على عنوان موقعك الخاص بك على صفحة فيسبوك بلدي صلة. {{link}}ثم انقر على &#39;بلدي صلة&#39;"
77
78
  facebook_notes: "فيسبوك الحواشي"
@@ -209,6 +210,7 @@ ar:
209
210
  topic_generated: "النتائج ل`{{terms}}`."
210
211
  type_of_metadata: "النوع من البيانات الوصفية :"
211
212
  uri: رابط
213
+ url_not_in_index: "<a href='{{uri}}'>والموارد المطلوبة لتوصيات</a> لم يتم فهرستها. الرجاء إضافة مستودع يحتوي على البيانات الوصفية للمورد لإضافته إلى المؤشر."
212
214
  validate_feed: "علامة تغذية كصالح"
213
215
  videos: "أشرطة الفيديو"
214
216
  visit: زيارة
data/locales/bg.yml CHANGED
@@ -72,6 +72,7 @@ bg:
72
72
  entries_count: Влизания
73
73
  entry_commment_contents: "коментира {{resource}}"
74
74
  explore: "Търсене на {{topic}}"
75
+ facebook: Facebook
75
76
  facebook_instructions: "На страницата,, Моят Връзки, щракнете с десния бутон върху &quot;Моите връзки&quot; и копие на връзката. Ние автоматично ще включва, статус, линкове и бележки."
76
77
  facebook_link: "Можете да намерите вашия URL на вашия Facebook Моята страница Връзки. {{link}} И след това кликнете на &quot;Моите връзки&quot;"
77
78
  facebook_notes: "Facebook отбелязва,"
@@ -209,6 +210,7 @@ bg:
209
210
  topic_generated: "Резултати за `{{terms}}`."
210
211
  type_of_metadata: "Вид на метаданни:"
211
212
  uri: Url
213
+ url_not_in_index: "В <a href='{{uri}}'>ресурс, който заявихте препоръки</a> не са индексирани. Моля, добавете хранилище, съдържащи метаданни за ресурса да го добавите към индекса."
212
214
  validate_feed: "Марк фуражи, както е валиден"
213
215
  videos: Видео
214
216
  visit: посещение
data/locales/ca.yml CHANGED
@@ -72,6 +72,7 @@ ca:
72
72
  entries_count: Entrades
73
73
  entry_commment_contents: "va escriure sobre {{resource}}"
74
74
  explore: "Cerca {{topic}}"
75
+ facebook: Facebook
75
76
  facebook_instructions: "A la pàgina Els meus vincles, feu clic als &quot;Enllaços&quot; i copia l&#39;enllaç. Ens inclourà automàticament, l&#39;estat, enllaços i notes."
76
77
  facebook_link: "Vostè pot trobar la seva adreça a la seva pàgina de Facebook, My Links. {{link}} I després feu clic als &quot;Enllaços&quot;"
77
78
  facebook_notes: "Pren nota de Facebook"
@@ -209,9 +210,10 @@ ca:
209
210
  topic_generated: "Resultats de `{{terms}}`."
210
211
  type_of_metadata: "Tipus de Metadades:"
211
212
  uri: Url
213
+ url_not_in_index: "El <a href='{{uri}}'>recurs sol.licitat recomanacions per</a> que no s&#39;ha indexat. Si us plau, afegir un dipòsit que conté les metadades dels recursos per afegir-lo a l&#39;índex."
212
214
  validate_feed: "Marcar com a vàlids els pinsos"
213
215
  videos: Videos
214
216
  visit: visita
215
217
  xml: XML
216
218
  zotero_group_prompt: "Grup Zotero URL"
217
- zotero_group_rss: "Seva grup Zotero URL és així: http://www.zotero.org/groups/adventures_in_library_instruction/items"
219
+ zotero_group_rss: "El seu grup Zotero URL és així: http://www.zotero.org/groups/adventures_in_library_instruction/items"
data/locales/cs.yml CHANGED
@@ -72,6 +72,7 @@ cs:
72
72
  entries_count: Příspěvky
73
73
  entry_commment_contents: "komentoval {{resource}}"
74
74
  explore: "Hledat {{topic}}"
75
+ facebook: Facebook
75
76
  facebook_instructions: "Na stránce Mé odkazy, pravým-klikněte na &#39;My Links&#39; a zkopírovat odkaz. Budeme automaticky zahrnují stav, odkazy a poznámky."
76
77
  facebook_link: "Můžete najít URL na vaší stránce Facebook My Links. {{link}} A poté klikněte na &#39;My Links&#39;"
77
78
  facebook_notes: "Facebook Notes"
@@ -209,6 +210,7 @@ cs:
209
210
  topic_generated: "Výsledky za `{{terms}}`."
210
211
  type_of_metadata: "Typ Metadata:"
211
212
  uri: Url
213
+ url_not_in_index: "<a href='{{uri}}'>Vámi požadovaný zdroj doporučení</a> nebyla indexována. Prosím, přidejte úložiště obsahuje metadata pro zdroj přidat do indexu."
212
214
  validate_feed: "Mark krmivo jako platný"
213
215
  videos: Videa
214
216
  visit: navštivte
data/locales/da.yml CHANGED
@@ -28,7 +28,7 @@ da:
28
28
  all_resources: "Alle ressourcer"
29
29
  already_added_uri_feed: "Du har allerede tilføjet den url {{uri}}"
30
30
  already_added_username_feed: "Du har allerede tilføjet en {{service}} konto med brugernavnet {{username}}"
31
- already_shared: "Du har tidligere delte denne side."
31
+ already_shared: "Du tidligere har delt denne side."
32
32
  amazon_prompt: "Indtast den e-mail, du bruger med Amazon.com"
33
33
  approval_status: Godkendt
34
34
  atom: Atom
@@ -72,6 +72,7 @@ da:
72
72
  entries_count: Entries
73
73
  entry_commment_contents: "kommenterede {{resource}}"
74
74
  explore: "Søg efter {{topic}}"
75
+ facebook: Facebook
75
76
  facebook_instructions: "På Mine Links side, højre-klik på &#39;Mine Links&#39; og kopiere linket. Vi vil automatisk omfatte, status, links og noter."
76
77
  facebook_link: "Du kan finde din webadresse på din Facebook Mine links side. {{link}} Og derefter klikke på &#39;My Links&#39;"
77
78
  facebook_notes: "Facebook Noter"
@@ -122,7 +123,7 @@ da:
122
123
  login_to_comment: "Log ind for at tilføje en kommentar"
123
124
  metadata: metadata
124
125
  metadata_prefix: "Metadata Præfiks"
125
- my_identity: "Min Identity"
126
+ my_identity: "Min identitet"
126
127
  my_services: "Min Service"
127
128
  narrow_further: "indsnævre resultaterne yderligere"
128
129
  netflix_prompt: "Netflix Kø RSS URL"
@@ -209,6 +210,7 @@ da:
209
210
  topic_generated: "Resultater for `{{terms}}`."
210
211
  type_of_metadata: "Type Metadata:"
211
212
  uri: Url
213
+ url_not_in_index: "Den <a href='{{uri}}'>ressource, du anmodede om anbefalinger om</a> ikke er blevet indekseret. Please add et arkiv, som indeholder metadata for den ressource for at føje den til indekset."
212
214
  validate_feed: "Mark foder som gyldige"
213
215
  videos: Videoer
214
216
  visit: visit
data/locales/de.yml CHANGED
@@ -72,6 +72,7 @@ de:
72
72
  entries_count: Einträge
73
73
  entry_commment_contents: "kommentierte {{resource}}"
74
74
  explore: "Suche nach {{topic}}"
75
+ facebook: Facebook
75
76
  facebook_instructions: "Auf der Seite Meine Links mit der rechten Maustaste klicken Sie auf &quot;Meine Links&quot; und kopieren Sie den Link. Wir werden automatisch auch, Status, Links und Notizen."
76
77
  facebook_link: "Sie können Ihre URL finden Sie auf Ihrem Facebook Meine Links Seite. {{link}} Und klicken Sie dann auf &quot;Meine Links&quot;"
77
78
  facebook_notes: "Facebook stellt fest,"
@@ -209,6 +210,7 @@ de:
209
210
  topic_generated: "Ergebnisse für `{{terms}}`."
210
211
  type_of_metadata: "Art der Metadaten:"
211
212
  uri: URL
213
+ url_not_in_index: "Die <a href='{{uri}}'>angeforderte Ressource Empfehlungen für die</a> noch nicht indiziert. Bitte fügen Sie ein Repository mit Metadaten für die Ressource, die es in den Index aufnehmen zu können."
212
214
  validate_feed: "Mark-Feed als gültig"
213
215
  videos: Videos
214
216
  visit: Besuch
data/locales/el.yml CHANGED
@@ -72,6 +72,7 @@ el:
72
72
  entries_count: Ενδείξεις
73
73
  entry_commment_contents: "σχολίασε {{resource}}"
74
74
  explore: "Αναζήτηση για {{topic}}"
75
+ facebook: Facebook
75
76
  facebook_instructions: "Στη σελίδα μου Links, κάντε δεξί κλικ στο «Σύνδεσμοι μου &#39;και να αντιγράψετε το σύνδεσμο. Θα περιλαμβάνει αυτόματα, το καθεστώς, συνδέσεις και σημειώσεις."
76
77
  facebook_link: "Μπορείτε να βρείτε το URL σας στο Facebook μου σελίδα σας Links. {{link}} Και στη συνέχεια κάντε κλικ στο «Σύνδεσμοι μου"
77
78
  facebook_notes: "Facebook Σημειώσεις"
@@ -209,6 +210,7 @@ el:
209
210
  topic_generated: "Αποτελέσματα για `{{terms}}`."
210
211
  type_of_metadata: "Τύπος της Μεταδεδομένα:"
211
212
  uri: Url
213
+ url_not_in_index: "Ο <a href='{{uri}}'>πόρος που ζητήσατε συστάσεις για</a> να μην έχει ευρετήριο. Παρακαλείσθε να προσθέσετε μια αποθήκη που περιέχει μετα-δεδομένα για τον πόρο για να το προσθέσετε στο ευρετήριο."
212
214
  validate_feed: "Mark ζωοτροφών ως έγκυρα"
213
215
  videos: Βίντεο
214
216
  visit: επίσκεψη
data/locales/en.yml CHANGED
@@ -83,7 +83,7 @@ en:
83
83
  add_rss: Add Rss
84
84
  already_added_username_feed: You've already added a {{service}} account with the username {{username}}
85
85
  topic_feeds_for: Feeds for {{terms}}
86
- explore: Search for {{topic}}
86
+ explore: Search the Web
87
87
  videos: Videos
88
88
  terms_instructions: Add as many tags or phrases as you'd like. Separate each with a comma. ie food, recipes, best places to eat, organic
89
89
  failed_harvests: Failed harvests
data/locales/es.yml CHANGED
@@ -72,6 +72,7 @@ es:
72
72
  entries_count: Entradas
73
73
  entry_commment_contents: "escribió sobre {{resource}}"
74
74
  explore: "Buscar {{topic}}"
75
+ facebook: Facebook
75
76
  facebook_instructions: "En la página Mis vínculos, haga clic en &quot;Mis Enlaces&quot; y copia el enlace. Nos incluirá automáticamente, el estado, enlaces y notas."
76
77
  facebook_link: "Usted puede encontrar su dirección en su página de Facebook, My Links. {{link}} Y luego haga clic en &quot;Mis Enlaces&quot;"
77
78
  facebook_notes: "Toma nota de Facebook"
@@ -209,6 +210,7 @@ es:
209
210
  topic_generated: "Resultados de `{{terms}}`."
210
211
  type_of_metadata: "Tipo de Metadatos:"
211
212
  uri: Url
213
+ url_not_in_index: "El <a href='{{uri}}'>recurso solicitado recomendaciones para</a> que no se ha indexado. Por favor, añadir un depósito que contiene los metadatos de los recursos para añadirlo al índice."
212
214
  validate_feed: "Marcar como válidos los piensos"
213
215
  videos: Videos
214
216
  visit: visita