spree_froomerce_fconnect 0.70.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data/.gitignore +11 -0
  2. data/.rspec +1 -0
  3. data/Gemfile +20 -0
  4. data/Gemfile.lock +222 -0
  5. data/LICENSE +26 -0
  6. data/README.md +76 -0
  7. data/Rakefile +31 -0
  8. data/Versionfile +2 -0
  9. data/app/assets/images/loading.gif +0 -0
  10. data/app/assets/javascripts/admin/froomerces.js +2 -0
  11. data/app/assets/javascripts/admin/spree_froomerce_fconnect.js +1 -0
  12. data/app/assets/javascripts/froomerce_products.js +2 -0
  13. data/app/assets/javascripts/store/spree_froomerce_fconnect.js +1 -0
  14. data/app/assets/stylesheets/admin/froomerces.css +4 -0
  15. data/app/assets/stylesheets/admin/spree_froomerce_fconnect.css +3 -0
  16. data/app/assets/stylesheets/application.css +107 -0
  17. data/app/assets/stylesheets/froomerce_products.css +4 -0
  18. data/app/assets/stylesheets/store/spree_froomerce_fconnect.css +3 -0
  19. data/app/controllers/admin/froomerces_controller.rb +200 -0
  20. data/app/controllers/froomerce_products_controller.rb +79 -0
  21. data/app/helpers/admin/froomerces_helper.rb +2 -0
  22. data/app/helpers/froomerce_products_helper.rb +2 -0
  23. data/app/models/froomerce_config.rb +8 -0
  24. data/app/models/froomerce_product_status.rb +11 -0
  25. data/app/models/froomerce_user.rb +3 -0
  26. data/app/models/product_decorator.rb +4 -0
  27. data/app/models/taxon_decorator.rb +20 -0
  28. data/app/overrides/froomerce_tab.rb +5 -0
  29. data/app/views/admin/froomerces/export_facebook.html.erb +122 -0
  30. data/app/views/admin/froomerces/export_facebook_widgets.html.erb +108 -0
  31. data/app/views/admin/froomerces/export_shop.html.erb +56 -0
  32. data/app/views/admin/froomerces/index.html.erb +39 -0
  33. data/app/views/admin/shared/_froomerce_sub_menu.html.erb +8 -0
  34. data/app/views/froomerce_products/call_backs.html.erb +25 -0
  35. data/app/views/froomerce_products/feed_url.xml.builder +86 -0
  36. data/app/views/froomerce_products/index.xml.builder +83 -0
  37. data/config/locales/en.yml +72 -0
  38. data/config/routes.rb +29 -0
  39. data/db/migrate/20120111085252_create_froomerce_users.rb +11 -0
  40. data/db/migrate/20120113072837_create_froomerce_configs.rb +12 -0
  41. data/db/migrate/20120203125952_create_froomerce_product_statuses.rb +10 -0
  42. data/lib/api_calls.rb +37 -0
  43. data/lib/call_backs.rb +141 -0
  44. data/lib/generators/spree_froomerce_fconnect/install/install_generator.rb +20 -0
  45. data/lib/spree_froomerce_fconnect/engine.rb +25 -0
  46. data/lib/spree_froomerce_fconnect.rb +2 -0
  47. data/script/rails +7 -0
  48. data/spec/controllers/admin/froomerces_controller_spec.rb +5 -0
  49. data/spec/controllers/froomerce_products_controller_spec.rb +5 -0
  50. data/spec/helpers/admin/froomerces_helper_spec.rb +15 -0
  51. data/spec/helpers/froomerce_products_helper_spec.rb +15 -0
  52. data/spec/models/froomerce_config_spec.rb +5 -0
  53. data/spec/models/froomerce_product_status_spec.rb +5 -0
  54. data/spec/models/froomerce_user_spec.rb +5 -0
  55. data/spec/spec_helper.rb +31 -0
  56. data/spree_froomerce_fconnect.gemspec +20 -0
  57. metadata +113 -0
data/.gitignore ADDED
@@ -0,0 +1,11 @@
1
+ \#*
2
+ *~
3
+ .#*
4
+ .DS_Store
5
+ .idea
6
+ .project
7
+ tmp
8
+ nbproject
9
+ *.swp
10
+ spec/dummy
11
+ .loadpath
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --colour
data/Gemfile ADDED
@@ -0,0 +1,20 @@
1
+ source 'http://rubygems.org'
2
+
3
+ group :test do
4
+ gem 'rspec-rails', '= 2.6.1'
5
+ end
6
+
7
+ group :cucumber do
8
+ gem 'cucumber-rails', '1.0.0'
9
+ gem 'database_cleaner', '= 0.6.7'
10
+ gem 'nokogiri'
11
+ gem 'capybara', '1.0.1'
12
+ end
13
+
14
+ if RUBY_VERSION < "1.9"
15
+ gem "ruby-debug"
16
+ else
17
+ gem "ruby-debug19"
18
+ end
19
+
20
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,222 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ spree_froomerce_fconnect (0.70.1)
5
+ spree_core (>= 0.70.1)
6
+
7
+ GEM
8
+ remote: http://rubygems.org/
9
+ specs:
10
+ actionmailer (3.1.3)
11
+ actionpack (= 3.1.3)
12
+ mail (~> 2.3.0)
13
+ actionpack (3.1.3)
14
+ activemodel (= 3.1.3)
15
+ activesupport (= 3.1.3)
16
+ builder (~> 3.0.0)
17
+ erubis (~> 2.7.0)
18
+ i18n (~> 0.6)
19
+ rack (~> 1.3.5)
20
+ rack-cache (~> 1.1)
21
+ rack-mount (~> 0.8.2)
22
+ rack-test (~> 0.6.1)
23
+ sprockets (~> 2.0.3)
24
+ activemerchant (1.17.0)
25
+ activesupport (>= 2.3.11)
26
+ braintree (>= 2.0.0)
27
+ builder (>= 2.0.0)
28
+ json (>= 1.5.1)
29
+ activemodel (3.1.3)
30
+ activesupport (= 3.1.3)
31
+ builder (~> 3.0.0)
32
+ i18n (~> 0.6)
33
+ activerecord (3.1.3)
34
+ activemodel (= 3.1.3)
35
+ activesupport (= 3.1.3)
36
+ arel (~> 2.2.1)
37
+ tzinfo (~> 0.3.29)
38
+ activeresource (3.1.3)
39
+ activemodel (= 3.1.3)
40
+ activesupport (= 3.1.3)
41
+ activesupport (3.1.3)
42
+ multi_json (~> 1.0)
43
+ acts_as_list (0.1.4)
44
+ archive-tar-minitar (0.5.2)
45
+ arel (2.2.1)
46
+ braintree (2.13.2)
47
+ builder (>= 2.0.0)
48
+ builder (3.0.0)
49
+ capybara (1.0.1)
50
+ mime-types (>= 1.16)
51
+ nokogiri (>= 1.3.3)
52
+ rack (>= 1.0.0)
53
+ rack-test (>= 0.5.4)
54
+ selenium-webdriver (~> 2.0)
55
+ xpath (~> 0.1.4)
56
+ childprocess (0.2.8)
57
+ ffi (~> 1.0.6)
58
+ cocaine (0.2.1)
59
+ columnize (0.3.6)
60
+ cucumber (1.0.6)
61
+ builder (>= 2.1.2)
62
+ diff-lcs (>= 1.1.2)
63
+ gherkin (~> 2.4.18)
64
+ json (>= 1.4.6)
65
+ term-ansicolor (>= 1.0.6)
66
+ cucumber-rails (1.0.0)
67
+ capybara (>= 1.0.0)
68
+ cucumber (~> 1.0.0)
69
+ nokogiri (>= 1.4.4)
70
+ rack-test (>= 0.5.7)
71
+ database_cleaner (0.6.7)
72
+ deface (0.7.2)
73
+ nokogiri (~> 1.5.0)
74
+ rails (>= 3.0.9)
75
+ diff-lcs (1.1.3)
76
+ erubis (2.7.0)
77
+ faker (1.0.0)
78
+ i18n (~> 0.4)
79
+ ffi (1.0.11)
80
+ gherkin (2.4.21)
81
+ json (>= 1.4.6)
82
+ highline (1.6.2)
83
+ hike (1.2.1)
84
+ i18n (0.6.0)
85
+ jquery-rails (1.0.19)
86
+ railties (~> 3.0)
87
+ thor (~> 0.14)
88
+ json (1.6.4)
89
+ kaminari (0.13.0)
90
+ actionpack (>= 3.0.0)
91
+ activesupport (>= 3.0.0)
92
+ railties (>= 3.0.0)
93
+ linecache19 (0.5.12)
94
+ ruby_core_source (>= 0.1.4)
95
+ mail (2.3.0)
96
+ i18n (>= 0.4.0)
97
+ mime-types (~> 1.16)
98
+ treetop (~> 1.4.8)
99
+ meta_search (1.1.1)
100
+ actionpack (~> 3.1.0)
101
+ activerecord (~> 3.1.0)
102
+ activesupport (~> 3.1.0)
103
+ polyamorous (~> 0.5.0)
104
+ mime-types (1.17.2)
105
+ multi_json (1.0.4)
106
+ nested_set (1.6.8)
107
+ activerecord (>= 3.0.0)
108
+ railties (>= 3.0.0)
109
+ nokogiri (1.5.0)
110
+ paperclip (2.4.1)
111
+ activerecord (>= 2.3.0)
112
+ activesupport (>= 2.3.2)
113
+ cocaine (>= 0.0.2)
114
+ mime-types
115
+ polyamorous (0.5.0)
116
+ activerecord (~> 3.0)
117
+ polyglot (0.3.3)
118
+ rack (1.3.6)
119
+ rack-cache (1.1)
120
+ rack (>= 0.4)
121
+ rack-mount (0.8.3)
122
+ rack (>= 1.0.0)
123
+ rack-ssl (1.3.2)
124
+ rack
125
+ rack-test (0.6.1)
126
+ rack (>= 1.0)
127
+ rails (3.1.3)
128
+ actionmailer (= 3.1.3)
129
+ actionpack (= 3.1.3)
130
+ activerecord (= 3.1.3)
131
+ activeresource (= 3.1.3)
132
+ activesupport (= 3.1.3)
133
+ bundler (~> 1.0)
134
+ railties (= 3.1.3)
135
+ railties (3.1.3)
136
+ actionpack (= 3.1.3)
137
+ activesupport (= 3.1.3)
138
+ rack-ssl (~> 1.3.2)
139
+ rake (>= 0.8.7)
140
+ rdoc (~> 3.4)
141
+ thor (~> 0.14.6)
142
+ rake (0.9.2.2)
143
+ rd_find_by_param (0.1.1)
144
+ activerecord (~> 3.0)
145
+ activesupport (~> 3.0)
146
+ rd_resource_controller (1.0.1)
147
+ rdoc (3.12)
148
+ json (~> 1.4)
149
+ rspec (2.6.0)
150
+ rspec-core (~> 2.6.0)
151
+ rspec-expectations (~> 2.6.0)
152
+ rspec-mocks (~> 2.6.0)
153
+ rspec-core (2.6.4)
154
+ rspec-expectations (2.6.0)
155
+ diff-lcs (~> 1.1.2)
156
+ rspec-mocks (2.6.0)
157
+ rspec-rails (2.6.1)
158
+ actionpack (~> 3.0)
159
+ activesupport (~> 3.0)
160
+ railties (~> 3.0)
161
+ rspec (~> 2.6.0)
162
+ ruby-debug-base19 (0.11.25)
163
+ columnize (>= 0.3.1)
164
+ linecache19 (>= 0.5.11)
165
+ ruby_core_source (>= 0.1.4)
166
+ ruby-debug19 (0.11.6)
167
+ columnize (>= 0.3.1)
168
+ linecache19 (>= 0.5.11)
169
+ ruby-debug-base19 (>= 0.11.19)
170
+ ruby_core_source (0.1.5)
171
+ archive-tar-minitar (>= 0.5.2)
172
+ rubyzip (0.9.5)
173
+ selenium-webdriver (2.16.0)
174
+ childprocess (>= 0.2.5)
175
+ ffi (~> 1.0.9)
176
+ multi_json (~> 1.0.4)
177
+ rubyzip
178
+ spree_core (0.70.3)
179
+ activemerchant (= 1.17.0)
180
+ acts_as_list (= 0.1.4)
181
+ deface (>= 0.7.0)
182
+ faker (= 1.0.0)
183
+ highline (= 1.6.2)
184
+ jquery-rails (>= 1.0.14)
185
+ kaminari (>= 0.12.4)
186
+ meta_search (= 1.1.1)
187
+ nested_set (= 1.6.8)
188
+ paperclip (= 2.4.1)
189
+ rails (>= 3.1.1, <= 3.1.3)
190
+ rd_find_by_param (= 0.1.1)
191
+ rd_resource_controller
192
+ state_machine (= 1.0.1)
193
+ stringex (= 1.0.3)
194
+ sprockets (2.0.3)
195
+ hike (~> 1.2)
196
+ rack (~> 1.0)
197
+ tilt (~> 1.1, != 1.3.0)
198
+ sqlite3 (1.3.5)
199
+ state_machine (1.0.1)
200
+ stringex (1.0.3)
201
+ term-ansicolor (1.0.7)
202
+ thor (0.14.6)
203
+ tilt (1.3.3)
204
+ treetop (1.4.10)
205
+ polyglot
206
+ polyglot (>= 0.3.1)
207
+ tzinfo (0.3.31)
208
+ xpath (0.1.4)
209
+ nokogiri (~> 1.3)
210
+
211
+ PLATFORMS
212
+ ruby
213
+
214
+ DEPENDENCIES
215
+ capybara (= 1.0.1)
216
+ cucumber-rails (= 1.0.0)
217
+ database_cleaner (= 0.6.7)
218
+ nokogiri
219
+ rspec-rails (= 2.6.1)
220
+ ruby-debug19
221
+ spree_froomerce_fconnect!
222
+ sqlite3
data/LICENSE ADDED
@@ -0,0 +1,26 @@
1
+ Copyright (c) 2012 Ali Naqi
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without modification,
5
+ are permitted provided that the following conditions are met:
6
+
7
+ * Redistributions of source code must retain the above copyright notice,
8
+ this list of conditions and the following disclaimer.
9
+ * Redistributions in binary form must reproduce the above copyright notice,
10
+ this list of conditions and the following disclaimer in the documentation
11
+ and/or other materials provided with the distribution.
12
+ * Neither the name Spree nor the names of its contributors may be used to
13
+ endorse or promote products derived from this software without specific
14
+ prior written permission.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.md ADDED
@@ -0,0 +1,76 @@
1
+ # F.Connect - Online store and widgets on Facebook
2
+
3
+ F.Connect integrates your existing store with Facebook in a few steps.
4
+ It not only lets you create complete Facebook store but also give you
5
+ ability to post your products to your Fan Page wall. This allows you
6
+ to reach your customers on Facebook directly from the wall. You can also
7
+ run social campaigns to promote your products and engage customers.
8
+ All of this can be done without writing a single line of code!
9
+
10
+ This extensions requires you to create an account on [Froomerce F.Connect](http://froomerce.com/merchant/merchantplatform/fconnect)
11
+
12
+
13
+ ## Your Benefits
14
+
15
+ ### Easy porting of store to Facebook
16
+
17
+ You just need to install the extension and export the store to your Page.
18
+ `Note:` This extension only support single store architecture.
19
+
20
+ ### Social sharing widgets
21
+
22
+ Your users can share and like products from your Fan Page.
23
+
24
+ ### Selling or redirecting to main store
25
+
26
+ Depending on what you require, you can let users add all products to their
27
+ Facebook cart or you can redirect users to go to the main site.
28
+
29
+ ### Product widgets
30
+
31
+ You can create product widgets and post them directly on the wall.This will
32
+ enable you to reach out to your Fans directly on their walls! When they like or
33
+ share the widgets, their friends will also get exposure to your products.
34
+
35
+ ### Custom verbs support
36
+
37
+ You can choose to have new custom verbs apart from “like”. For example, you can
38
+ configure the store to have “Want” and “Need” buttons.
39
+
40
+ ### Detailed Statistics
41
+
42
+ You get detailed statistics on not only the products but also demographics from
43
+ Facebook Page e.g., how many males and females came on your page, what were their
44
+ age groups etc. You receive weekly statistics emails.
45
+
46
+ ### Custom campaigns
47
+
48
+ You can choose to have your own Welcome page. You can also choose to allow only
49
+ users how like your page to view your store.
50
+
51
+ ### Customizations
52
+
53
+ You can have your own design for the stores and the product widgets.
54
+
55
+ ### Support
56
+
57
+ You get free email support for all packages. With Professional Pro packages
58
+ you also get direct phone support.
59
+
60
+ ## Requirements
61
+
62
+ `spree_froomerce_fconnect` requires `Spree 0.70.x`.
63
+ And it is not compatible with `Rails 2.x`
64
+
65
+ # Installation
66
+
67
+ spree_froomerce_fconnect is distributed as a gem, which is how it should be used in your application.
68
+ Follwoing steps are to be performed consecutively for this extension to work properly:
69
+
70
+ * Add following line to the Gemfile: `gem "spree_froomerce_fconnect"`
71
+ * Then run bundler to install the gem
72
+ * Run `rails g spree_froomerce_fconnect:install` to add and run required migrations.
73
+
74
+ And you are ready to go!
75
+
76
+ Copyright (c) 2012 Ali Naqi, released under the New BSD License
data/Rakefile ADDED
@@ -0,0 +1,31 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/packagetask'
4
+ require 'rubygems/package_task'
5
+ require 'rspec/core/rake_task'
6
+ require 'cucumber/rake/task'
7
+ require 'spree_core/testing_support/common_rake'
8
+
9
+ RSpec::Core::RakeTask.new
10
+ Cucumber::Rake::Task.new
11
+
12
+ task :default => [:spec, :cucumber ]
13
+
14
+ spec = eval(File.read('spree_froomerce_fconnect.gemspec'))
15
+
16
+ Gem::PackageTask.new(spec) do |p|
17
+ p.gem_spec = spec
18
+ end
19
+
20
+ desc "Release to gemcutter"
21
+ task :release => :package do
22
+ require 'rake/gemcutter'
23
+ Rake::Gemcutter::Tasks.new(spec).define
24
+ Rake::Task['gem:push'].invoke
25
+ end
26
+
27
+ desc "Generates a dummy app for testing"
28
+ task :test_app do
29
+ ENV['LIB_NAME'] = 'spree_froomerce_fconnect'
30
+ Rake::Task['common:test_app'].invoke
31
+ end
data/Versionfile ADDED
@@ -0,0 +1,2 @@
1
+ "0.70.1" => { :branch => "0-70-stable" }
2
+
Binary file
@@ -0,0 +1,2 @@
1
+ // Place all the behaviors and hooks related to the matching controller here.
2
+ // All this logic will automatically be available in application.js.
@@ -0,0 +1 @@
1
+ //= require admin/spree_core
@@ -0,0 +1,2 @@
1
+ // Place all the behaviors and hooks related to the matching controller here.
2
+ // All this logic will automatically be available in application.js.
@@ -0,0 +1 @@
1
+ //= require store/spree_core
@@ -0,0 +1,4 @@
1
+ /*
2
+ Place all the styles related to the matching controller here.
3
+ They will automatically be included in application.css.
4
+ */
@@ -0,0 +1,3 @@
1
+ /*
2
+ *= require store/spree_core
3
+ */
@@ -0,0 +1,107 @@
1
+ /*
2
+ *= require store/spree_core
3
+ */
4
+
5
+ body {
6
+ font-family:Arial, Helvetica, sans-serif;
7
+ font-size:12px;
8
+ color:#4e4e4e;
9
+ }
10
+ * {
11
+ margin:0px;
12
+ padding:0px;
13
+ }
14
+ .clr {
15
+ clear:both;
16
+ }
17
+ ul, li {
18
+ list-style:none;
19
+ }
20
+ #layout {
21
+ width:990px;
22
+ margin:auto;
23
+ }
24
+ #header {
25
+ height:25px;
26
+ padding:15px 10px 5px 20px;
27
+ border-bottom:3px solid #dfdfdf;
28
+ position:relative;
29
+ margin-bottom:18px;
30
+ }
31
+ #header h1{
32
+ font-size:16px;
33
+ font-weight:bold;
34
+ color:#eb5e00;
35
+ position:absolute;
36
+ width:775px;
37
+ }
38
+ #header .btnArea {
39
+ position:absolute;
40
+ right:0;
41
+ }
42
+ #header .btnArea input {
43
+ float:left;
44
+ background:url(admin/submit-btn.gif) no-repeat left top;
45
+ width:113px;
46
+ border:none;
47
+ font-family:inherit;
48
+ font-size:12px;
49
+ color:#fff;
50
+ padding:1px 5px 3px 20px;
51
+ text-align:center;
52
+ cursor:pointer;
53
+ }
54
+ #header .btnArea input[type="reset"]{
55
+ float:left;
56
+ background:url(admin/reset-btn.gif) no-repeat left top;
57
+ width:55px;
58
+ padding:1px 0px 3px;
59
+ margin-right:10px;
60
+ }
61
+ #hd-bar {
62
+ background:#6f8992;
63
+ height:16px;
64
+ color:#fff;
65
+ padding:3px 10px 3px 20px;
66
+ }
67
+ #hd-bar h2 {
68
+ font-size:14px;
69
+ font-weight:bold;
70
+ line-height:16px;
71
+ float:left;
72
+ color:#FFFFFF;
73
+ width:700px;
74
+ }
75
+ #hd-bar .link {
76
+ float:right;
77
+ }
78
+ #hd-bar .link a {
79
+ color:#fff;
80
+ }
81
+ #hd-bar .link a:hover {
82
+ text-decoration:none;
83
+ }
84
+ #contactBox {
85
+ border:1px solid #d6d6d6;
86
+ background:#fafafa;
87
+ padding:20px;
88
+ }
89
+ #contactBox ul li {
90
+ float:left;
91
+ margin-bottom:10px;
92
+ width:900px;
93
+ }
94
+ #contactBox ul li label {
95
+ float:left;
96
+ width:300px;
97
+ margin-right:10px;
98
+ margin-top:3px;
99
+ }
100
+ #contactBox ul li input {
101
+ font-family:inherit;
102
+ font-size:inherit;
103
+ float:left;
104
+ width:280px;
105
+ padding:3px;
106
+ border:#c8c8c8 1px solid;
107
+ }
@@ -0,0 +1,4 @@
1
+ /*
2
+ Place all the styles related to the matching controller here.
3
+ They will automatically be included in application.css.
4
+ */
@@ -0,0 +1,3 @@
1
+ /*
2
+ *= require store/spree_core
3
+ */