shopqi-app 0.1.0 → 0.1.1
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/README.md +33 -0
- data/app/controllers/shopqi_app/application_controller.rb +1 -0
- data/app/views/shopqi_app/sessions/new.html.haml +1 -1
- data/config/initializers/omniauth.rb +3 -3
- data/lib/generators/shopqi_app/USAGE +20 -0
- data/lib/generators/shopqi_app/shopqi_app_generator.rb +27 -0
- data/lib/generators/shopqi_app/templates/README +12 -0
- data/lib/generators/shopqi_app/templates/app/assets/javascripts/application.js.coffee +18 -0
- data/{app/assets/stylesheets/shopqi_app → lib/generators/shopqi_app/templates/app/assets/stylesheets}/application.css.less.erb +10 -5
- data/lib/generators/shopqi_app/templates/app/controllers/application_controller.rb +6 -0
- data/lib/generators/shopqi_app/templates/app/controllers/home_controller.rb +13 -0
- data/lib/generators/shopqi_app/templates/app/helpers/home_helper.rb +17 -0
- data/lib/generators/shopqi_app/templates/app/views/home/index.html.haml +37 -0
- data/{app/views/layouts/shopqi_app → lib/generators/shopqi_app/templates/app/views/layouts}/application.html.haml +1 -1
- data/lib/generators/shopqi_app/templates/config/app_secret_config.yml.erb +20 -0
- data/lib/shopqi-app.rb +1 -0
- data/lib/shopqi_app/engine.rb +7 -0
- data/lib/shopqi_app/helpers.rb +8 -0
- data/lib/shopqi_app/version.rb +1 -1
- metadata +17 -8
- data/README.rdoc +0 -3
- data/app/assets/javascripts/shopqi_app/application.js.coffee +0 -9
data/README.md
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# ShopQi App Engine
|
2
|
+
|
3
|
+
集成访问 ShopQi API 的功能,支持以 ShopQi 用户身份登录
|
4
|
+
|
5
|
+
## 安装
|
6
|
+
|
7
|
+
$ echo "gem 'shopqi-app'" >> Gemfile
|
8
|
+
$ bundle
|
9
|
+
|
10
|
+
## 使用
|
11
|
+
|
12
|
+
$ rails g shopqi_app client_id client_secret
|
13
|
+
|
14
|
+
`client_id`, `client_secret` 在注册 Application 后显示,注册时 `REDIRECT URI` 填写 localhost:3000/app/callback
|
15
|
+
|
16
|
+
## 配置
|
17
|
+
|
18
|
+
如需修改 scope, 请打开 `config/app_secret_config.yml`
|
19
|
+
|
20
|
+
defaults: &defaults
|
21
|
+
oauth:
|
22
|
+
client_id: 'dffd069fa92096022628a1f7eb174bc85d90278b8c90ec7ebadfbd94924bd2b8'
|
23
|
+
secret: 'e1805141c81c496e4779371f41263c9f74ac2ffd3728302296b8af10b64d9c9b'
|
24
|
+
scope: 'read_products read_orders'
|
25
|
+
redirect_uri: 'http://localhost:3000/app/callback'
|
26
|
+
|
27
|
+
## 最后
|
28
|
+
|
29
|
+
启动应用服务
|
30
|
+
|
31
|
+
$ rails s
|
32
|
+
|
33
|
+
访问 [http://localhost:3000](http://localhost:3000)
|
@@ -4,5 +4,5 @@
|
|
4
4
|
安装应用
|
5
5
|
%small 请输入商店 URL 地址
|
6
6
|
= form_tag login_path, :class => 'form-search' do
|
7
|
-
= text_field_tag 'shop', nil, :placeholder => '
|
7
|
+
= text_field_tag 'shop', nil, :placeholder => '商店 URL 地址', :class => 'btn-large', :id => 'shop'
|
8
8
|
= submit_tag '安装', :class => 'btn btn-primary btn-large'
|
@@ -1,8 +1,8 @@
|
|
1
1
|
Rails.application.config.middleware.use OmniAuth::Builder do
|
2
2
|
provider :shopqi,
|
3
|
-
SecretSetting.oauth.client_id,
|
4
|
-
SecretSetting.oauth.secret,
|
5
|
-
:scope => SecretSetting.oauth.scope,
|
3
|
+
(SecretSetting.oauth.client_id rescue nil), # 调用 generator 时还没有 app_secret_config.yml 文件
|
4
|
+
(SecretSetting.oauth.secret rescue nil),
|
5
|
+
:scope => (SecretSetting.oauth.scope rescue nil),
|
6
6
|
:callback_path => '/app/callback',
|
7
7
|
:setup => lambda {|env|
|
8
8
|
params = Rack::Utils.parse_query(env['QUERY_STRING'])
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Description:
|
2
|
+
Generator ShopQi API files.
|
3
|
+
|
4
|
+
Example:
|
5
|
+
rails generate shopqi_app client_id client_secret
|
6
|
+
|
7
|
+
This will remove:
|
8
|
+
app/assets/javascripts/application.js
|
9
|
+
app/assets/stylesheets/application_helpern.css
|
10
|
+
app/views/layouts/application.html.erb
|
11
|
+
public/index.html
|
12
|
+
|
13
|
+
This will create:
|
14
|
+
app/assets/javascripts/application.js.coffee
|
15
|
+
app/assets/stylesheets/application_helpernon.css.less.erb
|
16
|
+
app/controllers/home_controller.rb
|
17
|
+
app/helpers/home_helper.rb
|
18
|
+
app/views/home/
|
19
|
+
app/views/layouts/application.html.haml
|
20
|
+
config/app_secret_config.yml
|
@@ -0,0 +1,27 @@
|
|
1
|
+
class ShopqiAppGenerator < Rails::Generators::Base
|
2
|
+
source_root File.expand_path('../templates', __FILE__)
|
3
|
+
|
4
|
+
argument :client_id , type: :string, required: true
|
5
|
+
argument :client_secret, type: :string, required: true
|
6
|
+
|
7
|
+
def copy_files
|
8
|
+
directory 'app'
|
9
|
+
template 'config/app_secret_config.yml.erb', 'config/app_secret_config.yml'
|
10
|
+
end
|
11
|
+
|
12
|
+
def remove_files
|
13
|
+
remove_file 'public/index.html'
|
14
|
+
remove_file 'app/assets/javascripts/application.js'
|
15
|
+
remove_file 'app/assets/stylesheets/application.css'
|
16
|
+
remove_file 'app/views/layouts/application.html.erb'
|
17
|
+
end
|
18
|
+
|
19
|
+
def add_routes
|
20
|
+
route "mount ShopqiApp::Engine => '/app'"
|
21
|
+
route "root :to => 'home#index'"
|
22
|
+
end
|
23
|
+
|
24
|
+
def show
|
25
|
+
readme "README"
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
===============================================================================
|
2
|
+
|
3
|
+
There is something that you need to do before you use shopqi-app.
|
4
|
+
|
5
|
+
Step 0.
|
6
|
+
If you DO NOT use database, you MUST comment the line below in config/application.rb
|
7
|
+
# require "active_record/railtie"
|
8
|
+
|
9
|
+
Step 1.
|
10
|
+
$ rails server
|
11
|
+
|
12
|
+
===============================================================================
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#= require jquery
|
2
|
+
#= require jquery_ujs
|
3
|
+
#= require_tree .
|
4
|
+
|
5
|
+
#= require twitter/bootstrap/dropdown.js
|
6
|
+
# accordion 依赖
|
7
|
+
#= require twitter/bootstrap/transition.js
|
8
|
+
#= require twitter/bootstrap/collapse.js
|
9
|
+
###
|
10
|
+
#= require twitter/bootstrap/tooltip.js
|
11
|
+
###
|
12
|
+
|
13
|
+
$(document).ready ->
|
14
|
+
$('#shop').focus()
|
15
|
+
|
16
|
+
###
|
17
|
+
#$('#main').tooltip selector: "span[rel=tooltip], a[rel=tooltip]"
|
18
|
+
###
|
@@ -18,19 +18,19 @@
|
|
18
18
|
@import "twitter/bootstrap/type.less";
|
19
19
|
//@import "twitter/bootstrap/code.less";
|
20
20
|
@import "twitter/bootstrap/forms.less";
|
21
|
-
|
21
|
+
@import "twitter/bootstrap/tables.less";
|
22
22
|
|
23
23
|
// Components: common
|
24
24
|
@import "twitter/bootstrap/sprites.less";
|
25
25
|
@import "twitter/bootstrap/dropdowns.less";
|
26
26
|
@import "twitter/bootstrap/wells.less";
|
27
|
-
|
27
|
+
@import "twitter/bootstrap/component-animations.less";
|
28
28
|
//@import "twitter/bootstrap/close.less";
|
29
29
|
|
30
30
|
// Components: Buttons & Alerts
|
31
31
|
@import "twitter/bootstrap/buttons.less";
|
32
32
|
//@import "twitter/bootstrap/button-groups.less";
|
33
|
-
|
33
|
+
@import "twitter/bootstrap/alerts.less"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less
|
34
34
|
|
35
35
|
// Components: Nav
|
36
36
|
@import "twitter/bootstrap/navs.less";
|
@@ -41,14 +41,14 @@
|
|
41
41
|
|
42
42
|
// Components: Popovers
|
43
43
|
//@import "twitter/bootstrap/modals.less";
|
44
|
-
|
44
|
+
@import "twitter/bootstrap/tooltip.less";
|
45
45
|
//@import "twitter/bootstrap/popovers.less";
|
46
46
|
|
47
47
|
// Components: Misc
|
48
48
|
//@import "twitter/bootstrap/thumbnails.less";
|
49
49
|
@import "twitter/bootstrap/labels-badges.less";
|
50
50
|
//@import "twitter/bootstrap/progress-bars.less";
|
51
|
-
|
51
|
+
@import "twitter/bootstrap/accordion.less";
|
52
52
|
//@import "twitter/bootstrap/carousel.less";
|
53
53
|
@import "twitter/bootstrap/hero-unit.less";
|
54
54
|
|
@@ -58,3 +58,8 @@
|
|
58
58
|
body {
|
59
59
|
margin-top: 50px;
|
60
60
|
margin-bottom: 100px; }
|
61
|
+
|
62
|
+
.accordion-body {
|
63
|
+
background: #F9F9F9;
|
64
|
+
.accordion-inner {
|
65
|
+
padding: 20px; }}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class HomeController < ApplicationController
|
2
|
+
skip_before_filter :authenticate_shop!, only: :index
|
3
|
+
|
4
|
+
def index
|
5
|
+
if signed_in?
|
6
|
+
Shopkit.setup url: session[:shopqi][:url], access_token: session[:shopqi][:access_token] # set in shopqi-app sessions controller
|
7
|
+
@orders = Shopkit.orders per_page: 3
|
8
|
+
@products = Shopkit.products per_page: 5
|
9
|
+
else
|
10
|
+
redirect_to shopqi_app.login_path
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module HomeHelper
|
2
|
+
|
3
|
+
def financial_class(financial_status)
|
4
|
+
case financial_status
|
5
|
+
when 'pending' then 'label-warning'
|
6
|
+
when 'paid' then 'label-success'
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def fulfillment_class(fulfillment_status)
|
11
|
+
case fulfillment_status
|
12
|
+
when 'partial' then 'label-warning'
|
13
|
+
when 'fulfilled' then 'label-success'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
.content
|
2
|
+
%h2 最近订单
|
3
|
+
%table.table.table-striped
|
4
|
+
%thead
|
5
|
+
%tr
|
6
|
+
%th 订单号
|
7
|
+
%th 顾客
|
8
|
+
%th 支付状态
|
9
|
+
%th 发货状态
|
10
|
+
%th 总金额
|
11
|
+
%tbody
|
12
|
+
-@orders.each do |order|
|
13
|
+
%tr
|
14
|
+
%td=link_to order['name'], "#{shop_url}/admin/orders/#{order['id']}", target: :_blank
|
15
|
+
%td=order['customer']['name']
|
16
|
+
%td
|
17
|
+
%span.label(class="#{financial_class(order['financial_status'])}")
|
18
|
+
=order['financial_status_name']
|
19
|
+
%td
|
20
|
+
%span.label(class="#{fulfillment_class(order['fulfillment_status'])}")
|
21
|
+
=order['fulfillment_status_name']
|
22
|
+
%td=order['total_price']
|
23
|
+
|
24
|
+
%h2 商品信息
|
25
|
+
#product-accordion.accordion
|
26
|
+
-@products.each do |product|
|
27
|
+
.accordion-group
|
28
|
+
.accordion-heading
|
29
|
+
%a.accordion-toggle{href: "#product-#{product['id']}", data: {toggle: 'collapse', parent: '#product-accordion'}}
|
30
|
+
=product['title']
|
31
|
+
%div.accordion-body.collapse(id="product-#{product['id']}")
|
32
|
+
.accordion-inner
|
33
|
+
%p==类型: #{product['product_type']}
|
34
|
+
%p==生产商: #{product['vendor']}
|
35
|
+
=raw product['body_html']
|
36
|
+
%br/
|
37
|
+
%p=link_to "前往 ShopQi 后台管理查看", "#{shop_url}/admin/products/#{product['id']}", class: 'btn btn-primary', target: :_blank
|
@@ -0,0 +1,20 @@
|
|
1
|
+
defaults: &defaults
|
2
|
+
oauth:
|
3
|
+
client_id: <%= client_id %>
|
4
|
+
secret: <%= client_secret %>
|
5
|
+
scope: 'read_products read_orders'
|
6
|
+
redirect_uri: 'http://localhost:3000/app/callback'
|
7
|
+
|
8
|
+
development:
|
9
|
+
<<: *defaults
|
10
|
+
|
11
|
+
test:
|
12
|
+
<<: *defaults
|
13
|
+
|
14
|
+
production:
|
15
|
+
<<: *defaults
|
16
|
+
oauth:
|
17
|
+
client_id: <%= client_id %>
|
18
|
+
client_secret: <%= client_secret %>
|
19
|
+
scope: 'read_products read_orders'
|
20
|
+
redirect_uri: 'http://localhost:3000/app/callback'
|
data/lib/shopqi-app.rb
CHANGED
data/lib/shopqi_app/engine.rb
CHANGED
data/lib/shopqi_app/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shopqi-app
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -150,19 +150,28 @@ files:
|
|
150
150
|
- app/controllers/shopqi_app/application_controller.rb
|
151
151
|
- app/controllers/shopqi_app/sessions_controller.rb
|
152
152
|
- app/models/secret_setting.rb
|
153
|
-
- app/assets/javascripts/shopqi_app/application.js.coffee
|
154
|
-
- app/assets/stylesheets/shopqi_app/application.css.less.erb
|
155
153
|
- app/views/shopqi_app/sessions/new.html.haml
|
156
|
-
- app/views/layouts/shopqi_app/application.html.haml
|
157
154
|
- config/initializers/omniauth.rb
|
158
155
|
- config/routes.rb
|
156
|
+
- lib/generators/shopqi_app/templates/app/helpers/home_helper.rb
|
157
|
+
- lib/generators/shopqi_app/templates/app/controllers/application_controller.rb
|
158
|
+
- lib/generators/shopqi_app/templates/app/controllers/home_controller.rb
|
159
|
+
- lib/generators/shopqi_app/templates/app/assets/javascripts/application.js.coffee
|
160
|
+
- lib/generators/shopqi_app/templates/app/assets/stylesheets/application.css.less.erb
|
161
|
+
- lib/generators/shopqi_app/templates/app/views/layouts/application.html.haml
|
162
|
+
- lib/generators/shopqi_app/templates/app/views/home/index.html.haml
|
163
|
+
- lib/generators/shopqi_app/templates/config/app_secret_config.yml.erb
|
164
|
+
- lib/generators/shopqi_app/templates/README
|
165
|
+
- lib/generators/shopqi_app/USAGE
|
166
|
+
- lib/generators/shopqi_app/shopqi_app_generator.rb
|
159
167
|
- lib/shopqi-app.rb
|
160
168
|
- lib/shopqi_app/version.rb
|
161
169
|
- lib/shopqi_app/engine.rb
|
170
|
+
- lib/shopqi_app/helpers.rb
|
162
171
|
- lib/tasks/shopqi_app_tasks.rake
|
163
172
|
- MIT-LICENSE
|
164
173
|
- Rakefile
|
165
|
-
- README.
|
174
|
+
- README.md
|
166
175
|
homepage: https://github.com/saberma/shopqi-app
|
167
176
|
licenses: []
|
168
177
|
post_install_message:
|
@@ -177,7 +186,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
177
186
|
version: '0'
|
178
187
|
segments:
|
179
188
|
- 0
|
180
|
-
hash:
|
189
|
+
hash: 850028705
|
181
190
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
182
191
|
none: false
|
183
192
|
requirements:
|
@@ -186,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
186
195
|
version: '0'
|
187
196
|
segments:
|
188
197
|
- 0
|
189
|
-
hash:
|
198
|
+
hash: 850028705
|
190
199
|
requirements: []
|
191
200
|
rubyforge_project:
|
192
201
|
rubygems_version: 1.8.24
|
data/README.rdoc
DELETED