muck-services 0.1.10 → 0.1.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. data/VERSION +1 -1
  2. data/app/controllers/muck/recommendations_controller.rb +21 -6
  3. data/app/models/entry.rb +7 -10
  4. data/app/views/recommendations/get_button.html.erb +5 -0
  5. data/app/views/recommendations/index.pjs.erb +1 -1
  6. data/app/views/recommendations/index.xml.builder +4 -6
  7. data/app/views/recommendations/real_time.html.erb +13 -0
  8. data/app/views/recommendations/{index_real_time.pjs.erb → real_time.pjs.erb} +0 -0
  9. data/app/views/recommendations/{index_real_time.xml.builder → real_time.xml.builder} +1 -1
  10. data/config/muck_services_routes.rb +3 -0
  11. data/locales/en.yml +2 -1
  12. data/muck-services.gemspec +8 -52
  13. data/public/images/folksemantic/logo-folksemantic-gm.gif +0 -0
  14. data/public/javascripts/recommenderextension.user.js +392 -0
  15. data/test/rails_root/config/environment.rb +7 -6
  16. data/test/rails_root/config/environments/test.rb +0 -10
  17. data/test/rails_root/db/migrate/20090602191243_create_muck_raker.rb +4 -19
  18. data/test/rails_root/db/migrate/20090703175825_denormalize_entries_subjects.rb +3 -29
  19. data/test/rails_root/db/migrate/20090717175825_normalize_entries_subjects.rb +3 -32
  20. data/test/rails_root/test/factories.rb +0 -145
  21. data/test/rails_root/test/functional/topics_controller_test.rb +4 -0
  22. data/test/rails_root/test/test_helper.rb +5 -40
  23. data/test/rails_root/test/unit/share_test.rb +3 -0
  24. data/test/rails_root/test/unit/user_test.rb +3 -0
  25. metadata +8 -52
  26. data/app/views/recommendations/index_js.pjs.erb +0 -39
  27. data/config/solr/README.txt +0 -0
  28. data/config/solr/cores/de/conf/protwords.txt +0 -21
  29. data/config/solr/cores/de/conf/schema.xml +0 -81
  30. data/config/solr/cores/de/conf/solrconfig.xml +0 -311
  31. data/config/solr/cores/de/conf/stopwords.txt +0 -341
  32. data/config/solr/cores/de/conf/synonyms.txt +0 -31
  33. data/config/solr/cores/en/conf/protwords.txt +0 -21
  34. data/config/solr/cores/en/conf/schema.xml +0 -83
  35. data/config/solr/cores/en/conf/solrconfig.xml +0 -311
  36. data/config/solr/cores/en/conf/stopwords.txt +0 -341
  37. data/config/solr/cores/en/conf/synonyms.txt +0 -31
  38. data/config/solr/cores/es/conf/protwords.txt +0 -21
  39. data/config/solr/cores/es/conf/schema.xml +0 -81
  40. data/config/solr/cores/es/conf/solrconfig.xml +0 -311
  41. data/config/solr/cores/es/conf/stopwords.txt +0 -206
  42. data/config/solr/cores/es/conf/synonyms.txt +0 -31
  43. data/config/solr/cores/fr/conf/protwords.txt +0 -21
  44. data/config/solr/cores/fr/conf/schema.xml +0 -82
  45. data/config/solr/cores/fr/conf/solrconfig.xml +0 -311
  46. data/config/solr/cores/fr/conf/stopwords.txt +0 -57
  47. data/config/solr/cores/fr/conf/synonyms.txt +0 -31
  48. data/config/solr/cores/ja/conf/protwords.txt +0 -21
  49. data/config/solr/cores/ja/conf/schema.xml +0 -69
  50. data/config/solr/cores/ja/conf/solrconfig.xml +0 -311
  51. data/config/solr/cores/ja/conf/stopwords.txt +0 -341
  52. data/config/solr/cores/ja/conf/synonyms.txt +0 -31
  53. data/config/solr/cores/nl/conf/protwords.txt +0 -21
  54. data/config/solr/cores/nl/conf/schema.xml +0 -78
  55. data/config/solr/cores/nl/conf/solrconfig.xml +0 -311
  56. data/config/solr/cores/nl/conf/stopwords.txt +0 -45691
  57. data/config/solr/cores/nl/conf/synonyms.txt +0 -31
  58. data/config/solr/cores/ru/conf/protwords.txt +0 -21
  59. data/config/solr/cores/ru/conf/schema.xml +0 -78
  60. data/config/solr/cores/ru/conf/solrconfig.xml +0 -311
  61. data/config/solr/cores/ru/conf/stopwords.txt +0 -341
  62. data/config/solr/cores/ru/conf/synonyms.txt +0 -31
  63. data/config/solr/cores/zh/conf/protwords.txt +0 -21
  64. data/config/solr/cores/zh/conf/schema.xml +0 -72
  65. data/config/solr/cores/zh/conf/solrconfig.xml +0 -311
  66. data/config/solr/cores/zh/conf/stopwords.txt +0 -341
  67. data/config/solr/cores/zh/conf/synonyms.txt +0 -31
  68. data/config/solr/solr.xml +0 -50
  69. data/test/rails_root/test/shoulda_macros/controller.rb +0 -49
  70. data/test/rails_root/test/shoulda_macros/forms.rb +0 -32
  71. data/test/rails_root/test/shoulda_macros/models.rb +0 -50
  72. data/test/rails_root/test/shoulda_macros/pagination.rb +0 -53
  73. data/test/rails_root/test/shoulda_macros/plugins.rb +0 -34
@@ -1,31 +0,0 @@
1
- # The ASF licenses this file to You under the Apache License, Version 2.0
2
- # (the "License"); you may not use this file except in compliance with
3
- # the License. You may obtain a copy of the License at
4
- #
5
- # http://www.apache.org/licenses/LICENSE-2.0
6
- #
7
- # Unless required by applicable law or agreed to in writing, software
8
- # distributed under the License is distributed on an "AS IS" BASIS,
9
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
- # See the License for the specific language governing permissions and
11
- # limitations under the License.
12
-
13
- #-----------------------------------------------------------------------
14
- #some test synonym mappings unlikely to appear in real input text
15
- aaa => aaaa
16
- bbb => bbbb1 bbbb2
17
- ccc => cccc1,cccc2
18
- a\=>a => b\=>b
19
- a\,a => b\,b
20
- fooaaa,baraaa,bazaaa
21
-
22
- # Some synonym groups specific to this example
23
- GB,gib,gigabyte,gigabytes
24
- MB,mib,megabyte,megabytes
25
- Television, Televisions, TV, TVs
26
- #notice we use "gib" instead of "GiB" so any WordDelimiterFilter coming
27
- #after us won't split it into two words.
28
-
29
- # Synonym mappings can be used for spelling correction too
30
- pixima => pixma
31
-
@@ -1,50 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!--
3
- Licensed to the Apache Software Foundation (ASF) under one or more
4
- contributor license agreements. See the NOTICE file distributed with
5
- this work for additional information regarding copyright ownership.
6
- The ASF licenses this file to You under the Apache License, Version 2.0
7
- (the "License"); you may not use this file except in compliance with
8
- the License. You may obtain a copy of the License at
9
-
10
- http://www.apache.org/licenses/LICENSE-2.0
11
-
12
- Unless required by applicable law or agreed to in writing, software
13
- distributed under the License is distributed on an "AS IS" BASIS,
14
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- See the License for the specific language governing permissions and
16
- limitations under the License.
17
- -->
18
-
19
- <!--
20
- All (relative) paths are relative to the installation path
21
-
22
- adminPath: RequestHandler path to manage multicores.
23
- If 'null', cores will not be managable via REST
24
-
25
- persistent: Save changes made via the API to this file
26
- sharedLib: path to a lib directory that will be shared across all cores
27
- -->
28
- <solr persistent="true">
29
- <cores adminPath="/admin/cores">
30
- <core name="en" instanceDir="cores/en" default="true"/>
31
- <core name="es" instanceDir="cores/es"/>
32
- <core name="fr" instanceDir="cores/fr"/>
33
- <core name="de" instanceDir="cores/de"/>
34
- <core name="ru" instanceDir="cores/ru"/>
35
- <core name="ja" instanceDir="cores/ja"/>
36
- <core name="zh" instanceDir="cores/zh"/>
37
- <core name="nl" instanceDir="cores/nl"/>
38
- <!--
39
- <core name="it" instanceDir="cores/it"/>
40
- <core name="el" instanceDir="cores/el"/>
41
- <core name="ko" instanceDir="cores/ko"/>
42
- <core name="pt" instanceDir="cores/pt"/>
43
- <core name="th" instanceDir="cores/th"/>
44
- <core name="da" instanceDir="cores/da"/>
45
- <core name="fi" instanceDir="cores/fi"/>
46
- <core name="sv" instanceDir="cores/sv"/>
47
- <core name="pt" instanceDir="cores/pt"/>
48
- -->
49
- </cores>
50
- </solr>
@@ -1,49 +0,0 @@
1
- module MuckControllerMacros
2
-
3
- def should_require_login(*args)
4
- args = Hash[*args]
5
- login_url = args.delete :login_url
6
- args.each do |action, verb|
7
- should "Require login for '#{action}' action" do
8
- if [:put, :delete].include?(verb) # put and delete require an id even if it is a bogus one
9
- send(verb, action, :id => 1)
10
- else
11
- send(verb, action)
12
- end
13
- assert_redirected_to(login_url)
14
- end
15
- end
16
- end
17
-
18
- def should_require_role(role, redirect_url, *actions)
19
- actions.each do |action|
20
- should "require role for '#{action}' action" do
21
- get(action)
22
- ensure_flash(/permission/i)
23
- assert_response :redirect
24
- end
25
- end
26
- end
27
-
28
- #from: http://blog.internautdesign.com/2008/9/11/more-on-custom-shoulda-macros-scoping-of-instance-variables
29
- def should_not_allow action, object, url= "/login", msg=nil
30
- msg ||= "a #{object.class.to_s.downcase}"
31
- should "not be able to #{action} #{msg}" do
32
- object = eval(object, self.send(:binding), __FILE__, __LINE__)
33
- get action, :id => object.id
34
- assert_redirected_to url
35
- end
36
- end
37
-
38
- def should_allow action, object, msg=nil
39
- msg ||= "a #{object.class.to_s.downcase}"
40
- should "be able to #{action} #{msg}" do
41
- object = eval(object, self.send(:binding), __FILE__, __LINE__)
42
- get action, :id => object.id
43
- assert_response :success
44
- end
45
- end
46
-
47
- end
48
-
49
- ActionController::TestCase.extend(MuckControllerMacros)
@@ -1,32 +0,0 @@
1
- module ShouldaFormMacros
2
- def self.should_have_form(opts)
3
- model = self.name.gsub(/ControllerTest$/, '').singularize.downcase
4
- model = model[model.rindex('::')+2..model.size] if model.include?('::')
5
- http_method, hidden_http_method = form_http_method opts[:method]
6
- should "have a #{model} form" do
7
- assert_select "form[action=?][method=#{http_method}]", eval(opts[:action]) do
8
- if hidden_http_method
9
- assert_select "input[type=hidden][name=_method][value=#{hidden_http_method}]"
10
- end
11
- opts[:fields].each do |attribute, type|
12
- attribute = attribute.is_a?(Symbol) ? "#{model}[#{attribute.to_s}]" : attribute
13
- assert_select "input[type=#{type.to_s}][name=?]", attribute
14
- end
15
- assert_select "input[type=submit]"
16
- end
17
- end
18
- end
19
-
20
- def self.form_http_method(http_method)
21
- http_method = http_method.nil? ? 'post' : http_method.to_s
22
- if http_method == "post" || http_method == "get"
23
- return http_method, nil
24
- else
25
- return "post", http_method
26
- end
27
- end
28
- end
29
-
30
- class ActiveSupport::TestCase
31
- extend ShouldaFormMacros
32
- end
@@ -1,50 +0,0 @@
1
- module ShouldaModelMacros
2
-
3
- def should_sanitize(*attributes)
4
- bad_scripts = [
5
- %|';alert(String.fromCharCode(88,83,83))//\';alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//\";alert(String.fromCharCode(88,83,83))//--></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>|,
6
- %|'';!--"<XSS>=&{()}|,
7
- %|<SCRIPT SRC=http://ha.ckers.org/xss.js></SCRIPT>|,
8
- %|<IMG SRC="javascript:alert('XSS');">|,
9
- %|<IMG SRC=javascript:alert('XSS')>|,
10
- %|<IMG SRC=JaVaScRiPt:alert('XSS')>|,
11
- %|<IMG SRC=JaVaScRiPt:alert('XSS')>|,
12
- %|<IMG SRC=`javascript:alert("RSnake says, 'XSS'")`>|,
13
- %|<IMG """><SCRIPT>alert("XSS")</SCRIPT>">|,
14
- %|<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>|,
15
- %|<A HREF="h
16
- tt p://6&#9;6.000146.0x7.147/">XSS</A>|,
17
- %|<script>alert('message');</script>| ]
18
-
19
- klass = model_class
20
- attributes.each do |attribute|
21
- attribute = attribute.to_sym
22
- should "white list #{attribute}" do
23
- assert object = klass.find(:first), "Can't find first #{klass}"
24
- bad_scripts.each do |bad_value|
25
- object.send("#{attribute}=", bad_value)
26
- object.save
27
- clean_value = object.send("#{attribute}")
28
- assert !clean_value.include?(bad_value), "#{attribute} is not white listed. #{bad_value} made it through"
29
- end
30
- end
31
- end
32
- end
33
-
34
- def should_accept_nested_attributes_for(*attr_names)
35
- klass = self.name.gsub(/Test$/, '').constantize
36
-
37
- context "#{klass}" do
38
- attr_names.each do |association_name|
39
- should "accept nested attrs for #{association_name}" do
40
- assert klass.instance_methods.include?("#{association_name}_attributes="),
41
- "#{klass} does not accept nested attributes for #{association_name}"
42
- end
43
- end
44
- end
45
- end
46
- end
47
-
48
- class ActiveSupport::TestCase
49
- extend ShouldaModelMacros
50
- end
@@ -1,53 +0,0 @@
1
- module ShouldaPaginationMacros
2
- # Example:
3
- # context "a GET to index logged in as admin" do
4
- # setup do
5
- # login_as_admin
6
- # get :index
7
- # end
8
- # should_paginate_collection :users
9
- # should_display_pagination
10
- # end
11
- def self.should_paginate_collection(collection_name)
12
- should "paginate #{collection_name}" do
13
- assert collection = assigns(collection_name),
14
- "Controller isn't assigning to @#{collection_name.to_s}."
15
- assert_kind_of WillPaginate::Collection, collection,
16
- "@#{collection_name.to_s} isn't a WillPaginate collection."
17
- end
18
- end
19
-
20
- def self.should_display_pagination
21
- should "display pagination" do
22
- assert_select "div.pagination", { :minimum => 1 },
23
- "View isn't displaying pagination. Add <%= will_paginate @collection %>."
24
- end
25
- end
26
-
27
- # Example:
28
- # context "a GET to index not logged in as admin" do
29
- # setup { get :index }
30
- # should_not_paginate_collection :users
31
- # should_not_display_pagination
32
- # end
33
- def self.should_not_paginate_collection(collection_name)
34
- should "not paginate #{collection_name}" do
35
- assert collection = assigns(collection_name),
36
- "Controller isn't assigning to @#{collection_name.to_s}."
37
- assert_not_equal WillPaginate::Collection, collection.class,
38
- "@#{collection_name.to_s} is a WillPaginate collection."
39
- end
40
- end
41
-
42
- def self.should_not_display_pagination
43
- should "not display pagination" do
44
- assert_select "div.pagination", { :count => 0 },
45
- "View is displaying pagination. Check your logic."
46
- end
47
- end
48
- end
49
-
50
-
51
- class ActiveSupport::TestCase
52
- extend ShouldaPaginationMacros
53
- end
@@ -1,34 +0,0 @@
1
- module ShouldaPluginMacros
2
-
3
- def self.should_act_as_taggable_on_steroids
4
- klass = self.name.gsub(/Test$/, '').constantize
5
-
6
- should "include ActsAsTaggableOnSteroids methods" do
7
- assert klass.extended_by.include?(ActiveRecord::Acts::Taggable::ClassMethods)
8
- assert klass.extended_by.include?(ActiveRecord::Acts::Taggable::SingletonMethods)
9
- assert klass.include?(ActiveRecord::Acts::Taggable::InstanceMethods)
10
- end
11
-
12
- should_have_many :taggings, :tags
13
- end
14
-
15
-
16
- def self.should_act_as_list
17
- klass = self.name.gsub(/Test$/, '').constantize
18
-
19
- context "To support acts_as_list" do
20
- should_have_db_column('position', :type => :integer)
21
- end
22
-
23
- should "include ActsAsList methods" do
24
- assert klass.include?(ActiveRecord::Acts::List::InstanceMethods)
25
- end
26
-
27
- should_have_instance_methods :acts_as_list_class, :position_column, :scope_condition
28
- end
29
-
30
- end
31
-
32
- ActiveSupport::TestCase.extend(ShouldaPluginMacros)
33
- Test::Unit::TestCase.extend(ShouldaPluginMacros)
34
- ActionController::TestCase.extend(ShouldaPluginMacros)