Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
fc0d692
admin namespace & route
xdite Jun 9, 2014
15b0176
Add product
xdite Jun 9, 2014
677a5e6
add product new
xdite Jun 9, 2014
540c410
add admin_products_index
xdite Jun 9, 2014
b7a3ed5
install devise
xdite Jun 9, 2014
6539e53
add admin_user
xdite Jun 9, 2014
e63fa02
add signin/signout
xdite Jun 9, 2014
158bb27
install bootstrap
Jun 9, 2014
e13db1a
add welcome page
xdite Jun 12, 2014
e6295f3
* Bootstrap
xdite Jun 12, 2014
4b9d689
Admin Should able to see admin panel link in dropdown menu
xdite Jun 12, 2014
67f1576
Refine with Product List with table
xdite Jun 12, 2014
dc21ff7
SimpleForm with Bootstrap
xdite Jun 12, 2014
631e094
Render Edit
xdite Jun 12, 2014
9d049ff
* install carrierwave
xdite Jun 12, 2014
3bfdfd2
build product index
xdite Jun 12, 2014
fbcdd50
refine show page
xdite Jun 12, 2014
6e16e1f
add notice stickits
xdite Jun 12, 2014
39ac28e
store-v2 spec
xdite Jun 12, 2014
67e9b80
add gem:better_errors guard-livereload
motephyr Jun 17, 2014
40b1f57
add shopping cart icon
motephyr Jun 17, 2014
d760349
create add_to_cart path
motephyr Jun 17, 2014
0f97fcb
create cart&cart_item model
motephyr Jun 17, 2014
9a9df45
add_to_cart method
motephyr Jun 17, 2014
0c6b455
add helper_method :current_cart
motephyr Jun 17, 2014
7464ade
patch cart&cart_item model method
motephyr Jun 17, 2014
f8f4963
show carts products count
motephyr Jun 17, 2014
e7ebe51
create carts index
motephyr Jun 17, 2014
6aae67a
render_cart_total_price
motephyr Jun 18, 2014
97f3e07
checkout.html.erb
motephyr Jun 18, 2014
6bdadb2
create model
motephyr Jun 18, 2014
3c5274d
nested form & fix route & ordersControlller
motephyr Jun 18, 2014
ca75fe9
fix bug
motephyr Jun 18, 2014
9d8d25c
orders/show & redirect_to & add_token_to_order
motephyr Jun 18, 2014
e224dd0
set_payment & set_paid
motephyr Jun 18, 2014
7c2e139
add aasm status to order
motephyr Jun 19, 2014
8c0e09f
clean shopping cart
motephyr Jun 19, 2014
c692361
clean cart
motephyr Jun 19, 2014
11a647a
cart_item destroy
motephyr Jun 19, 2014
b91ad01
can update cart_item quantity (看解答的...)
motephyr Jun 20, 2014
fa268d2
sum = price x quantity
motephyr Jun 20, 2014
9e2a177
fix
motephyr Jun 20, 2014
4335768
數量為 0 的貨物不能「購買」
motephyr Jun 20, 2014
c8e39e9
加入購物車應該是add to cart_items
motephyr Jun 20, 2014
6fae574
看到user所有訂單
motephyr Jun 20, 2014
04a461d
redirect account_orders_path
motephyr Jun 20, 2014
b88c11d
add admin/orders index view
motephyr Jun 22, 2014
246cc2d
use eval to change order state
motephyr Jun 22, 2014
0a2b6ec
測試訂單確認信
motephyr Jun 23, 2014
aa7536a
add roadie
motephyr Jun 23, 2014
eabaeb3
stripe & mailgun
motephyr Jun 23, 2014
df53766
作業1:付款成功寄信通知,信中的連結可以連結到order
motephyr Jun 24, 2014
83edd15
refactor order place
motephyr Jun 25, 2014
079c90d
clean service object
motephyr Jun 26, 2014
bdd6612
ransack
motephyr Jun 26, 2014
a21bd86
finish settingslogic & fix stripe
motephyr Jun 26, 2014
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,5 @@
# Ignore all logfiles and tempfiles.
/log/*.log
/tmp

public/uploads
26 changes: 24 additions & 2 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,30 @@ gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc

# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring', group: :development

group :development do
gem 'spring'
gem "better_errors", "~> 0.9.0"
gem "guard-livereload"
gem "binding_of_caller"
gem "letter_opener"
gem "roadie"
end


gem "devise"
gem 'stripe'

gem "bootstrap-sass"
gem "simple_form", "3.1.0rc1"
gem 'carrierwave'
gem "mini_magick"
gem 'aasm'
gem 'ransack', github: "activerecord-hackery/ransack", branch: "rails-4.1"
gem 'settingslogic'

group :development do
gem "annotate"
end
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

Expand Down
119 changes: 119 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,6 +1,19 @@
GIT
remote: git://github.com/activerecord-hackery/ransack.git
revision: 625e58cbb5ea5e155464ea2d79497838313352f2
branch: rails-4.1
specs:
ransack (1.2.4)
actionpack (>= 4.0)
activerecord (>= 4.0)
activesupport (>= 4.0)
i18n
polyamorous (~> 1.0.0)

GEM
remote: https://rubygems.org/
specs:
aasm (3.2.1)
actionmailer (4.1.0)
actionpack (= 4.1.0)
actionview (= 4.1.0)
Expand All @@ -27,18 +40,64 @@ GEM
minitest (~> 5.1)
thread_safe (~> 0.1)
tzinfo (~> 1.1)
addressable (2.3.6)
annotate (2.6.3)
activerecord (>= 2.3.0)
rake (>= 0.8.7)
arel (5.0.1.20140414130214)
bcrypt (3.1.7)
better_errors (0.9.0)
coderay (>= 1.0.0)
erubis (>= 2.6.6)
binding_of_caller (0.7.2)
debug_inspector (>= 0.0.1)
bootstrap-sass (3.0.3.0)
sass (~> 3.2)
builder (3.2.2)
carrierwave (0.10.0)
activemodel (>= 3.2.0)
activesupport (>= 3.2.0)
json (>= 1.7)
mime-types (>= 1.16)
celluloid (0.15.2)
timers (~> 1.1.0)
coderay (1.1.0)
coffee-rails (4.0.1)
coffee-script (>= 2.2.0)
railties (>= 4.0.0, < 5.0)
coffee-script (2.2.0)
coffee-script-source
execjs
coffee-script-source (1.7.0)
css_parser (1.3.5)
addressable
debug_inspector (0.0.2)
devise (3.2.4)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 3.2.6, < 5)
thread_safe (~> 0.1)
warden (~> 1.2.3)
em-websocket (0.5.0)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.5.3)
erubis (2.7.0)
eventmachine (1.0.3)
execjs (2.2.0)
ffi (1.9.3)
formatador (0.2.4)
guard (2.6.1)
formatador (>= 0.2.4)
listen (~> 2.7)
lumberjack (~> 1.0)
pry (>= 0.9.12)
thor (>= 0.18.1)
guard-livereload (2.1.2)
em-websocket (~> 0.5)
guard (~> 2.0)
multi_json (~> 1.8)
hike (1.2.3)
http_parser.rb (0.5.3)
i18n (0.6.9)
jbuilder (2.0.8)
activesupport (>= 3.0.0, < 5)
Expand All @@ -47,13 +106,35 @@ GEM
railties (>= 3.0, < 5.0)
thor (>= 0.14, < 2.0)
json (1.8.1)
launchy (2.4.2)
addressable (~> 2.3)
letter_opener (1.2.0)
launchy (~> 2.2)
listen (2.7.5)
celluloid (>= 0.15.2)
rb-fsevent (>= 0.9.3)
rb-inotify (>= 0.9)
lumberjack (1.0.5)
mail (2.5.4)
mime-types (~> 1.16)
treetop (~> 1.4.8)
method_source (0.8.2)
mime-types (1.25.1)
mini_magick (3.7.0)
subexec (~> 0.2.1)
mini_portile (0.6.0)
minitest (5.3.4)
multi_json (1.10.1)
nokogiri (1.6.2.1)
mini_portile (= 0.6.0)
orm_adapter (0.5.0)
polyamorous (1.0.0)
activerecord (>= 3.0)
polyglot (0.3.5)
pry (0.9.12.6)
coderay (~> 1.0)
method_source (~> 0.8)
slop (~> 3.4)
rack (1.5.2)
rack-test (0.6.2)
rack (>= 1.0)
Expand All @@ -73,8 +154,18 @@ GEM
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rake (10.3.2)
rb-fsevent (0.9.4)
rb-inotify (0.9.4)
ffi (>= 0.5.0)
rdoc (4.1.1)
json (~> 1.4)
rest-client (1.6.7)
mime-types (>= 1.16)
roadie (2.4.3)
actionmailer (> 3.0.0, < 5.0.0)
css_parser (~> 1.3.4)
nokogiri (> 1.5.0)
sprockets
sass (3.2.19)
sass-rails (4.0.3)
railties (>= 4.0.0, < 5.0)
Expand All @@ -84,6 +175,11 @@ GEM
sdoc (0.4.0)
json (~> 1.8)
rdoc (~> 4.0, < 5.0)
settingslogic (2.0.9)
simple_form (3.1.0.rc1)
actionpack (~> 4.0)
activemodel (~> 4.0)
slop (3.5.0)
spring (1.1.3)
sprockets (2.11.0)
hike (~> 1.2)
Expand All @@ -95,9 +191,15 @@ GEM
activesupport (>= 3.0)
sprockets (~> 2.8)
sqlite3 (1.3.9)
stripe (1.14.0)
json (~> 1.8.1)
mime-types (~> 1.25)
rest-client (~> 1.4)
subexec (0.2.3)
thor (0.19.1)
thread_safe (0.3.4)
tilt (1.4.1)
timers (1.1.0)
treetop (1.4.15)
polyglot
polyglot (>= 0.3.1)
Expand All @@ -108,18 +210,35 @@ GEM
uglifier (2.5.0)
execjs (>= 0.3.0)
json (>= 1.8.0)
warden (1.2.3)
rack (>= 1.0)

PLATFORMS
ruby

DEPENDENCIES
aasm
annotate
better_errors (~> 0.9.0)
binding_of_caller
bootstrap-sass
carrierwave
coffee-rails (~> 4.0.0)
devise
guard-livereload
jbuilder (~> 2.0)
jquery-rails
letter_opener
mini_magick
rails (= 4.1.0)
ransack!
roadie
sass-rails (~> 4.0.3)
sdoc (~> 0.4.0)
settingslogic
simple_form (= 3.1.0rc1)
spring
sqlite3
stripe
turbolinks
uglifier (>= 1.3.0)
11 changes: 11 additions & 0 deletions Guardfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# A sample Guardfile
# More info at https://github.com/guard/guard#readme

guard 'livereload' do
watch(%r{app/views/.+\.(erb|haml|slim)$})
watch(%r{app/helpers/.+\.rb})
watch(%r{public/.+\.(css|js|html)})
watch(%r{config/locales/.+\.yml})
# Rails Assets Pipeline
watch(%r{(app|vendor)(/assets/\w+/(.+\.(css|js|html|png|jpg))).*}) { |m| "/assets/#{m[3]}" }
end
66 changes: 66 additions & 0 deletions TODO
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@

購物:
✔ 身為消費者,我要在前台能夠找到商品並加到購物車 @done (14-06-18 14:57)
✔ 身為消費者,我要在前台能夠將多樣商品加到購物車,並生成一張訂單 @done (14-06-20 11:06)
✔ 身為消費者,當系統生成一張訂單後,我可以填寫寄送資訊,並且用信用卡結帳 @done (14-06-20 11:06)
☐ 身為消費者,當我用信用卡結帳後,我的信箱要能收到一張訂單確認信

✔ 身為消費者,當我在結賬後,購物⾞應自動清空 @done (14-06-20 11:06)
✔ 身為消費者,我可以從購物車內刪掉某些物品 @done (14-06-20 11:06)
✔ 身為消費者,我可以從購物車內更新購買數量 @done (14-06-20 11:06)
✔ 購物車的總價 => 小計 x 數量 @done (14-06-20 11:06)
✔ 數量為 0 的貨物不能「購買」 @done (14-06-20 11:33)
✔ 建立 account/orders 可以看到該使用者過去所有訂單 @done (14-06-20 12:28)
✔ 結賬後跳轉到 account/orders#index @done (14-06-20 12:28)
Admin 管理訂單:
☐ 身為管理者,可以在後台看訂單,訂單狀態分為未結帳、已結帳、出貨中、已出貨、辦理退貨
☐ 身為管理者,我可以在後台對單張訂單做狀態改變
☐ 身為管理者,當我在將商品設為已出貨時,消費者應該收到一張已出貨的通知信

☐ 身為商家,當消費者確定購物結帳後,該商品的庫存必須按照數量減少


Admin:
✔ Admin Should able to see admin panel link in dropdown menu @done (14-06-13 01:59)
Product:
✔ Refine with Product List with table @done (14-06-13 02:14)
✔ should able update image when create product @done (14-06-13 04:09)
☐ should able to upload image after update

其他:
✔ 套 Bootstrap 版 @done (14-06-12 18:33)
✔ Login / Logout using bootstrap nav @done (14-06-12 18:33)
✔ SimpleForm with Bootstrap @done (14-06-13 02:39)
✔ 安裝 Carrierwave @done (14-06-13 03:21)
☐ Search function ( using Ransack )

有空想做的:
☐ 重新整理登入 / 登出畫面
☐ 加入 Facebook Login


--- ✄ -----------------------

身為商家的管理者,我要能夠在後台上架我的東西,並設定能夠販賣:
✔ 管理者必須要有一個後台 @done (14-06-12 17:56)
✔ 後台必須要可以新增產品 @done (14-06-12 17:56)
✔ 產品內容必須要有標題、文字、數量 @done (14-06-12 18:02)
✔ 產品必須要有價格 @done (14-06-13 03:21)
✔ 產品內容必須要有圖片 @done (14-06-13 03:21)

身為商家的管理者,我要能夠在後台設定權限,權限分成管理者以及消費者:
✔ 身為管理者,才可以進入後台 @done (14-06-13 03:39)
✔ 身為管理者,必須要登入且是 admin @done (14-06-13 03:39)
✔ 管理者身份必須要被分為 admin / user @done (14-06-13 03:39)


任何使用者都要能看到首頁:
✔ 首頁應該要能夠看到所有商品 @done (14-06-13 03:39)
✔ 任何使用者都要能看到首頁 @done (14-06-13 03:39)



任何使用者都要能看到產品頁:
✔ 產品頁應該能要看到標題 @done (14-06-13 04:09)
✔ 產品頁應該要能看到敘述 @done (14-06-13 04:09)
✔ 產品頁應該要能看到圖片 @done (14-06-13 04:09)

3 changes: 3 additions & 0 deletions app/assets/javascripts/account/orders.js.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://coffeescript.org/
3 changes: 3 additions & 0 deletions app/assets/javascripts/admin/orders.js.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://coffeescript.org/
3 changes: 3 additions & 0 deletions app/assets/javascripts/admin/products.js.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://coffeescript.org/
4 changes: 2 additions & 2 deletions app/assets/javascripts/application.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@
//
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
//= require bootstrap/dropdown
//= require orders
3 changes: 3 additions & 0 deletions app/assets/javascripts/card_charges.js.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://coffeescript.org/
3 changes: 3 additions & 0 deletions app/assets/javascripts/cart_item.js.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://coffeescript.org/
3 changes: 3 additions & 0 deletions app/assets/javascripts/carts.js.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://coffeescript.org/
35 changes: 35 additions & 0 deletions app/assets/javascripts/orders.js.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://coffeescript.org/

jQuery ($) ->
$("#payment-form").submit (event) ->
$form = $(this)

# Disable the submit button to prevent repeated clicks
$form.find("button").prop "disabled", true
Stripe.createToken $form, stripeResponseHandler

# Prevent the form from submitting with the default action
false

return

stripeResponseHandler = (status, response) ->
$form = $("#payment-form")
if response.error

# Show the errors on the form
$form.find(".payment-errors").text response.error.message
$form.find("button").prop "disabled", false
else

# token contains id, last4, and card type
token = response.id

# Insert the token into the form so it gets submitted to the server
$form.append $("<input type=\"hidden\" name=\"stripeToken\" />").val(token)

# and submit
$form.get(0).submit()
return
3 changes: 3 additions & 0 deletions app/assets/javascripts/products.js.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://coffeescript.org/
3 changes: 3 additions & 0 deletions app/assets/stylesheets/account/orders.css.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
// Place all the styles related to the account::orders controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
Loading