spree_froomerce_fconnect 0.70.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +11 -0
- data/.rspec +1 -0
- data/Gemfile +20 -0
- data/Gemfile.lock +222 -0
- data/LICENSE +26 -0
- data/README.md +76 -0
- data/Rakefile +31 -0
- data/Versionfile +2 -0
- data/app/assets/images/loading.gif +0 -0
- data/app/assets/javascripts/admin/froomerces.js +2 -0
- data/app/assets/javascripts/admin/spree_froomerce_fconnect.js +1 -0
- data/app/assets/javascripts/froomerce_products.js +2 -0
- data/app/assets/javascripts/store/spree_froomerce_fconnect.js +1 -0
- data/app/assets/stylesheets/admin/froomerces.css +4 -0
- data/app/assets/stylesheets/admin/spree_froomerce_fconnect.css +3 -0
- data/app/assets/stylesheets/application.css +107 -0
- data/app/assets/stylesheets/froomerce_products.css +4 -0
- data/app/assets/stylesheets/store/spree_froomerce_fconnect.css +3 -0
- data/app/controllers/admin/froomerces_controller.rb +200 -0
- data/app/controllers/froomerce_products_controller.rb +79 -0
- data/app/helpers/admin/froomerces_helper.rb +2 -0
- data/app/helpers/froomerce_products_helper.rb +2 -0
- data/app/models/froomerce_config.rb +8 -0
- data/app/models/froomerce_product_status.rb +11 -0
- data/app/models/froomerce_user.rb +3 -0
- data/app/models/product_decorator.rb +4 -0
- data/app/models/taxon_decorator.rb +20 -0
- data/app/overrides/froomerce_tab.rb +5 -0
- data/app/views/admin/froomerces/export_facebook.html.erb +122 -0
- data/app/views/admin/froomerces/export_facebook_widgets.html.erb +108 -0
- data/app/views/admin/froomerces/export_shop.html.erb +56 -0
- data/app/views/admin/froomerces/index.html.erb +39 -0
- data/app/views/admin/shared/_froomerce_sub_menu.html.erb +8 -0
- data/app/views/froomerce_products/call_backs.html.erb +25 -0
- data/app/views/froomerce_products/feed_url.xml.builder +86 -0
- data/app/views/froomerce_products/index.xml.builder +83 -0
- data/config/locales/en.yml +72 -0
- data/config/routes.rb +29 -0
- data/db/migrate/20120111085252_create_froomerce_users.rb +11 -0
- data/db/migrate/20120113072837_create_froomerce_configs.rb +12 -0
- data/db/migrate/20120203125952_create_froomerce_product_statuses.rb +10 -0
- data/lib/api_calls.rb +37 -0
- data/lib/call_backs.rb +141 -0
- data/lib/generators/spree_froomerce_fconnect/install/install_generator.rb +20 -0
- data/lib/spree_froomerce_fconnect/engine.rb +25 -0
- data/lib/spree_froomerce_fconnect.rb +2 -0
- data/script/rails +7 -0
- data/spec/controllers/admin/froomerces_controller_spec.rb +5 -0
- data/spec/controllers/froomerce_products_controller_spec.rb +5 -0
- data/spec/helpers/admin/froomerces_helper_spec.rb +15 -0
- data/spec/helpers/froomerce_products_helper_spec.rb +15 -0
- data/spec/models/froomerce_config_spec.rb +5 -0
- data/spec/models/froomerce_product_status_spec.rb +5 -0
- data/spec/models/froomerce_user_spec.rb +5 -0
- data/spec/spec_helper.rb +31 -0
- data/spree_froomerce_fconnect.gemspec +20 -0
- metadata +113 -0
@@ -0,0 +1,200 @@
|
|
1
|
+
require 'api_calls'
|
2
|
+
class Admin::FroomercesController < Admin::BaseController
|
3
|
+
|
4
|
+
include Api_calls
|
5
|
+
before_filter :authenticate_user!
|
6
|
+
|
7
|
+
|
8
|
+
def index
|
9
|
+
if FroomerceUser.exists?
|
10
|
+
redirect_to :action => "export_shop"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def export_shop
|
15
|
+
unless FroomerceUser.exists?
|
16
|
+
flash[:error] = I18n.t('.error.no_session')
|
17
|
+
redirect_to :action => "index"; return
|
18
|
+
end
|
19
|
+
@user = FroomerceUser.first
|
20
|
+
@regions = ""
|
21
|
+
config = FroomerceConfig.first
|
22
|
+
if !config.nil? && config.status != 'Inprogress'
|
23
|
+
@froomerce_config = config
|
24
|
+
else
|
25
|
+
@froomerce_config = ""
|
26
|
+
call = "action_type=get_regions"
|
27
|
+
result = make_api_call(call, FroomerceConfig::VERIFICATION[:user_url], 0, @user.email)
|
28
|
+
if result != -1
|
29
|
+
if result['status'] == 'success'
|
30
|
+
@regions = result
|
31
|
+
else
|
32
|
+
flash[:error] = I18n.t(".error.e#{result['error']['code']}")
|
33
|
+
end
|
34
|
+
else
|
35
|
+
flash[:error] = I18n.t('.error.HTTPfaliure')
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def create_shop
|
41
|
+
unless FroomerceConfig.first.nil?
|
42
|
+
redirect_to(:action => "export_products")
|
43
|
+
return
|
44
|
+
end
|
45
|
+
user = FroomerceUser.first
|
46
|
+
froomerce_config = FroomerceConfig.new(params[:froomerce_config])
|
47
|
+
unless froomerce_config.region_id == 0 || froomerce_config.shop_id == 0
|
48
|
+
if Spree::Config[:site_name].blank?
|
49
|
+
call = {'secret_token' => FroomerceConfig::VERIFICATION[:token],'user_id'=> user.froomerce_user_id, 'region_id' => froomerce_config.region_id, 'shop_name' => 'Spree Store', 'action_type' => 'create_shop' }
|
50
|
+
else
|
51
|
+
call = {'secret_token' => FroomerceConfig::VERIFICATION[:token],'user_id'=> user.froomerce_user_id, 'region_id' => froomerce_config.region_id, 'shop_name' => Spree::Config[:site_name], 'action_type' => 'create_shop' }
|
52
|
+
end
|
53
|
+
result = make_api_call(call, FroomerceConfig::VERIFICATION[:shop_url], 2, user.email)
|
54
|
+
if result != -1
|
55
|
+
if result['status'] == 'success'
|
56
|
+
froomerce_config.froomerce_shop_id = result['data']['shop_id']
|
57
|
+
froomerce_config.shop_id = 1
|
58
|
+
if froomerce_config.save
|
59
|
+
redirect_to(:action => "export_products")
|
60
|
+
return
|
61
|
+
end
|
62
|
+
else
|
63
|
+
flash[:error] = I18n.t('.error.shop_error')
|
64
|
+
redirect_to :action => "export_shop"
|
65
|
+
return
|
66
|
+
end
|
67
|
+
else
|
68
|
+
flash[:error] = I18n.t('.error.HTTPfaliure')
|
69
|
+
redirect_to :action => "export_shop"
|
70
|
+
return
|
71
|
+
end
|
72
|
+
else
|
73
|
+
flash[:error] = I18n.t('.error.invalid_selection')
|
74
|
+
redirect_to :action => "export_shop"
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def export_products
|
79
|
+
user = FroomerceUser.first
|
80
|
+
config = FroomerceConfig.first
|
81
|
+
call = {'secret_token' => FroomerceConfig::VERIFICATION[:token],'user_id'=> user.froomerce_user_id, 'shop_id' => config.froomerce_shop_id, 'temp_url' => root_url + "froomerce_products?per_page=#{FroomerceConfig::FEED_CONFIG[:temp_limit]}" , 'feed_url' => root_url + "froomerce_feed?page=1&per_page=#{FroomerceConfig::FEED_CONFIG[:feed_per_page]}" ,'request_url' => root_url + 'froomerce_call_backs', 'network_id' => FroomerceConfig::FEED_CONFIG[:network_id] , 'action_type' => 'import_feed' }
|
82
|
+
result = make_api_call(call, FroomerceConfig::VERIFICATION[:feed_url], 2, user.email)
|
83
|
+
if result != -1
|
84
|
+
if result['status'] == 'success'
|
85
|
+
config.reload # reload config again!
|
86
|
+
config.update_attribute(:status , 'Exporting Products') unless config.status.eql? 'Exported'
|
87
|
+
flash[:notice] = I18n.t('shop_success')
|
88
|
+
redirect_to(:action => "export_shop")
|
89
|
+
else
|
90
|
+
flash[:error] = I18n.t('.error.shop_error')
|
91
|
+
redirect_to :action => "export_shop"
|
92
|
+
return
|
93
|
+
end
|
94
|
+
else
|
95
|
+
flash[:error] = I18n.t('.error.HTTPfaliure')
|
96
|
+
redirect_to :action => "export_shop"
|
97
|
+
return
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def export_facebook
|
102
|
+
@config = FroomerceConfig.first
|
103
|
+
@user = FroomerceUser.first
|
104
|
+
@token = FroomerceConfig::VERIFICATION[:token]
|
105
|
+
if is_dummy?(@user.email)
|
106
|
+
@action = FroomerceConfig::VERIFICATION[:temp_base]+FroomerceConfig::VERIFICATION[:facebook_url]
|
107
|
+
else
|
108
|
+
@action = FroomerceConfig::VERIFICATION[:base]+FroomerceConfig::VERIFICATION[:facebook_url]
|
109
|
+
end
|
110
|
+
if !@config.blank? && @config.status != 'Inprogress'
|
111
|
+
@flag = false
|
112
|
+
call = {'secret_token' => FroomerceConfig::VERIFICATION[:token], 'shop_ids' => @config.froomerce_shop_id, 'action_type' => 'verify_shop_export'}
|
113
|
+
result = make_api_call(call, FroomerceConfig::VERIFICATION[:facebook_url], 2, @user.email)
|
114
|
+
if result != -1
|
115
|
+
if result['status'] == 'success'
|
116
|
+
@facebook_status = result['data']["#{@config.froomerce_shop_id}"]
|
117
|
+
if @facebook_status == 'exported'
|
118
|
+
@flag = true
|
119
|
+
else
|
120
|
+
@flag = false
|
121
|
+
end
|
122
|
+
else
|
123
|
+
flash[:error] = I18n.t(".error.e#{result['error']['code']}")
|
124
|
+
end
|
125
|
+
else
|
126
|
+
flash[:error] = I18n.t('.error.HTTPfaliur')
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
def export_facebook_widgets
|
132
|
+
config = FroomerceConfig.first
|
133
|
+
if !config.nil? && config.status != 'Inprogress'
|
134
|
+
params[:search] ||= {}
|
135
|
+
params[:search][:deleted_at_is_null] = true
|
136
|
+
params[:search][:count_on_hand_does_not_equal] ||= 0
|
137
|
+
params[:search][:froomerce_product_status_status_is_true] = true
|
138
|
+
@search = Product.search(params[:search])
|
139
|
+
@products = @search.relation.page(params[:page]).per(Spree::Config[:admin_products_per_page])
|
140
|
+
else
|
141
|
+
redirect_to :action => "export_shop"
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
def make_widget
|
146
|
+
user = FroomerceUser.first
|
147
|
+
config = FroomerceConfig.first
|
148
|
+
if params[:product_ids].blank?
|
149
|
+
flash[:notice] = I18n.t('.error.invalid_widget_selection')
|
150
|
+
redirect_to(:action => "export_facebook_widgets")
|
151
|
+
return
|
152
|
+
end
|
153
|
+
product_ids = params[:product_ids].join(',')
|
154
|
+
call = {'secret_token' => FroomerceConfig::VERIFICATION[:token], 'user_id' => user.froomerce_user_id , 'shop_id' => config.froomerce_shop_id, 'product_ids' => product_ids ,'action_type' => 'export_widget'}
|
155
|
+
result = make_api_call(call, FroomerceConfig::VERIFICATION[:facebook_url], 2, user.email)
|
156
|
+
if result != -1
|
157
|
+
if result['status'] == 'success'
|
158
|
+
widget_id = result['data']['widget_id']
|
159
|
+
if is_dummy?(user.email)
|
160
|
+
flash[:notice] = (I18n.t('widget_saved') + "<a href=\"#{FroomerceConfig::VERIFICATION[:temp_base] + FroomerceConfig::VERIFICATION[:widget_url]}?widget_id=#{widget_id}&secret_token=#{FroomerceConfig::VERIFICATION[:token]}&user_id=#{user.froomerce_user_id}\" target=\"_blank\"> here </a>" + I18n.t('widget_continue')).html_safe
|
161
|
+
else
|
162
|
+
flash[:notice] = (I18n.t('widget_saved') + "<a href=\"#{FroomerceConfig::VERIFICATION[:base] + FroomerceConfig::VERIFICATION[:widget_url]}?widget_id=#{widget_id}&secret_token=#{FroomerceConfig::VERIFICATION[:token]}&user_id=#{user.froomerce_user_id}\" target=\"_blank\"> here </a>" + I18n.t('widget_continue')).html_safe
|
163
|
+
end
|
164
|
+
else
|
165
|
+
flash[:error] = I18n.t(".error.e#{result['error']['code']}")
|
166
|
+
end
|
167
|
+
else
|
168
|
+
flash[:error] = I18n.t('.error.HTTPfaliur')
|
169
|
+
end
|
170
|
+
redirect_to(:action => "export_facebook_widgets")
|
171
|
+
end
|
172
|
+
|
173
|
+
def create
|
174
|
+
@froomerce_user = FroomerceUser.new(params[:froomerce_user])
|
175
|
+
if !@froomerce_user.email.match(/[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/) or @froomerce_user.password == ""
|
176
|
+
flash[:error] = I18n.t('.error.validation_error')
|
177
|
+
redirect_to :action => "index"
|
178
|
+
return
|
179
|
+
end
|
180
|
+
call = "email=#{@froomerce_user.email}&password=#{@froomerce_user.password}&action_type=verify_login"
|
181
|
+
result = make_api_call(call, FroomerceConfig::VERIFICATION[:user_url], 1, @froomerce_user.email)
|
182
|
+
if result != -1
|
183
|
+
if result['status'] == 'success'
|
184
|
+
@froomerce_user.froomerce_user_id = result['data']['user_id']
|
185
|
+
unless FroomerceUser.exists?
|
186
|
+
@froomerce_user.save
|
187
|
+
end
|
188
|
+
flash[:notice] = "Successfully Logged In!"
|
189
|
+
redirect_to :action => "export_shop"
|
190
|
+
return
|
191
|
+
else
|
192
|
+
flash[:error] = I18n.t(".error.e#{result['error']['code']}")
|
193
|
+
redirect_to :action => "index"
|
194
|
+
end
|
195
|
+
else
|
196
|
+
flash[:error] = I18n.t('.error.HTTPfaliur')
|
197
|
+
redirect_to :action => "index"
|
198
|
+
end
|
199
|
+
end
|
200
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'api_calls'
|
2
|
+
class FroomerceProductsController < ApplicationController
|
3
|
+
|
4
|
+
include Api_calls
|
5
|
+
def index
|
6
|
+
searcher = Spree::Config.searcher_class.new(params)
|
7
|
+
@products = searcher.retrieve_products
|
8
|
+
@taxon = nil
|
9
|
+
if Taxonomy.exists?
|
10
|
+
@taxon = Taxon.find(:all)
|
11
|
+
end
|
12
|
+
if @products.count < FroomerceConfig::FEED_CONFIG[:temp_limit]
|
13
|
+
config = FroomerceConfig.first
|
14
|
+
user = FroomerceUser.first
|
15
|
+
call = {'secret_token' => FroomerceConfig::VERIFICATION[:token],'user_id'=> user.froomerce_user_id, 'shop_id' => config.froomerce_shop_id, 'action_type' => 'update_feed_status' }
|
16
|
+
result = make_api_call(call, FroomerceConfig::VERIFICATION[:feed_url], 2, user.email)
|
17
|
+
if result != -1
|
18
|
+
if result['status'] == 'success'
|
19
|
+
config.update_attribute(:status, 'Exported')
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
render :template => 'froomerce_products/index.xml.builder', :layout => false
|
24
|
+
end
|
25
|
+
|
26
|
+
def feed_url
|
27
|
+
@page_no = params[:page].to_i
|
28
|
+
searcher = Spree::Config.searcher_class.new(params)
|
29
|
+
@products = searcher.retrieve_products
|
30
|
+
if @products.count < FroomerceConfig::FEED_CONFIG[:feed_per_page]
|
31
|
+
@page_no = nil
|
32
|
+
end
|
33
|
+
@taxon = nil
|
34
|
+
if Taxonomy.exists?
|
35
|
+
@taxon = Taxon.find(:all)
|
36
|
+
end
|
37
|
+
render :template => 'froomerce_products/feed_url.xml.builder', :layout => false
|
38
|
+
end
|
39
|
+
|
40
|
+
def call_backs
|
41
|
+
action = params[:action_type]
|
42
|
+
unless action.nil?
|
43
|
+
callback = CallBacks.new
|
44
|
+
if action.eql? 'export_flag'
|
45
|
+
@result = callback.export_completed
|
46
|
+
elsif action.eql? 'get_attributes'
|
47
|
+
@result = callback.get_attributes(params, root_url)
|
48
|
+
elsif action.eql? 'verify_cart'
|
49
|
+
@result = callback.verify_cart(params)
|
50
|
+
elsif action.eql? 'exported_products'
|
51
|
+
@result = callback.exported_products(params)
|
52
|
+
else
|
53
|
+
@products, @quantity = callback.add_to_cart(params)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
@result ||= {}
|
57
|
+
respond_to do |format|
|
58
|
+
format.json {render :json => @result}
|
59
|
+
format.html
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def truncate_all_tables
|
64
|
+
if FroomerceUser.first.email.eql? 'dummy.export@servis.pk'
|
65
|
+
FroomerceUser.delete_all
|
66
|
+
FroomerceConfig.delete_all
|
67
|
+
FroomerceProductStatus.delete_all
|
68
|
+
flash[:notice] = I18n.t('notify_truncate')
|
69
|
+
redirect_to admin_froomerce_path
|
70
|
+
return
|
71
|
+
else
|
72
|
+
flash[:error] = I18n.t('.error.no_privilege')
|
73
|
+
redirect_to admin_export_shop_path
|
74
|
+
return
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
class FroomerceConfig < ActiveRecord::Base
|
2
|
+
|
3
|
+
VERIFICATION = {:base => 'http://froomerce.com/', :temp_base => 'http://servis.pk/', :token => '5e5225e8d60e8ec72a7fd96135a0e865', :user_url => 'api/user/index', :shop_url => 'api/shop/index',:feed_url => 'api/productfeed/index', :facebook_url => 'api/faceshop/index',:widget_url => 'api/faceshop/export', :feed_status_url => 'api/productfeed/index'}
|
4
|
+
FEED_CONFIG = {:temp_limit => 200, :feed_per_page => 200, :network_id => 5}
|
5
|
+
|
6
|
+
validates_inclusion_of :status, :in => %w(Inprogress Exporting Exported)
|
7
|
+
|
8
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
#class Spree::Taxon
|
2
|
+
Taxon.class_eval do
|
3
|
+
|
4
|
+
def is_category(root_path)
|
5
|
+
if self.parent_id.nil?
|
6
|
+
return root_path[1..-1]
|
7
|
+
end
|
8
|
+
root_path = "/#{self.id}" + root_path
|
9
|
+
Taxon.find(self.parent_id).is_category(root_path)
|
10
|
+
end
|
11
|
+
|
12
|
+
def has_children?
|
13
|
+
unless self.children.blank?
|
14
|
+
return true
|
15
|
+
else
|
16
|
+
return false
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,5 @@
|
|
1
|
+
Deface::Override.new(:virtual_path => "layouts/admin",
|
2
|
+
:name => "Add Froomerce tab to menu",
|
3
|
+
:insert_bottom => "[data-hook='admin_tabs'], #admin_tabs[data-hook]",
|
4
|
+
:text => " <%= tab :froomerces, :css_class => ( params[:controller] == 'admin/froomerces' ) ? 'selected' : '' %>",
|
5
|
+
:disabled => false)
|
@@ -0,0 +1,122 @@
|
|
1
|
+
<%= render :partial => 'admin/shared/froomerce_sub_menu' %>
|
2
|
+
<div class="flash error" id="forced">
|
3
|
+
</div>
|
4
|
+
<div>
|
5
|
+
<div>
|
6
|
+
<h1><%= t('.heading') %></h1>
|
7
|
+
</div>
|
8
|
+
<fieldset>
|
9
|
+
<div id="hd-bar">
|
10
|
+
<%= t('.description') %>
|
11
|
+
<div style="float:right;margin-top:-1px;">
|
12
|
+
<%=t('having_problem') %><a href="mailto:support@froomerce.com"><%=t('here') %></a>
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
<br/>
|
16
|
+
<div id ="export">
|
17
|
+
<b><%= t('.export_facebook') %></b>
|
18
|
+
</div>
|
19
|
+
<br/>
|
20
|
+
<div id="contactBox">
|
21
|
+
<form id="form_facebook" action="<%= @action %>" method="post" target="_blank" remote="true">
|
22
|
+
<ul style="list-style:none; float: left; margin-bottom: 30px;">
|
23
|
+
<li style="list-style:none; float: left; width: 250px;">
|
24
|
+
<b><%= t('.main_shop') %></b>
|
25
|
+
</li>
|
26
|
+
<% if @config && !@flag.nil? %>
|
27
|
+
<% if @flag %>
|
28
|
+
<li style="list-style:none;width: 250px;float: left;margin-left: 100px;">
|
29
|
+
<%= t('.exported') %>
|
30
|
+
</li>
|
31
|
+
</ul>
|
32
|
+
<div style="clear: both">
|
33
|
+
</div>
|
34
|
+
</form>
|
35
|
+
<% else %>
|
36
|
+
<input type="radio" id="check_facebook" style="float: left;margin-left: 100px;"><input type="hidden" name="secret_token" value="<%=@token%>"><input type="hidden" name="email" value="<%=@user.email%>"><input type="hidden" name="password" value="<%=@user.password%>"><input type="hidden" name="user_id" value="<%=@user.froomerce_user_id%>"><input type="hidden" name="shop_id" value="<%=@config.froomerce_shop_id%>"><input type="hidden" name="action_type" value="export_shop">
|
37
|
+
<br/>
|
38
|
+
</ul>
|
39
|
+
<div style="clear: both">
|
40
|
+
</div>
|
41
|
+
<div style="margin-left:20px; margin-bottom: 30px;">
|
42
|
+
<button type="reset">
|
43
|
+
<span><%= t('reset') %></span>
|
44
|
+
</button>
|
45
|
+
<button type="button" id="submit_facebook">
|
46
|
+
<span><%= t('.submit') %></span>
|
47
|
+
</button>
|
48
|
+
</div>
|
49
|
+
</form>
|
50
|
+
<% end %>
|
51
|
+
<% else %>
|
52
|
+
<ul>
|
53
|
+
<li style="list-style:none; margin-top:-18px; width: 250px;float: left;margin-left: 100px;">
|
54
|
+
<%= t('.not_exported') %>
|
55
|
+
</li>
|
56
|
+
</ul>
|
57
|
+
<div class="clr">
|
58
|
+
</div>
|
59
|
+
</div>
|
60
|
+
<% end %>
|
61
|
+
<br/>
|
62
|
+
<div style="clear: both">
|
63
|
+
</div>
|
64
|
+
<div id ="export">
|
65
|
+
<b><%= t('.export_widget') %></b>
|
66
|
+
</div>
|
67
|
+
<br/>
|
68
|
+
<div id="contactBox">
|
69
|
+
<%= form_tag url_for(:action => "export_facebook_widgets"), :id => 'form_widgets' %>
|
70
|
+
<ul style="list-style:none; float: left; margin-bottom: 30px;">
|
71
|
+
<li style="list-style:none; float: left; width: 250px;">
|
72
|
+
<b><%= t('.main_shop') %></b>
|
73
|
+
</li>
|
74
|
+
<% if @config && !@flag.nil? %>
|
75
|
+
<input id="shop_id" type="radio" value="1" name="shop_id" style="float: left;margin-left: 100px;">
|
76
|
+
<br/>
|
77
|
+
</ul>
|
78
|
+
<div style="clear: both">
|
79
|
+
</div>
|
80
|
+
<div style="margin-left:20px; margin-bottom: 30px;">
|
81
|
+
<button type="reset">
|
82
|
+
<span><%= t('reset') %></span>
|
83
|
+
</button>
|
84
|
+
<button type="button" id="submit_widget">
|
85
|
+
<span><%= t('.submit') %></span>
|
86
|
+
</button>
|
87
|
+
</div>
|
88
|
+
<div class="clr">
|
89
|
+
</div>
|
90
|
+
</div>
|
91
|
+
<% else %>
|
92
|
+
<ul>
|
93
|
+
<li style="list-style:none; margin-top:-18px; width: 250px;float: left;margin-left: 100px;">
|
94
|
+
<%= t('.not_exported') %>
|
95
|
+
</li>
|
96
|
+
</ul>
|
97
|
+
<% end %>
|
98
|
+
</fieldset>
|
99
|
+
</div>
|
100
|
+
<script type="text/javascript">
|
101
|
+
$("document").ready(function(){
|
102
|
+
$("#forced").hide();
|
103
|
+
$("#submit_facebook").click(function(){
|
104
|
+
if ($("#check_facebook").is(':checked')) {
|
105
|
+
$('#form_facebook').submit();
|
106
|
+
}
|
107
|
+
else {
|
108
|
+
$("#forced").html("<%= t('shop_select') %>");
|
109
|
+
$("#forced").show();
|
110
|
+
}
|
111
|
+
});
|
112
|
+
$("#submit_widget").click(function(){
|
113
|
+
if ($("#shop_id").is(':checked')) {
|
114
|
+
$('#form_widgets').submit();
|
115
|
+
}
|
116
|
+
else {
|
117
|
+
$("#forced").html("<%= t('shop_select') %>");
|
118
|
+
$("#forced").show();
|
119
|
+
}
|
120
|
+
});
|
121
|
+
});
|
122
|
+
</script>
|
@@ -0,0 +1,108 @@
|
|
1
|
+
<%= render :partial => 'admin/shared/froomerce_sub_menu' %>
|
2
|
+
<div>
|
3
|
+
<h1><%= t('.heading') %></h1>
|
4
|
+
<div>
|
5
|
+
<%= form_tag :action => :make_widget, :method => :post do %>
|
6
|
+
<div style="float:right;margin-top:-56px;">
|
7
|
+
<button type="reset">
|
8
|
+
<span><%= t('reset') %></span>
|
9
|
+
</button>
|
10
|
+
<button type="submit">
|
11
|
+
<span><%= t('.export') %></span>
|
12
|
+
</button>
|
13
|
+
</div>
|
14
|
+
<fieldset>
|
15
|
+
<table class="index" id="listing_products">
|
16
|
+
<tr>
|
17
|
+
<th>
|
18
|
+
<p>
|
19
|
+
</p>
|
20
|
+
</th>
|
21
|
+
<th>
|
22
|
+
<%=sort_link @search,:id, t('.id') %>
|
23
|
+
</th>
|
24
|
+
<th>
|
25
|
+
<%=sort_link @search,:sku, t(:sku) %>
|
26
|
+
</th>
|
27
|
+
<th>
|
28
|
+
<%=sort_link @search,:name, t(:name) %>
|
29
|
+
</th>
|
30
|
+
<th>
|
31
|
+
<%=sort_link @search,:master_price, t(:master_price) %>
|
32
|
+
</th>
|
33
|
+
<th>
|
34
|
+
<%=sort_link @search,:count_on_hand, t('.count_on_hand') %>
|
35
|
+
</th>
|
36
|
+
</tr>
|
37
|
+
<% i = 0 %>
|
38
|
+
<% @products.each do |product| %>
|
39
|
+
<tr id="<%= dom_id product %>" data-hook="admin_products_index_rows">
|
40
|
+
<td>
|
41
|
+
<%= check_box_tag "[product_ids][]", product.id %>
|
42
|
+
</td>
|
43
|
+
<td>
|
44
|
+
<%= product.id rescue '' %>
|
45
|
+
</td>
|
46
|
+
<td>
|
47
|
+
<%= product.sku rescue '' %>
|
48
|
+
</td>
|
49
|
+
<td>
|
50
|
+
<%= product.name rescue '' %>
|
51
|
+
</td>
|
52
|
+
<td>
|
53
|
+
<%= number_to_currency product.price rescue '' %>
|
54
|
+
</td>
|
55
|
+
<td>
|
56
|
+
<%= product.count_on_hand rescue '' %>
|
57
|
+
</td>
|
58
|
+
</tr>
|
59
|
+
<% i += 1 %>
|
60
|
+
<% end %>
|
61
|
+
</table>
|
62
|
+
<% end %>
|
63
|
+
</fieldset>
|
64
|
+
</div>
|
65
|
+
<%= paginate @products %>
|
66
|
+
<% content_for :sidebar do %>
|
67
|
+
<div"><%= form_for @search, :url => 'export_widgets_to_facebook' do |f| %>
|
68
|
+
<div class="box">
|
69
|
+
<h3><%= t(:search) %></h3>
|
70
|
+
<%- locals = {:f => f} %>
|
71
|
+
<div>
|
72
|
+
<p>
|
73
|
+
<%= f.label :name_contains, t(:name) %>
|
74
|
+
<br/>
|
75
|
+
<%= f.text_field :name_contains, :size => 15 %>
|
76
|
+
</p>
|
77
|
+
<p>
|
78
|
+
<%= f.label :variants_including_master_sku_contains, t(:sku) %>
|
79
|
+
<br/>
|
80
|
+
<%= f.text_field :variants_including_master_sku_contains, :size => 15 %>
|
81
|
+
</p>
|
82
|
+
<p>
|
83
|
+
<%= f.label :master_price_gte, t(:master_price) %>
|
84
|
+
<br/>
|
85
|
+
<%= f.text_field :master_price_gte, :size => 8 %>
|
86
|
+
<%= f.label :master_price_lte, "to" %>
|
87
|
+
<%= f.text_field :master_price_lte, :size => 8 %>
|
88
|
+
</p>
|
89
|
+
<p>
|
90
|
+
<%= f.label :count_on_hand_gte, t('.count_on_hand') %>
|
91
|
+
<br/>
|
92
|
+
<%= f.text_field :count_on_hand_gte, :size => 8 %>
|
93
|
+
<%= f.label :count_on_hand_lte, "to" %>
|
94
|
+
<%= f.text_field :count_on_hand_lte, :size => 8 %>
|
95
|
+
</p>
|
96
|
+
</div>
|
97
|
+
<div>
|
98
|
+
<p class="form-buttons">
|
99
|
+
<button type="submit">
|
100
|
+
<span><%= t('.filter') %></span>
|
101
|
+
</button>
|
102
|
+
</p>
|
103
|
+
</div>
|
104
|
+
</div>
|
105
|
+
<% end %>
|
106
|
+
</div>
|
107
|
+
<% end %>
|
108
|
+
<div>
|
@@ -0,0 +1,56 @@
|
|
1
|
+
<%= render :partial => 'admin/shared/froomerce_sub_menu' %>
|
2
|
+
<div>
|
3
|
+
<div>
|
4
|
+
<h1><%= t('.heading') %></h1>
|
5
|
+
</div>
|
6
|
+
<fieldset>
|
7
|
+
<div id="hd-bar">
|
8
|
+
<h2><%= t('.select_shop') %></h2>
|
9
|
+
<div style="float:right;margin-top:-28px;">
|
10
|
+
<%=t('having_problem') %><a href="mailto:support@froomerce.com"><%=t('here') %></a>
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
<div id="contactBox">
|
14
|
+
<%= form_for :froomerce_config, :url => { :action => "create_shop"} do %>
|
15
|
+
<ul>
|
16
|
+
<br/>
|
17
|
+
<div>
|
18
|
+
<li style="list-style:none;margin-left:40px;">
|
19
|
+
<%=t('.main_shop') %>
|
20
|
+
</li>
|
21
|
+
<% if @froomerce_config == "" %>
|
22
|
+
<input id="froomerce_config_shop_id" type="radio" value="1" name="froomerce_config[shop_id]" style="margin-top: -20px;float: left;margin-left: 300px;"><% else %>
|
23
|
+
<p style="margin-top: -20px;float: left;margin-left: 300px;">
|
24
|
+
<%= @froomerce_config.status %>!
|
25
|
+
</p>
|
26
|
+
<% end %>
|
27
|
+
</div>
|
28
|
+
<br/>
|
29
|
+
<% unless @regions == "" %>
|
30
|
+
<li style="list-style:none">
|
31
|
+
<b><%=t('.choose_region') %></b>
|
32
|
+
</li>
|
33
|
+
<% @regions['regions'].each do |hash| %>
|
34
|
+
<div style="margin-top: 20px; margin-bottom: 5px;">
|
35
|
+
<%= image_tag "#{hash['region_flag']}" %>
|
36
|
+
</div>
|
37
|
+
<div style="float: left; margin-top: -20px; margin-left: 39px;">
|
38
|
+
<%=hash['region_name'] %>
|
39
|
+
</div>
|
40
|
+
<input id="froomerce_config_region_id_<%=hash['id'] %>" type="radio" value="<%=hash['id']%>" name="froomerce_config[region_id]" style="margin-top: -20px;float: left;margin-left: 300px;"><% end %>
|
41
|
+
</ul>
|
42
|
+
<div style="margin-left:20px">
|
43
|
+
<button type="reset">
|
44
|
+
<span><%= t('reset') %></span>
|
45
|
+
</button>
|
46
|
+
<button type="submit">
|
47
|
+
<span><%= t('.export') %></span>
|
48
|
+
</button>
|
49
|
+
</div>
|
50
|
+
<% end %>
|
51
|
+
<% end %>
|
52
|
+
<div class="clr">
|
53
|
+
</div>
|
54
|
+
</div>
|
55
|
+
</fieldset>
|
56
|
+
</div>
|