versacommerce_app 1.0.24 → 1.0.25
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 +9 -0
- data/lib/generators/versacommerce_app/templates/app/controllers/application_controller.rb +6 -0
- data/lib/generators/versacommerce_app/templates/app/controllers/sessions_controller.rb +13 -0
- data/lib/generators/versacommerce_app/templates/app/views/home/index.html.erb +1 -1
- data/lib/generators/versacommerce_app/templates/app/views/layouts/application.html.erb +47 -11
- data/lib/generators/versacommerce_app/templates/config/locales/de.yml +2 -0
- data/lib/generators/versacommerce_app/templates/config/locales/en.yml +3 -0
- data/lib/generators/versacommerce_app/templates/public/javascripts/respond.min.js +6 -0
- data/lib/versacommerce_app/ensure_api_session.rb +1 -1
- data/lib/versacommerce_app/version.rb +1 -1
- metadata +17 -13
- checksums.yaml +0 -7
- data/lib/generators/versacommerce_app/templates/public/favicon.png +0 -0
- data/lib/generators/versacommerce_app/templates/public/versacommerce-114.png +0 -0
- data/lib/generators/versacommerce_app/templates/public/versacommerce-57.png +0 -0
- data/lib/generators/versacommerce_app/templates/public/versacommerce-72.png +0 -0
data/README.md
CHANGED
@@ -10,6 +10,15 @@ The generator creates a basic SessionsController for authenticating with your sh
|
|
10
10
|
|
11
11
|
*Note: It's recommended to use this on a new Rails project, so that the generator won't overwrite/delete some of your files.*
|
12
12
|
|
13
|
+
## Register your app first
|
14
|
+
|
15
|
+
To use the VersaCommerce API you will need an application registration for your store.
|
16
|
+
|
17
|
+
1. SignUp as an developer: http://app.versacommerce.de/developer/signup
|
18
|
+
2. Login to your developer account: http://app.versacommerce.de/developer
|
19
|
+
3. Register your app.
|
20
|
+
|
21
|
+
|
13
22
|
## Installation
|
14
23
|
|
15
24
|
``` sh
|
@@ -19,4 +19,10 @@ class ApplicationController < ActionController::Base
|
|
19
19
|
Rails.application.routes.default_url_options[:locale]= I18n.locale
|
20
20
|
end
|
21
21
|
|
22
|
+
# prepare variable for the views
|
23
|
+
def set_installed_shops
|
24
|
+
@installed_shops = session[:installed_shops]
|
25
|
+
end
|
26
|
+
|
27
|
+
|
22
28
|
end
|
@@ -34,6 +34,10 @@ class SessionsController < ApplicationController
|
|
34
34
|
# https://github.com/versacommerce/versacommerce_api (see sample code)
|
35
35
|
#
|
36
36
|
session[:versacommerce] = current_session
|
37
|
+
|
38
|
+
# save current shop to array in session, to allow switching between shops
|
39
|
+
save_installed_shop
|
40
|
+
|
37
41
|
flash[:success] = t('sessions.controller.finalize_ok')
|
38
42
|
redirect_to return_address
|
39
43
|
else
|
@@ -65,4 +69,13 @@ class SessionsController < ApplicationController
|
|
65
69
|
u.host.ends_with?("versacommerce.de") ? u.host : nil
|
66
70
|
end
|
67
71
|
|
72
|
+
|
73
|
+
def save_installed_shop
|
74
|
+
session[:installed_shops] ||= []
|
75
|
+
unless session[:installed_shops].include?(current_shop.url)
|
76
|
+
session[:installed_shops].push(current_shop.url)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
|
68
81
|
end
|
@@ -94,7 +94,7 @@
|
|
94
94
|
</thead>
|
95
95
|
<% @orders.each do |order| %>
|
96
96
|
<tr>
|
97
|
-
<td><%= link_to order.code, "
|
97
|
+
<td><%= link_to order.code, "http://#{current_shop.url}/admin/sales/orders/#{order.id}", :target => 'blank' %></td>
|
98
98
|
<td><%= "#{order.billing_address.firstname} #{order.billing_address.lastname}" %></td>
|
99
99
|
<td>
|
100
100
|
<%= order.status %>
|
@@ -5,12 +5,12 @@
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
6
|
<meta name="description" content="">
|
7
7
|
<meta name="author" content="">
|
8
|
-
<link rel="shortcut icon" href="
|
9
|
-
<link rel="apple-touch-icon" href="
|
10
|
-
<link rel="apple-touch-icon" sizes="72x72" href="
|
11
|
-
<link rel="apple-touch-icon" sizes="114x114" href="
|
8
|
+
<link rel="shortcut icon" href="<%= asset_path("favicon.png") %>">
|
9
|
+
<link rel="apple-touch-icon" href="<%= asset_path("versacommerce-57.png") %>">
|
10
|
+
<link rel="apple-touch-icon" sizes="72x72" href="<%= asset_path("versacommerce-72.png") %>">
|
11
|
+
<link rel="apple-touch-icon" sizes="114x114" href="<%= asset_path("versacommerce-114.png") %>">
|
12
12
|
|
13
|
-
<title
|
13
|
+
<title><%= t(:app_title, default: "VersaCommerce Example App") %></title>
|
14
14
|
|
15
15
|
<!-- Bootstrap core CSS -->
|
16
16
|
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet">
|
@@ -63,12 +63,17 @@
|
|
63
63
|
code {
|
64
64
|
font-size: 80%;
|
65
65
|
}
|
66
|
+
|
67
|
+
.dropdown-menu>li>a.switch-shop-current {
|
68
|
+
font-weight: bold;
|
69
|
+
cursor: default;
|
70
|
+
}
|
66
71
|
</style>
|
67
72
|
|
68
73
|
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
69
74
|
<!--[if lt IE 9]>
|
70
|
-
|
71
|
-
|
75
|
+
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
|
76
|
+
<script src="/respond.min.js"></script>
|
72
77
|
<![endif]-->
|
73
78
|
<%= csrf_meta_tags %>
|
74
79
|
</head>
|
@@ -86,7 +91,7 @@
|
|
86
91
|
<span class="icon-bar"></span>
|
87
92
|
<span class="icon-bar"></span>
|
88
93
|
</button>
|
89
|
-
<%= link_to
|
94
|
+
<%= link_to t(:app_title, default: "VersaCommerce Example App"), "/", class: "navbar-brand" %>
|
90
95
|
</div>
|
91
96
|
<% if current_shop %>
|
92
97
|
<div class="collapse navbar-collapse">
|
@@ -96,13 +101,30 @@
|
|
96
101
|
<li class="dropdown">
|
97
102
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><%= current_shop.url %> <b class="caret"></b></a>
|
98
103
|
<ul class="dropdown-menu">
|
99
|
-
<li><%= link_to raw('<i class="icon-home"></i> Shop'), "http
|
100
|
-
<li><%= link_to raw('<i class="icon-cog"></i> Admin'), "http
|
104
|
+
<li><%= link_to raw('<i class="icon-home"></i> Shop'), "http://#{current_shop.url}", :target => 'blank' %></li>
|
105
|
+
<li><%= link_to raw('<i class="icon-cog"></i> Admin'), "http://#{current_shop.url}/admin", :target => 'blank' %></li>
|
101
106
|
<li class="divider"></li>
|
102
107
|
<li><%= link_to raw('<i class="icon-off"></i> Logout'), logout_path, :method => :delete %></li>
|
103
108
|
</ul>
|
104
109
|
</li>
|
105
110
|
</ul>
|
111
|
+
|
112
|
+
<!-- switch between shops, change event handled by js -->
|
113
|
+
<%- unless @installed_shops.blank? %>
|
114
|
+
<ul class="nav navbar-nav pull-right">
|
115
|
+
<li class="dropdown">
|
116
|
+
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><%= t('sessions.views.switch_shop') %> <b class="caret"></b></a>
|
117
|
+
<ul class="dropdown-menu">
|
118
|
+
<%- @installed_shops.each do |shop| %>
|
119
|
+
<li><%= link_to shop.split('.').first.titleize, 'javascript:void(0);', class: (current_shop.url == shop ? 'switch-shop-current' : 'switch-shop'), rel: (current_shop.url == shop ? nil : shop)%></li>
|
120
|
+
<%- end %>
|
121
|
+
<li><%= link_to t('layout.add_new_shop'), login_path %></li>
|
122
|
+
</ul>
|
123
|
+
</li>
|
124
|
+
</ul>
|
125
|
+
<%- end %>
|
126
|
+
<!-- end of shops switch -->
|
127
|
+
|
106
128
|
</div><!--/.nav-collapse -->
|
107
129
|
<% end %>
|
108
130
|
</div>
|
@@ -113,17 +135,31 @@
|
|
113
135
|
<% flash.each do |type, message| %>
|
114
136
|
<div class="alert alert-<%= type %>"><%= message %></div>
|
115
137
|
<% end %>
|
138
|
+
|
116
139
|
<%= yield %>
|
117
140
|
</div>
|
118
141
|
</div>
|
119
142
|
|
120
143
|
<div id="footer">
|
121
144
|
<div class="container">
|
122
|
-
<p class="text-muted credit"
|
145
|
+
<p class="text-muted credit"><%= t(:app_title, default: "VersaCommerce Example App") %>. <%= t(:created_by_html, link: link_to("versacommerce.de", "http://www.versacommerce.de", target: "_blank")) %></p>
|
123
146
|
</div>
|
124
147
|
</div>
|
125
148
|
|
126
149
|
<%= javascript_include_tag 'application' %>
|
127
150
|
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
|
151
|
+
|
152
|
+
<script type="text/javascript">
|
153
|
+
$(function() {
|
154
|
+
return $('a.switch-shop').on('click', function(e) {
|
155
|
+
var shop_url;
|
156
|
+
e.preventDefault();
|
157
|
+
shop_url = $(e.target).prop('rel');
|
158
|
+
if (shop_url) {
|
159
|
+
return window.location = '/login/?shop=' + shop_name;
|
160
|
+
}
|
161
|
+
});
|
162
|
+
});
|
163
|
+
</script>
|
128
164
|
</body>
|
129
165
|
</html>
|
@@ -20,8 +20,11 @@
|
|
20
20
|
# available at http://guides.rubyonrails.org/i18n.html.
|
21
21
|
|
22
22
|
en:
|
23
|
+
app_title: "VersaCommerce Example App"
|
24
|
+
created_by_html: "Created by %{link}"
|
23
25
|
sessions:
|
24
26
|
views:
|
27
|
+
switch_shop: 'Switch shop'
|
25
28
|
new:
|
26
29
|
title: "Register this app with your shop."
|
27
30
|
subtitle: "This app requires you to login to start using it."
|
@@ -0,0 +1,6 @@
|
|
1
|
+
/*! Respond.js v1.4.2: min/max-width media query polyfill
|
2
|
+
* Copyright 2013 Scott Jehl
|
3
|
+
* Licensed under MIT
|
4
|
+
* http://j.mp/respondjs */
|
5
|
+
|
6
|
+
!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='­<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){v(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))},g=function(a){return a.replace(c.regex.minmaxwh,"").match(c.regex.other)};if(c.ajax=f,c.queue=d,c.unsupportedmq=g,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,comments:/\/\*[^*]*\*+([^/][^*]*\*+)*\//gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,maxw:/\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,minmaxwh:/\(\s*m(in|ax)\-(height|width)\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/gi,other:/\([^\)]*\)/g},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var h,i,j,k=a.document,l=k.documentElement,m=[],n=[],o=[],p={},q=30,r=k.getElementsByTagName("head")[0]||l,s=k.getElementsByTagName("base")[0],t=r.getElementsByTagName("link"),u=function(){var a,b=k.createElement("div"),c=k.body,d=l.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=k.createElement("body"),c.style.background="none"),l.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&l.insertBefore(c,l.firstChild),a=b.offsetWidth,f?l.removeChild(c):c.removeChild(b),l.style.fontSize=d,e&&(c.style.fontSize=e),a=j=parseFloat(a)},v=function(b){var c="clientWidth",d=l[c],e="CSS1Compat"===k.compatMode&&d||k.body[c]||d,f={},g=t[t.length-1],p=(new Date).getTime();if(b&&h&&q>p-h)return a.clearTimeout(i),i=a.setTimeout(v,q),void 0;h=p;for(var s in m)if(m.hasOwnProperty(s)){var w=m[s],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?j||u():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?j||u():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(n[w.rules]))}for(var C in o)o.hasOwnProperty(C)&&o[C]&&o[C].parentNode===r&&r.removeChild(o[C]);o.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=k.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,r.insertBefore(E,g.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(k.createTextNode(F)),o.push(E)}},w=function(a,b,d){var e=a.replace(c.regex.comments,"").replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var h=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},i=!f&&d;b.length&&(b+="/"),i&&(f=1);for(var j=0;f>j;j++){var k,l,o,p;i?(k=d,n.push(h(a))):(k=e[j].match(c.regex.findStyles)&&RegExp.$1,n.push(RegExp.$2&&h(RegExp.$2))),o=k.split(","),p=o.length;for(var q=0;p>q;q++)l=o[q],g(l)||m.push({media:l.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:n.length-1,hasquery:l.indexOf("(")>-1,minw:l.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:l.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}v()},x=function(){if(d.length){var b=d.shift();f(b.href,function(c){w(c,b.href,b.media),p[b.href]=!0,a.setTimeout(function(){x()},0)})}},y=function(){for(var b=0;b<t.length;b++){var c=t[b],e=c.href,f=c.media,g=c.rel&&"stylesheet"===c.rel.toLowerCase();e&&g&&!p[e]&&(c.styleSheet&&c.styleSheet.rawCssText?(w(c.styleSheet.rawCssText,e,f),p[e]=!0):(!/^([a-zA-Z:]*\/\/)/.test(e)&&!s||e.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&("//"===e.substring(0,2)&&(e=a.location.protocol+e),d.push({href:e,media:f})))}x()};y(),c.update=y,c.getEmValue=u,a.addEventListener?a.addEventListener("resize",b,!1):a.attachEvent&&a.attachEvent("onresize",b)}}(this);
|
metadata
CHANGED
@@ -1,20 +1,22 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: versacommerce_app
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.25
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- VersaCommerce
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2014-01-23 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: rails
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
|
-
- - '>='
|
19
|
+
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: '3.1'
|
20
22
|
- - <
|
@@ -23,8 +25,9 @@ dependencies:
|
|
23
25
|
type: :runtime
|
24
26
|
prerelease: false
|
25
27
|
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
26
29
|
requirements:
|
27
|
-
- - '>='
|
30
|
+
- - ! '>='
|
28
31
|
- !ruby/object:Gem::Version
|
29
32
|
version: '3.1'
|
30
33
|
- - <
|
@@ -33,6 +36,7 @@ dependencies:
|
|
33
36
|
- !ruby/object:Gem::Dependency
|
34
37
|
name: versacommerce_api
|
35
38
|
requirement: !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
36
40
|
requirements:
|
37
41
|
- - ~>
|
38
42
|
- !ruby/object:Gem::Version
|
@@ -40,6 +44,7 @@ dependencies:
|
|
40
44
|
type: :runtime
|
41
45
|
prerelease: false
|
42
46
|
version_requirements: !ruby/object:Gem::Requirement
|
47
|
+
none: false
|
43
48
|
requirements:
|
44
49
|
- - ~>
|
45
50
|
- !ruby/object:Gem::Version
|
@@ -82,10 +87,7 @@ files:
|
|
82
87
|
- lib/generators/versacommerce_app/templates/public/404.html
|
83
88
|
- lib/generators/versacommerce_app/templates/public/422.html
|
84
89
|
- lib/generators/versacommerce_app/templates/public/500.html
|
85
|
-
- lib/generators/versacommerce_app/templates/public/
|
86
|
-
- lib/generators/versacommerce_app/templates/public/versacommerce-114.png
|
87
|
-
- lib/generators/versacommerce_app/templates/public/versacommerce-57.png
|
88
|
-
- lib/generators/versacommerce_app/templates/public/versacommerce-72.png
|
90
|
+
- lib/generators/versacommerce_app/templates/public/javascripts/respond.min.js
|
89
91
|
- lib/generators/versacommerce_app/versacommerce_app_generator.rb
|
90
92
|
- lib/versacommerce_app.rb
|
91
93
|
- lib/versacommerce_app/configuration.rb
|
@@ -95,25 +97,27 @@ files:
|
|
95
97
|
- versacommerce_app.gemspec
|
96
98
|
homepage: http://www.versacommerce.de
|
97
99
|
licenses: []
|
98
|
-
metadata: {}
|
99
100
|
post_install_message:
|
100
101
|
rdoc_options: []
|
101
102
|
require_paths:
|
102
103
|
- lib
|
103
104
|
required_ruby_version: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
104
106
|
requirements:
|
105
|
-
- - '>='
|
107
|
+
- - ! '>='
|
106
108
|
- !ruby/object:Gem::Version
|
107
109
|
version: '0'
|
108
110
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
111
|
+
none: false
|
109
112
|
requirements:
|
110
|
-
- - '>='
|
113
|
+
- - ! '>='
|
111
114
|
- !ruby/object:Gem::Version
|
112
115
|
version: '0'
|
113
116
|
requirements: []
|
114
117
|
rubyforge_project:
|
115
|
-
rubygems_version:
|
118
|
+
rubygems_version: 1.8.25
|
116
119
|
signing_key:
|
117
|
-
specification_version:
|
120
|
+
specification_version: 3
|
118
121
|
summary: This gem is used to get quickly started with the VersaCommerce API
|
119
122
|
test_files: []
|
123
|
+
has_rdoc:
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 62705fc9128b5e4d629987e1b5eeede07edf66fd
|
4
|
-
data.tar.gz: 6ac10203db08b806ddba31cfe8580a22a8a447cf
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 3731e607a25d4881d3e10e82b629d9819c4aa89b0cfa5c3f9038152f0c0b019d1889db51f98715021629a4ede70d0e42756c0c84e0a7e929f0467371600e0a03
|
7
|
-
data.tar.gz: b19646e51f33f7d4b71acbb17c233475b9f36012a769088b6617e0a47e51619d3d32bfa8af93da44cbc52e95cc4f9f6a1dd6e8a4efbecd28847bcd3c4117ee88
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|