Version Description
- Improved compatibility with the new Wordpress version 3.8 which brings great features like brand new responsive theme, revamped admin backend and other improvements. Ecwid plugin is now ready for that, so your store will work perfectly with the new Wordpress version
- The plugin settings pages are now available in seven languages: English, Italian, Russian, French, German, Spanish, Brazilian Portuguese. Ecwid itself is available in 45 languages, so customers from all over the world can purchase from your store
- Design improvements of the plugin settings pages including Retina-ready icons
Download this release
Release Info
Developer | Ecwid |
Plugin | Ecwid Ecommerce Shopping Cart |
Version | 2.2 |
Comparing to | |
See all releases |
Code changes from version 2.1 to 2.2
- css/2014adjustments.css +3 -0
- css/admin.3.8.css +51 -0
- css/admin.css +5 -0
- css/settings.3.8.css +61 -0
- css/settings.css +406 -388
- ecwid-shopping-cart.php +1305 -1227
- fonts/ecwid-logo.eot +0 -0
- images/grid.png +0 -0
- images/grid.svg +23 -0
- images/list.png +0 -0
- images/list.svg +15 -0
- images/store_inprogress.png +0 -0
- images/store_ready.png +0 -0
- images/table.png +0 -0
- images/table.svg +32 -0
- js/appearance.js +7 -0
- js/modernizr.js +1406 -0
- languages/ecwid-shopping-cart-de_DE.mo +0 -0
- languages/ecwid-shopping-cart-de_DE.po +174 -0
- languages/ecwid-shopping-cart-es_ES.mo +0 -0
- languages/ecwid-shopping-cart-es_ES.po +174 -0
- languages/ecwid-shopping-cart-fr_FR.mo +0 -0
- languages/ecwid-shopping-cart-fr_FR.po +174 -0
- languages/ecwid-shopping-cart-pt_BR.mo +0 -0
- languages/ecwid-shopping-cart-pt_BR.po +182 -0
- languages/ecwid-shopping-cart-ru_RU.mo +0 -0
- languages/ecwid-shopping-cart-ru_RU.po +12 -3
- languages/ecwid-shopping-cart.pot +8 -8
- readme.txt +7 -2
- templates/advanced-settings.php +91 -91
- templates/appearance-settings.php +204 -189
- templates/general-settings-initial.php +69 -66
- templates/general-settings.php +91 -90
css/2014adjustments.css
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
.site-content .entry-header, .site-content .entry-content, .site-content .entry-summary, .site-content .entry-meta {
|
2 |
+
max-width: none;
|
3 |
+
}
|
css/admin.3.8.css
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'ecwid-logo';
|
3 |
+
src: url('fonts/ecwid-logo.eot');
|
4 |
+
}
|
5 |
+
@font-face {
|
6 |
+
font-family: 'ecwid-logo';
|
7 |
+
src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg6wDYEAAAC8AAAAYGNtYXAAoABGAAABHAAAADxnYXNwAAAAEAAAAVgAAAAIZ2x5ZnWz5hcAAAFgAAADwGhlYWQAXU/JAAAFIAAAADZoaGVhB4YEAAAABVgAAAAkaG10eAYAADwAAAV8AAAADGxvY2EACgHgAAAFiAAAAAhtYXhwABABdwAABZAAAAAgbmFtZUPBEJcAAAWwAAABVHBvc3QAAwAAAAAHBAAAACAAAwQAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAACAAVwPA/8D/wAPAAEAAAAAAAAAAAAAAAAAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEACgAAAAGAAQAAQACACAAV///AAAAIABX////4f+rAAEAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAwAPP/8A8QDhAAUACkAQgBXAGwAgQCWAKsAwADVAV8BdAAANxQOAiMiLgI1ND4CMzIeAhUhFA4CIyIuAjU0PgIzMh4CFQMhIg4CFREUHgIzITI+AjURNC4CIwcyHgIVFA4CIyIuAjU0PgIzFTIeAhUUDgIjIi4CNTQ+AjMnMh4CFRQOAiMiLgI1ND4CMxUyHgIVFA4CIyIuAjU0PgIzJzIeAhUUDgIjIi4CNTQ+AjMVMh4CFRQOAiMiLgI1ND4CMwMiLgI1ND4CMzIeAhUUDgIjJQYmKgEjLgMxMA4CByoCJiMuAycuAzU0PgEWMx4DFx4DFx4DFx4BMjY3PgM1PAIUMTM0MDIUMSMwHAIVHAEeARceATIWMzIWOgEzOgI2Mz4DNz4DNz4DMTA+Ajc+AR4BBw4DBw4DBw4DIxciLgI1ND4CMzIeAhUUDgIj8wQHCQUFCQYEBAYJBQUJBwQCUgQGCQYFCQYEBAYJBQYJBgQO/ZIdMycWFiczHQJuHTQmFhYmNB3JCA4KBgYKDggHDgoGBgoOBwgOCgYGCg4IBw4KBgYKDgdwCA4KBgYKDggIDQsGBgsNCAgOCgYGCg4ICA0LBgYLDQh0CA0LBgYLDQgIDgoGBgoOCAgNCwYGCw0ICA4KBgYKDgiwDxwUDAwUHA8QHBQMDBQcEAG1DyIhHQgICwYDBAoRDg0eGhYFGCUbEwYHHB0WBwkKBQ4bFQ8CBQoLDAYHEBAPCAcVFBIEBQUDAVcBAQIEBAEDAgMCAQcJCwYGCwsKBQkRDQkCDBUSDgYGCgcEBgkMBwUTEQkDBAYFBgICCw8PBhMuLCUJnhAcFAwMFBwQDxsVDAwVGw/PBQkHBAQHCQUFCQYEBAYJBQUJBwQEBwkFBQkGBAQGCQUCtRYmMh39jh0yJhYWJjIdAnIdMiYW4QULDQgIDQoGBgoNCAgNCwWBBgoNCAgNCwUFCw0ICA0KBoEFCw0ICA0KBgYKDQgIDQsFgQYKDQgIDQsFBQsNCAgNCgaBBQsNCAgNCgYGCg0ICA0LBYEGCg0ICA0LBQULDQgIDQoG/mIMFBsQDxsVCwsVGw8QGxQMqQEBAQUIBQUHBgEBAQ0UGA0NXmhVBQUEAgEBCRAUDB0zLSUOEhUKAwEBAQIDAgUEBAIDAgEBAQEBAQIBAgQFBAMBAQEBAgIOEQ8EH1ZVRAwMEAkDBAQEAQECAgkLChISFAwLOENEFkFDHQGoCxQbEA8bFAwMFBsPEBsUCwAAAAABAAAAAQAAkKtPM18PPPUACwQAAAAAAM69BaYAAAAAzr0FpgAA//wDxAOEAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAPAPEAAEAAAAAAAAAAAAAAAAAAAADAAAAAAIAAAAEAAA8AAAAAAAKAeAAAQAAAAMBdQAMAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABABQAAAABAAAAAAACAA4AXAABAAAAAAADABQAKgABAAAAAAAEABQAagABAAAAAAAFABYAFAABAAAAAAAGAAoAPgABAAAAAAAKACgAfgADAAEECQABABQAAAADAAEECQACAA4AXAADAAEECQADABQAKgADAAEECQAEABQAagADAAEECQAFABYAFAADAAEECQAGABQASAADAAEECQAKACgAfgBlAGMAdwBpAGQALQBsAG8AZwBvAFYAZQByAHMAaQBvAG4AIAAwAC4AMABlAGMAdwBpAGQALQBsAG8AZwBvZWN3aWQtbG9nbwBlAGMAdwBpAGQALQBsAG8AZwBvAFIAZQBnAHUAbABhAHIAZQBjAHcAaQBkAC0AbABvAGcAbwBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4AAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==) format('truetype'),
|
8 |
+
url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAdwAAsAAAAAByQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABCAAAAGAAAABgDrANgWNtYXAAAAFoAAAAPAAAADwAoABGZ2FzcAAAAaQAAAAIAAAACAAAABBnbHlmAAABrAAAA8AAAAPAdbPmF2hlYWQAAAVsAAAANgAAADYAXU/JaGhlYQAABaQAAAAkAAAAJAeGBABobXR4AAAFyAAAAAwAAAAMBgAAPGxvY2EAAAXUAAAACAAAAAgACgHgbWF4cAAABdwAAAAgAAAAIAAQAXduYW1lAAAF/AAAAVQAAAFUQ8EQl3Bvc3QAAAdQAAAAIAAAACAAAwAAAAMEAAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAgAFcDwP/A/8ADwABAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAgAAAAMAAAAUAAMAAQAAABQABAAoAAAABgAEAAEAAgAgAFf//wAAACAAV////+H/qwABAAAAAAAAAAEAAf//AA8AAQAAAAAAAAAAAAIAADc5AQAAAAAMADz//APEA4QAFAApAEIAVwBsAIEAlgCrAMAA1QFfAXQAADcUDgIjIi4CNTQ+AjMyHgIVIRQOAiMiLgI1ND4CMzIeAhUDISIOAhURFB4CMyEyPgI1ETQuAiMHMh4CFRQOAiMiLgI1ND4CMxUyHgIVFA4CIyIuAjU0PgIzJzIeAhUUDgIjIi4CNTQ+AjMVMh4CFRQOAiMiLgI1ND4CMycyHgIVFA4CIyIuAjU0PgIzFTIeAhUUDgIjIi4CNTQ+AjMDIi4CNTQ+AjMyHgIVFA4CIyUGJioBIy4DMTAOAgcqAiYjLgMnLgM1ND4BFjMeAxceAxceAxceATI2Nz4DNTwCFDEzNDAyFDEjMBwCFRwBHgEXHgEyFjMyFjoBMzoCNjM+Azc+Azc+AzEwPgI3PgEeAQcOAwcOAwcOAyMXIi4CNTQ+AjMyHgIVFA4CI/MEBwkFBQkGBAQGCQUFCQcEAlIEBgkGBQkGBAQGCQUGCQYEDv2SHTMnFhYnMx0Cbh00JhYWJjQdyQgOCgYGCg4IBw4KBgYKDgcIDgoGBgoOCAcOCgYGCg4HcAgOCgYGCg4ICA0LBgYLDQgIDgoGBgoOCAgNCwYGCw0IdAgNCwYGCw0ICA4KBgYKDggIDQsGBgsNCAgOCgYGCg4IsA8cFAwMFBwPEBwUDAwUHBABtQ8iIR0ICAsGAwQKEQ4NHhoWBRglGxMGBxwdFgcJCgUOGxUPAgUKCwwGBxAQDwgHFRQSBAUFAwFXAQECBAQBAwIDAgEHCQsGBgsLCgUJEQ0JAgwVEg4GBgoHBAYJDAcFExEJAwQGBQYCAgsPDwYTLiwlCZ4QHBQMDBQcEA8bFQwMFRsPzwUJBwQEBwkFBQkGBAQGCQUFCQcEBAcJBQUJBgQEBgkFArUWJjId/Y4dMiYWFiYyHQJyHTImFuEFCw0ICA0KBgYKDQgIDQsFgQYKDQgIDQsFBQsNCAgNCgaBBQsNCAgNCgYGCg0ICA0LBYEGCg0ICA0LBQULDQgIDQoGgQULDQgIDQoGBgoNCAgNCwWBBgoNCAgNCwUFCw0ICA0KBv5iDBQbEA8bFQsLFRsPEBsUDKkBAQEFCAUFBwYBAQENFBgNDV5oVQUFBAIBAQkQFAwdMy0lDhIVCgMBAQECAwIFBAQCAwIBAQEBAQECAQIEBQQDAQEBAQICDhEPBB9WVUQMDBAJAwQEBAEBAgIJCwoSEhQMCzhDRBZBQx0BqAsUGxAPGxQMDBQbDxAbFAsAAAAAAQAAAAEAAJCrTzNfDzz1AAsEAAAAAADOvQWmAAAAAM69BaYAAP/8A8QDhAAAAAgAAgAAAAAAAAABAAADwP/AAAAEAAAAADwDxAABAAAAAAAAAAAAAAAAAAAAAwAAAAACAAAABAAAPAAAAAAACgHgAAEAAAADAXUADAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAOAK4AAQAAAAAAAQAUAAAAAQAAAAAAAgAOAFwAAQAAAAAAAwAUACoAAQAAAAAABAAUAGoAAQAAAAAABQAWABQAAQAAAAAABgAKAD4AAQAAAAAACgAoAH4AAwABBAkAAQAUAAAAAwABBAkAAgAOAFwAAwABBAkAAwAUACoAAwABBAkABAAUAGoAAwABBAkABQAWABQAAwABBAkABgAUAEgAAwABBAkACgAoAH4AZQBjAHcAaQBkAC0AbABvAGcAbwBWAGUAcgBzAGkAbwBuACAAMAAuADAAZQBjAHcAaQBkAC0AbABvAGcAb2Vjd2lkLWxvZ28AZQBjAHcAaQBkAC0AbABvAGcAbwBSAGUAZwB1AGwAYQByAGUAYwB3AGkAZAAtAGwAbwBnAG8ARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABJAGMAbwBNAG8AbwBuAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=) format('woff');
|
9 |
+
font-weight: normal;
|
10 |
+
font-style: normal;
|
11 |
+
}
|
12 |
+
|
13 |
+
#adminmenu #toplevel_page_ecwid div.wp-menu-image:before {
|
14 |
+
font-family: 'ecwid-logo' !important;
|
15 |
+
content: 'W';
|
16 |
+
-webkit-font-smoothing: antialiased;
|
17 |
+
-moz-osx-font-smoothing: grayscale;
|
18 |
+
}
|
19 |
+
|
20 |
+
#adminmenu #toplevel_page_ecwid div.wp-menu-image {
|
21 |
+
margin: 0px;
|
22 |
+
width: 34px;
|
23 |
+
height: 30px;
|
24 |
+
}
|
25 |
+
|
26 |
+
#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon.ecwid-top-menu-item {
|
27 |
+
font: 400 20px/1 'ecwid-logo' !important;
|
28 |
+
-webkit-font-smoothing: antialiased;
|
29 |
+
-moz-osx-font-smoothing: grayscale;
|
30 |
+
background-image: none;
|
31 |
+
color: white;
|
32 |
+
width: auto;
|
33 |
+
margin-right: 0px;
|
34 |
+
margin-top: 2px;
|
35 |
+
}
|
36 |
+
|
37 |
+
#wpadminbar #wp-admin-bar-ecwid-main .ab-icon.ecwid-top-menu-item:before {
|
38 |
+
content: 'W';
|
39 |
+
width: auto;
|
40 |
+
margin-right: 0px;
|
41 |
+
}
|
42 |
+
|
43 |
+
@media screen and (max-width: 782px) {
|
44 |
+
#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon.ecwid-top-menu-item {
|
45 |
+
font: 400 32px/46px 'ecwid-logo' !important;
|
46 |
+
width: 46px;
|
47 |
+
padding: 0px 2px;
|
48 |
+
text-align: center;
|
49 |
+
margin-top: 0px;
|
50 |
+
}
|
51 |
+
}
|
css/admin.css
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
#wpadminbar .ecwid-top-menu-item {
|
|
|
2 |
width: 23px;
|
3 |
height: 28px;
|
4 |
background: url(../images/icon-head-default.png) no-repeat 0% 2px;
|
@@ -36,4 +37,8 @@
|
|
36 |
|
37 |
#hide-vote-message.hiding {
|
38 |
cursor: wait;
|
|
|
|
|
|
|
|
|
39 |
}
|
1 |
#wpadminbar .ecwid-top-menu-item {
|
2 |
+
margin-top: 0px;
|
3 |
width: 23px;
|
4 |
height: 28px;
|
5 |
background: url(../images/icon-head-default.png) no-repeat 0% 2px;
|
37 |
|
38 |
#hide-vote-message.hiding {
|
39 |
cursor: wait;
|
40 |
+
}
|
41 |
+
|
42 |
+
#wp-toolbar > ul > li#wp-admin-bar-ecwid-main {
|
43 |
+
display: block;
|
44 |
}
|
css/settings.3.8.css
ADDED
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.ecwid-pb-view-size .main-area {
|
2 |
+
border-color: rgba(30, 140, 190, 0.5);
|
3 |
+
}
|
4 |
+
|
5 |
+
.ecwid-pb-view-size .main-area path,
|
6 |
+
.ecwid-pb-view-size .main-area rect {
|
7 |
+
fill: rgb(30, 140, 190);
|
8 |
+
}
|
9 |
+
|
10 |
+
.ecwid-pb-view-size .bottom {
|
11 |
+
margin-top: 11px;
|
12 |
+
}
|
13 |
+
|
14 |
+
.ecwid-settings h2 {
|
15 |
+
background: none;
|
16 |
+
padding-left: 12px;
|
17 |
+
}
|
18 |
+
|
19 |
+
.ecwid-settings hr {
|
20 |
+
background: #cacaca;
|
21 |
+
}
|
22 |
+
|
23 |
+
.ecwid-settings .pure-control-group {
|
24 |
+
margin-bottom: 22px;
|
25 |
+
}
|
26 |
+
|
27 |
+
.pure-form.ecwid-settings .pure-control-group label {
|
28 |
+
font-size: 14px;
|
29 |
+
width: 265px;
|
30 |
+
}
|
31 |
+
|
32 |
+
.ecwid-settings.advanced-settings input,
|
33 |
+
.ecwid-settings.advanced-settings select {
|
34 |
+
width: 200px;
|
35 |
+
height: 30px;
|
36 |
+
margin-right: 15px;
|
37 |
+
font-size: 13px;
|
38 |
+
border-color: #cacaca;
|
39 |
+
}
|
40 |
+
|
41 |
+
.pure-form.ecwid-settings.general-settings .pure-button-secondary,
|
42 |
+
.pure-form.ecwid-settings a.pure-button:not(.pure-button-primary):hover
|
43 |
+
{
|
44 |
+
color: #0074a2;
|
45 |
+
}
|
46 |
+
|
47 |
+
.pure-form.ecwid-settings.general-settings .pure-button-secondary:hover,
|
48 |
+
.pure-form.ecwid-settings a.pure-button:not(.pure-button-primary):hover
|
49 |
+
{
|
50 |
+
border-color: #0074a2;
|
51 |
+
}
|
52 |
+
|
53 |
+
.ecwid-settings.general-settings button {
|
54 |
+
top: 1px;
|
55 |
+
padding: 2px 10px 1px;
|
56 |
+
height: 32px;
|
57 |
+
}
|
58 |
+
|
59 |
+
.ecwid-pb-view-size .ruler {
|
60 |
+
background: #cacaca;
|
61 |
+
}
|
css/settings.css
CHANGED
@@ -1,389 +1,407 @@
|
|
1 |
-
.pure-form.ecwid-settings fieldset {
|
2 |
-
font-size: 14px;
|
3 |
-
}
|
4 |
-
|
5 |
-
.pure-form.ecwid-settings fieldset > :not(legend) {
|
6 |
-
margin-left:14px;
|
7 |
-
}
|
8 |
-
|
9 |
-
.pure-form.ecwid-settings .pure-button {
|
10 |
-
height: auto;
|
11 |
-
line-height: 32px;
|
12 |
-
padding: 0px 20px;
|
13 |
-
font-size: 14px;
|
14 |
-
background-image: none;
|
15 |
-
background-color: #f6f6f6;
|
16 |
-
font-weight: normal;
|
17 |
-
color: #333333;
|
18 |
-
border: 1px solid #cccccc;
|
19 |
-
border-radius: 3px;
|
20 |
-
}
|
21 |
-
|
22 |
-
.pure-form.ecwid-settings .pure-button-secondary {
|
23 |
-
font-weight: bold;
|
24 |
-
color: #246fba;
|
25 |
-
}
|
26 |
-
|
27 |
-
.pure-form.ecwid-settings a.pure-button:not(.pure-button-primary):hover {
|
28 |
-
border-color: #137ebe;
|
29 |
-
color: #137ebe;
|
30 |
-
}
|
31 |
-
|
32 |
-
.pure-form.ecwid-settings .pure-button.pure-button-primary {
|
33 |
-
color: white;
|
34 |
-
font-weight: normal;
|
35 |
-
border-color: #189DEE;
|
36 |
-
background-color: #189DEE;
|
37 |
-
}
|
38 |
-
|
39 |
-
.pure-form.ecwid-settings .pure-button.pure-button-primary:hover {
|
40 |
-
border-color: #137ebe;
|
41 |
-
background-color: #137ebe;
|
42 |
-
}
|
43 |
-
|
44 |
-
.pure-form.ecwid-settings .link {
|
45 |
-
border: 0px none;
|
46 |
-
background: transparent;
|
47 |
-
box-shadow: none;
|
48 |
-
}
|
49 |
-
|
50 |
-
/* 2.8 compatibility for left menu icon */
|
51 |
-
.wp-menu-image>a>img {
|
52 |
-
display: none;
|
53 |
-
}
|
54 |
-
|
55 |
-
.ecwid-settings {
|
56 |
-
width: 650px;
|
57 |
-
}
|
58 |
-
|
59 |
-
.ecwid-settings .pure-control-group {
|
60 |
-
margin-bottom: 19px;
|
61 |
-
}
|
62 |
-
|
63 |
-
.ecwid-settings legend {
|
64 |
-
margin-bottom: 10px;
|
65 |
-
}
|
66 |
-
|
67 |
-
.ecwid-settings hr {
|
68 |
-
margin-left: 0px;
|
69 |
-
border: 0px none;
|
70 |
-
height: 1px;
|
71 |
-
background: #e5e5e5;
|
72 |
-
margin-bottom: 20px;
|
73 |
-
}
|
74 |
-
|
75 |
-
.pure-form.ecwid-settings .pure-control-group label {
|
76 |
-
width: 232px;
|
77 |
-
font-weight: bold;
|
78 |
-
text-align: left;
|
79 |
-
margin-right: 5px;
|
80 |
-
}
|
81 |
-
|
82 |
-
.ecwid-settings.general-settings button {
|
83 |
-
position: relative;
|
84 |
-
top: 2px;
|
85 |
-
padding: 5px 31px 5px 31px;
|
86 |
-
margin-left: 5px;
|
87 |
-
}
|
88 |
-
|
89 |
-
.ecwid-settings.general-settings hr {
|
90 |
-
margin-bottom: 6px;
|
91 |
-
}
|
92 |
-
|
93 |
-
.ecwid-settings .warning {
|
94 |
-
background: #FFF797;
|
95 |
-
font-size: 12px;
|
96 |
-
padding: 8px 14px 8px 14px;
|
97 |
-
font-weight: bold;
|
98 |
-
color: #444444;
|
99 |
-
}
|
100 |
-
|
101 |
-
.ecwid-settings.appearance-settings h3 {
|
102 |
-
font-size: 12px;
|
103 |
-
}
|
104 |
-
|
105 |
-
.ecwid-settings.appearance-settings input[type=text] {
|
106 |
-
font-size: 13px;
|
107 |
-
padding: 5px 3px 4px 3px;
|
108 |
-
outline:
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
margin-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
padding-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
margin-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
margin-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
.
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
.ecwid-pb-view-size
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
}
|
171 |
-
|
172 |
-
.ecwid-pb-view-size .main-area {
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
height:
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
{
|
190 |
-
|
191 |
-
}
|
192 |
-
|
193 |
-
.ecwid-pb-view-size .
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
}
|
216 |
-
|
217 |
-
.ecwid-pb-view-size .bottom
|
218 |
-
width:
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
}
|
281 |
-
|
282 |
-
.general-settings
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
}
|
287 |
-
|
288 |
-
.general-settings
|
289 |
-
font-size:
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
}
|
333 |
-
|
334 |
-
.
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
}
|
381 |
-
|
382 |
-
.
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
389 |
}
|
1 |
+
.pure-form.ecwid-settings fieldset {
|
2 |
+
font-size: 14px;
|
3 |
+
}
|
4 |
+
|
5 |
+
.pure-form.ecwid-settings fieldset > :not(legend) {
|
6 |
+
margin-left:14px;
|
7 |
+
}
|
8 |
+
|
9 |
+
.pure-form.ecwid-settings .pure-button {
|
10 |
+
height: auto;
|
11 |
+
line-height: 32px;
|
12 |
+
padding: 0px 20px;
|
13 |
+
font-size: 14px;
|
14 |
+
background-image: none;
|
15 |
+
background-color: #f6f6f6;
|
16 |
+
font-weight: normal;
|
17 |
+
color: #333333;
|
18 |
+
border: 1px solid #cccccc;
|
19 |
+
border-radius: 3px;
|
20 |
+
}
|
21 |
+
|
22 |
+
.pure-form.ecwid-settings .pure-button-secondary {
|
23 |
+
font-weight: bold;
|
24 |
+
color: #246fba;
|
25 |
+
}
|
26 |
+
|
27 |
+
.pure-form.ecwid-settings a.pure-button:not(.pure-button-primary):hover {
|
28 |
+
border-color: #137ebe;
|
29 |
+
color: #137ebe;
|
30 |
+
}
|
31 |
+
|
32 |
+
.pure-form.ecwid-settings .pure-button.pure-button-primary {
|
33 |
+
color: white;
|
34 |
+
font-weight: normal;
|
35 |
+
border-color: #189DEE;
|
36 |
+
background-color: #189DEE;
|
37 |
+
}
|
38 |
+
|
39 |
+
.pure-form.ecwid-settings .pure-button.pure-button-primary:hover {
|
40 |
+
border-color: #137ebe;
|
41 |
+
background-color: #137ebe;
|
42 |
+
}
|
43 |
+
|
44 |
+
.pure-form.ecwid-settings .link {
|
45 |
+
border: 0px none;
|
46 |
+
background: transparent;
|
47 |
+
box-shadow: none;
|
48 |
+
}
|
49 |
+
|
50 |
+
/* 2.8 compatibility for left menu icon */
|
51 |
+
.wp-menu-image>a>img {
|
52 |
+
display: none;
|
53 |
+
}
|
54 |
+
|
55 |
+
.ecwid-settings {
|
56 |
+
width: 650px;
|
57 |
+
}
|
58 |
+
|
59 |
+
.ecwid-settings .pure-control-group {
|
60 |
+
margin-bottom: 19px;
|
61 |
+
}
|
62 |
+
|
63 |
+
.ecwid-settings legend {
|
64 |
+
margin-bottom: 10px;
|
65 |
+
}
|
66 |
+
|
67 |
+
.ecwid-settings hr {
|
68 |
+
margin-left: 0px;
|
69 |
+
border: 0px none;
|
70 |
+
height: 1px;
|
71 |
+
background: #e5e5e5;
|
72 |
+
margin-bottom: 20px;
|
73 |
+
}
|
74 |
+
|
75 |
+
.pure-form.ecwid-settings .pure-control-group label {
|
76 |
+
width: 232px;
|
77 |
+
font-weight: bold;
|
78 |
+
text-align: left;
|
79 |
+
margin-right: 5px;
|
80 |
+
}
|
81 |
+
|
82 |
+
.ecwid-settings.general-settings button {
|
83 |
+
position: relative;
|
84 |
+
top: 2px;
|
85 |
+
padding: 5px 31px 5px 31px;
|
86 |
+
margin-left: 5px;
|
87 |
+
}
|
88 |
+
|
89 |
+
.ecwid-settings.general-settings hr {
|
90 |
+
margin-bottom: 6px;
|
91 |
+
}
|
92 |
+
|
93 |
+
.ecwid-settings .warning {
|
94 |
+
background: #FFF797;
|
95 |
+
font-size: 12px;
|
96 |
+
padding: 8px 14px 8px 14px;
|
97 |
+
font-weight: bold;
|
98 |
+
color: #444444;
|
99 |
+
}
|
100 |
+
|
101 |
+
.ecwid-settings.appearance-settings h3 {
|
102 |
+
font-size: 12px;
|
103 |
+
}
|
104 |
+
|
105 |
+
.ecwid-settings.appearance-settings input[type=text] {
|
106 |
+
font-size: 13px;
|
107 |
+
padding: 5px 3px 4px 3px;
|
108 |
+
outline-offset: 0px;
|
109 |
+
}
|
110 |
+
|
111 |
+
.ecwid-settings input[type=text].number {
|
112 |
+
width: 27px;
|
113 |
+
text-align: center;
|
114 |
+
}
|
115 |
+
|
116 |
+
.ecwid-settings select {
|
117 |
+
padding: 5px;
|
118 |
+
}
|
119 |
+
|
120 |
+
.ecwid-settings .note.pb-note {
|
121 |
+
margin-right: 30px;
|
122 |
+
margin-left: 30px;
|
123 |
+
}
|
124 |
+
|
125 |
+
.ecwid-settings.appearance-settings {
|
126 |
+
max-width: 650px;
|
127 |
+
}
|
128 |
+
|
129 |
+
.ecwid-settings.appearance-settings .products-per-page-label {
|
130 |
+
padding-top: 5px;
|
131 |
+
padding-bottom: 15px;
|
132 |
+
display: block;
|
133 |
+
}
|
134 |
+
|
135 |
+
.ecwid-settings.appearance-settings input[type=checkbox] {
|
136 |
+
margin-right: 3px;
|
137 |
+
margin-left: 7px;
|
138 |
+
}
|
139 |
+
|
140 |
+
.ecwid-pb-view-size {
|
141 |
+
display: inline-block;
|
142 |
+
position: relative;
|
143 |
+
width: 153px;
|
144 |
+
height: 153px;
|
145 |
+
margin-left: 30px;
|
146 |
+
margin-right: 25px;
|
147 |
+
}
|
148 |
+
|
149 |
+
.ecwid-pb-view-size .title {
|
150 |
+
margin: 8px;
|
151 |
+
width: 110px;
|
152 |
+
text-align: center;
|
153 |
+
}
|
154 |
+
|
155 |
+
.ecwid-pb-view-size * {
|
156 |
+
transition: background-image .3s, border-color .3s, font-weight .3s;
|
157 |
+
}
|
158 |
+
|
159 |
+
|
160 |
+
.ecwid-pb-view-size .main-area {
|
161 |
+
width: 116px;
|
162 |
+
height: 82px;
|
163 |
+
border: 2px solid rgb(125, 209, 227);
|
164 |
+
border-color: rgba(125, 209, 227, .5);
|
165 |
+
border-radius: 2px;
|
166 |
+
float: left;
|
167 |
+
background-position: 50% 50%;
|
168 |
+
background-repeat: no-repeat;
|
169 |
+
text-align: center;
|
170 |
+
}
|
171 |
+
|
172 |
+
.ecwid-pb-view-size .main-area svg {
|
173 |
+
margin-top: 7px;
|
174 |
+
}
|
175 |
+
|
176 |
+
.ecwid-pb-view-size .main-area path,
|
177 |
+
.ecwid-pb-view-size .main-area rect {
|
178 |
+
fill: rgb(125, 209, 227);
|
179 |
+
}
|
180 |
+
|
181 |
+
.ecwid-pb-view-size .fallback-image {
|
182 |
+
width: 100px;
|
183 |
+
height: 66px;
|
184 |
+
background-repeat: no-repeat;
|
185 |
+
margin-top:7px;
|
186 |
+
margin-left:8px;
|
187 |
+
}
|
188 |
+
|
189 |
+
.ecwid-pb-view-size .grid-image {
|
190 |
+
background-image: url(../images/grid.png);
|
191 |
+
}
|
192 |
+
|
193 |
+
.ecwid-pb-view-size .list-image {
|
194 |
+
background-image: url(../images/list.png);
|
195 |
+
}
|
196 |
+
|
197 |
+
.ecwid-pb-view-size .table-image {
|
198 |
+
background-image: url(../images/table.png);
|
199 |
+
}
|
200 |
+
|
201 |
+
.ecwid-pb-view-size .right {
|
202 |
+
height:86px;
|
203 |
+
float: right;
|
204 |
+
position: relative;
|
205 |
+
}
|
206 |
+
|
207 |
+
.ecwid-pb-view-size .right input
|
208 |
+
{
|
209 |
+
margin-top: 30px;
|
210 |
+
}
|
211 |
+
|
212 |
+
.ecwid-pb-view-size .bottom input
|
213 |
+
{
|
214 |
+
margin-left: 48px;
|
215 |
+
}
|
216 |
+
|
217 |
+
.ecwid-pb-view-size .bottom {
|
218 |
+
width: 120px;
|
219 |
+
margin-top: 8px;
|
220 |
+
position: absolute;
|
221 |
+
top: 114px;
|
222 |
+
}
|
223 |
+
|
224 |
+
.ecwid-pb-view-size .ruler {
|
225 |
+
position: absolute;
|
226 |
+
background: #cccccc;
|
227 |
+
z-index: -1;
|
228 |
+
}
|
229 |
+
|
230 |
+
.ecwid-pb-view-size .right .ruler {
|
231 |
+
width: 1px;
|
232 |
+
height: 100%;
|
233 |
+
right: 13px;
|
234 |
+
}
|
235 |
+
|
236 |
+
.ecwid-pb-view-size .bottom .ruler {
|
237 |
+
width: 100%;
|
238 |
+
height: 1px;
|
239 |
+
bottom: 12px;
|
240 |
+
}
|
241 |
+
|
242 |
+
.ecwid-settings.advanced-settings .pure-control-group {
|
243 |
+
margin-bottom: 20px;
|
244 |
+
}
|
245 |
+
|
246 |
+
.ecwid-settings.advanced-settings .pure-control-group.last {
|
247 |
+
margin-bottom: 0px;
|
248 |
+
}
|
249 |
+
|
250 |
+
.ecwid-settings.advanced-settings input,
|
251 |
+
.ecwid-settings.advanced-settings select
|
252 |
+
{
|
253 |
+
width: 160px;
|
254 |
+
height: 25px;
|
255 |
+
margin-right: 15px;
|
256 |
+
}
|
257 |
+
|
258 |
+
.ecwid-settings.advanced-settings .note {
|
259 |
+
margin-top: 15px;
|
260 |
+
}
|
261 |
+
|
262 |
+
.ecwid-settings .note.inline-note {
|
263 |
+
max-width: 300px;
|
264 |
+
margin-left: 15px;
|
265 |
+
vertical-align: middle;
|
266 |
+
}
|
267 |
+
|
268 |
+
.general-settings {
|
269 |
+
font-size: 14px;
|
270 |
+
max-width: 750px;
|
271 |
+
}
|
272 |
+
|
273 |
+
.general-settings .greeting-box {
|
274 |
+
height: 141px;
|
275 |
+
padding-left: 190px;
|
276 |
+
padding-bottom: 12px;
|
277 |
+
display: table-cell;
|
278 |
+
vertical-align: middle;
|
279 |
+
position: relative;
|
280 |
+
}
|
281 |
+
|
282 |
+
.general-settings .greeting-image {
|
283 |
+
position: absolute;
|
284 |
+
left: 14px;
|
285 |
+
top: 0px;
|
286 |
+
}
|
287 |
+
|
288 |
+
.general-settings .greeting-box .main-message {
|
289 |
+
font-size: 22px;
|
290 |
+
font-weight: bold;
|
291 |
+
line-height: 22px;
|
292 |
+
}
|
293 |
+
|
294 |
+
.general-settings .greeting-box .secondary-message {
|
295 |
+
font-size: 18px;
|
296 |
+
padding-top: 6px;
|
297 |
+
line-height: 20px;
|
298 |
+
}
|
299 |
+
|
300 |
+
.general-settings ol {
|
301 |
+
margin-top: 30px;
|
302 |
+
padding-left: 10px;
|
303 |
+
list-style-position: inside;
|
304 |
+
}
|
305 |
+
|
306 |
+
.general-settings ol li {
|
307 |
+
font-size: 20px;
|
308 |
+
margin-bottom: 34px;
|
309 |
+
font-weight: bold;
|
310 |
+
padding-top: 10px;
|
311 |
+
}
|
312 |
+
|
313 |
+
.general-settings ol li * {
|
314 |
+
color: #333333;
|
315 |
+
font-size:13px;
|
316 |
+
font-weight: normal;
|
317 |
+
}
|
318 |
+
|
319 |
+
.general-settings ol li h4 {
|
320 |
+
font-size: 20px;
|
321 |
+
font-weight: bold;
|
322 |
+
margin: 0px 0px 12px;
|
323 |
+
display: inline-block;
|
324 |
+
}
|
325 |
+
|
326 |
+
.general-settings .ecwid-account-buttons .pure-button {
|
327 |
+
margin: 20px 17px 20px 0px;
|
328 |
+
}
|
329 |
+
|
330 |
+
.general-settings p.note {
|
331 |
+
font-weight: bold;
|
332 |
+
}
|
333 |
+
|
334 |
+
.ecwid-settings .note {
|
335 |
+
font-size: 11px;
|
336 |
+
color: #A0A0A0;
|
337 |
+
display: inline-block;
|
338 |
+
line-height: 16px;
|
339 |
+
}
|
340 |
+
|
341 |
+
|
342 |
+
.general-settings input[type=text] {
|
343 |
+
height: 34px;
|
344 |
+
font-size: 14px;
|
345 |
+
}
|
346 |
+
|
347 |
+
.general-settings .find-store-id-in-cp {
|
348 |
+
line-height: 18px;
|
349 |
+
margin-bottom: 15px;
|
350 |
+
}
|
351 |
+
|
352 |
+
.general-settings .find-store-id-in-cp em {
|
353 |
+
color: #246fba;
|
354 |
+
font-style: normal;
|
355 |
+
}
|
356 |
+
|
357 |
+
.general-settings #ecwid_store_id {
|
358 |
+
position: relative;
|
359 |
+
top: 2px;
|
360 |
+
width: 153px;
|
361 |
+
}
|
362 |
+
|
363 |
+
.general-settings .section {
|
364 |
+
line-height: 24px;
|
365 |
+
height: 80px;
|
366 |
+
display: table;
|
367 |
+
vertical-align: middle;
|
368 |
+
width: 640px;
|
369 |
+
}
|
370 |
+
|
371 |
+
.general-settings .section .left {
|
372 |
+
display: table-cell;
|
373 |
+
vertical-align: middle;
|
374 |
+
}
|
375 |
+
|
376 |
+
.general-settings .section .right {
|
377 |
+
display: table-cell;
|
378 |
+
vertical-align: middle;
|
379 |
+
text-align: right;
|
380 |
+
}
|
381 |
+
|
382 |
+
.general-settings .section.small-text {
|
383 |
+
line-height: normal;
|
384 |
+
}
|
385 |
+
|
386 |
+
|
387 |
+
.general-settings .section .left-section {
|
388 |
+
float: left;
|
389 |
+
}
|
390 |
+
|
391 |
+
.general-settings .section .main-info {
|
392 |
+
font-size: 18px;
|
393 |
+
}
|
394 |
+
|
395 |
+
.general-settings .section .secondary-info {
|
396 |
+
font-size: 12px;
|
397 |
+
line-height: 20px;
|
398 |
+
}
|
399 |
+
|
400 |
+
.ecwid-settings .note.grayed-links,
|
401 |
+
.ecwid-settings .note.grayed-links a:not(:hover)
|
402 |
+
{
|
403 |
+
font-size: 11px;
|
404 |
+
color: #A0A0A0;
|
405 |
+
margin-top:10px;
|
406 |
+
margin-bottom: 10px;
|
407 |
}
|
ecwid-shopping-cart.php
CHANGED
@@ -1,1227 +1,1305 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
Plugin Name: Ecwid Shopping Cart
|
4 |
-
Plugin URI: http://www.ecwid.com?source=wporg
|
5 |
-
Description: Ecwid is a free full-featured shopping cart. It can be easily integrated with any Wordpress blog and takes less than 5 minutes to set up.
|
6 |
-
Text Domain: ecwid-shopping-cart
|
7 |
-
Author: Ecwid Team
|
8 |
-
Version: 2.
|
9 |
-
Author URI: http://www.ecwid.com?source=wporg
|
10 |
-
*/
|
11 |
-
|
12 |
-
register_activation_hook( __FILE__, 'ecwid_store_activate' );
|
13 |
-
register_deactivation_hook( __FILE__, 'ecwid_store_deactivate' );
|
14 |
-
|
15 |
-
define("APP_ECWID_COM", "app.ecwid.com");
|
16 |
-
define("ECWID_DEMO_STORE_ID", 1003);
|
17 |
-
|
18 |
-
if ( ! defined( 'ECWID_PLUGIN_DIR' ) ) {
|
19 |
-
define( 'ECWID_PLUGIN_DIR', plugin_dir_path( realpath(__FILE__) ) );
|
20 |
-
}
|
21 |
-
|
22 |
-
if ( ! defined( 'ECWID_PLUGIN_URL' ) ) {
|
23 |
-
define( 'ECWID_PLUGIN_URL', plugin_dir_url( realpath(__FILE__) ) );
|
24 |
-
}
|
25 |
-
|
26 |
-
if ( is_admin() ){
|
27 |
-
add_action('admin_init', 'ecwid_settings_api_init');
|
28 |
-
add_action('admin_notices', 'ecwid_show_admin_messages');
|
29 |
-
add_action('admin_menu', 'ecwid_options_add_page');
|
30 |
-
add_action('wp_dashboard_setup', 'ecwid_add_dashboard_widgets' );
|
31 |
-
add_action('admin_enqueue_scripts', 'ecwid_common_admin_scripts');
|
32 |
-
add_action('admin_enqueue_scripts', 'ecwid_register_admin_styles');
|
33 |
-
add_action('admin_enqueue_scripts', 'ecwid_register_settings_styles');
|
34 |
-
add_action('wp_ajax_ecwid_hide_vote_message', 'ecwid_hide_vote_message');
|
35 |
-
add_filter('plugins_loaded', 'ecwid_load_textdomain');
|
36 |
-
add_filter('plugin_action_links_ecwid-shopping-cart/ecwid-shopping-cart.php', 'ecwid_plugin_actions');
|
37 |
-
|
38 |
-
} else {
|
39 |
-
add_shortcode('ecwid_script', 'ecwid_script_shortcode');
|
40 |
-
add_shortcode('ecwid_minicart', 'ecwid_minicart_shortcode');
|
41 |
-
add_shortcode('ecwid_searchbox', 'ecwid_searchbox_shortcode');
|
42 |
-
add_shortcode('ecwid_categories', 'ecwid_categories_shortcode');
|
43 |
-
add_shortcode('ecwid_productbrowser', 'ecwid_productbrowser_shortcode');
|
44 |
-
add_action('init', 'ecwid_backward_compatibility');
|
45 |
-
add_action('send_headers', 'ecwid_503_on_store_closed');
|
46 |
-
add_action('template_redirect', 'ecwid_404_on_broken_escaped_fragment');
|
47 |
-
add_action('wp_title', 'ecwid_seo_compatibility_init', 0);
|
48 |
-
add_filter('wp_title', 'ecwid_seo_title', 20);
|
49 |
-
add_action('plugins_loaded', 'ecwid_minifier_compatibility', 0);
|
50 |
-
add_action('wp_head', 'ecwid_meta_description', 0);
|
51 |
-
add_action('wp_head', 'ecwid_ajax_crawling_fragment');
|
52 |
-
add_action('wp_head', 'ecwid_meta');
|
53 |
-
add_action('wp_head', 'ecwid_seo_compatibility_restore', 1000);
|
54 |
-
add_filter( 'widget_meta_poweredby', 'ecwid_add_credits');
|
55 |
-
$ecwid_seo_title = '';
|
56 |
-
}
|
57 |
-
add_action('admin_bar_menu', 'add_ecwid_admin_bar_node', 1000);
|
58 |
-
|
59 |
-
$version = get_bloginfo('version');
|
60 |
-
|
61 |
-
if (version_compare($version, '3.6') < 0) {
|
62 |
-
/**
|
63 |
-
* A copy of has_shortcode functionality from wordpress 3.6
|
64 |
-
* http://core.trac.wordpress.org/browser/tags/3.6/wp-includes/shortcodes.php
|
65 |
-
*/
|
66 |
-
|
67 |
-
if (!function_exists('shortcode_exists')) {
|
68 |
-
function shortcode_exists( $tag ) {
|
69 |
-
global $shortcode_tags;
|
70 |
-
return array_key_exists( $tag, $shortcode_tags );
|
71 |
-
}
|
72 |
-
}
|
73 |
-
|
74 |
-
if (!function_exists('has_shortcode')) {
|
75 |
-
function has_shortcode( $content, $tag ) {
|
76 |
-
if ( shortcode_exists( $tag ) ) {
|
77 |
-
preg_match_all( '/' . get_shortcode_regex() . '/s', $content, $matches, PREG_SET_ORDER );
|
78 |
-
if ( empty( $matches ) )
|
79 |
-
return false;
|
80 |
-
|
81 |
-
foreach ( $matches as $shortcode ) {
|
82 |
-
if ( $tag === $shortcode[2] ) {
|
83 |
-
return true;
|
84 |
-
}
|
85 |
-
}
|
86 |
-
}
|
87 |
-
return false;
|
88 |
-
}
|
89 |
-
}
|
90 |
-
}
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
{
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
{
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
}
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
}
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
$
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
{
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
(
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
$
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
if(
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
$
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
return
|
423 |
-
}
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
}
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
$
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
}
|
511 |
-
|
512 |
-
function
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
if (empty($
|
532 |
-
$
|
533 |
-
|
534 |
-
|
535 |
-
$
|
536 |
-
}
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
}
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
if (empty($
|
555 |
-
$
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
$
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
{
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
}
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
else
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
)
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
);
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
}
|
815 |
-
|
816 |
-
function
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
$
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
865 |
-
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
-
|
876 |
-
|
877 |
-
|
878 |
-
|
879 |
-
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
884 |
-
|
885 |
-
|
886 |
-
|
887 |
-
|
888 |
-
|
889 |
-
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
-
|
895 |
-
|
896 |
-
|
897 |
-
|
898 |
-
|
899 |
-
|
900 |
-
|
901 |
-
}
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
|
917 |
-
|
918 |
-
|
919 |
-
|
920 |
-
|
921 |
-
|
922 |
-
|
923 |
-
|
924 |
-
|
925 |
-
|
926 |
-
|
927 |
-
|
928 |
-
|
929 |
-
|
930 |
-
|
931 |
-
|
932 |
-
|
933 |
-
|
934 |
-
|
935 |
-
|
936 |
-
|
937 |
-
|
938 |
-
|
939 |
-
|
940 |
-
|
941 |
-
|
942 |
-
|
943 |
-
|
944 |
-
|
945 |
-
|
946 |
-
|
947 |
-
|
948 |
-
|
949 |
-
|
950 |
-
|
951 |
-
|
952 |
-
|
953 |
-
|
954 |
-
|
955 |
-
|
956 |
-
|
957 |
-
|
958 |
-
|
959 |
-
|
960 |
-
|
961 |
-
|
962 |
-
|
963 |
-
|
964 |
-
|
965 |
-
|
966 |
-
|
967 |
-
|
968 |
-
|
969 |
-
|
970 |
-
|
971 |
-
|
972 |
-
|
973 |
-
|
974 |
-
|
975 |
-
|
976 |
-
|
977 |
-
|
978 |
-
|
979 |
-
|
980 |
-
|
981 |
-
|
982 |
-
|
983 |
-
|
984 |
-
|
985 |
-
|
986 |
-
|
987 |
-
|
988 |
-
|
989 |
-
|
990 |
-
|
991 |
-
|
992 |
-
|
993 |
-
|
994 |
-
|
995 |
-
|
996 |
-
|
997 |
-
|
998 |
-
|
999 |
-
|
1000 |
-
|
1001 |
-
|
1002 |
-
|
1003 |
-
|
1004 |
-
|
1005 |
-
|
1006 |
-
|
1007 |
-
|
1008 |
-
|
1009 |
-
|
1010 |
-
|
1011 |
-
|
1012 |
-
|
1013 |
-
|
1014 |
-
|
1015 |
-
|
1016 |
-
|
1017 |
-
|
1018 |
-
|
1019 |
-
|
1020 |
-
|
1021 |
-
|
1022 |
-
|
1023 |
-
|
1024 |
-
|
1025 |
-
|
1026 |
-
|
1027 |
-
|
1028 |
-
|
1029 |
-
|
1030 |
-
|
1031 |
-
|
1032 |
-
|
1033 |
-
|
1034 |
-
|
1035 |
-
|
1036 |
-
|
1037 |
-
|
1038 |
-
|
1039 |
-
|
1040 |
-
|
1041 |
-
|
1042 |
-
|
1043 |
-
|
1044 |
-
|
1045 |
-
|
1046 |
-
|
1047 |
-
|
1048 |
-
|
1049 |
-
|
1050 |
-
|
1051 |
-
|
1052 |
-
|
1053 |
-
|
1054 |
-
|
1055 |
-
|
1056 |
-
|
1057 |
-
|
1058 |
-
|
1059 |
-
|
1060 |
-
|
1061 |
-
|
1062 |
-
|
1063 |
-
|
1064 |
-
|
1065 |
-
|
1066 |
-
|
1067 |
-
|
1068 |
-
|
1069 |
-
|
1070 |
-
|
1071 |
-
|
1072 |
-
|
1073 |
-
|
1074 |
-
|
1075 |
-
|
1076 |
-
echo
|
1077 |
-
|
1078 |
-
|
1079 |
-
|
1080 |
-
|
1081 |
-
|
1082 |
-
|
1083 |
-
|
1084 |
-
function
|
1085 |
-
|
1086 |
-
|
1087 |
-
|
1088 |
-
|
1089 |
-
|
1090 |
-
|
1091 |
-
|
1092 |
-
|
1093 |
-
|
1094 |
-
|
1095 |
-
|
1096 |
-
echo
|
1097 |
-
|
1098 |
-
|
1099 |
-
|
1100 |
-
|
1101 |
-
|
1102 |
-
|
1103 |
-
|
1104 |
-
|
1105 |
-
|
1106 |
-
|
1107 |
-
|
1108 |
-
|
1109 |
-
|
1110 |
-
|
1111 |
-
|
1112 |
-
|
1113 |
-
|
1114 |
-
|
1115 |
-
|
1116 |
-
|
1117 |
-
|
1118 |
-
|
1119 |
-
|
1120 |
-
|
1121 |
-
|
1122 |
-
|
1123 |
-
|
1124 |
-
|
1125 |
-
|
1126 |
-
|
1127 |
-
|
1128 |
-
|
1129 |
-
|
1130 |
-
|
1131 |
-
|
1132 |
-
|
1133 |
-
|
1134 |
-
|
1135 |
-
|
1136 |
-
|
1137 |
-
|
1138 |
-
|
1139 |
-
|
1140 |
-
|
1141 |
-
|
1142 |
-
|
1143 |
-
|
1144 |
-
|
1145 |
-
|
1146 |
-
|
1147 |
-
|
1148 |
-
|
1149 |
-
|
1150 |
-
|
1151 |
-
|
1152 |
-
|
1153 |
-
|
1154 |
-
|
1155 |
-
|
1156 |
-
|
1157 |
-
|
1158 |
-
|
1159 |
-
|
1160 |
-
}
|
1161 |
-
|
1162 |
-
$
|
1163 |
-
|
1164 |
-
|
1165 |
-
|
1166 |
-
$
|
1167 |
-
|
1168 |
-
|
1169 |
-
|
1170 |
-
|
1171 |
-
|
1172 |
-
|
1173 |
-
|
1174 |
-
|
1175 |
-
|
1176 |
-
|
1177 |
-
|
1178 |
-
|
1179 |
-
|
1180 |
-
|
1181 |
-
|
1182 |
-
|
1183 |
-
|
1184 |
-
|
1185 |
-
|
1186 |
-
|
1187 |
-
|
1188 |
-
|
1189 |
-
|
1190 |
-
|
1191 |
-
|
1192 |
-
}
|
1193 |
-
|
1194 |
-
|
1195 |
-
|
1196 |
-
|
1197 |
-
}
|
1198 |
-
|
1199 |
-
|
1200 |
-
|
1201 |
-
|
1202 |
-
$
|
1203 |
-
|
1204 |
-
|
1205 |
-
|
1206 |
-
|
1207 |
-
|
1208 |
-
|
1209 |
-
|
1210 |
-
|
1211 |
-
|
1212 |
-
|
1213 |
-
|
1214 |
-
|
1215 |
-
|
1216 |
-
|
1217 |
-
|
1218 |
-
|
1219 |
-
|
1220 |
-
|
1221 |
-
|
1222 |
-
$
|
1223 |
-
$
|
1224 |
-
|
1225 |
-
|
1226 |
-
|
1227 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Plugin Name: Ecwid Shopping Cart
|
4 |
+
Plugin URI: http://www.ecwid.com?source=wporg
|
5 |
+
Description: Ecwid is a free full-featured shopping cart. It can be easily integrated with any Wordpress blog and takes less than 5 minutes to set up.
|
6 |
+
Text Domain: ecwid-shopping-cart
|
7 |
+
Author: Ecwid Team
|
8 |
+
Version: 2.2
|
9 |
+
Author URI: http://www.ecwid.com?source=wporg
|
10 |
+
*/
|
11 |
+
|
12 |
+
register_activation_hook( __FILE__, 'ecwid_store_activate' );
|
13 |
+
register_deactivation_hook( __FILE__, 'ecwid_store_deactivate' );
|
14 |
+
|
15 |
+
define("APP_ECWID_COM", "app.ecwid.com");
|
16 |
+
define("ECWID_DEMO_STORE_ID", 1003);
|
17 |
+
|
18 |
+
if ( ! defined( 'ECWID_PLUGIN_DIR' ) ) {
|
19 |
+
define( 'ECWID_PLUGIN_DIR', plugin_dir_path( realpath(__FILE__) ) );
|
20 |
+
}
|
21 |
+
|
22 |
+
if ( ! defined( 'ECWID_PLUGIN_URL' ) ) {
|
23 |
+
define( 'ECWID_PLUGIN_URL', plugin_dir_url( realpath(__FILE__) ) );
|
24 |
+
}
|
25 |
+
|
26 |
+
if ( is_admin() ){
|
27 |
+
add_action('admin_init', 'ecwid_settings_api_init');
|
28 |
+
add_action('admin_notices', 'ecwid_show_admin_messages');
|
29 |
+
add_action('admin_menu', 'ecwid_options_add_page');
|
30 |
+
add_action('wp_dashboard_setup', 'ecwid_add_dashboard_widgets' );
|
31 |
+
add_action('admin_enqueue_scripts', 'ecwid_common_admin_scripts');
|
32 |
+
add_action('admin_enqueue_scripts', 'ecwid_register_admin_styles');
|
33 |
+
add_action('admin_enqueue_scripts', 'ecwid_register_settings_styles');
|
34 |
+
add_action('wp_ajax_ecwid_hide_vote_message', 'ecwid_hide_vote_message');
|
35 |
+
add_filter('plugins_loaded', 'ecwid_load_textdomain');
|
36 |
+
add_filter('plugin_action_links_ecwid-shopping-cart/ecwid-shopping-cart.php', 'ecwid_plugin_actions');
|
37 |
+
add_action('admin_head', 'ecwid_ie8_fonts_inclusion');
|
38 |
+
} else {
|
39 |
+
add_shortcode('ecwid_script', 'ecwid_script_shortcode');
|
40 |
+
add_shortcode('ecwid_minicart', 'ecwid_minicart_shortcode');
|
41 |
+
add_shortcode('ecwid_searchbox', 'ecwid_searchbox_shortcode');
|
42 |
+
add_shortcode('ecwid_categories', 'ecwid_categories_shortcode');
|
43 |
+
add_shortcode('ecwid_productbrowser', 'ecwid_productbrowser_shortcode');
|
44 |
+
add_action('init', 'ecwid_backward_compatibility');
|
45 |
+
add_action('send_headers', 'ecwid_503_on_store_closed');
|
46 |
+
add_action('template_redirect', 'ecwid_404_on_broken_escaped_fragment');
|
47 |
+
add_action('wp_title', 'ecwid_seo_compatibility_init', 0);
|
48 |
+
add_filter('wp_title', 'ecwid_seo_title', 20);
|
49 |
+
add_action('plugins_loaded', 'ecwid_minifier_compatibility', 0);
|
50 |
+
add_action('wp_head', 'ecwid_meta_description', 0);
|
51 |
+
add_action('wp_head', 'ecwid_ajax_crawling_fragment');
|
52 |
+
add_action('wp_head', 'ecwid_meta');
|
53 |
+
add_action('wp_head', 'ecwid_seo_compatibility_restore', 1000);
|
54 |
+
add_filter( 'widget_meta_poweredby', 'ecwid_add_credits');
|
55 |
+
$ecwid_seo_title = '';
|
56 |
+
}
|
57 |
+
add_action('admin_bar_menu', 'add_ecwid_admin_bar_node', 1000);
|
58 |
+
|
59 |
+
$version = get_bloginfo('version');
|
60 |
+
|
61 |
+
if (version_compare($version, '3.6') < 0) {
|
62 |
+
/**
|
63 |
+
* A copy of has_shortcode functionality from wordpress 3.6
|
64 |
+
* http://core.trac.wordpress.org/browser/tags/3.6/wp-includes/shortcodes.php
|
65 |
+
*/
|
66 |
+
|
67 |
+
if (!function_exists('shortcode_exists')) {
|
68 |
+
function shortcode_exists( $tag ) {
|
69 |
+
global $shortcode_tags;
|
70 |
+
return array_key_exists( $tag, $shortcode_tags );
|
71 |
+
}
|
72 |
+
}
|
73 |
+
|
74 |
+
if (!function_exists('has_shortcode')) {
|
75 |
+
function has_shortcode( $content, $tag ) {
|
76 |
+
if ( shortcode_exists( $tag ) ) {
|
77 |
+
preg_match_all( '/' . get_shortcode_regex() . '/s', $content, $matches, PREG_SET_ORDER );
|
78 |
+
if ( empty( $matches ) )
|
79 |
+
return false;
|
80 |
+
|
81 |
+
foreach ( $matches as $shortcode ) {
|
82 |
+
if ( $tag === $shortcode[2] ) {
|
83 |
+
return true;
|
84 |
+
}
|
85 |
+
}
|
86 |
+
}
|
87 |
+
return false;
|
88 |
+
}
|
89 |
+
}
|
90 |
+
}
|
91 |
+
$theme_name = '';
|
92 |
+
if (version_compare($version, '3.4') < 0) {
|
93 |
+
$theme_name = get_current_theme();
|
94 |
+
} else {
|
95 |
+
$theme = wp_get_theme();
|
96 |
+
$theme_name = $theme->get('Name');
|
97 |
+
}
|
98 |
+
if ($theme_name == 'Twenty Fourteen') {
|
99 |
+
add_action('wp_enqueue_scripts', 'ecwid_adjust_theme2014');
|
100 |
+
|
101 |
+
function ecwid_adjust_theme2014() {
|
102 |
+
if (ecwid_page_has_productbrowser()) {
|
103 |
+
wp_register_style('ecwid_theme2014', plugins_url('ecwid-shopping-cart/css/2014adjustments.css'), array('twentyfourteen-style'), '', 'all');
|
104 |
+
wp_enqueue_style('ecwid_theme2014');
|
105 |
+
}
|
106 |
+
}
|
107 |
+
}
|
108 |
+
|
109 |
+
if (is_admin()) {
|
110 |
+
$main_button_class = "";
|
111 |
+
if (version_compare($version, '3.8-beta') > 0) {
|
112 |
+
$main_button_class = "button-primary";
|
113 |
+
} else {
|
114 |
+
$main_button_class = "pure-button pure-button-primary";
|
115 |
+
}
|
116 |
+
|
117 |
+
define('ECWID_MAIN_BUTTON_CLASS', $main_button_class);
|
118 |
+
}
|
119 |
+
|
120 |
+
function ecwid_ie8_fonts_inclusion()
|
121 |
+
{
|
122 |
+
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 8') === false) return;
|
123 |
+
|
124 |
+
$url = ECWID_PLUGIN_URL . '/fonts/ecwid-logo.eot';
|
125 |
+
echo <<<HTML
|
126 |
+
<style>
|
127 |
+
@font-face {
|
128 |
+
font-family: 'ecwid-logo';
|
129 |
+
src:url($url);
|
130 |
+
}
|
131 |
+
</style>
|
132 |
+
<script type="text/javascript">
|
133 |
+
</script>
|
134 |
+
HTML;
|
135 |
+
|
136 |
+
}
|
137 |
+
|
138 |
+
function ecwid_load_textdomain() {
|
139 |
+
load_plugin_textdomain( 'ecwid-shopping-cart', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
|
140 |
+
|
141 |
+
}
|
142 |
+
|
143 |
+
function ecwid_404_on_broken_escaped_fragment() {
|
144 |
+
if (!ecwid_is_api_enabled()) {
|
145 |
+
return;
|
146 |
+
}
|
147 |
+
|
148 |
+
if (!isset($_GET['_escaped_fragment_'])) {
|
149 |
+
return;
|
150 |
+
}
|
151 |
+
|
152 |
+
$params = ecwid_parse_escaped_fragment($_GET['_escaped_fragment_']);
|
153 |
+
$api = ecwid_new_product_api();
|
154 |
+
|
155 |
+
if (isset($params['mode']) && !empty($params['mode']) && isset($params['id'])) {
|
156 |
+
$result = array();
|
157 |
+
if ($params['mode'] == 'product') {
|
158 |
+
$result = $api->get_product($params['id']);
|
159 |
+
} elseif ($params['mode'] == 'category') {
|
160 |
+
$result = $api->get_category($params['id']);
|
161 |
+
}
|
162 |
+
if (empty($result)) {
|
163 |
+
global $wp_query;
|
164 |
+
|
165 |
+
$wp_query->set_404();
|
166 |
+
}
|
167 |
+
}
|
168 |
+
}
|
169 |
+
|
170 |
+
function ecwid_503_on_store_closed() {
|
171 |
+
if (!ecwid_is_api_enabled()) {
|
172 |
+
return;
|
173 |
+
}
|
174 |
+
|
175 |
+
if (!isset($_GET['_escaped_fragment_'])) {
|
176 |
+
return;
|
177 |
+
}
|
178 |
+
|
179 |
+
$api = ecwid_new_product_api();
|
180 |
+
$profile = $api->get_profile();
|
181 |
+
|
182 |
+
if ($profile['closed']) {
|
183 |
+
header('HTTP/1.1 503 Service Temporarily Unavailable');
|
184 |
+
header('Status: 503 Service Temporarily Unavailable');
|
185 |
+
}
|
186 |
+
}
|
187 |
+
|
188 |
+
function ecwid_backward_compatibility() {
|
189 |
+
// Backward compatibility with 1.1.2 and earlier
|
190 |
+
if (isset($_GET['ecwid_product_id']) || isset($_GET['ecwid_category_id'])) {
|
191 |
+
$ecwid_page = get_option("ecwid_store_page_id");
|
192 |
+
$ecwid_page = get_page_link($ecwid_page);
|
193 |
+
$ecwid_page .= '#!/~/';
|
194 |
+
|
195 |
+
if (isset($_GET['ecwid_product_id']))
|
196 |
+
$redirect = $ecwid_page . 'product/id=' . $_GET['ecwid_product_id'];
|
197 |
+
elseif (isset($_GET['ecwid_category_id']))
|
198 |
+
$redirect = $ecwid_page . 'category/id=' . $_GET['ecwid_category_id'];
|
199 |
+
|
200 |
+
wp_redirect($redirect, 301);
|
201 |
+
exit();
|
202 |
+
}
|
203 |
+
}
|
204 |
+
|
205 |
+
function ecwid_minifier_compatibility()
|
206 |
+
{
|
207 |
+
if ( !function_exists( 'get_plugins' ) ) { require_once ( ABSPATH . 'wp-admin/includes/plugin.php' ); }
|
208 |
+
|
209 |
+
$plugins = get_plugins();
|
210 |
+
$wp_minify_plugin = 'wp-minify/wp-minify.php';
|
211 |
+
if (array_key_exists($wp_minify_plugin, $plugins) && is_plugin_active($wp_minify_plugin)) {
|
212 |
+
global $wp_minify;
|
213 |
+
|
214 |
+
if (is_object($wp_minify) && array_key_exists('default_exclude', get_object_vars($wp_minify)) && is_array($wp_minify->default_exclude)) {
|
215 |
+
$wp_minify->default_exclude[] = 'ecwid.com/script.js';
|
216 |
+
}
|
217 |
+
}
|
218 |
+
}
|
219 |
+
|
220 |
+
function ecwid_override_option($name, $new_value = null)
|
221 |
+
{
|
222 |
+
static $overridden = array();
|
223 |
+
|
224 |
+
if (!array_key_exists($name, $overridden)) {
|
225 |
+
$overridden[$name] = get_option($name);
|
226 |
+
}
|
227 |
+
|
228 |
+
if (!is_null($new_value)) {
|
229 |
+
update_option($name, $new_value);
|
230 |
+
} else {
|
231 |
+
update_option($name, $overridden[$name]);
|
232 |
+
}
|
233 |
+
}
|
234 |
+
|
235 |
+
function ecwid_seo_compatibility_init($title)
|
236 |
+
{
|
237 |
+
if (!array_key_exists('_escaped_fragment_', $_GET) || !ecwid_page_has_productbrowser()) {
|
238 |
+
return $title;
|
239 |
+
}
|
240 |
+
|
241 |
+
// Default wordpress canonical
|
242 |
+
remove_action( 'wp_head','rel_canonical');
|
243 |
+
|
244 |
+
// Yoast Wordpress SEO
|
245 |
+
global $wpseo_front;
|
246 |
+
// Canonical
|
247 |
+
remove_action( 'wpseo_head', array( $wpseo_front, 'canonical' ), 20);
|
248 |
+
// Title
|
249 |
+
remove_action( 'get_header', array( $wpseo_front, 'force_rewrite_output_buffer' ) );
|
250 |
+
remove_action( 'wp_footer', array( $wpseo_front, 'flush_cache'));
|
251 |
+
// Description
|
252 |
+
remove_action( 'wpseo_head', array( $wpseo_front, 'metadesc' ), 10 );
|
253 |
+
|
254 |
+
// Platinum SEO Pack
|
255 |
+
// Canonical
|
256 |
+
ecwid_override_option('psp_canonical', false);
|
257 |
+
// Title
|
258 |
+
ecwid_override_option('aiosp_rewrite_titles', false);
|
259 |
+
|
260 |
+
// All in one SEO Pack
|
261 |
+
global $aioseop_options, $aiosp;
|
262 |
+
// Canonical
|
263 |
+
$aioseop_options['aiosp_can'] = false;
|
264 |
+
// Title
|
265 |
+
add_filter('aioseop_title', __return_null);
|
266 |
+
// Description
|
267 |
+
add_filter('aioseop_description', __return_null);
|
268 |
+
|
269 |
+
|
270 |
+
return $title;
|
271 |
+
|
272 |
+
}
|
273 |
+
|
274 |
+
function ecwid_seo_compatibility_restore()
|
275 |
+
{
|
276 |
+
if (!array_key_exists('_escaped_fragment_', $_GET) || !ecwid_page_has_productbrowser()) {
|
277 |
+
return;
|
278 |
+
}
|
279 |
+
|
280 |
+
ecwid_override_option('psp_canonical');
|
281 |
+
ecwid_override_option('aiosp_rewrite_titles');
|
282 |
+
}
|
283 |
+
|
284 |
+
function add_ecwid_admin_bar_node() {
|
285 |
+
global $wp_admin_bar;
|
286 |
+
if ( !is_super_admin() || !is_admin_bar_showing() )
|
287 |
+
return;
|
288 |
+
|
289 |
+
$wp_admin_bar->add_menu( array(
|
290 |
+
'id' => 'ecwid-main',
|
291 |
+
'title' => '<span class="ab-icon ecwid-top-menu-item"></span>',
|
292 |
+
'href' => 'admin.php?page=ecwid',
|
293 |
+
));
|
294 |
+
$wp_admin_bar->add_menu(array(
|
295 |
+
"id" => "ecwid-help",
|
296 |
+
"title" => __("Get help", 'ecwid-shopping-cart'),
|
297 |
+
"parent" => "ecwid-main",
|
298 |
+
'href' => 'http://help.ecwid.com'
|
299 |
+
)
|
300 |
+
);
|
301 |
+
$wp_admin_bar->add_menu(array(
|
302 |
+
"id" => "ecwid-home",
|
303 |
+
"title" => __("Go to Ecwid site", 'ecwid-shopping-cart'),
|
304 |
+
"parent" => "ecwid-main",
|
305 |
+
'href' => 'http://www.ecwid.com?source=wporg'
|
306 |
+
)
|
307 |
+
);
|
308 |
+
$wp_admin_bar->add_menu(array(
|
309 |
+
"id" => "ecwid-go-to-page",
|
310 |
+
"title" => __("Visit storefront", 'ecwid-shopping-cart'),
|
311 |
+
"parent" => "ecwid-main",
|
312 |
+
'href' => get_page_link(get_option("ecwid_store_page_id"))
|
313 |
+
)
|
314 |
+
);
|
315 |
+
$wp_admin_bar->add_menu(array(
|
316 |
+
"id" => "ecwid-control-panel",
|
317 |
+
"title" => __("Manage my store", 'ecwid-shopping-cart'),
|
318 |
+
"parent" => "ecwid-main",
|
319 |
+
'href' => 'https://my.ecwid.com/cp/?source=wporg#t1=&t2=Dashboard'
|
320 |
+
)
|
321 |
+
);
|
322 |
+
$wp_admin_bar->add_menu(array(
|
323 |
+
"id" => "ecwid-settings",
|
324 |
+
"title" => __("Manage plugin settings", 'ecwid-shopping-cart'),
|
325 |
+
"parent" => "ecwid-main",
|
326 |
+
'href' => admin_url('admin.php?page=ecwid')
|
327 |
+
)
|
328 |
+
);
|
329 |
+
$wp_admin_bar->add_menu(array(
|
330 |
+
"id" => "ecwid-fb-app",
|
331 |
+
"title" => __("→ Sell on Facebook", 'ecwid-shopping-cart'),
|
332 |
+
"parent" => "ecwid-main",
|
333 |
+
'href' => 'http://apps.facebook.com/ecwid-shop/?fb_source=wp'
|
334 |
+
)
|
335 |
+
);
|
336 |
+
}
|
337 |
+
|
338 |
+
function ecwid_page_has_productbrowser()
|
339 |
+
{
|
340 |
+
static $result = null;
|
341 |
+
|
342 |
+
if (is_null($result)) {
|
343 |
+
$post_content = get_post(get_the_ID())->post_content;
|
344 |
+
$result = has_shortcode($post_content, 'ecwid_productbrowser');
|
345 |
+
}
|
346 |
+
|
347 |
+
return $result;
|
348 |
+
}
|
349 |
+
|
350 |
+
function ecwid_ajax_crawling_fragment() {
|
351 |
+
$ecwid_page_id = get_option("ecwid_store_page_id");
|
352 |
+
if (ecwid_is_api_enabled() && !isset($_GET['_escaped_fragment_']) && ecwid_page_has_productbrowser())
|
353 |
+
echo '<meta name="fragment" content="!">' . PHP_EOL;
|
354 |
+
}
|
355 |
+
|
356 |
+
function ecwid_meta() {
|
357 |
+
|
358 |
+
echo '<link rel="dns-prefetch" href="//images-cdn.ecwid.com/">' . PHP_EOL;
|
359 |
+
echo '<link rel="dns-prefetch" href="//images.ecwid.com/">' . PHP_EOL;
|
360 |
+
echo '<link rel="dns-prefetch" href="//app.ecwid.com/">' . PHP_EOL;
|
361 |
+
|
362 |
+
if (!ecwid_page_has_productbrowser()) {
|
363 |
+
$ecwid_page_id = get_option("ecwid_store_page_id");
|
364 |
+
$page_url = get_page_link($ecwid_page_id);
|
365 |
+
echo '<link rel="prefetch" href="' . $page_url . '" />' . PHP_EOL;
|
366 |
+
echo '<link rel="prerender" href="' . $page_url . '" />' . PHP_EOL;
|
367 |
+
}
|
368 |
+
}
|
369 |
+
|
370 |
+
function ecwid_meta_description() {
|
371 |
+
|
372 |
+
$allowed = ecwid_is_api_enabled() && isset($_GET['_escaped_fragment_']);
|
373 |
+
if (!$allowed) return;
|
374 |
+
|
375 |
+
$params = ecwid_parse_escaped_fragment($_GET['_escaped_fragment_']);
|
376 |
+
if (!$params) return;
|
377 |
+
|
378 |
+
if (!in_array($params['mode'], array('category', 'product')) || !isset($params['id'])) return;
|
379 |
+
|
380 |
+
$api = ecwid_new_product_api();
|
381 |
+
if ($params['mode'] == 'product') {
|
382 |
+
$product = $api->get_product($params['id']);
|
383 |
+
$description = $product['description'];
|
384 |
+
} elseif ($params['mode'] == 'category') {
|
385 |
+
$category = $api->get_category($params['id']);
|
386 |
+
$description = $category['description'];
|
387 |
+
} else return;
|
388 |
+
|
389 |
+
$description = strip_tags($description);
|
390 |
+
$description = html_entity_decode($description, ENT_NOQUOTES, 'UTF-8');
|
391 |
+
|
392 |
+
$description = preg_replace("![\\s]+!", " ", $description);
|
393 |
+
$description = trim($description, " \t\xA0\n\r"); // Space, tab, non-breaking space, newline, carriage return
|
394 |
+
$description = mb_substr($description, 0, 160);
|
395 |
+
$description = htmlspecialchars($description, ENT_COMPAT | ENT_HTML401, 'UTF-8');
|
396 |
+
|
397 |
+
echo <<<HTML
|
398 |
+
<meta name="description" content="$description" />
|
399 |
+
HTML;
|
400 |
+
}
|
401 |
+
|
402 |
+
function ecwid_hide_vote_message()
|
403 |
+
{
|
404 |
+
update_option('ecwid_show_vote_message', false);
|
405 |
+
}
|
406 |
+
|
407 |
+
function ecwid_get_product_and_category($category_id, $product_id) {
|
408 |
+
$params = array
|
409 |
+
(
|
410 |
+
array("alias" => "c", "action" => "category", "params" => array("id" => $category_id)),
|
411 |
+
array("alias" => "p", "action" => "product", "params" => array("id" => $product_id)),
|
412 |
+
);
|
413 |
+
|
414 |
+
$api = ecwid_new_product_api();
|
415 |
+
$batch_result = $api->get_batch_request($params);
|
416 |
+
|
417 |
+
$category = $batch_result["c"];
|
418 |
+
$product = $batch_result["p"];
|
419 |
+
$return = "";
|
420 |
+
|
421 |
+
if (is_array($product)) {
|
422 |
+
$return .=$product["name"];
|
423 |
+
}
|
424 |
+
|
425 |
+
if(is_array($category)) {
|
426 |
+
$return.=" | ";
|
427 |
+
$return .=$category["name"];
|
428 |
+
}
|
429 |
+
return $return;
|
430 |
+
}
|
431 |
+
|
432 |
+
function ecwid_seo_title($content) {
|
433 |
+
if (isset($_GET['_escaped_fragment_']) && ecwid_is_api_enabled()) {
|
434 |
+
$params = ecwid_parse_escaped_fragment($_GET['_escaped_fragment_']);
|
435 |
+
$ecwid_seo_title = '';
|
436 |
+
|
437 |
+
$api = ecwid_new_product_api();
|
438 |
+
|
439 |
+
if (isset($params['mode']) && !empty($params['mode'])) {
|
440 |
+
if ($params['mode'] == 'product') {
|
441 |
+
if (isset($params['category']) && !empty($params['category'])){
|
442 |
+
$ecwid_seo_title = ecwid_get_product_and_category($params['category'], $params['id']);
|
443 |
+
} elseif (empty($params['category'])) {
|
444 |
+
$ecwid_product = $api->get_product($params['id']);
|
445 |
+
$ecwid_seo_title = $ecwid_product['name'];
|
446 |
+
if(is_array($ecwid_product['categories'])){
|
447 |
+
foreach ($ecwid_product['categories'] as $ecwid_category){
|
448 |
+
if($ecwid_category['defaultCategory']==true){
|
449 |
+
$ecwid_seo_title .=" | ";
|
450 |
+
$ecwid_seo_title .= $ecwid_category['name'];
|
451 |
+
}
|
452 |
+
}
|
453 |
+
}
|
454 |
+
}
|
455 |
+
}
|
456 |
+
|
457 |
+
elseif ($params['mode'] == 'category'){
|
458 |
+
$api = ecwid_new_product_api();
|
459 |
+
$ecwid_category = $api->get_category($params['id']);
|
460 |
+
$ecwid_seo_title = $ecwid_category['name'];
|
461 |
+
}
|
462 |
+
}
|
463 |
+
if (!empty($ecwid_seo_title))
|
464 |
+
return $ecwid_seo_title . " | " . $content;
|
465 |
+
else
|
466 |
+
return $content;
|
467 |
+
|
468 |
+
} else {
|
469 |
+
return $content;
|
470 |
+
}
|
471 |
+
}
|
472 |
+
|
473 |
+
function ecwid_add_credits($powered_by)
|
474 |
+
{
|
475 |
+
if (!ecwid_is_paid_account()) {
|
476 |
+
|
477 |
+
$new_powered_by = '<li>';
|
478 |
+
$new_powered_by .= sprintf(
|
479 |
+
__('<a %s>Online store powered by Ecwid</a>', 'ecwid-shopping-cart'),
|
480 |
+
'target="_blank" href="//www.ecwid.com?source=wporg-metalink"'
|
481 |
+
);
|
482 |
+
$new_powered_by .= '</li>';
|
483 |
+
|
484 |
+
$powered_by .= $new_powered_by;
|
485 |
+
}
|
486 |
+
|
487 |
+
return $powered_by;
|
488 |
+
}
|
489 |
+
|
490 |
+
function ecwid_wrap_shortcode_content($content)
|
491 |
+
{
|
492 |
+
return "<!-- Ecwid shopping cart plugin v 2.2 -->"
|
493 |
+
. ecwid_get_scriptjs_code()
|
494 |
+
. "<div>$content</div>"
|
495 |
+
. "<!-- END Ecwid Shopping Cart v 2.2 -->";
|
496 |
+
}
|
497 |
+
|
498 |
+
function ecwid_get_scriptjs_code($force_lang = null) {
|
499 |
+
if (!defined('ECWID_SCRIPTJS')) {
|
500 |
+
$store_id = get_ecwid_store_id();
|
501 |
+
$force_lang_str = !is_null($force_lang) ? "&lang=$force_lang" : '';
|
502 |
+
$s = '<script type="text/javascript" data-cfasync="false" src="//' . APP_ECWID_COM . '/script.js?' . $store_id . $force_lang_str . '"></script>';
|
503 |
+
|
504 |
+
define('ECWID_SCRIPTJS','Yep');
|
505 |
+
$s = $s . ecwid_sso();
|
506 |
+
return $s;
|
507 |
+
} else {
|
508 |
+
return '';
|
509 |
+
}
|
510 |
+
}
|
511 |
+
|
512 |
+
function ecwid_script_shortcode($params) {
|
513 |
+
$attributes = shortcode_atts(
|
514 |
+
array(
|
515 |
+
'lang' => null
|
516 |
+
), $params
|
517 |
+
);
|
518 |
+
|
519 |
+
$content = "";
|
520 |
+
if (!is_null($attributes['lang'])) {
|
521 |
+
$content = ecwid_get_scriptjs_code($attributes['lang']);
|
522 |
+
}
|
523 |
+
|
524 |
+
return ecwid_wrap_shortcode_content($content);
|
525 |
+
}
|
526 |
+
|
527 |
+
function ecwid_minicart_shortcode() {
|
528 |
+
|
529 |
+
$ecwid_enable_minicart = get_option('ecwid_enable_minicart');
|
530 |
+
$ecwid_show_categories = get_option('ecwid_show_categories');
|
531 |
+
if (!empty($ecwid_enable_minicart) && !empty($ecwid_show_categories)) {
|
532 |
+
$s = <<<EOT
|
533 |
+
<script type="text/javascript"> xMinicart("style=","layout=attachToCategories"); </script>
|
534 |
+
EOT;
|
535 |
+
return ecwid_wrap_shortcode_content($s);
|
536 |
+
} else {
|
537 |
+
return "";
|
538 |
+
}
|
539 |
+
}
|
540 |
+
function ecwid_searchbox_shortcode() {
|
541 |
+
$ecwid_show_search_box = get_option('ecwid_show_search_box');
|
542 |
+
if (!empty($ecwid_show_search_box)) {
|
543 |
+
$s = <<<EOT
|
544 |
+
<script type="text/javascript"> xSearchPanel("style="); </script>
|
545 |
+
EOT;
|
546 |
+
return ecwid_wrap_shortcode_content($s);
|
547 |
+
} else {
|
548 |
+
return "";
|
549 |
+
}
|
550 |
+
}
|
551 |
+
|
552 |
+
function ecwid_categories_shortcode() {
|
553 |
+
$ecwid_show_categories = get_option('ecwid_show_categories');
|
554 |
+
if (!empty($ecwid_show_categories)) {
|
555 |
+
$s = <<<EOT
|
556 |
+
<script type="text/javascript"> xCategories("style="); </script>
|
557 |
+
EOT;
|
558 |
+
return ecwid_wrap_shortcode_content($s);
|
559 |
+
} else {
|
560 |
+
return "";
|
561 |
+
}
|
562 |
+
}
|
563 |
+
|
564 |
+
function ecwid_parse_escaped_fragment($escaped_fragment) {
|
565 |
+
$fragment = urldecode($escaped_fragment);
|
566 |
+
$return = array();
|
567 |
+
|
568 |
+
if (preg_match('/^(\/~\/)([a-z]+)\/(.*)$/', $fragment, $matches)) {
|
569 |
+
parse_str($matches[3], $return);
|
570 |
+
$return['mode'] = $matches[2];
|
571 |
+
}
|
572 |
+
return $return;
|
573 |
+
}
|
574 |
+
|
575 |
+
function ecwid_productbrowser_shortcode($shortcode_params) {
|
576 |
+
global $ecwid_seo_product_title;
|
577 |
+
$store_id = get_ecwid_store_id();
|
578 |
+
$list_of_views = array('list','grid','table');
|
579 |
+
|
580 |
+
$ecwid_pb_categoriesperrow = get_option('ecwid_pb_categoriesperrow');
|
581 |
+
$ecwid_pb_productspercolumn_grid = get_option('ecwid_pb_productspercolumn_grid');
|
582 |
+
$ecwid_pb_productsperrow_grid = get_option('ecwid_pb_productsperrow_grid');
|
583 |
+
$ecwid_pb_productsperpage_list = get_option('ecwid_pb_productsperpage_list');
|
584 |
+
$ecwid_pb_productsperpage_table = get_option('ecwid_pb_productsperpage_table');
|
585 |
+
$ecwid_pb_defaultview = get_option('ecwid_pb_defaultview');
|
586 |
+
$ecwid_pb_searchview = get_option('ecwid_pb_searchview');
|
587 |
+
|
588 |
+
$ecwid_mobile_catalog_link = get_option('ecwid_mobile_catalog_link');
|
589 |
+
$ecwid_default_category_id =
|
590 |
+
!empty($shortcode_params) && array_key_exists('default_category_id', $shortcode_params)
|
591 |
+
? $shortcode_params['default_category_id']
|
592 |
+
: get_option('ecwid_default_category_id');
|
593 |
+
|
594 |
+
if (empty($ecwid_pb_categoriesperrow)) {
|
595 |
+
$ecwid_pb_categoriesperrow = 3;
|
596 |
+
}
|
597 |
+
if (empty($ecwid_pb_productspercolumn_grid)) {
|
598 |
+
$ecwid_pb_productspercolumn_grid = 3;
|
599 |
+
}
|
600 |
+
if (empty($ecwid_pb_productsperrow_grid)) {
|
601 |
+
$ecwid_pb_productsperrow_grid = 3;
|
602 |
+
}
|
603 |
+
if (empty($ecwid_pb_productsperpage_list)) {
|
604 |
+
$ecwid_pb_productsperpage_list = 10;
|
605 |
+
}
|
606 |
+
if (empty($ecwid_pb_productsperpage_table)) {
|
607 |
+
$ecwid_pb_productsperpage_table = 20;
|
608 |
+
}
|
609 |
+
|
610 |
+
if (empty($ecwid_pb_defaultview) || !in_array($ecwid_pb_defaultview, $list_of_views)) {
|
611 |
+
$ecwid_pb_defaultview = 'grid';
|
612 |
+
}
|
613 |
+
if (empty($ecwid_pb_searchview) || !in_array($ecwid_pb_searchview, $list_of_views)) {
|
614 |
+
$ecwid_pb_searchview = 'list';
|
615 |
+
}
|
616 |
+
|
617 |
+
if (empty($ecwid_mobile_catalog_link)) {
|
618 |
+
$ecwid_mobile_catalog_link = "http://" . APP_ECWID_COM . "/jsp/{$store_id}/catalog";
|
619 |
+
}
|
620 |
+
|
621 |
+
if (empty($ecwid_default_category_id)) {
|
622 |
+
$ecwid_default_category_str = '';
|
623 |
+
} else {
|
624 |
+
$ecwid_default_category_str = ',"defaultCategoryId='. $ecwid_default_category_id .'"';
|
625 |
+
}
|
626 |
+
|
627 |
+
$ecwid_open_product = '';
|
628 |
+
$plain_content = '';
|
629 |
+
|
630 |
+
if (ecwid_can_display_html_catalog()) {
|
631 |
+
$params = ecwid_parse_escaped_fragment($_GET['_escaped_fragment_']);
|
632 |
+
include_once WP_PLUGIN_DIR . '/ecwid-shopping-cart/lib/ecwid_product_api.php';
|
633 |
+
include_once WP_PLUGIN_DIR . '/ecwid-shopping-cart/lib/EcwidCatalog.php';
|
634 |
+
|
635 |
+
$page_url = get_page_link();
|
636 |
+
|
637 |
+
$catalog = new EcwidCatalog($store_id, $page_url);
|
638 |
+
|
639 |
+
if (isset($params['mode']) && !empty($params['mode'])) {
|
640 |
+
if ($params['mode'] == 'product') {
|
641 |
+
$plain_content = $catalog->get_product($params['id']);
|
642 |
+
$plain_content .= '<script type="text/javascript"> if (!document.location.hash) document.location.hash = "!/~/product/id='. intval($params['id']) .'";</script>';
|
643 |
+
} elseif ($params['mode'] == 'category') {
|
644 |
+
$plain_content = $catalog->get_category($params['id']);
|
645 |
+
$ecwid_default_category_str = ',"defaultCategoryId=' . $params['id'] . '"';
|
646 |
+
}
|
647 |
+
|
648 |
+
} else {
|
649 |
+
$plain_content = $catalog->get_category(intval($ecwid_default_category_id));
|
650 |
+
}
|
651 |
+
} else {
|
652 |
+
$plain_content = '<noscript>Your browser does not support JavaScript.<a href="' . $ecwid_mobile_catalog_link .'">HTML version of this store</a></noscript>';
|
653 |
+
}
|
654 |
+
|
655 |
+
$s = <<<EOT
|
656 |
+
<script type="text/javascript"> xProductBrowser("categoriesPerRow=$ecwid_pb_categoriesperrow","views=grid($ecwid_pb_productspercolumn_grid,$ecwid_pb_productsperrow_grid) list($ecwid_pb_productsperpage_list) table($ecwid_pb_productsperpage_table)","categoryView=$ecwid_pb_defaultview","searchView=$ecwid_pb_searchview","style="$ecwid_default_category_str);</script>
|
657 |
+
{$plain_content}
|
658 |
+
EOT;
|
659 |
+
return ecwid_wrap_shortcode_content($s);
|
660 |
+
}
|
661 |
+
|
662 |
+
|
663 |
+
|
664 |
+
function ecwid_store_activate() {
|
665 |
+
$my_post = array();
|
666 |
+
$content = <<<EOT
|
667 |
+
<!-- Ecwid code. Please do not remove this line otherwise your Ecwid shopping cart will not work properly. --> [ecwid_minicart] [ecwid_searchbox] [ecwid_categories] [ecwid_productbrowser] <!-- Ecwid code end -->
|
668 |
+
EOT;
|
669 |
+
add_option("ecwid_store_page_id", '', '', 'yes');
|
670 |
+
add_option("ecwid_store_id", ECWID_DEMO_STORE_ID, '', 'yes');
|
671 |
+
|
672 |
+
add_option("ecwid_enable_minicart", 'Y', '', 'yes');
|
673 |
+
add_option("ecwid_show_categories", '', '', 'yes');
|
674 |
+
add_option("ecwid_show_search_box", '', '', 'yes');
|
675 |
+
|
676 |
+
add_option("ecwid_pb_categoriesperrow", '3', '', 'yes');
|
677 |
+
|
678 |
+
add_option("ecwid_pb_productspercolumn_grid", '3', '', 'yes');
|
679 |
+
add_option("ecwid_pb_productsperrow_grid", '3', '', 'yes');
|
680 |
+
add_option("ecwid_pb_productsperpage_list", '10', '', 'yes');
|
681 |
+
add_option("ecwid_pb_productsperpage_table", '20', '', 'yes');
|
682 |
+
|
683 |
+
add_option("ecwid_pb_defaultview", 'grid', '', 'yes');
|
684 |
+
add_option("ecwid_pb_searchview", 'list', '', 'yes');
|
685 |
+
|
686 |
+
add_option("ecwid_mobile_catalog_link", '', '', 'yes');
|
687 |
+
add_option("ecwid_default_category_id", '', '', 'yes');
|
688 |
+
|
689 |
+
add_option('ecwid_is_api_enabled', 'on', '', 'yes');
|
690 |
+
add_option('ecwid_api_check_time', 0, '', 'yes');
|
691 |
+
|
692 |
+
add_option('ecwid_show_vote_message', true);
|
693 |
+
|
694 |
+
add_option("ecwid_sso_secret_key", '', '', 'yes');
|
695 |
+
|
696 |
+
add_option("ecwid_installation_date", time());
|
697 |
+
|
698 |
+
$id = get_option("ecwid_store_page_id");
|
699 |
+
$_tmp_page = null;
|
700 |
+
if (!empty($id) and ($id > 0)) {
|
701 |
+
$_tmp_page = get_post($id);
|
702 |
+
}
|
703 |
+
if ($_tmp_page !== null) {
|
704 |
+
$my_post = array();
|
705 |
+
$my_post['ID'] = $id;
|
706 |
+
$my_post['post_status'] = 'publish';
|
707 |
+
wp_update_post( $my_post );
|
708 |
+
|
709 |
+
} else {
|
710 |
+
$my_post['post_title'] = __('Store', 'ecwid-shopping-cart');
|
711 |
+
$my_post['post_content'] = $content;
|
712 |
+
$my_post['post_status'] = 'publish';
|
713 |
+
$my_post['post_author'] = 1;
|
714 |
+
$my_post['post_type'] = 'page';
|
715 |
+
$id = wp_insert_post( $my_post );
|
716 |
+
update_option('ecwid_store_page_id', $id);
|
717 |
+
}
|
718 |
+
|
719 |
+
}
|
720 |
+
|
721 |
+
function ecwid_show_admin_messages() {
|
722 |
+
if (get_ecwid_store_id() == ECWID_DEMO_STORE_ID && $_GET['page'] != 'ecwid') {
|
723 |
+
|
724 |
+
$ecwid_page_id = get_option("ecwid_store_page_id");
|
725 |
+
$page_url = get_page_link($ecwid_page_id);
|
726 |
+
|
727 |
+
$message = sprintf(
|
728 |
+
__('<strong>Ecwid shopping cart is almost ready</strong>. Please visit <a target="_blank" href="%s">the created page</a> to see your store with demo products. In order to finish the installation, please go to the <a href="admin.php?page=ecwid"><strong>Ecwid settings</strong></a> and configure the plugin.', 'ecwid-shopping-cart'),
|
729 |
+
$page_url
|
730 |
+
);
|
731 |
+
|
732 |
+
ecwid_show_admin_message($message);
|
733 |
+
}
|
734 |
+
$install_date = get_option('ecwid_installation_date');
|
735 |
+
if (!$install_date) {
|
736 |
+
add_option('ecwid_installation_date', time());
|
737 |
+
} else if (ecwid_is_paid_account() && $install_date + 60*60*24*30 < time() && get_option('ecwid_show_vote_message')) {
|
738 |
+
$message = sprintf(
|
739 |
+
__('Do you like your Ecwid online store? We\'d appreciate it if you <a %s>add your review and vote</a> for the plugin on Wordpress site. (<a id="hide-vote-message">Close</a> and do not show this message anymore)', 'ecwid-shopping-cart'),
|
740 |
+
'target="_blank" href="http://wordpress.org/support/view/plugin-reviews/ecwid-shopping-cart"'
|
741 |
+
);
|
742 |
+
|
743 |
+
ecwid_show_admin_message($message);
|
744 |
+
}
|
745 |
+
}
|
746 |
+
|
747 |
+
function ecwid_show_admin_message($message) {
|
748 |
+
$class = version_compare(get_bloginfo('version'), '3.0') < 0 ? "updated fade" : "update-nag";
|
749 |
+
echo sprintf('<div class="%s" style="margin-top: 5px">%s</div>', $class, $message);
|
750 |
+
}
|
751 |
+
|
752 |
+
function ecwid_store_deactivate() {
|
753 |
+
$ecwid_page_id = get_option("ecwid_store_page_id");
|
754 |
+
$_tmp_page = null;
|
755 |
+
if (!empty($ecwid_page_id) and ($ecwid_page_id > 0)) {
|
756 |
+
$_tmp_page = get_page($ecwid_page_id);
|
757 |
+
if ($_tmp_page !== null) {
|
758 |
+
$my_post = array();
|
759 |
+
$my_post['ID'] = $ecwid_page_id;
|
760 |
+
$my_post['post_status'] = 'draft';
|
761 |
+
wp_update_post( $my_post );
|
762 |
+
} else {
|
763 |
+
update_option('ecwid_store_page_id', '');
|
764 |
+
}
|
765 |
+
}
|
766 |
+
|
767 |
+
}
|
768 |
+
|
769 |
+
function ecwid_abs_intval($value) {
|
770 |
+
if (!is_null($value))
|
771 |
+
return abs(intval($value));
|
772 |
+
else
|
773 |
+
return null;
|
774 |
+
}
|
775 |
+
|
776 |
+
function ecwid_options_add_page() {
|
777 |
+
|
778 |
+
|
779 |
+
add_menu_page(
|
780 |
+
__('Ecwid shopping cart settings', 'ecwid-shopping-cart'),
|
781 |
+
__('Ecwid Store', 'ecwid-shopping-cart'),
|
782 |
+
'manage_options',
|
783 |
+
'ecwid',
|
784 |
+
'ecwid_general_settings_do_page'
|
785 |
+
);
|
786 |
+
|
787 |
+
add_submenu_page(
|
788 |
+
'ecwid',
|
789 |
+
__('General settings', 'ecwid-shopping-cart'),
|
790 |
+
__('General', 'ecwid-shopping-cart'),
|
791 |
+
'manage_options',
|
792 |
+
'ecwid',
|
793 |
+
'ecwid_general_settings_do_page'
|
794 |
+
);
|
795 |
+
|
796 |
+
add_submenu_page(
|
797 |
+
'ecwid',
|
798 |
+
__('Appearance settings', 'ecwid-shopping-cart'),
|
799 |
+
__('Appearance', 'ecwid-shopping-cart'),
|
800 |
+
'manage_options',
|
801 |
+
'ecwid-appearance',
|
802 |
+
'ecwid_appearance_settings_do_page'
|
803 |
+
);
|
804 |
+
|
805 |
+
add_submenu_page(
|
806 |
+
'ecwid',
|
807 |
+
__('Advanced settings', 'ecwid-shopping-cart'),
|
808 |
+
__('Advanced', 'ecwid-shopping-cart'),
|
809 |
+
'manage_options',
|
810 |
+
'ecwid-advanced',
|
811 |
+
'ecwid_advanced_settings_do_page'
|
812 |
+
);
|
813 |
+
//add_options_page('Ecwid shopping cart settings', 'Ecwid shopping cart', 'manage_options', 'ecwid_options_page', 'ecwid_options_do_page');
|
814 |
+
}
|
815 |
+
|
816 |
+
function ecwid_register_admin_styles() {
|
817 |
+
global $version;
|
818 |
+
|
819 |
+
wp_register_style('ecwid-admin-css', plugins_url('ecwid-shopping-cart/css/admin.css'), array(), '', 'all');
|
820 |
+
wp_enqueue_style('ecwid-admin-css');
|
821 |
+
|
822 |
+
if (version_compare($version, '3.8-beta') > 0) {
|
823 |
+
wp_register_style('ecwid-admin38-css', plugins_url('ecwid-shopping-cart/css/admin.3.8.css'), array('ecwid-admin-css'), '', 'all');
|
824 |
+
wp_enqueue_style('ecwid-admin38-css');
|
825 |
+
}
|
826 |
+
}
|
827 |
+
|
828 |
+
function ecwid_register_settings_styles() {
|
829 |
+
global $version;
|
830 |
+
|
831 |
+
wp_register_style('ecwid-settings-pure-css', plugins_url('ecwid-shopping-cart/css/pure-min.css'), array(), '', 'all');
|
832 |
+
wp_enqueue_style('ecwid-settings-pure-css');
|
833 |
+
wp_register_style('ecwid-settings-css', plugins_url('ecwid-shopping-cart/css/settings.css'), array(), '', 'all');
|
834 |
+
wp_enqueue_style('ecwid-settings-css');
|
835 |
+
|
836 |
+
if (version_compare($version, '3.8-beta') > 0) {
|
837 |
+
wp_register_style('ecwid-settings38-css', plugins_url('ecwid-shopping-cart/css/settings.3.8.css'), array('ecwid-settings-css'), '', 'all');
|
838 |
+
wp_enqueue_style('ecwid-settings38-css');
|
839 |
+
}}
|
840 |
+
|
841 |
+
function ecwid_plugin_actions($links) {
|
842 |
+
$settings_link = "<a href='admin.php?page=ecwid'>"
|
843 |
+
. (get_ecwid_store_id() == ECWID_DEMO_STORE_ID ? __('Setup', 'ecwid-shopping-cart') : __('Settings') )
|
844 |
+
. "</a>";
|
845 |
+
array_unshift( $links, $settings_link );
|
846 |
+
|
847 |
+
return $links;
|
848 |
+
}
|
849 |
+
|
850 |
+
|
851 |
+
function ecwid_settings_api_init() {
|
852 |
+
|
853 |
+
if (isset($_POST['settings_section'])) switch ($_POST['settings_section']) {
|
854 |
+
case 'appearance':
|
855 |
+
register_setting('ecwid_options_page', 'ecwid_enable_minicart');
|
856 |
+
|
857 |
+
register_setting('ecwid_options_page', 'ecwid_show_categories');
|
858 |
+
register_setting('ecwid_options_page', 'ecwid_show_search_box');
|
859 |
+
|
860 |
+
register_setting('ecwid_options_page', 'ecwid_pb_categoriesperrow', 'ecwid_abs_intval');
|
861 |
+
register_setting('ecwid_options_page', 'ecwid_pb_productspercolumn_grid', 'ecwid_abs_intval');
|
862 |
+
register_setting('ecwid_options_page', 'ecwid_pb_productsperrow_grid', 'ecwid_abs_intval');
|
863 |
+
register_setting('ecwid_options_page', 'ecwid_pb_productsperpage_list', 'ecwid_abs_intval');
|
864 |
+
register_setting('ecwid_options_page', 'ecwid_pb_productsperpage_table', 'ecwid_abs_intval');
|
865 |
+
register_setting('ecwid_options_page', 'ecwid_pb_defaultview');
|
866 |
+
register_setting('ecwid_options_page', 'ecwid_pb_searchview');
|
867 |
+
break;
|
868 |
+
|
869 |
+
case 'general':
|
870 |
+
register_setting('ecwid_options_page', 'ecwid_store_id','ecwid_abs_intval' );
|
871 |
+
break;
|
872 |
+
|
873 |
+
case 'advanced':
|
874 |
+
register_setting('ecwid_options_page', 'ecwid_default_category_id');
|
875 |
+
register_setting('ecwid_options_page', 'ecwid_sso_secret_key');
|
876 |
+
break;
|
877 |
+
|
878 |
+
}
|
879 |
+
if (isset($_POST['ecwid_store_id'])) {
|
880 |
+
update_option('ecwid_is_api_enabled', 'off');
|
881 |
+
update_option('ecwid_api_check_time', 0);
|
882 |
+
}
|
883 |
+
}
|
884 |
+
|
885 |
+
function ecwid_common_admin_scripts() {
|
886 |
+
|
887 |
+
wp_register_script('ecwid-admin-js', plugins_url('ecwid-shopping-cart/js/admin.js'), array(), '', '');
|
888 |
+
wp_enqueue_script('ecwid-admin-js');
|
889 |
+
|
890 |
+
wp_register_script('ecwid-modernizr-js', plugins_url('ecwid-shopping-cart/js/modernizr.js'), array(), '', '');
|
891 |
+
wp_enqueue_script('ecwid-modernizr-js');
|
892 |
+
}
|
893 |
+
|
894 |
+
function ecwid_general_settings_do_page() {
|
895 |
+
|
896 |
+
if (get_ecwid_store_id() == ECWID_DEMO_STORE_ID) {
|
897 |
+
require_once plugin_dir_path(__FILE__) . '/templates/general-settings-initial.php';
|
898 |
+
} else {
|
899 |
+
require_once plugin_dir_path(__FILE__) . '/templates/general-settings.php';
|
900 |
+
}
|
901 |
+
}
|
902 |
+
|
903 |
+
function ecwid_advanced_settings_do_page() {
|
904 |
+
wp_register_script('ecwid-advanced-js', plugins_url('ecwid-shopping-cart/js/advanced.js'), array(), '', '');
|
905 |
+
wp_enqueue_script('ecwid-advanced-js');
|
906 |
+
|
907 |
+
$categories = false;
|
908 |
+
if (ecwid_is_paid_account()) {
|
909 |
+
$api = ecwid_new_product_api();
|
910 |
+
$categories = $api->get_all_categories();
|
911 |
+
$by_id = array();
|
912 |
+
foreach ($categories as $key => $category) {
|
913 |
+
$by_id[$category['id']] = $category;
|
914 |
+
}
|
915 |
+
unset($categories);
|
916 |
+
|
917 |
+
foreach ($by_id as $id => $category) {
|
918 |
+
$name_path = array($category['name']);
|
919 |
+
while (isset($category['parentId'])) {
|
920 |
+
$category = $by_id[$category['parentId']];
|
921 |
+
$name_path[] = $category['name'];
|
922 |
+
}
|
923 |
+
|
924 |
+
$by_id[$id]['path'] = array_reverse($name_path);
|
925 |
+
$by_id[$id]['path_str'] = implode(" > ", $by_id[$id]['path']);
|
926 |
+
}
|
927 |
+
|
928 |
+
function sort_by_path($a, $b) {
|
929 |
+
return strcmp($a['path_str'], $b['path_str']);
|
930 |
+
}
|
931 |
+
|
932 |
+
uasort($by_id, 'sort_by_path');
|
933 |
+
|
934 |
+
$categories = $by_id;
|
935 |
+
}
|
936 |
+
|
937 |
+
require_once plugin_dir_path(__FILE__) . '/templates/advanced-settings.php';
|
938 |
+
}
|
939 |
+
|
940 |
+
function ecwid_appearance_settings_do_page() {
|
941 |
+
|
942 |
+
wp_register_script('ecwid-appearance-js', plugins_url('ecwid-shopping-cart/js/appearance.js'), array(), '', '');
|
943 |
+
wp_enqueue_script('ecwid-appearance-js');
|
944 |
+
|
945 |
+
$disabled = false;
|
946 |
+
if (!empty($ecwid_page_id) && ($ecwid_page_id > 0)) {
|
947 |
+
$_tmp_page = get_post($ecwid_page_id);
|
948 |
+
$content = $_tmp_page->post_content;
|
949 |
+
if ( (strpos($content, "[ecwid_productbrowser]") === false) && (strpos($content, "xProductBrowser") !== false) )
|
950 |
+
$disabled = true;
|
951 |
+
}
|
952 |
+
// $disabled_str is used in appearance settings template
|
953 |
+
if ($disabled)
|
954 |
+
$disabled_str = 'disabled = "disabled"';
|
955 |
+
else
|
956 |
+
$disabled_str = "";
|
957 |
+
|
958 |
+
require_once ECWID_PLUGIN_DIR . 'templates/appearance-settings.php';
|
959 |
+
}
|
960 |
+
|
961 |
+
function get_ecwid_store_id() {
|
962 |
+
static $store_id = null;
|
963 |
+
if (is_null($store_id)) {
|
964 |
+
$store_id = get_option('ecwid_store_id');
|
965 |
+
if (empty($store_id))
|
966 |
+
$store_id = ECWID_DEMO_STORE_ID;
|
967 |
+
}
|
968 |
+
return $store_id;
|
969 |
+
}
|
970 |
+
|
971 |
+
function ecwid_dashboard_widget_function() {
|
972 |
+
echo "<a href=\"https://my.ecwid.com/\" target=\"_blank\">Go to the Ecwid Control Panel</a><br /><br /><a href=\"http://kb.ecwid.com/\" target=\"_blank\">Ecwid Knowledge Base</a> | <a href=\"http://www.ecwid.com/forums/\" target=\"_blank\">Ecwid Forums</a>";
|
973 |
+
}
|
974 |
+
|
975 |
+
function ecwid_add_dashboard_widgets() {
|
976 |
+
if (current_user_can('administrator')) {
|
977 |
+
wp_add_dashboard_widget('ecwid_dashboard_widget','Ecwid Links', 'ecwid_dashboard_widget_function');
|
978 |
+
}
|
979 |
+
}
|
980 |
+
|
981 |
+
|
982 |
+
class EcwidMinicartWidget extends WP_Widget {
|
983 |
+
|
984 |
+
function EcwidMinicartWidget() {
|
985 |
+
$widget_ops = array('classname' => 'widget_ecwid_minicart', 'description' => __("Your store's minicart", 'ecwid-shopping-cart') );
|
986 |
+
$this->WP_Widget('ecwidminicart', __('Ecwid Shopping Bag (Normal)', 'ecwid-shopping-cart'), $widget_ops);
|
987 |
+
|
988 |
+
}
|
989 |
+
|
990 |
+
function widget($args, $instance) {
|
991 |
+
extract($args);
|
992 |
+
$title = apply_filters('widget_title', empty($instance['title']) ? ' ' : $instance['title']);
|
993 |
+
|
994 |
+
echo $before_widget;
|
995 |
+
|
996 |
+
if ( $title )
|
997 |
+
echo $before_title . $title . $after_title;
|
998 |
+
|
999 |
+
echo '<div>';
|
1000 |
+
echo ecwid_get_scriptjs_code();
|
1001 |
+
|
1002 |
+
$ecwid_page_id = get_option("ecwid_store_page_id");
|
1003 |
+
$page_url = get_page_link($ecwid_page_id);
|
1004 |
+
$_tmp_page = get_page($ecwid_page_id);
|
1005 |
+
if (!empty($page_url) && $_tmp_page != null)
|
1006 |
+
echo "<script type=\"text/javascript\">var ecwid_ProductBrowserURL = \"$page_url\";</script>";
|
1007 |
+
echo <<<EOT
|
1008 |
+
<script type="text/javascript"> xMinicart("style="); </script>
|
1009 |
+
</div>
|
1010 |
+
EOT;
|
1011 |
+
|
1012 |
+
echo $after_widget;
|
1013 |
+
}
|
1014 |
+
|
1015 |
+
function update($new_instance, $old_instance){
|
1016 |
+
$instance = $old_instance;
|
1017 |
+
$instance['title'] = strip_tags(stripslashes($new_instance['title']));
|
1018 |
+
|
1019 |
+
return $instance;
|
1020 |
+
}
|
1021 |
+
|
1022 |
+
function form($instance){
|
1023 |
+
$instance = wp_parse_args( (array) $instance, array('title'=>'') );
|
1024 |
+
|
1025 |
+
$title = htmlspecialchars($instance['title']);
|
1026 |
+
|
1027 |
+
echo '<p><label for="' . $this->get_field_name('title') . '">' . __('Title:') . ' <input style="width:100%;" id="' . $this->get_field_id('title') . '" name="' . $this->get_field_name('title') . '" type="text" value="' . $title . '" /></label></p>';
|
1028 |
+
}
|
1029 |
+
|
1030 |
+
}
|
1031 |
+
|
1032 |
+
class EcwidMinicartMiniViewWidget extends WP_Widget {
|
1033 |
+
|
1034 |
+
function EcwidMinicartMiniViewWidget() {
|
1035 |
+
$widget_ops = array('classname' => 'widget_ecwid_minicart_miniview', 'description' => __("Your store's minicart", 'ecwid-shopping-cart') );
|
1036 |
+
$this->WP_Widget('ecwidminicart_miniview', __('Ecwid Shopping Bag (Mini view)', 'ecwid-shopping-cart'), $widget_ops);
|
1037 |
+
}
|
1038 |
+
|
1039 |
+
function widget($args, $instance) {
|
1040 |
+
extract($args);
|
1041 |
+
$title = apply_filters('widget_title', empty($instance['title']) ? ' ' : $instance['title']);
|
1042 |
+
|
1043 |
+
echo $before_widget;
|
1044 |
+
|
1045 |
+
if ( $title )
|
1046 |
+
echo $before_title . $title . $after_title;
|
1047 |
+
|
1048 |
+
echo '<div>';
|
1049 |
+
echo ecwid_get_scriptjs_code();
|
1050 |
+
|
1051 |
+
$ecwid_page_id = get_option("ecwid_store_page_id");
|
1052 |
+
$page_url = get_page_link($ecwid_page_id);
|
1053 |
+
$_tmp_page = get_page($ecwid_page_id);
|
1054 |
+
if (!empty($page_url) && $_tmp_page != null)
|
1055 |
+
echo "<script type=\"text/javascript\">var ecwid_ProductBrowserURL = \"$page_url\";</script>";
|
1056 |
+
echo <<<EOT
|
1057 |
+
<script type="text/javascript"> xMinicart("style=left:10px","layout=Mini"); </script>
|
1058 |
+
</div>
|
1059 |
+
EOT;
|
1060 |
+
|
1061 |
+
echo $after_widget;
|
1062 |
+
}
|
1063 |
+
|
1064 |
+
function update($new_instance, $old_instance){
|
1065 |
+
$instance = $old_instance;
|
1066 |
+
$instance['title'] = strip_tags(stripslashes($new_instance['title']));
|
1067 |
+
|
1068 |
+
return $instance;
|
1069 |
+
}
|
1070 |
+
|
1071 |
+
function form($instance){
|
1072 |
+
$instance = wp_parse_args( (array) $instance, array('title'=>'') );
|
1073 |
+
|
1074 |
+
$title = htmlspecialchars($instance['title']);
|
1075 |
+
|
1076 |
+
echo '<p><label for="' . $this->get_field_name('title') . '">' . __('Title:') . ' <input style="width:100%;" id="' . $this->get_field_id('title') . '" name="' . $this->get_field_name('title') . '" type="text" value="' . $title . '" /></label></p>';
|
1077 |
+
}
|
1078 |
+
|
1079 |
+
}
|
1080 |
+
|
1081 |
+
|
1082 |
+
class EcwidSearchWidget extends WP_Widget {
|
1083 |
+
|
1084 |
+
function EcwidSearchWidget() {
|
1085 |
+
$widget_ops = array('classname' => 'widget_ecwid_search', 'description' => __("Your store's search box", 'ecwid-shopping-cart'));
|
1086 |
+
$this->WP_Widget('ecwidsearch', __('Ecwid Search Box', 'ecwid-shopping-cart'), $widget_ops);
|
1087 |
+
}
|
1088 |
+
|
1089 |
+
function widget($args, $instance) {
|
1090 |
+
extract($args);
|
1091 |
+
$title = apply_filters('widget_title', empty($instance['title']) ? ' ' : $instance['title']);
|
1092 |
+
|
1093 |
+
echo $before_widget;
|
1094 |
+
|
1095 |
+
if ( $title )
|
1096 |
+
echo $before_title . $title . $after_title;
|
1097 |
+
|
1098 |
+
echo '<div>';
|
1099 |
+
echo ecwid_get_scriptjs_code();
|
1100 |
+
|
1101 |
+
$ecwid_page_id = get_option("ecwid_store_page_id");
|
1102 |
+
$page_url = get_page_link($ecwid_page_id);
|
1103 |
+
$_tmp_page = get_page($ecwid_page_id);
|
1104 |
+
if (!empty($page_url) && $_tmp_page != null)
|
1105 |
+
echo "<script type=\"text/javascript\">var ecwid_ProductBrowserURL = \"$page_url\";</script>";
|
1106 |
+
echo <<<EOT
|
1107 |
+
<script type="text/javascript"> xSearchPanel("style="); </script>
|
1108 |
+
</div>
|
1109 |
+
EOT;
|
1110 |
+
|
1111 |
+
echo $after_widget;
|
1112 |
+
}
|
1113 |
+
|
1114 |
+
function update($new_instance, $old_instance){
|
1115 |
+
$instance = $old_instance;
|
1116 |
+
$instance['title'] = strip_tags(stripslashes($new_instance['title']));
|
1117 |
+
|
1118 |
+
return $instance;
|
1119 |
+
}
|
1120 |
+
|
1121 |
+
function form($instance){
|
1122 |
+
$instance = wp_parse_args( (array) $instance, array('title'=>'') );
|
1123 |
+
|
1124 |
+
$title = htmlspecialchars($instance['title']);
|
1125 |
+
|
1126 |
+
echo '<p><label for="' . $this->get_field_name('title') . '">' . __('Title:') . ' <input style="width:100%;" id="' . $this->get_field_id('title') . '" name="' . $this->get_field_name('title') . '" type="text" value="' . $title . '" /></label></p>';
|
1127 |
+
}
|
1128 |
+
|
1129 |
+
}
|
1130 |
+
|
1131 |
+
class EcwidVCategoriesWidget extends WP_Widget {
|
1132 |
+
|
1133 |
+
function EcwidVCategoriesWidget() {
|
1134 |
+
$widget_ops = array('classname' => 'widget_ecwid_vcategories', 'description' => __('Vertical menu of categories', 'ecwid-shopping-cart'));
|
1135 |
+
$this->WP_Widget('ecwidvcategories', __('Ecwid Vertical Categories', 'ecwid-shopping-cart'), $widget_ops);
|
1136 |
+
}
|
1137 |
+
|
1138 |
+
function widget($args, $instance) {
|
1139 |
+
extract($args);
|
1140 |
+
$title = apply_filters('widget_title', empty($instance['title']) ? ' ' : $instance['title']);
|
1141 |
+
|
1142 |
+
echo $before_widget;
|
1143 |
+
|
1144 |
+
if ( $title )
|
1145 |
+
echo $before_title . $title . $after_title;
|
1146 |
+
|
1147 |
+
echo '<div>';
|
1148 |
+
echo ecwid_get_scriptjs_code();
|
1149 |
+
$ecwid_page_id = get_option("ecwid_store_page_id");
|
1150 |
+
$page_url = get_page_link($ecwid_page_id);
|
1151 |
+
$_tmp_page = get_page($ecwid_page_id);
|
1152 |
+
if (!empty($page_url) && $_tmp_page != null)
|
1153 |
+
echo "<script type=\"text/javascript\">var ecwid_ProductBrowserURL = \"$page_url\";</script>";
|
1154 |
+
echo <<<EOT
|
1155 |
+
<script type="text/javascript"> xVCategories("style="); </script>
|
1156 |
+
</div>
|
1157 |
+
EOT;
|
1158 |
+
|
1159 |
+
echo $after_widget;
|
1160 |
+
}
|
1161 |
+
|
1162 |
+
function update($new_instance, $old_instance){
|
1163 |
+
$instance = $old_instance;
|
1164 |
+
$instance['title'] = strip_tags(stripslashes($new_instance['title']));
|
1165 |
+
|
1166 |
+
return $instance;
|
1167 |
+
}
|
1168 |
+
|
1169 |
+
function form($instance){
|
1170 |
+
$instance = wp_parse_args( (array) $instance, array('title'=>'') );
|
1171 |
+
|
1172 |
+
$title = htmlspecialchars($instance['title']);
|
1173 |
+
|
1174 |
+
echo '<p><label for="' . $this->get_field_name('title') . '">' . __('Title:') . ' <input style="width:100%;" id="' . $this->get_field_id('title') . '" name="' . $this->get_field_name('title') . '" type="text" value="' . $title . '" /></label></p>';
|
1175 |
+
}
|
1176 |
+
|
1177 |
+
}
|
1178 |
+
|
1179 |
+
|
1180 |
+
function ecwid_sidebar_widgets_init() {
|
1181 |
+
register_widget('EcwidMinicartWidget');
|
1182 |
+
register_widget('EcwidSearchWidget');
|
1183 |
+
register_widget('EcwidVCategoriesWidget');
|
1184 |
+
register_widget('EcwidMinicartMiniViewWidget');
|
1185 |
+
}
|
1186 |
+
|
1187 |
+
add_action('widgets_init', 'ecwid_sidebar_widgets_init');
|
1188 |
+
|
1189 |
+
function ecwid_encode_json($data) {
|
1190 |
+
if(version_compare(PHP_VERSION,"5.2.0",">=")) {
|
1191 |
+
return json_encode($data);
|
1192 |
+
} else {
|
1193 |
+
include_once(ABSPATH . 'wp-content/plugins/ecwid-shopping-cart/lib/JSON.php');
|
1194 |
+
$json_parser = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);
|
1195 |
+
return $json_parser->encode($data);
|
1196 |
+
}
|
1197 |
+
}
|
1198 |
+
|
1199 |
+
|
1200 |
+
|
1201 |
+
function ecwid_sso() {
|
1202 |
+
$key = get_option('ecwid_sso_secret_key');
|
1203 |
+
if (empty($key)) {
|
1204 |
+
return "";
|
1205 |
+
}
|
1206 |
+
|
1207 |
+
global $current_user;
|
1208 |
+
get_currentuserinfo();
|
1209 |
+
|
1210 |
+
if ($current_user->ID) {
|
1211 |
+
$user_data = array(
|
1212 |
+
'appId' => "wp_" . get_ecwid_store_id(),
|
1213 |
+
'userId' => "{$current_user->ID}",
|
1214 |
+
'profile' => array(
|
1215 |
+
'email' => $current_user->user_email,
|
1216 |
+
'billingPerson' => array(
|
1217 |
+
'name' => $current_user->display_name
|
1218 |
+
)
|
1219 |
+
)
|
1220 |
+
);
|
1221 |
+
$user_data = base64_encode(ecwid_encode_json($user_data));
|
1222 |
+
$time = time();
|
1223 |
+
$hmac = ecwid_hmacsha1("$user_data $time", $key);
|
1224 |
+
return "<script> var ecwid_sso_profile='$user_data $hmac $time' </script>";
|
1225 |
+
}
|
1226 |
+
else {
|
1227 |
+
return "<script> var ecwid_sso_profile='' </script>";
|
1228 |
+
}
|
1229 |
+
|
1230 |
+
|
1231 |
+
}
|
1232 |
+
|
1233 |
+
// from: http://www.php.net/manual/en/function.sha1.php#39492
|
1234 |
+
|
1235 |
+
function ecwid_hmacsha1($data, $key) {
|
1236 |
+
if (function_exists("hash_hmac")) {
|
1237 |
+
return hash_hmac('sha1', $data, $key);
|
1238 |
+
} else {
|
1239 |
+
$blocksize=64;
|
1240 |
+
$hashfunc='sha1';
|
1241 |
+
if (strlen($key)>$blocksize)
|
1242 |
+
$key=pack('H*', $hashfunc($key));
|
1243 |
+
$key=str_pad($key,$blocksize,chr(0x00));
|
1244 |
+
$ipad=str_repeat(chr(0x36),$blocksize);
|
1245 |
+
$opad=str_repeat(chr(0x5c),$blocksize);
|
1246 |
+
$hmac = pack(
|
1247 |
+
'H*',$hashfunc(
|
1248 |
+
($key^$opad).pack(
|
1249 |
+
'H*',$hashfunc(
|
1250 |
+
($key^$ipad).$data
|
1251 |
+
)
|
1252 |
+
)
|
1253 |
+
)
|
1254 |
+
);
|
1255 |
+
return bin2hex($hmac);
|
1256 |
+
}
|
1257 |
+
}
|
1258 |
+
|
1259 |
+
function ecwid_can_display_html_catalog()
|
1260 |
+
{
|
1261 |
+
if (!isset($_GET['_escaped_fragment_'])) return;
|
1262 |
+
|
1263 |
+
$api = ecwid_new_product_api();
|
1264 |
+
if (!$api) return;
|
1265 |
+
|
1266 |
+
$profile = $api->get_profile();
|
1267 |
+
if (!$profile) return;
|
1268 |
+
|
1269 |
+
return $profile['closed'] != true;
|
1270 |
+
}
|
1271 |
+
|
1272 |
+
function ecwid_is_paid_account()
|
1273 |
+
{
|
1274 |
+
return ecwid_is_api_enabled() && get_ecwid_store_id() != ECWID_DEMO_STORE_ID;
|
1275 |
+
}
|
1276 |
+
|
1277 |
+
function ecwid_is_api_enabled()
|
1278 |
+
{
|
1279 |
+
$ecwid_is_api_enabled = get_option('ecwid_is_api_enabled');
|
1280 |
+
$ecwid_api_check_time = get_option('ecwid_api_check_time');
|
1281 |
+
$now = time();
|
1282 |
+
|
1283 |
+
if ($now > ($ecwid_api_check_time + 60 * 60 * 3)) {
|
1284 |
+
// check whether API is available once in 3 hours
|
1285 |
+
$ecwid = ecwid_new_product_api();
|
1286 |
+
$ecwid_is_api_enabled = ($ecwid->is_api_enabled() ? 'on' : 'off');
|
1287 |
+
update_option('ecwid_is_api_enabled', $ecwid_is_api_enabled);
|
1288 |
+
update_option('ecwid_api_check_time', $now);
|
1289 |
+
}
|
1290 |
+
|
1291 |
+
if ('on' == $ecwid_is_api_enabled)
|
1292 |
+
return true;
|
1293 |
+
else
|
1294 |
+
return false;
|
1295 |
+
}
|
1296 |
+
|
1297 |
+
function ecwid_new_product_api()
|
1298 |
+
{
|
1299 |
+
include_once WP_PLUGIN_DIR . '/ecwid-shopping-cart/lib/ecwid_product_api.php';
|
1300 |
+
$ecwid_store_id = intval(get_ecwid_store_id());
|
1301 |
+
$api = new EcwidProductApi($ecwid_store_id);
|
1302 |
+
|
1303 |
+
return $api;
|
1304 |
+
}
|
1305 |
+
?>
|
fonts/ecwid-logo.eot
ADDED
Binary file
|
images/grid.png
ADDED
Binary file
|
images/grid.svg
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="utf-8"?>
|
2 |
+
<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3 |
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
4 |
+
<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
5 |
+
width="102px" height="68px" viewBox="0 0 102 68" enable-background="new 0 0 102 68" xml:space="preserve">
|
6 |
+
<path fill="#CDCDCD" d="M29,1H3C2.005,1,1,1.99,1,3v27c0,1.012,1.006,2,2,2h26c0.995,0,2-0.988,2-2V3C31,1.99,29.995,1,29,1z M22,29
|
7 |
+
c0,0.929,0.017,1-1,1H11c-1.016,0-1-0.071-1-1v-3c0-0.929-0.016-1,1-1h10c1.017,0,1,0.071,1,1V29z"/>
|
8 |
+
<path fill="#CDCDCD" d="M64.199,1h-26.4C36.806,1,36,1.82,36,2.83v27.34c0,1.012,0.807,1.83,1.8,1.83h26.4
|
9 |
+
C65.193,32,66,31.182,66,30.17V2.83C66,1.82,65.193,1,64.199,1z M57,28.317C57,29.246,56.177,30,55.16,30h-8.322
|
10 |
+
C45.822,30,45,29.246,45,28.317v-1.636c0-0.929,0.823-1.682,1.839-1.682h8.322c1.017,0,1.84,0.753,1.84,1.682V28.317z"/>
|
11 |
+
<path fill="#CDCDCD" d="M99.199,1H72.801C71.807,1,71,1.82,71,2.83v27.34c0,1.012,0.807,1.83,1.801,1.83h26.398
|
12 |
+
c0.994,0,1.801-0.818,1.801-1.83V2.83C101,1.82,100.193,1,99.199,1z M92,28.317C92,29.246,91.177,30,90.16,30h-8.322
|
13 |
+
C80.822,30,80,29.246,80,28.317v-1.636c0-0.929,0.822-1.682,1.838-1.682h8.322c1.017,0,1.84,0.753,1.84,1.682V28.317z"/>
|
14 |
+
<path fill="#CDCDCD" d="M29.2,36h-26.4C1.806,36,1,36.82,1,37.83V64c0,1.012,0.807,1.83,1.8,1.83h26.399c0.995,0,1.8-0.818,1.8-1.83
|
15 |
+
V37.83C31,36.82,30.193,36,29.2,36z M22,62.146c0,0.93-0.823,1.684-1.84,1.684h-8.321c-1.016,0-1.839-0.754-1.839-1.684v-1.636
|
16 |
+
c0-0.929,0.823-1.682,1.839-1.682h8.321c1.017,0,1.84,0.753,1.84,1.682V62.146z"/>
|
17 |
+
<path fill="#CDCDCD" d="M64.199,36h-26.4c-0.994,0-1.8,0.82-1.8,1.83V64c0,1.012,0.807,1.83,1.8,1.83h26.4
|
18 |
+
C65.193,65.83,66,65.012,66,64V37.83C66,36.82,65.193,36,64.199,36z M57,62.146c0,0.93-0.823,1.684-1.84,1.684h-8.322
|
19 |
+
c-1.016,0-1.839-0.754-1.839-1.684v-1.636c0-0.929,0.823-1.682,1.839-1.682h8.322c1.017,0,1.84,0.753,1.84,1.682V62.146z"/>
|
20 |
+
<path fill="#CDCDCD" d="M99.199,36H72.801C71.807,36,71,36.82,71,37.83V64c0,1.012,0.807,1.83,1.801,1.83h26.398
|
21 |
+
c0.994,0,1.801-0.818,1.801-1.83V37.83C101,36.82,100.193,36,99.199,36z M92,62.146c0,0.93-0.823,1.684-1.84,1.684h-8.322
|
22 |
+
c-1.016,0-1.838-0.754-1.838-1.684v-1.636c0-0.929,0.822-1.682,1.838-1.682h8.322c1.017,0,1.84,0.753,1.84,1.682V62.146z"/>
|
23 |
+
</svg>
|
images/list.png
ADDED
Binary file
|
images/list.svg
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="utf-8"?>
|
2 |
+
<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3 |
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
4 |
+
<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
5 |
+
width="102px" height="68px" viewBox="0 0 102 68" enable-background="new 0 0 102 68" xml:space="preserve">
|
6 |
+
<path fill="#CDCDCD" d="M99.572,1H2.427C1.639,1,1,1.638,1,2.425v17.149C1,20.361,1.639,21,2.427,21h97.146
|
7 |
+
c0.788,0,1.427-0.639,1.427-1.426V2.425C101,1.638,100.361,1,99.572,1z M22,10h38v2H22V10z M18,16c0,1.012-1.005,2-2,2H6
|
8 |
+
c-0.994,0-2-0.988-2-2V6c0-1.01,1.006-2,2-2h10c0.995,0,2,0.99,2,2V16z M65,17H22v-2h43V17z M72,7H22V5h50V7z"/>
|
9 |
+
<path fill="#CDCDCD" d="M99.572,24H2.427C1.639,24,1,24.638,1,25.425v17.149C1,43.361,1.639,44,2.427,44h97.146
|
10 |
+
c0.788,0,1.427-0.639,1.427-1.426V25.425C101,24.638,100.361,24,99.572,24z M22,33h38v2H22V33z M18,39c0,1.012-1.005,2-2,2H6
|
11 |
+
c-0.994,0-2-0.988-2-2V29c0-1.01,1.006-2,2-2h10c0.995,0,2,0.99,2,2V39z M65,40H22v-2h43V40z M72,30H22v-2h50V30z"/>
|
12 |
+
<path fill="#CDCDCD" d="M99.572,47H2.427C1.639,47,1,47.639,1,48.425v17.149C1,66.361,1.639,67,2.427,67h97.146
|
13 |
+
c0.788,0,1.427-0.639,1.427-1.426V48.425C101,47.639,100.361,47,99.572,47z M22,56h38v2H22V56z M18,62c0,1.012-1.005,2-2,2H6
|
14 |
+
c-0.994,0-2-0.988-2-2V52c0-1.01,1.006-2,2-2h10c0.995,0,2,0.99,2,2V62z M65,63H22v-2h43V63z M72,53H22v-2h50V53z"/>
|
15 |
+
</svg>
|
images/store_inprogress.png
CHANGED
Binary file
|
images/store_ready.png
CHANGED
Binary file
|
images/table.png
ADDED
Binary file
|
images/table.svg
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="utf-8"?>
|
2 |
+
<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3 |
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
4 |
+
<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
5 |
+
width="102px" height="68px" viewBox="0 0 102 68" enable-background="new 0 0 102 68" xml:space="preserve">
|
6 |
+
<g>
|
7 |
+
<rect x="1.5" y="3" fill="#CDCDCD" width="30" height="6"/>
|
8 |
+
<rect x="33.5" y="3" fill="#CDCDCD" width="33" height="6"/>
|
9 |
+
<rect x="68.5" y="3" fill="#CDCDCD" width="32" height="6"/>
|
10 |
+
<rect x="33.5" y="11" fill="#CDCDCD" width="33" height="6"/>
|
11 |
+
<rect x="1.5" y="11" fill="#CDCDCD" width="30" height="6"/>
|
12 |
+
<rect x="68.5" y="11" fill="#CDCDCD" width="32" height="6"/>
|
13 |
+
<rect x="68.5" y="19" fill="#CDCDCD" width="32" height="6"/>
|
14 |
+
<rect x="1.5" y="19" fill="#CDCDCD" width="30" height="6"/>
|
15 |
+
<rect x="33.5" y="19" fill="#CDCDCD" width="33" height="6"/>
|
16 |
+
<rect x="1.5" y="27" fill="#CDCDCD" width="30" height="6"/>
|
17 |
+
<rect x="33.5" y="27" fill="#CDCDCD" width="33" height="6"/>
|
18 |
+
<rect x="68.5" y="27" fill="#CDCDCD" width="32" height="6"/>
|
19 |
+
<rect x="68.5" y="35" fill="#CDCDCD" width="32" height="6"/>
|
20 |
+
<rect x="1.5" y="35" fill="#CDCDCD" width="30" height="6"/>
|
21 |
+
<rect x="33.5" y="35" fill="#CDCDCD" width="33" height="6"/>
|
22 |
+
<rect x="1.5" y="43" fill="#CDCDCD" width="30" height="6"/>
|
23 |
+
<rect x="68.5" y="43" fill="#CDCDCD" width="32" height="6"/>
|
24 |
+
<rect x="33.5" y="43" fill="#CDCDCD" width="33" height="6"/>
|
25 |
+
<rect x="1.5" y="51" fill="#CDCDCD" width="30" height="6"/>
|
26 |
+
<rect x="68.5" y="51" fill="#CDCDCD" width="32" height="6"/>
|
27 |
+
<rect x="33.5" y="51" fill="#CDCDCD" width="33" height="6"/>
|
28 |
+
<rect x="1.5" y="59" fill="#CDCDCD" width="30" height="6"/>
|
29 |
+
<rect x="33.5" y="59" fill="#CDCDCD" width="33" height="6"/>
|
30 |
+
<rect x="68.5" y="59" fill="#CDCDCD" width="32" height="6"/>
|
31 |
+
</g>
|
32 |
+
</svg>
|
js/appearance.js
CHANGED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
if (!Modernizr.svg) {
|
2 |
+
for (var i in {grid:1,list:1,table:1}) {
|
3 |
+
var parent = jQuery('.' + i + ' svg').parent();
|
4 |
+
parent.find('svg').remove();
|
5 |
+
parent.append('<div class="fallback-image ' + i + '-image"></div>');
|
6 |
+
}
|
7 |
+
}
|
js/modernizr.js
ADDED
@@ -0,0 +1,1406 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Modernizr v2.7.0
|
3 |
+
* www.modernizr.com
|
4 |
+
*
|
5 |
+
* Copyright (c) Faruk Ates, Paul Irish, Alex Sexton
|
6 |
+
* Available under the BSD and MIT licenses: www.modernizr.com/license/
|
7 |
+
*/
|
8 |
+
|
9 |
+
/*
|
10 |
+
* Modernizr tests which native CSS3 and HTML5 features are available in
|
11 |
+
* the current UA and makes the results available to you in two ways:
|
12 |
+
* as properties on a global Modernizr object, and as classes on the
|
13 |
+
* <html> element. This information allows you to progressively enhance
|
14 |
+
* your pages with a granular level of control over the experience.
|
15 |
+
*
|
16 |
+
* Modernizr has an optional (not included) conditional resource loader
|
17 |
+
* called Modernizr.load(), based on Yepnope.js (yepnopejs.com).
|
18 |
+
* To get a build that includes Modernizr.load(), as well as choosing
|
19 |
+
* which tests to include, go to www.modernizr.com/download/
|
20 |
+
*
|
21 |
+
* Authors Faruk Ates, Paul Irish, Alex Sexton
|
22 |
+
* Contributors Ryan Seddon, Ben Alman
|
23 |
+
*/
|
24 |
+
|
25 |
+
window.Modernizr = (function( window, document, undefined ) {
|
26 |
+
|
27 |
+
var version = '2.7.0',
|
28 |
+
|
29 |
+
Modernizr = {},
|
30 |
+
|
31 |
+
/*>>cssclasses*/
|
32 |
+
// option for enabling the HTML classes to be added
|
33 |
+
enableClasses = true,
|
34 |
+
/*>>cssclasses*/
|
35 |
+
|
36 |
+
docElement = document.documentElement,
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Create our "modernizr" element that we do most feature tests on.
|
40 |
+
*/
|
41 |
+
mod = 'modernizr',
|
42 |
+
modElem = document.createElement(mod),
|
43 |
+
mStyle = modElem.style,
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Create the input element for various Web Forms feature tests.
|
47 |
+
*/
|
48 |
+
inputElem /*>>inputelem*/ = document.createElement('input') /*>>inputelem*/ ,
|
49 |
+
|
50 |
+
/*>>smile*/
|
51 |
+
smile = ':)',
|
52 |
+
/*>>smile*/
|
53 |
+
|
54 |
+
toString = {}.toString,
|
55 |
+
|
56 |
+
// TODO :: make the prefixes more granular
|
57 |
+
/*>>prefixes*/
|
58 |
+
// List of property values to set for css tests. See ticket #21
|
59 |
+
prefixes = ' -webkit- -moz- -o- -ms- '.split(' '),
|
60 |
+
/*>>prefixes*/
|
61 |
+
|
62 |
+
/*>>domprefixes*/
|
63 |
+
// Following spec is to expose vendor-specific style properties as:
|
64 |
+
// elem.style.WebkitBorderRadius
|
65 |
+
// and the following would be incorrect:
|
66 |
+
// elem.style.webkitBorderRadius
|
67 |
+
|
68 |
+
// Webkit ghosts their properties in lowercase but Opera & Moz do not.
|
69 |
+
// Microsoft uses a lowercase `ms` instead of the correct `Ms` in IE8+
|
70 |
+
// erik.eae.net/archives/2008/03/10/21.48.10/
|
71 |
+
|
72 |
+
// More here: github.com/Modernizr/Modernizr/issues/issue/21
|
73 |
+
omPrefixes = 'Webkit Moz O ms',
|
74 |
+
|
75 |
+
cssomPrefixes = omPrefixes.split(' '),
|
76 |
+
|
77 |
+
domPrefixes = omPrefixes.toLowerCase().split(' '),
|
78 |
+
/*>>domprefixes*/
|
79 |
+
|
80 |
+
/*>>ns*/
|
81 |
+
ns = {'svg': 'http://www.w3.org/2000/svg'},
|
82 |
+
/*>>ns*/
|
83 |
+
|
84 |
+
tests = {},
|
85 |
+
inputs = {},
|
86 |
+
attrs = {},
|
87 |
+
|
88 |
+
classes = [],
|
89 |
+
|
90 |
+
slice = classes.slice,
|
91 |
+
|
92 |
+
featureName, // used in testing loop
|
93 |
+
|
94 |
+
|
95 |
+
/*>>teststyles*/
|
96 |
+
// Inject element with style element and some CSS rules
|
97 |
+
injectElementWithStyles = function( rule, callback, nodes, testnames ) {
|
98 |
+
|
99 |
+
var style, ret, node, docOverflow,
|
100 |
+
div = document.createElement('div'),
|
101 |
+
// After page load injecting a fake body doesn't work so check if body exists
|
102 |
+
body = document.body,
|
103 |
+
// IE6 and 7 won't return offsetWidth or offsetHeight unless it's in the body element, so we fake it.
|
104 |
+
fakeBody = body || document.createElement('body');
|
105 |
+
|
106 |
+
if ( parseInt(nodes, 10) ) {
|
107 |
+
// In order not to give false positives we create a node for each test
|
108 |
+
// This also allows the method to scale for unspecified uses
|
109 |
+
while ( nodes-- ) {
|
110 |
+
node = document.createElement('div');
|
111 |
+
node.id = testnames ? testnames[nodes] : mod + (nodes + 1);
|
112 |
+
div.appendChild(node);
|
113 |
+
}
|
114 |
+
}
|
115 |
+
|
116 |
+
// <style> elements in IE6-9 are considered 'NoScope' elements and therefore will be removed
|
117 |
+
// when injected with innerHTML. To get around this you need to prepend the 'NoScope' element
|
118 |
+
// with a 'scoped' element, in our case the soft-hyphen entity as it won't mess with our measurements.
|
119 |
+
// msdn.microsoft.com/en-us/library/ms533897%28VS.85%29.aspx
|
120 |
+
// Documents served as xml will throw if using ­ so use xml friendly encoded version. See issue #277
|
121 |
+
style = ['­','<style id="s', mod, '">', rule, '</style>'].join('');
|
122 |
+
div.id = mod;
|
123 |
+
// IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody.
|
124 |
+
// Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270
|
125 |
+
(body ? div : fakeBody).innerHTML += style;
|
126 |
+
fakeBody.appendChild(div);
|
127 |
+
if ( !body ) {
|
128 |
+
//avoid crashing IE8, if background image is used
|
129 |
+
fakeBody.style.background = '';
|
130 |
+
//Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible
|
131 |
+
fakeBody.style.overflow = 'hidden';
|
132 |
+
docOverflow = docElement.style.overflow;
|
133 |
+
docElement.style.overflow = 'hidden';
|
134 |
+
docElement.appendChild(fakeBody);
|
135 |
+
}
|
136 |
+
|
137 |
+
ret = callback(div, rule);
|
138 |
+
// If this is done after page load we don't want to remove the body so check if body exists
|
139 |
+
if ( !body ) {
|
140 |
+
fakeBody.parentNode.removeChild(fakeBody);
|
141 |
+
docElement.style.overflow = docOverflow;
|
142 |
+
} else {
|
143 |
+
div.parentNode.removeChild(div);
|
144 |
+
}
|
145 |
+
|
146 |
+
return !!ret;
|
147 |
+
|
148 |
+
},
|
149 |
+
/*>>teststyles*/
|
150 |
+
|
151 |
+
/*>>mq*/
|
152 |
+
// adapted from matchMedia polyfill
|
153 |
+
// by Scott Jehl and Paul Irish
|
154 |
+
// gist.github.com/786768
|
155 |
+
testMediaQuery = function( mq ) {
|
156 |
+
|
157 |
+
var matchMedia = window.matchMedia || window.msMatchMedia;
|
158 |
+
if ( matchMedia ) {
|
159 |
+
return matchMedia(mq).matches;
|
160 |
+
}
|
161 |
+
|
162 |
+
var bool;
|
163 |
+
|
164 |
+
injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function( node ) {
|
165 |
+
bool = (window.getComputedStyle ?
|
166 |
+
getComputedStyle(node, null) :
|
167 |
+
node.currentStyle)['position'] == 'absolute';
|
168 |
+
});
|
169 |
+
|
170 |
+
return bool;
|
171 |
+
|
172 |
+
},
|
173 |
+
/*>>mq*/
|
174 |
+
|
175 |
+
|
176 |
+
/*>>hasevent*/
|
177 |
+
//
|
178 |
+
// isEventSupported determines if a given element supports the given event
|
179 |
+
// kangax.github.com/iseventsupported/
|
180 |
+
//
|
181 |
+
// The following results are known incorrects:
|
182 |
+
// Modernizr.hasEvent("webkitTransitionEnd", elem) // false negative
|
183 |
+
// Modernizr.hasEvent("textInput") // in Webkit. github.com/Modernizr/Modernizr/issues/333
|
184 |
+
// ...
|
185 |
+
isEventSupported = (function() {
|
186 |
+
|
187 |
+
var TAGNAMES = {
|
188 |
+
'select': 'input', 'change': 'input',
|
189 |
+
'submit': 'form', 'reset': 'form',
|
190 |
+
'error': 'img', 'load': 'img', 'abort': 'img'
|
191 |
+
};
|
192 |
+
|
193 |
+
function isEventSupported( eventName, element ) {
|
194 |
+
|
195 |
+
element = element || document.createElement(TAGNAMES[eventName] || 'div');
|
196 |
+
eventName = 'on' + eventName;
|
197 |
+
|
198 |
+
// When using `setAttribute`, IE skips "unload", WebKit skips "unload" and "resize", whereas `in` "catches" those
|
199 |
+
var isSupported = eventName in element;
|
200 |
+
|
201 |
+
if ( !isSupported ) {
|
202 |
+
// If it has no `setAttribute` (i.e. doesn't implement Node interface), try generic element
|
203 |
+
if ( !element.setAttribute ) {
|
204 |
+
element = document.createElement('div');
|
205 |
+
}
|
206 |
+
if ( element.setAttribute && element.removeAttribute ) {
|
207 |
+
element.setAttribute(eventName, '');
|
208 |
+
isSupported = is(element[eventName], 'function');
|
209 |
+
|
210 |
+
// If property was created, "remove it" (by setting value to `undefined`)
|
211 |
+
if ( !is(element[eventName], 'undefined') ) {
|
212 |
+
element[eventName] = undefined;
|
213 |
+
}
|
214 |
+
element.removeAttribute(eventName);
|
215 |
+
}
|
216 |
+
}
|
217 |
+
|
218 |
+
element = null;
|
219 |
+
return isSupported;
|
220 |
+
}
|
221 |
+
return isEventSupported;
|
222 |
+
})(),
|
223 |
+
/*>>hasevent*/
|
224 |
+
|
225 |
+
// TODO :: Add flag for hasownprop ? didn't last time
|
226 |
+
|
227 |
+
// hasOwnProperty shim by kangax needed for Safari 2.0 support
|
228 |
+
_hasOwnProperty = ({}).hasOwnProperty, hasOwnProp;
|
229 |
+
|
230 |
+
if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) {
|
231 |
+
hasOwnProp = function (object, property) {
|
232 |
+
return _hasOwnProperty.call(object, property);
|
233 |
+
};
|
234 |
+
}
|
235 |
+
else {
|
236 |
+
hasOwnProp = function (object, property) { /* yes, this can give false positives/negatives, but most of the time we don't care about those */
|
237 |
+
return ((property in object) && is(object.constructor.prototype[property], 'undefined'));
|
238 |
+
};
|
239 |
+
}
|
240 |
+
|
241 |
+
// Adapted from ES5-shim https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js
|
242 |
+
// es5.github.com/#x15.3.4.5
|
243 |
+
|
244 |
+
if (!Function.prototype.bind) {
|
245 |
+
Function.prototype.bind = function bind(that) {
|
246 |
+
|
247 |
+
var target = this;
|
248 |
+
|
249 |
+
if (typeof target != "function") {
|
250 |
+
throw new TypeError();
|
251 |
+
}
|
252 |
+
|
253 |
+
var args = slice.call(arguments, 1),
|
254 |
+
bound = function () {
|
255 |
+
|
256 |
+
if (this instanceof bound) {
|
257 |
+
|
258 |
+
var F = function(){};
|
259 |
+
F.prototype = target.prototype;
|
260 |
+
var self = new F();
|
261 |
+
|
262 |
+
var result = target.apply(
|
263 |
+
self,
|
264 |
+
args.concat(slice.call(arguments))
|
265 |
+
);
|
266 |
+
if (Object(result) === result) {
|
267 |
+
return result;
|
268 |
+
}
|
269 |
+
return self;
|
270 |
+
|
271 |
+
} else {
|
272 |
+
|
273 |
+
return target.apply(
|
274 |
+
that,
|
275 |
+
args.concat(slice.call(arguments))
|
276 |
+
);
|
277 |
+
|
278 |
+
}
|
279 |
+
|
280 |
+
};
|
281 |
+
|
282 |
+
return bound;
|
283 |
+
};
|
284 |
+
}
|
285 |
+
|
286 |
+
/**
|
287 |
+
* setCss applies given styles to the Modernizr DOM node.
|
288 |
+
*/
|
289 |
+
function setCss( str ) {
|
290 |
+
mStyle.cssText = str;
|
291 |
+
}
|
292 |
+
|
293 |
+
/**
|
294 |
+
* setCssAll extrapolates all vendor-specific css strings.
|
295 |
+
*/
|
296 |
+
function setCssAll( str1, str2 ) {
|
297 |
+
return setCss(prefixes.join(str1 + ';') + ( str2 || '' ));
|
298 |
+
}
|
299 |
+
|
300 |
+
/**
|
301 |
+
* is returns a boolean for if typeof obj is exactly type.
|
302 |
+
*/
|
303 |
+
function is( obj, type ) {
|
304 |
+
return typeof obj === type;
|
305 |
+
}
|
306 |
+
|
307 |
+
/**
|
308 |
+
* contains returns a boolean for if substr is found within str.
|
309 |
+
*/
|
310 |
+
function contains( str, substr ) {
|
311 |
+
return !!~('' + str).indexOf(substr);
|
312 |
+
}
|
313 |
+
|
314 |
+
/*>>testprop*/
|
315 |
+
|
316 |
+
// testProps is a generic CSS / DOM property test.
|
317 |
+
|
318 |
+
// In testing support for a given CSS property, it's legit to test:
|
319 |
+
// `elem.style[styleName] !== undefined`
|
320 |
+
// If the property is supported it will return an empty string,
|
321 |
+
// if unsupported it will return undefined.
|
322 |
+
|
323 |
+
// We'll take advantage of this quick test and skip setting a style
|
324 |
+
// on our modernizr element, but instead just testing undefined vs
|
325 |
+
// empty string.
|
326 |
+
|
327 |
+
// Because the testing of the CSS property names (with "-", as
|
328 |
+
// opposed to the camelCase DOM properties) is non-portable and
|
329 |
+
// non-standard but works in WebKit and IE (but not Gecko or Opera),
|
330 |
+
// we explicitly reject properties with dashes so that authors
|
331 |
+
// developing in WebKit or IE first don't end up with
|
332 |
+
// browser-specific content by accident.
|
333 |
+
|
334 |
+
function testProps( props, prefixed ) {
|
335 |
+
for ( var i in props ) {
|
336 |
+
var prop = props[i];
|
337 |
+
if ( !contains(prop, "-") && mStyle[prop] !== undefined ) {
|
338 |
+
return prefixed == 'pfx' ? prop : true;
|
339 |
+
}
|
340 |
+
}
|
341 |
+
return false;
|
342 |
+
}
|
343 |
+
/*>>testprop*/
|
344 |
+
|
345 |
+
// TODO :: add testDOMProps
|
346 |
+
/**
|
347 |
+
* testDOMProps is a generic DOM property test; if a browser supports
|
348 |
+
* a certain property, it won't return undefined for it.
|
349 |
+
*/
|
350 |
+
function testDOMProps( props, obj, elem ) {
|
351 |
+
for ( var i in props ) {
|
352 |
+
var item = obj[props[i]];
|
353 |
+
if ( item !== undefined) {
|
354 |
+
|
355 |
+
// return the property name as a string
|
356 |
+
if (elem === false) return props[i];
|
357 |
+
|
358 |
+
// let's bind a function
|
359 |
+
if (is(item, 'function')){
|
360 |
+
// default to autobind unless override
|
361 |
+
return item.bind(elem || obj);
|
362 |
+
}
|
363 |
+
|
364 |
+
// return the unbound function or obj or value
|
365 |
+
return item;
|
366 |
+
}
|
367 |
+
}
|
368 |
+
return false;
|
369 |
+
}
|
370 |
+
|
371 |
+
/*>>testallprops*/
|
372 |
+
/**
|
373 |
+
* testPropsAll tests a list of DOM properties we want to check against.
|
374 |
+
* We specify literally ALL possible (known and/or likely) properties on
|
375 |
+
* the element including the non-vendor prefixed one, for forward-
|
376 |
+
* compatibility.
|
377 |
+
*/
|
378 |
+
function testPropsAll( prop, prefixed, elem ) {
|
379 |
+
|
380 |
+
var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),
|
381 |
+
props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');
|
382 |
+
|
383 |
+
// did they call .prefixed('boxSizing') or are we just testing a prop?
|
384 |
+
if(is(prefixed, "string") || is(prefixed, "undefined")) {
|
385 |
+
return testProps(props, prefixed);
|
386 |
+
|
387 |
+
// otherwise, they called .prefixed('requestAnimationFrame', window[, elem])
|
388 |
+
} else {
|
389 |
+
props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');
|
390 |
+
return testDOMProps(props, prefixed, elem);
|
391 |
+
}
|
392 |
+
}
|
393 |
+
/*>>testallprops*/
|
394 |
+
|
395 |
+
|
396 |
+
/**
|
397 |
+
* Tests
|
398 |
+
* -----
|
399 |
+
*/
|
400 |
+
|
401 |
+
// The *new* flexbox
|
402 |
+
// dev.w3.org/csswg/css3-flexbox
|
403 |
+
|
404 |
+
tests['flexbox'] = function() {
|
405 |
+
return testPropsAll('flexWrap');
|
406 |
+
};
|
407 |
+
|
408 |
+
// The *old* flexbox
|
409 |
+
// www.w3.org/TR/2009/WD-css3-flexbox-20090723/
|
410 |
+
|
411 |
+
tests['flexboxlegacy'] = function() {
|
412 |
+
return testPropsAll('boxDirection');
|
413 |
+
};
|
414 |
+
|
415 |
+
// On the S60 and BB Storm, getContext exists, but always returns undefined
|
416 |
+
// so we actually have to call getContext() to verify
|
417 |
+
// github.com/Modernizr/Modernizr/issues/issue/97/
|
418 |
+
|
419 |
+
tests['canvas'] = function() {
|
420 |
+
var elem = document.createElement('canvas');
|
421 |
+
return !!(elem.getContext && elem.getContext('2d'));
|
422 |
+
};
|
423 |
+
|
424 |
+
tests['canvastext'] = function() {
|
425 |
+
return !!(Modernizr['canvas'] && is(document.createElement('canvas').getContext('2d').fillText, 'function'));
|
426 |
+
};
|
427 |
+
|
428 |
+
// webk.it/70117 is tracking a legit WebGL feature detect proposal
|
429 |
+
|
430 |
+
// We do a soft detect which may false positive in order to avoid
|
431 |
+
// an expensive context creation: bugzil.la/732441
|
432 |
+
|
433 |
+
tests['webgl'] = function() {
|
434 |
+
return !!window.WebGLRenderingContext;
|
435 |
+
};
|
436 |
+
|
437 |
+
/*
|
438 |
+
* The Modernizr.touch test only indicates if the browser supports
|
439 |
+
* touch events, which does not necessarily reflect a touchscreen
|
440 |
+
* device, as evidenced by tablets running Windows 7 or, alas,
|
441 |
+
* the Palm Pre / WebOS (touch) phones.
|
442 |
+
*
|
443 |
+
* Additionally, Chrome (desktop) used to lie about its support on this,
|
444 |
+
* but that has since been rectified: crbug.com/36415
|
445 |
+
*
|
446 |
+
* We also test for Firefox 4 Multitouch Support.
|
447 |
+
*
|
448 |
+
* For more info, see: modernizr.github.com/Modernizr/touch.html
|
449 |
+
*/
|
450 |
+
|
451 |
+
tests['touch'] = function() {
|
452 |
+
var bool;
|
453 |
+
|
454 |
+
if(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {
|
455 |
+
bool = true;
|
456 |
+
} else {
|
457 |
+
injectElementWithStyles(['@media (',prefixes.join('touch-enabled),('),mod,')','{#modernizr{top:9px;position:absolute}}'].join(''), function( node ) {
|
458 |
+
bool = node.offsetTop === 9;
|
459 |
+
});
|
460 |
+
}
|
461 |
+
|
462 |
+
return bool;
|
463 |
+
};
|
464 |
+
|
465 |
+
|
466 |
+
// geolocation is often considered a trivial feature detect...
|
467 |
+
// Turns out, it's quite tricky to get right:
|
468 |
+
//
|
469 |
+
// Using !!navigator.geolocation does two things we don't want. It:
|
470 |
+
// 1. Leaks memory in IE9: github.com/Modernizr/Modernizr/issues/513
|
471 |
+
// 2. Disables page caching in WebKit: webk.it/43956
|
472 |
+
//
|
473 |
+
// Meanwhile, in Firefox < 8, an about:config setting could expose
|
474 |
+
// a false positive that would throw an exception: bugzil.la/688158
|
475 |
+
|
476 |
+
tests['geolocation'] = function() {
|
477 |
+
return 'geolocation' in navigator;
|
478 |
+
};
|
479 |
+
|
480 |
+
|
481 |
+
tests['postmessage'] = function() {
|
482 |
+
return !!window.postMessage;
|
483 |
+
};
|
484 |
+
|
485 |
+
|
486 |
+
// Chrome incognito mode used to throw an exception when using openDatabase
|
487 |
+
// It doesn't anymore.
|
488 |
+
tests['websqldatabase'] = function() {
|
489 |
+
return !!window.openDatabase;
|
490 |
+
};
|
491 |
+
|
492 |
+
// Vendors had inconsistent prefixing with the experimental Indexed DB:
|
493 |
+
// - Webkit's implementation is accessible through webkitIndexedDB
|
494 |
+
// - Firefox shipped moz_indexedDB before FF4b9, but since then has been mozIndexedDB
|
495 |
+
// For speed, we don't test the legacy (and beta-only) indexedDB
|
496 |
+
tests['indexedDB'] = function() {
|
497 |
+
return !!testPropsAll("indexedDB", window);
|
498 |
+
};
|
499 |
+
|
500 |
+
// documentMode logic from YUI to filter out IE8 Compat Mode
|
501 |
+
// which false positives.
|
502 |
+
tests['hashchange'] = function() {
|
503 |
+
return isEventSupported('hashchange', window) && (document.documentMode === undefined || document.documentMode > 7);
|
504 |
+
};
|
505 |
+
|
506 |
+
// Per 1.6:
|
507 |
+
// This used to be Modernizr.historymanagement but the longer
|
508 |
+
// name has been deprecated in favor of a shorter and property-matching one.
|
509 |
+
// The old API is still available in 1.6, but as of 2.0 will throw a warning,
|
510 |
+
// and in the first release thereafter disappear entirely.
|
511 |
+
tests['history'] = function() {
|
512 |
+
return !!(window.history && history.pushState);
|
513 |
+
};
|
514 |
+
|
515 |
+
tests['draganddrop'] = function() {
|
516 |
+
var div = document.createElement('div');
|
517 |
+
return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div);
|
518 |
+
};
|
519 |
+
|
520 |
+
// FF3.6 was EOL'ed on 4/24/12, but the ESR version of FF10
|
521 |
+
// will be supported until FF19 (2/12/13), at which time, ESR becomes FF17.
|
522 |
+
// FF10 still uses prefixes, so check for it until then.
|
523 |
+
// for more ESR info, see: mozilla.org/en-US/firefox/organizations/faq/
|
524 |
+
tests['websockets'] = function() {
|
525 |
+
return 'WebSocket' in window || 'MozWebSocket' in window;
|
526 |
+
};
|
527 |
+
|
528 |
+
|
529 |
+
// css-tricks.com/rgba-browser-support/
|
530 |
+
tests['rgba'] = function() {
|
531 |
+
// Set an rgba() color and check the returned value
|
532 |
+
|
533 |
+
setCss('background-color:rgba(150,255,150,.5)');
|
534 |
+
|
535 |
+
return contains(mStyle.backgroundColor, 'rgba');
|
536 |
+
};
|
537 |
+
|
538 |
+
tests['hsla'] = function() {
|
539 |
+
// Same as rgba(), in fact, browsers re-map hsla() to rgba() internally,
|
540 |
+
// except IE9 who retains it as hsla
|
541 |
+
|
542 |
+
setCss('background-color:hsla(120,40%,100%,.5)');
|
543 |
+
|
544 |
+
return contains(mStyle.backgroundColor, 'rgba') || contains(mStyle.backgroundColor, 'hsla');
|
545 |
+
};
|
546 |
+
|
547 |
+
tests['multiplebgs'] = function() {
|
548 |
+
// Setting multiple images AND a color on the background shorthand property
|
549 |
+
// and then querying the style.background property value for the number of
|
550 |
+
// occurrences of "url(" is a reliable method for detecting ACTUAL support for this!
|
551 |
+
|
552 |
+
setCss('background:url(https://),url(https://),red url(https://)');
|
553 |
+
|
554 |
+
// If the UA supports multiple backgrounds, there should be three occurrences
|
555 |
+
// of the string "url(" in the return value for elemStyle.background
|
556 |
+
|
557 |
+
return (/(url\s*\(.*?){3}/).test(mStyle.background);
|
558 |
+
};
|
559 |
+
|
560 |
+
|
561 |
+
|
562 |
+
// this will false positive in Opera Mini
|
563 |
+
// github.com/Modernizr/Modernizr/issues/396
|
564 |
+
|
565 |
+
tests['backgroundsize'] = function() {
|
566 |
+
return testPropsAll('backgroundSize');
|
567 |
+
};
|
568 |
+
|
569 |
+
tests['borderimage'] = function() {
|
570 |
+
return testPropsAll('borderImage');
|
571 |
+
};
|
572 |
+
|
573 |
+
|
574 |
+
// Super comprehensive table about all the unique implementations of
|
575 |
+
// border-radius: muddledramblings.com/table-of-css3-border-radius-compliance
|
576 |
+
|
577 |
+
tests['borderradius'] = function() {
|
578 |
+
return testPropsAll('borderRadius');
|
579 |
+
};
|
580 |
+
|
581 |
+
// WebOS unfortunately false positives on this test.
|
582 |
+
tests['boxshadow'] = function() {
|
583 |
+
return testPropsAll('boxShadow');
|
584 |
+
};
|
585 |
+
|
586 |
+
// FF3.0 will false positive on this test
|
587 |
+
tests['textshadow'] = function() {
|
588 |
+
return document.createElement('div').style.textShadow === '';
|
589 |
+
};
|
590 |
+
|
591 |
+
|
592 |
+
tests['opacity'] = function() {
|
593 |
+
// Browsers that actually have CSS Opacity implemented have done so
|
594 |
+
// according to spec, which means their return values are within the
|
595 |
+
// range of [0.0,1.0] - including the leading zero.
|
596 |
+
|
597 |
+
setCssAll('opacity:.55');
|
598 |
+
|
599 |
+
// The non-literal . in this regex is intentional:
|
600 |
+
// German Chrome returns this value as 0,55
|
601 |
+
// github.com/Modernizr/Modernizr/issues/#issue/59/comment/516632
|
602 |
+
return (/^0.55$/).test(mStyle.opacity);
|
603 |
+
};
|
604 |
+
|
605 |
+
|
606 |
+
// Note, Android < 4 will pass this test, but can only animate
|
607 |
+
// a single property at a time
|
608 |
+
// daneden.me/2011/12/putting-up-with-androids-bullshit/
|
609 |
+
tests['cssanimations'] = function() {
|
610 |
+
return testPropsAll('animationName');
|
611 |
+
};
|
612 |
+
|
613 |
+
|
614 |
+
tests['csscolumns'] = function() {
|
615 |
+
return testPropsAll('columnCount');
|
616 |
+
};
|
617 |
+
|
618 |
+
|
619 |
+
tests['cssgradients'] = function() {
|
620 |
+
/**
|
621 |
+
* For CSS Gradients syntax, please see:
|
622 |
+
* webkit.org/blog/175/introducing-css-gradients/
|
623 |
+
* developer.mozilla.org/en/CSS/-moz-linear-gradient
|
624 |
+
* developer.mozilla.org/en/CSS/-moz-radial-gradient
|
625 |
+
* dev.w3.org/csswg/css3-images/#gradients-
|
626 |
+
*/
|
627 |
+
|
628 |
+
var str1 = 'background-image:',
|
629 |
+
str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));',
|
630 |
+
str3 = 'linear-gradient(left top,#9f9, white);';
|
631 |
+
|
632 |
+
setCss(
|
633 |
+
// legacy webkit syntax (FIXME: remove when syntax not in use anymore)
|
634 |
+
(str1 + '-webkit- '.split(' ').join(str2 + str1) +
|
635 |
+
// standard syntax // trailing 'background-image:'
|
636 |
+
prefixes.join(str3 + str1)).slice(0, -str1.length)
|
637 |
+
);
|
638 |
+
|
639 |
+
return contains(mStyle.backgroundImage, 'gradient');
|
640 |
+
};
|
641 |
+
|
642 |
+
|
643 |
+
tests['cssreflections'] = function() {
|
644 |
+
return testPropsAll('boxReflect');
|
645 |
+
};
|
646 |
+
|
647 |
+
|
648 |
+
tests['csstransforms'] = function() {
|
649 |
+
return !!testPropsAll('transform');
|
650 |
+
};
|
651 |
+
|
652 |
+
|
653 |
+
tests['csstransforms3d'] = function() {
|
654 |
+
|
655 |
+
var ret = !!testPropsAll('perspective');
|
656 |
+
|
657 |
+
// Webkit's 3D transforms are passed off to the browser's own graphics renderer.
|
658 |
+
// It works fine in Safari on Leopard and Snow Leopard, but not in Chrome in
|
659 |
+
// some conditions. As a result, Webkit typically recognizes the syntax but
|
660 |
+
// will sometimes throw a false positive, thus we must do a more thorough check:
|
661 |
+
if ( ret && 'webkitPerspective' in docElement.style ) {
|
662 |
+
|
663 |
+
// Webkit allows this media query to succeed only if the feature is enabled.
|
664 |
+
// `@media (transform-3d),(-webkit-transform-3d){ ... }`
|
665 |
+
injectElementWithStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}', function( node, rule ) {
|
666 |
+
ret = node.offsetLeft === 9 && node.offsetHeight === 3;
|
667 |
+
});
|
668 |
+
}
|
669 |
+
return ret;
|
670 |
+
};
|
671 |
+
|
672 |
+
|
673 |
+
tests['csstransitions'] = function() {
|
674 |
+
return testPropsAll('transition');
|
675 |
+
};
|
676 |
+
|
677 |
+
|
678 |
+
/*>>fontface*/
|
679 |
+
// @font-face detection routine by Diego Perini
|
680 |
+
// javascript.nwbox.com/CSSSupport/
|
681 |
+
|
682 |
+
// false positives:
|
683 |
+
// WebOS github.com/Modernizr/Modernizr/issues/342
|
684 |
+
// WP7 github.com/Modernizr/Modernizr/issues/538
|
685 |
+
tests['fontface'] = function() {
|
686 |
+
var bool;
|
687 |
+
|
688 |
+
injectElementWithStyles('@font-face {font-family:"font";src:url("https://")}', function( node, rule ) {
|
689 |
+
var style = document.getElementById('smodernizr'),
|
690 |
+
sheet = style.sheet || style.styleSheet,
|
691 |
+
cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : '';
|
692 |
+
|
693 |
+
bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0;
|
694 |
+
});
|
695 |
+
|
696 |
+
return bool;
|
697 |
+
};
|
698 |
+
/*>>fontface*/
|
699 |
+
|
700 |
+
// CSS generated content detection
|
701 |
+
tests['generatedcontent'] = function() {
|
702 |
+
var bool;
|
703 |
+
|
704 |
+
injectElementWithStyles(['#',mod,'{font:0/0 a}#',mod,':after{content:"',smile,'";visibility:hidden;font:3px/1 a}'].join(''), function( node ) {
|
705 |
+
bool = node.offsetHeight >= 3;
|
706 |
+
});
|
707 |
+
|
708 |
+
return bool;
|
709 |
+
};
|
710 |
+
|
711 |
+
|
712 |
+
|
713 |
+
// These tests evaluate support of the video/audio elements, as well as
|
714 |
+
// testing what types of content they support.
|
715 |
+
//
|
716 |
+
// We're using the Boolean constructor here, so that we can extend the value
|
717 |
+
// e.g. Modernizr.video // true
|
718 |
+
// Modernizr.video.ogg // 'probably'
|
719 |
+
//
|
720 |
+
// Codec values from : github.com/NielsLeenheer/html5test/blob/9106a8/index.html#L845
|
721 |
+
// thx to NielsLeenheer and zcorpan
|
722 |
+
|
723 |
+
// Note: in some older browsers, "no" was a return value instead of empty string.
|
724 |
+
// It was live in FF3.5.0 and 3.5.1, but fixed in 3.5.2
|
725 |
+
// It was also live in Safari 4.0.0 - 4.0.4, but fixed in 4.0.5
|
726 |
+
|
727 |
+
tests['video'] = function() {
|
728 |
+
var elem = document.createElement('video'),
|
729 |
+
bool = false;
|
730 |
+
|
731 |
+
// IE9 Running on Windows Server SKU can cause an exception to be thrown, bug #224
|
732 |
+
try {
|
733 |
+
if ( bool = !!elem.canPlayType ) {
|
734 |
+
bool = new Boolean(bool);
|
735 |
+
bool.ogg = elem.canPlayType('video/ogg; codecs="theora"') .replace(/^no$/,'');
|
736 |
+
|
737 |
+
// Without QuickTime, this value will be `undefined`. github.com/Modernizr/Modernizr/issues/546
|
738 |
+
bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,'');
|
739 |
+
|
740 |
+
bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,'');
|
741 |
+
}
|
742 |
+
|
743 |
+
} catch(e) { }
|
744 |
+
|
745 |
+
return bool;
|
746 |
+
};
|
747 |
+
|
748 |
+
tests['audio'] = function() {
|
749 |
+
var elem = document.createElement('audio'),
|
750 |
+
bool = false;
|
751 |
+
|
752 |
+
try {
|
753 |
+
if ( bool = !!elem.canPlayType ) {
|
754 |
+
bool = new Boolean(bool);
|
755 |
+
bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,'');
|
756 |
+
bool.mp3 = elem.canPlayType('audio/mpeg;') .replace(/^no$/,'');
|
757 |
+
|
758 |
+
// Mimetypes accepted:
|
759 |
+
// developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements
|
760 |
+
// bit.ly/iphoneoscodecs
|
761 |
+
bool.wav = elem.canPlayType('audio/wav; codecs="1"') .replace(/^no$/,'');
|
762 |
+
bool.m4a = ( elem.canPlayType('audio/x-m4a;') ||
|
763 |
+
elem.canPlayType('audio/aac;')) .replace(/^no$/,'');
|
764 |
+
}
|
765 |
+
} catch(e) { }
|
766 |
+
|
767 |
+
return bool;
|
768 |
+
};
|
769 |
+
|
770 |
+
|
771 |
+
// In FF4, if disabled, window.localStorage should === null.
|
772 |
+
|
773 |
+
// Normally, we could not test that directly and need to do a
|
774 |
+
// `('localStorage' in window) && ` test first because otherwise Firefox will
|
775 |
+
// throw bugzil.la/365772 if cookies are disabled
|
776 |
+
|
777 |
+
// Also in iOS5 Private Browsing mode, attempting to use localStorage.setItem
|
778 |
+
// will throw the exception:
|
779 |
+
// QUOTA_EXCEEDED_ERRROR DOM Exception 22.
|
780 |
+
// Peculiarly, getItem and removeItem calls do not throw.
|
781 |
+
|
782 |
+
// Because we are forced to try/catch this, we'll go aggressive.
|
783 |
+
|
784 |
+
// Just FWIW: IE8 Compat mode supports these features completely:
|
785 |
+
// www.quirksmode.org/dom/html5.html
|
786 |
+
// But IE8 doesn't support either with local files
|
787 |
+
|
788 |
+
tests['localstorage'] = function() {
|
789 |
+
try {
|
790 |
+
localStorage.setItem(mod, mod);
|
791 |
+
localStorage.removeItem(mod);
|
792 |
+
return true;
|
793 |
+
} catch(e) {
|
794 |
+
return false;
|
795 |
+
}
|
796 |
+
};
|
797 |
+
|
798 |
+
tests['sessionstorage'] = function() {
|
799 |
+
try {
|
800 |
+
sessionStorage.setItem(mod, mod);
|
801 |
+
sessionStorage.removeItem(mod);
|
802 |
+
return true;
|
803 |
+
} catch(e) {
|
804 |
+
return false;
|
805 |
+
}
|
806 |
+
};
|
807 |
+
|
808 |
+
|
809 |
+
tests['webworkers'] = function() {
|
810 |
+
return !!window.Worker;
|
811 |
+
};
|
812 |
+
|
813 |
+
|
814 |
+
tests['applicationcache'] = function() {
|
815 |
+
return !!window.applicationCache;
|
816 |
+
};
|
817 |
+
|
818 |
+
|
819 |
+
// Thanks to Erik Dahlstrom
|
820 |
+
tests['svg'] = function() {
|
821 |
+
return !!document.createElementNS && !!document.createElementNS(ns.svg, 'svg').createSVGRect;
|
822 |
+
};
|
823 |
+
|
824 |
+
// specifically for SVG inline in HTML, not within XHTML
|
825 |
+
// test page: paulirish.com/demo/inline-svg
|
826 |
+
tests['inlinesvg'] = function() {
|
827 |
+
var div = document.createElement('div');
|
828 |
+
div.innerHTML = '<svg/>';
|
829 |
+
return (div.firstChild && div.firstChild.namespaceURI) == ns.svg;
|
830 |
+
};
|
831 |
+
|
832 |
+
// SVG SMIL animation
|
833 |
+
tests['smil'] = function() {
|
834 |
+
return !!document.createElementNS && /SVGAnimate/.test(toString.call(document.createElementNS(ns.svg, 'animate')));
|
835 |
+
};
|
836 |
+
|
837 |
+
// This test is only for clip paths in SVG proper, not clip paths on HTML content
|
838 |
+
// demo: srufaculty.sru.edu/david.dailey/svg/newstuff/clipPath4.svg
|
839 |
+
|
840 |
+
// However read the comments to dig into applying SVG clippaths to HTML content here:
|
841 |
+
// github.com/Modernizr/Modernizr/issues/213#issuecomment-1149491
|
842 |
+
tests['svgclippaths'] = function() {
|
843 |
+
return !!document.createElementNS && /SVGClipPath/.test(toString.call(document.createElementNS(ns.svg, 'clipPath')));
|
844 |
+
};
|
845 |
+
|
846 |
+
/*>>webforms*/
|
847 |
+
// input features and input types go directly onto the ret object, bypassing the tests loop.
|
848 |
+
// Hold this guy to execute in a moment.
|
849 |
+
function webforms() {
|
850 |
+
/*>>input*/
|
851 |
+
// Run through HTML5's new input attributes to see if the UA understands any.
|
852 |
+
// We're using f which is the <input> element created early on
|
853 |
+
// Mike Taylr has created a comprehensive resource for testing these attributes
|
854 |
+
// when applied to all input types:
|
855 |
+
// miketaylr.com/code/input-type-attr.html
|
856 |
+
// spec: www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary
|
857 |
+
|
858 |
+
// Only input placeholder is tested while textarea's placeholder is not.
|
859 |
+
// Currently Safari 4 and Opera 11 have support only for the input placeholder
|
860 |
+
// Both tests are available in feature-detects/forms-placeholder.js
|
861 |
+
Modernizr['input'] = (function( props ) {
|
862 |
+
for ( var i = 0, len = props.length; i < len; i++ ) {
|
863 |
+
attrs[ props[i] ] = !!(props[i] in inputElem);
|
864 |
+
}
|
865 |
+
if (attrs.list){
|
866 |
+
// safari false positive's on datalist: webk.it/74252
|
867 |
+
// see also github.com/Modernizr/Modernizr/issues/146
|
868 |
+
attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement);
|
869 |
+
}
|
870 |
+
return attrs;
|
871 |
+
})('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));
|
872 |
+
/*>>input*/
|
873 |
+
|
874 |
+
/*>>inputtypes*/
|
875 |
+
// Run through HTML5's new input types to see if the UA understands any.
|
876 |
+
// This is put behind the tests runloop because it doesn't return a
|
877 |
+
// true/false like all the other tests; instead, it returns an object
|
878 |
+
// containing each input type with its corresponding true/false value
|
879 |
+
|
880 |
+
// Big thanks to @miketaylr for the html5 forms expertise. miketaylr.com/
|
881 |
+
Modernizr['inputtypes'] = (function(props) {
|
882 |
+
|
883 |
+
for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) {
|
884 |
+
|
885 |
+
inputElem.setAttribute('type', inputElemType = props[i]);
|
886 |
+
bool = inputElem.type !== 'text';
|
887 |
+
|
888 |
+
// We first check to see if the type we give it sticks..
|
889 |
+
// If the type does, we feed it a textual value, which shouldn't be valid.
|
890 |
+
// If the value doesn't stick, we know there's input sanitization which infers a custom UI
|
891 |
+
if ( bool ) {
|
892 |
+
|
893 |
+
inputElem.value = smile;
|
894 |
+
inputElem.style.cssText = 'position:absolute;visibility:hidden;';
|
895 |
+
|
896 |
+
if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) {
|
897 |
+
|
898 |
+
docElement.appendChild(inputElem);
|
899 |
+
defaultView = document.defaultView;
|
900 |
+
|
901 |
+
// Safari 2-4 allows the smiley as a value, despite making a slider
|
902 |
+
bool = defaultView.getComputedStyle &&
|
903 |
+
defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&
|
904 |
+
// Mobile android web browser has false positive, so must
|
905 |
+
// check the height to see if the widget is actually there.
|
906 |
+
(inputElem.offsetHeight !== 0);
|
907 |
+
|
908 |
+
docElement.removeChild(inputElem);
|
909 |
+
|
910 |
+
} else if ( /^(search|tel)$/.test(inputElemType) ){
|
911 |
+
// Spec doesn't define any special parsing or detectable UI
|
912 |
+
// behaviors so we pass these through as true
|
913 |
+
|
914 |
+
// Interestingly, opera fails the earlier test, so it doesn't
|
915 |
+
// even make it here.
|
916 |
+
|
917 |
+
} else if ( /^(url|email)$/.test(inputElemType) ) {
|
918 |
+
// Real url and email support comes with prebaked validation.
|
919 |
+
bool = inputElem.checkValidity && inputElem.checkValidity() === false;
|
920 |
+
|
921 |
+
} else {
|
922 |
+
// If the upgraded input compontent rejects the :) text, we got a winner
|
923 |
+
bool = inputElem.value != smile;
|
924 |
+
}
|
925 |
+
}
|
926 |
+
|
927 |
+
inputs[ props[i] ] = !!bool;
|
928 |
+
}
|
929 |
+
return inputs;
|
930 |
+
})('search tel url email datetime date month week time datetime-local number range color'.split(' '));
|
931 |
+
/*>>inputtypes*/
|
932 |
+
}
|
933 |
+
/*>>webforms*/
|
934 |
+
|
935 |
+
|
936 |
+
// End of test definitions
|
937 |
+
// -----------------------
|
938 |
+
|
939 |
+
|
940 |
+
|
941 |
+
// Run through all tests and detect their support in the current UA.
|
942 |
+
// todo: hypothetically we could be doing an array of tests and use a basic loop here.
|
943 |
+
for ( var feature in tests ) {
|
944 |
+
if ( hasOwnProp(tests, feature) ) {
|
945 |
+
// run the test, throw the return value into the Modernizr,
|
946 |
+
// then based on that boolean, define an appropriate className
|
947 |
+
// and push it into an array of classes we'll join later.
|
948 |
+
featureName = feature.toLowerCase();
|
949 |
+
Modernizr[featureName] = tests[feature]();
|
950 |
+
|
951 |
+
classes.push((Modernizr[featureName] ? '' : 'no-') + featureName);
|
952 |
+
}
|
953 |
+
}
|
954 |
+
|
955 |
+
/*>>webforms*/
|
956 |
+
// input tests need to run.
|
957 |
+
Modernizr.input || webforms();
|
958 |
+
/*>>webforms*/
|
959 |
+
|
960 |
+
|
961 |
+
/**
|
962 |
+
* addTest allows the user to define their own feature tests
|
963 |
+
* the result will be added onto the Modernizr object,
|
964 |
+
* as well as an appropriate className set on the html element
|
965 |
+
*
|
966 |
+
* @param feature - String naming the feature
|
967 |
+
* @param test - Function returning true if feature is supported, false if not
|
968 |
+
*/
|
969 |
+
Modernizr.addTest = function ( feature, test ) {
|
970 |
+
if ( typeof feature == 'object' ) {
|
971 |
+
for ( var key in feature ) {
|
972 |
+
if ( hasOwnProp( feature, key ) ) {
|
973 |
+
Modernizr.addTest( key, feature[ key ] );
|
974 |
+
}
|
975 |
+
}
|
976 |
+
} else {
|
977 |
+
|
978 |
+
feature = feature.toLowerCase();
|
979 |
+
|
980 |
+
if ( Modernizr[feature] !== undefined ) {
|
981 |
+
// we're going to quit if you're trying to overwrite an existing test
|
982 |
+
// if we were to allow it, we'd do this:
|
983 |
+
// var re = new RegExp("\\b(no-)?" + feature + "\\b");
|
984 |
+
// docElement.className = docElement.className.replace( re, '' );
|
985 |
+
// but, no rly, stuff 'em.
|
986 |
+
return Modernizr;
|
987 |
+
}
|
988 |
+
|
989 |
+
test = typeof test == 'function' ? test() : test;
|
990 |
+
|
991 |
+
if (typeof enableClasses !== "undefined" && enableClasses) {
|
992 |
+
docElement.className += ' ' + (test ? '' : 'no-') + feature;
|
993 |
+
}
|
994 |
+
Modernizr[feature] = test;
|
995 |
+
|
996 |
+
}
|
997 |
+
|
998 |
+
return Modernizr; // allow chaining.
|
999 |
+
};
|
1000 |
+
|
1001 |
+
|
1002 |
+
// Reset modElem.cssText to nothing to reduce memory footprint.
|
1003 |
+
setCss('');
|
1004 |
+
modElem = inputElem = null;
|
1005 |
+
|
1006 |
+
/*>>shiv*/
|
1007 |
+
/**
|
1008 |
+
* @preserve HTML5 Shiv prev3.7.1 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
|
1009 |
+
*/
|
1010 |
+
;(function(window, document) {
|
1011 |
+
/*jshint evil:true */
|
1012 |
+
/** version */
|
1013 |
+
var version = '3.7.0';
|
1014 |
+
|
1015 |
+
/** Preset options */
|
1016 |
+
var options = window.html5 || {};
|
1017 |
+
|
1018 |
+
/** Used to skip problem elements */
|
1019 |
+
var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
|
1020 |
+
|
1021 |
+
/** Not all elements can be cloned in IE **/
|
1022 |
+
var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
|
1023 |
+
|
1024 |
+
/** Detect whether the browser supports default html5 styles */
|
1025 |
+
var supportsHtml5Styles;
|
1026 |
+
|
1027 |
+
/** Name of the expando, to work with multiple documents or to re-shiv one document */
|
1028 |
+
var expando = '_html5shiv';
|
1029 |
+
|
1030 |
+
/** The id for the the documents expando */
|
1031 |
+
var expanID = 0;
|
1032 |
+
|
1033 |
+
/** Cached data for each document */
|
1034 |
+
var expandoData = {};
|
1035 |
+
|
1036 |
+
/** Detect whether the browser supports unknown elements */
|
1037 |
+
var supportsUnknownElements;
|
1038 |
+
|
1039 |
+
(function() {
|
1040 |
+
try {
|
1041 |
+
var a = document.createElement('a');
|
1042 |
+
a.innerHTML = '<xyz></xyz>';
|
1043 |
+
//if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
|
1044 |
+
supportsHtml5Styles = ('hidden' in a);
|
1045 |
+
|
1046 |
+
supportsUnknownElements = a.childNodes.length == 1 || (function() {
|
1047 |
+
// assign a false positive if unable to shiv
|
1048 |
+
(document.createElement)('a');
|
1049 |
+
var frag = document.createDocumentFragment();
|
1050 |
+
return (
|
1051 |
+
typeof frag.cloneNode == 'undefined' ||
|
1052 |
+
typeof frag.createDocumentFragment == 'undefined' ||
|
1053 |
+
typeof frag.createElement == 'undefined'
|
1054 |
+
);
|
1055 |
+
}());
|
1056 |
+
} catch(e) {
|
1057 |
+
// assign a false positive if detection fails => unable to shiv
|
1058 |
+
supportsHtml5Styles = true;
|
1059 |
+
supportsUnknownElements = true;
|
1060 |
+
}
|
1061 |
+
|
1062 |
+
}());
|
1063 |
+
|
1064 |
+
/*--------------------------------------------------------------------------*/
|
1065 |
+
|
1066 |
+
/**
|
1067 |
+
* Creates a style sheet with the given CSS text and adds it to the document.
|
1068 |
+
* @private
|
1069 |
+
* @param {Document} ownerDocument The document.
|
1070 |
+
* @param {String} cssText The CSS text.
|
1071 |
+
* @returns {StyleSheet} The style element.
|
1072 |
+
*/
|
1073 |
+
function addStyleSheet(ownerDocument, cssText) {
|
1074 |
+
var p = ownerDocument.createElement('p'),
|
1075 |
+
parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
|
1076 |
+
|
1077 |
+
p.innerHTML = 'x<style>' + cssText + '</style>';
|
1078 |
+
return parent.insertBefore(p.lastChild, parent.firstChild);
|
1079 |
+
}
|
1080 |
+
|
1081 |
+
/**
|
1082 |
+
* Returns the value of `html5.elements` as an array.
|
1083 |
+
* @private
|
1084 |
+
* @returns {Array} An array of shived element node names.
|
1085 |
+
*/
|
1086 |
+
function getElements() {
|
1087 |
+
var elements = html5.elements;
|
1088 |
+
return typeof elements == 'string' ? elements.split(' ') : elements;
|
1089 |
+
}
|
1090 |
+
|
1091 |
+
/**
|
1092 |
+
* Returns the data associated to the given document
|
1093 |
+
* @private
|
1094 |
+
* @param {Document} ownerDocument The document.
|
1095 |
+
* @returns {Object} An object of data.
|
1096 |
+
*/
|
1097 |
+
function getExpandoData(ownerDocument) {
|
1098 |
+
var data = expandoData[ownerDocument[expando]];
|
1099 |
+
if (!data) {
|
1100 |
+
data = {};
|
1101 |
+
expanID++;
|
1102 |
+
ownerDocument[expando] = expanID;
|
1103 |
+
expandoData[expanID] = data;
|
1104 |
+
}
|
1105 |
+
return data;
|
1106 |
+
}
|
1107 |
+
|
1108 |
+
/**
|
1109 |
+
* returns a shived element for the given nodeName and document
|
1110 |
+
* @memberOf html5
|
1111 |
+
* @param {String} nodeName name of the element
|
1112 |
+
* @param {Document} ownerDocument The context document.
|
1113 |
+
* @returns {Object} The shived element.
|
1114 |
+
*/
|
1115 |
+
function createElement(nodeName, ownerDocument, data){
|
1116 |
+
if (!ownerDocument) {
|
1117 |
+
ownerDocument = document;
|
1118 |
+
}
|
1119 |
+
if(supportsUnknownElements){
|
1120 |
+
return ownerDocument.createElement(nodeName);
|
1121 |
+
}
|
1122 |
+
if (!data) {
|
1123 |
+
data = getExpandoData(ownerDocument);
|
1124 |
+
}
|
1125 |
+
var node;
|
1126 |
+
|
1127 |
+
if (data.cache[nodeName]) {
|
1128 |
+
node = data.cache[nodeName].cloneNode();
|
1129 |
+
} else if (saveClones.test(nodeName)) {
|
1130 |
+
node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
|
1131 |
+
} else {
|
1132 |
+
node = data.createElem(nodeName);
|
1133 |
+
}
|
1134 |
+
|
1135 |
+
// Avoid adding some elements to fragments in IE < 9 because
|
1136 |
+
// * Attributes like `name` or `type` cannot be set/changed once an element
|
1137 |
+
// is inserted into a document/fragment
|
1138 |
+
// * Link elements with `src` attributes that are inaccessible, as with
|
1139 |
+
// a 403 response, will cause the tab/window to crash
|
1140 |
+
// * Script elements appended to fragments will execute when their `src`
|
1141 |
+
// or `text` property is set
|
1142 |
+
return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
|
1143 |
+
}
|
1144 |
+
|
1145 |
+
/**
|
1146 |
+
* returns a shived DocumentFragment for the given document
|
1147 |
+
* @memberOf html5
|
1148 |
+
* @param {Document} ownerDocument The context document.
|
1149 |
+
* @returns {Object} The shived DocumentFragment.
|
1150 |
+
*/
|
1151 |
+
function createDocumentFragment(ownerDocument, data){
|
1152 |
+
if (!ownerDocument) {
|
1153 |
+
ownerDocument = document;
|
1154 |
+
}
|
1155 |
+
if(supportsUnknownElements){
|
1156 |
+
return ownerDocument.createDocumentFragment();
|
1157 |
+
}
|
1158 |
+
data = data || getExpandoData(ownerDocument);
|
1159 |
+
var clone = data.frag.cloneNode(),
|
1160 |
+
i = 0,
|
1161 |
+
elems = getElements(),
|
1162 |
+
l = elems.length;
|
1163 |
+
for(;i<l;i++){
|
1164 |
+
clone.createElement(elems[i]);
|
1165 |
+
}
|
1166 |
+
return clone;
|
1167 |
+
}
|
1168 |
+
|
1169 |
+
/**
|
1170 |
+
* Shivs the `createElement` and `createDocumentFragment` methods of the document.
|
1171 |
+
* @private
|
1172 |
+
* @param {Document|DocumentFragment} ownerDocument The document.
|
1173 |
+
* @param {Object} data of the document.
|
1174 |
+
*/
|
1175 |
+
function shivMethods(ownerDocument, data) {
|
1176 |
+
if (!data.cache) {
|
1177 |
+
data.cache = {};
|
1178 |
+
data.createElem = ownerDocument.createElement;
|
1179 |
+
data.createFrag = ownerDocument.createDocumentFragment;
|
1180 |
+
data.frag = data.createFrag();
|
1181 |
+
}
|
1182 |
+
|
1183 |
+
|
1184 |
+
ownerDocument.createElement = function(nodeName) {
|
1185 |
+
//abort shiv
|
1186 |
+
if (!html5.shivMethods) {
|
1187 |
+
return data.createElem(nodeName);
|
1188 |
+
}
|
1189 |
+
return createElement(nodeName, ownerDocument, data);
|
1190 |
+
};
|
1191 |
+
|
1192 |
+
ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
|
1193 |
+
'var n=f.cloneNode(),c=n.createElement;' +
|
1194 |
+
'h.shivMethods&&(' +
|
1195 |
+
// unroll the `createElement` calls
|
1196 |
+
getElements().join().replace(/[\w\-]+/g, function(nodeName) {
|
1197 |
+
data.createElem(nodeName);
|
1198 |
+
data.frag.createElement(nodeName);
|
1199 |
+
return 'c("' + nodeName + '")';
|
1200 |
+
}) +
|
1201 |
+
');return n}'
|
1202 |
+
)(html5, data.frag);
|
1203 |
+
}
|
1204 |
+
|
1205 |
+
/*--------------------------------------------------------------------------*/
|
1206 |
+
|
1207 |
+
/**
|
1208 |
+
* Shivs the given document.
|
1209 |
+
* @memberOf html5
|
1210 |
+
* @param {Document} ownerDocument The document to shiv.
|
1211 |
+
* @returns {Document} The shived document.
|
1212 |
+
*/
|
1213 |
+
function shivDocument(ownerDocument) {
|
1214 |
+
if (!ownerDocument) {
|
1215 |
+
ownerDocument = document;
|
1216 |
+
}
|
1217 |
+
var data = getExpandoData(ownerDocument);
|
1218 |
+
|
1219 |
+
if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
|
1220 |
+
data.hasCSS = !!addStyleSheet(ownerDocument,
|
1221 |
+
// corrects block display not defined in IE6/7/8/9
|
1222 |
+
'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
|
1223 |
+
// adds styling not present in IE6/7/8/9
|
1224 |
+
'mark{background:#FF0;color:#000}' +
|
1225 |
+
// hides non-rendered elements
|
1226 |
+
'template{display:none}'
|
1227 |
+
);
|
1228 |
+
}
|
1229 |
+
if (!supportsUnknownElements) {
|
1230 |
+
shivMethods(ownerDocument, data);
|
1231 |
+
}
|
1232 |
+
return ownerDocument;
|
1233 |
+
}
|
1234 |
+
|
1235 |
+
/*--------------------------------------------------------------------------*/
|
1236 |
+
|
1237 |
+
/**
|
1238 |
+
* The `html5` object is exposed so that more elements can be shived and
|
1239 |
+
* existing shiving can be detected on iframes.
|
1240 |
+
* @type Object
|
1241 |
+
* @example
|
1242 |
+
*
|
1243 |
+
* // options can be changed before the script is included
|
1244 |
+
* html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
|
1245 |
+
*/
|
1246 |
+
var html5 = {
|
1247 |
+
|
1248 |
+
/**
|
1249 |
+
* An array or space separated string of node names of the elements to shiv.
|
1250 |
+
* @memberOf html5
|
1251 |
+
* @type Array|String
|
1252 |
+
*/
|
1253 |
+
'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video',
|
1254 |
+
|
1255 |
+
/**
|
1256 |
+
* current version of html5shiv
|
1257 |
+
*/
|
1258 |
+
'version': version,
|
1259 |
+
|
1260 |
+
/**
|
1261 |
+
* A flag to indicate that the HTML5 style sheet should be inserted.
|
1262 |
+
* @memberOf html5
|
1263 |
+
* @type Boolean
|
1264 |
+
*/
|
1265 |
+
'shivCSS': (options.shivCSS !== false),
|
1266 |
+
|
1267 |
+
/**
|
1268 |
+
* Is equal to true if a browser supports creating unknown/HTML5 elements
|
1269 |
+
* @memberOf html5
|
1270 |
+
* @type boolean
|
1271 |
+
*/
|
1272 |
+
'supportsUnknownElements': supportsUnknownElements,
|
1273 |
+
|
1274 |
+
/**
|
1275 |
+
* A flag to indicate that the document's `createElement` and `createDocumentFragment`
|
1276 |
+
* methods should be overwritten.
|
1277 |
+
* @memberOf html5
|
1278 |
+
* @type Boolean
|
1279 |
+
*/
|
1280 |
+
'shivMethods': (options.shivMethods !== false),
|
1281 |
+
|
1282 |
+
/**
|
1283 |
+
* A string to describe the type of `html5` object ("default" or "default print").
|
1284 |
+
* @memberOf html5
|
1285 |
+
* @type String
|
1286 |
+
*/
|
1287 |
+
'type': 'default',
|
1288 |
+
|
1289 |
+
// shivs the document according to the specified `html5` object options
|
1290 |
+
'shivDocument': shivDocument,
|
1291 |
+
|
1292 |
+
//creates a shived element
|
1293 |
+
createElement: createElement,
|
1294 |
+
|
1295 |
+
//creates a shived documentFragment
|
1296 |
+
createDocumentFragment: createDocumentFragment
|
1297 |
+
};
|
1298 |
+
|
1299 |
+
/*--------------------------------------------------------------------------*/
|
1300 |
+
|
1301 |
+
// expose html5
|
1302 |
+
window.html5 = html5;
|
1303 |
+
|
1304 |
+
// shiv the document
|
1305 |
+
shivDocument(document);
|
1306 |
+
|
1307 |
+
}(this, document));
|
1308 |
+
/*>>shiv*/
|
1309 |
+
|
1310 |
+
// Assign private properties to the return object with prefix
|
1311 |
+
Modernizr._version = version;
|
1312 |
+
|
1313 |
+
// expose these for the plugin API. Look in the source for how to join() them against your input
|
1314 |
+
/*>>prefixes*/
|
1315 |
+
Modernizr._prefixes = prefixes;
|
1316 |
+
/*>>prefixes*/
|
1317 |
+
/*>>domprefixes*/
|
1318 |
+
Modernizr._domPrefixes = domPrefixes;
|
1319 |
+
Modernizr._cssomPrefixes = cssomPrefixes;
|
1320 |
+
/*>>domprefixes*/
|
1321 |
+
|
1322 |
+
/*>>mq*/
|
1323 |
+
// Modernizr.mq tests a given media query, live against the current state of the window
|
1324 |
+
// A few important notes:
|
1325 |
+
// * If a browser does not support media queries at all (eg. oldIE) the mq() will always return false
|
1326 |
+
// * A max-width or orientation query will be evaluated against the current state, which may change later.
|
1327 |
+
// * You must specify values. Eg. If you are testing support for the min-width media query use:
|
1328 |
+
// Modernizr.mq('(min-width:0)')
|
1329 |
+
// usage:
|
1330 |
+
// Modernizr.mq('only screen and (max-width:768)')
|
1331 |
+
Modernizr.mq = testMediaQuery;
|
1332 |
+
/*>>mq*/
|
1333 |
+
|
1334 |
+
/*>>hasevent*/
|
1335 |
+
// Modernizr.hasEvent() detects support for a given event, with an optional element to test on
|
1336 |
+
// Modernizr.hasEvent('gesturestart', elem)
|
1337 |
+
Modernizr.hasEvent = isEventSupported;
|
1338 |
+
/*>>hasevent*/
|
1339 |
+
|
1340 |
+
/*>>testprop*/
|
1341 |
+
// Modernizr.testProp() investigates whether a given style property is recognized
|
1342 |
+
// Note that the property names must be provided in the camelCase variant.
|
1343 |
+
// Modernizr.testProp('pointerEvents')
|
1344 |
+
Modernizr.testProp = function(prop){
|
1345 |
+
return testProps([prop]);
|
1346 |
+
};
|
1347 |
+
/*>>testprop*/
|
1348 |
+
|
1349 |
+
/*>>testallprops*/
|
1350 |
+
// Modernizr.testAllProps() investigates whether a given style property,
|
1351 |
+
// or any of its vendor-prefixed variants, is recognized
|
1352 |
+
// Note that the property names must be provided in the camelCase variant.
|
1353 |
+
// Modernizr.testAllProps('boxSizing')
|
1354 |
+
Modernizr.testAllProps = testPropsAll;
|
1355 |
+
/*>>testallprops*/
|
1356 |
+
|
1357 |
+
|
1358 |
+
/*>>teststyles*/
|
1359 |
+
// Modernizr.testStyles() allows you to add custom styles to the document and test an element afterwards
|
1360 |
+
// Modernizr.testStyles('#modernizr { position:absolute }', function(elem, rule){ ... })
|
1361 |
+
Modernizr.testStyles = injectElementWithStyles;
|
1362 |
+
/*>>teststyles*/
|
1363 |
+
|
1364 |
+
|
1365 |
+
/*>>prefixed*/
|
1366 |
+
// Modernizr.prefixed() returns the prefixed or nonprefixed property name variant of your input
|
1367 |
+
// Modernizr.prefixed('boxSizing') // 'MozBoxSizing'
|
1368 |
+
|
1369 |
+
// Properties must be passed as dom-style camelcase, rather than `box-sizing` hypentated style.
|
1370 |
+
// Return values will also be the camelCase variant, if you need to translate that to hypenated style use:
|
1371 |
+
//
|
1372 |
+
// str.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-');
|
1373 |
+
|
1374 |
+
// If you're trying to ascertain which transition end event to bind to, you might do something like...
|
1375 |
+
//
|
1376 |
+
// var transEndEventNames = {
|
1377 |
+
// 'WebkitTransition' : 'webkitTransitionEnd',
|
1378 |
+
// 'MozTransition' : 'transitionend',
|
1379 |
+
// 'OTransition' : 'oTransitionEnd',
|
1380 |
+
// 'msTransition' : 'MSTransitionEnd',
|
1381 |
+
// 'transition' : 'transitionend'
|
1382 |
+
// },
|
1383 |
+
// transEndEventName = transEndEventNames[ Modernizr.prefixed('transition') ];
|
1384 |
+
|
1385 |
+
Modernizr.prefixed = function(prop, obj, elem){
|
1386 |
+
if(!obj) {
|
1387 |
+
return testPropsAll(prop, 'pfx');
|
1388 |
+
} else {
|
1389 |
+
// Testing DOM property e.g. Modernizr.prefixed('requestAnimationFrame', window) // 'mozRequestAnimationFrame'
|
1390 |
+
return testPropsAll(prop, obj, elem);
|
1391 |
+
}
|
1392 |
+
};
|
1393 |
+
/*>>prefixed*/
|
1394 |
+
|
1395 |
+
|
1396 |
+
/*>>cssclasses*/
|
1397 |
+
// Remove "no-js" class from <html> element, if it exists:
|
1398 |
+
docElement.className = docElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2') +
|
1399 |
+
|
1400 |
+
// Add the new classes to the <html> element.
|
1401 |
+
(enableClasses ? ' js ' + classes.join(' ') : '');
|
1402 |
+
/*>>cssclasses*/
|
1403 |
+
|
1404 |
+
return Modernizr;
|
1405 |
+
|
1406 |
+
})(this, this.document);
|
languages/ecwid-shopping-cart-de_DE.mo
ADDED
Binary file
|
languages/ecwid-shopping-cart-de_DE.po
ADDED
@@ -0,0 +1,174 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid "Ecwid Shopping Cart"
|
2 |
+
msgstr ""
|
3 |
+
msgid "Ecwid is a free full-featured shopping cart. It can be easily integrated with any Wordpress blog and takes less than 5 minutes to set up."
|
4 |
+
msgstr ""
|
5 |
+
msgid "Ecwid Team"
|
6 |
+
msgstr ""
|
7 |
+
msgid "Get help"
|
8 |
+
msgstr "Hilfe"
|
9 |
+
msgid "Go to Ecwid site"
|
10 |
+
msgstr "zur Ecwid-Website"
|
11 |
+
msgid "Visit storefront"
|
12 |
+
msgstr "zum Shop"
|
13 |
+
msgid "Manage my store"
|
14 |
+
msgstr "Shop verwalten"
|
15 |
+
msgid "Manage plugin settings"
|
16 |
+
msgstr "Plugin-Einstellungen verwalten"
|
17 |
+
msgid "→ Sell on Facebook"
|
18 |
+
msgstr "→ auf Facebook verkaufen"
|
19 |
+
msgid "Online store powered by <a %s>Ecwid</a>"
|
20 |
+
msgstr ""
|
21 |
+
msgid "Store"
|
22 |
+
msgstr "Shop"
|
23 |
+
msgid "<strong>Ecwid shopping cart is almost ready</strong>. Please visit <a target=\"_blank\" href=\"%s\">the created page</a> to see your store with demo products. In order to finish the installation, please go to the <a href=\"admin.php?page=ecwid\"><strong>Ecwid settings</strong></a> and configure the plugin."
|
24 |
+
msgstr "<strong>Ihr Ecwid-Onlineshop steht gleich bereit</strong>. Bitte rufen Sie die <a target=\"_blank\" href=\"%s\">erstellte Seite</a> auf, um Ihren Shop mit Demoartikeln anzuzeigen. Um die Installation abzuschließen, gehen Sie bitte zu den <a href=\"admin.php?page=ecwid\"><strong>Ecwid-Einstellungen</strong></a> und konfigurieren Sie das Plugin."
|
25 |
+
msgid "Do you like your Ecwid online store? We'd appreciate it if you <a %s>add your review and vote</a> for the plugin on Wordpress site. (<a id=\"hide-vote-message\">Close</a> and do not show this message anymore)"
|
26 |
+
msgstr ""
|
27 |
+
msgid "Ecwid shopping cart settings"
|
28 |
+
msgstr ""
|
29 |
+
msgid "Ecwid Store"
|
30 |
+
msgstr "Ecwid-Onlineshop"
|
31 |
+
msgid "General settings"
|
32 |
+
msgstr "Allgemeine Einstellungen"
|
33 |
+
msgid "General"
|
34 |
+
msgstr "Allgemein"
|
35 |
+
msgid "Appearance settings"
|
36 |
+
msgstr "Anzeigeneinstellungen"
|
37 |
+
msgid "Appearance"
|
38 |
+
msgstr "Anzeige"
|
39 |
+
msgid "Advanced settings"
|
40 |
+
msgstr "Erweiterte Einstellungen"
|
41 |
+
msgid "Advanced"
|
42 |
+
msgstr "Erweitert"
|
43 |
+
msgid "Setup"
|
44 |
+
msgstr ""
|
45 |
+
msgid "Your store's minicart"
|
46 |
+
msgstr "Miniwarenkorb Ihres Shops"
|
47 |
+
msgid "Ecwid Shopping Bag (Normal)"
|
48 |
+
msgstr "Ecwid-Warenkorb (normal)"
|
49 |
+
msgid "Ecwid Shopping Bag (Mini view)"
|
50 |
+
msgstr "Ecwid-Warenkorb (Miniansicht)"
|
51 |
+
msgid "Your store's search box"
|
52 |
+
msgstr "Suchfeld Ihres Shops"
|
53 |
+
msgid "Ecwid Search Box"
|
54 |
+
msgstr "Ecwid-Suchfeld"
|
55 |
+
msgid "Vertical menu of categories"
|
56 |
+
msgstr "Vertikale Kategoriennavigation"
|
57 |
+
msgid "Ecwid Vertical Categories"
|
58 |
+
msgstr "Ecwid vertikale Kategorien"
|
59 |
+
msgid "Price"
|
60 |
+
msgstr ""
|
61 |
+
msgid "Ecwid Shopping Cart - Advanced settings"
|
62 |
+
msgstr "Ecwid-Onlineshop ‒ Erweiterte Einstellungen"
|
63 |
+
msgid "Category shown by default"
|
64 |
+
msgstr "standardmäßig angezeigte Kategorie"
|
65 |
+
msgid "Store root category"
|
66 |
+
msgstr "Shop-Grundkategorie"
|
67 |
+
msgid "Default category ID"
|
68 |
+
msgstr "Standardkategorien-ID"
|
69 |
+
msgid "By default, the storefront shows a list of root categories. You can override this behavior and show a different category when customers open your store for the first time. This is useful if you only have one category or want to display a specific set of items (e.g. \"Featured Products\") to new visitors."
|
70 |
+
msgstr "Standardmäßig zeigt der Shop eine Liste von Grundkategorien an. Sie können diese Einstellung überschreiben und eine andere Kategorie anzeigen, wenn Kunden Ihren Shop zum ersten Mal öffnen. Dies ist sinnvoll, wenn Sie nur eine Kategorie haben oder allen neuen Besuchern einen bestimmten Satz von Artikeln (z.B. \"Ausgewählte Produkte\") anzeigen möchten."
|
71 |
+
msgid "In order to set this option, <a %s>find an ID of the necessary category</a> and save it here."
|
72 |
+
msgstr "Zur Einstellung dieser Option <a %s>suchen Sie die ID der nötigen Kategorie</a> und speichern Sie diese hier."
|
73 |
+
msgid "Single Sign-On Secret Key"
|
74 |
+
msgstr "Single-Sign-on-Sicherheitsschlüssel"
|
75 |
+
msgid "Single Sign-On Secret Key is an option that allows your customers access to your WordPress site as well as the Ecwid shopping cart. When customers log in to your site, they will automatically be logged in to your Ecwid store as well. It makes sense to enable this feature if your visitors actually create accounts in your WordPress website."
|
76 |
+
msgstr "Diese optionale Funktion bietet Single-Sign-On: Wenn Kunden auf Ihrer Website eingeloggt sind, sind sie automatisch auch in Ihrem Ecwid-Onlineshop eingeloggt, selbst wenn sie bisher noch kein Konto für den Shop hatten. Die Aktivierung dieser Funktion ist sinnvoll, wenn Ihre Besucher eigentlich Konten auf Ihrer WordPress-Website erstellen."
|
77 |
+
msgid "In order to enable this feature, opt to use a secret key. You will find this key in your Ecwid control panel, at \"System Settings > API > Single Sign-On API\" page. This feature is available for <a href=\"http://www.ecwid.com/compare-plans.html\" target=\"_blank\">paid users</a> only."
|
78 |
+
msgstr "Zur Aktivierung dieser Funktion müssen Sie einen Sicherheitsschlüssel senden. Diesen Schlüssel finden Sie in Ihrem Ecwid-Steuermenü unter \"Systemeinstellungen > API > Single-Sign-on-API\". Diese Funktion ist nur bei <a href=\"http://www.ecwid.com/compare-plans.html\" target=\"_blank\">kostenpflichtigen Paketen</a> verfügbar."
|
79 |
+
msgid "Save changes"
|
80 |
+
msgstr "Änderungen speichern"
|
81 |
+
msgid "Ecwid Shopping Cart - Appearance settings"
|
82 |
+
msgstr "Ecwid-Onlineshop ‒ Anzeigeneinstellungen"
|
83 |
+
msgid "Display search box above products"
|
84 |
+
msgstr "Suchfeld oberhalb der Artikel anzeigen"
|
85 |
+
msgid "Or you can add search box to your website's toolbar using <a href=\"widgets.php\">WordPress native widgets</a>."
|
86 |
+
msgstr "Oder fügen Sie der Toolbar Ihrer Website mit den <a href=\"widgets.php\">vorhandenen WordPress-Widgets</a> ein Suchfeld hinzu."
|
87 |
+
msgid "Display horizontal categories above products"
|
88 |
+
msgstr "horizontale Kategorien oberhalb der Artikel anzeigen"
|
89 |
+
msgid "Or you can add vertical categories to your website's toolbar using <a href=\"widgets.php\">WordPress native widgets</a>."
|
90 |
+
msgstr "Oder fügen Sie der Toolbar Ihrer Website mit den <a href=\"widgets.php\">vorhandenen WordPress-Widgets</a> vertikale Kategorien hinzu."
|
91 |
+
msgid "Enable minicart attached to horizontal categories"
|
92 |
+
msgstr "Miniwarenkorb Ihres Shops an horizontale Kategorien heften"
|
93 |
+
msgid "You should disable this option, if you added minicart to your website's sidebar."
|
94 |
+
msgstr "Diese Option sollten Sie deaktivieren, wenn Sie den Miniwarenkorb der Seitenleiste Ihrer Website hinzugefügt haben."
|
95 |
+
msgid "Number of categories per row"
|
96 |
+
msgstr "Anzahl Kategorien pro Zeile"
|
97 |
+
msgid "Number of products per page"
|
98 |
+
msgstr "Anzahl Kategorien pro Seite"
|
99 |
+
msgid "Grid view"
|
100 |
+
msgstr "Gitteransicht"
|
101 |
+
msgid "List view"
|
102 |
+
msgstr "Listenansicht"
|
103 |
+
msgid "Table view"
|
104 |
+
msgstr "Tabellenansicht"
|
105 |
+
msgid "Here you can control how many products will be displayed per page. These options define maximum values. If there is not enough space to show all product columns, Ecwid will adapt the number of columns to hold all products."
|
106 |
+
msgstr "Hier können Sie einstellen, wie viele Artikel pro Seite angezeigt werden sollen. Diese Optionen legen Maximalwerte fest. Falls nicht ausreichend Platz ist, um alle Artikelspalten anzuzeigen, passt Ecwid zur Berücksichtigung aller Artikel die Anzahl der Spalten an."
|
107 |
+
msgid "Default view mode on product pages"
|
108 |
+
msgstr "Standardanzeigemodus auf Artikelseiten"
|
109 |
+
msgid "Grid"
|
110 |
+
msgstr "Gitter"
|
111 |
+
msgid "List"
|
112 |
+
msgstr "Liste"
|
113 |
+
msgid "Table"
|
114 |
+
msgstr "Tabelle"
|
115 |
+
msgid "Default view mode on search results"
|
116 |
+
msgstr "Standardanzeigemodus für Suchergebnisse"
|
117 |
+
msgid "Store powered by Ecwid"
|
118 |
+
msgstr ""
|
119 |
+
msgid "Ecwid Shopping Cart - General settings"
|
120 |
+
msgstr "Ecwid-Onlineshop ‒ Allgemeine Einstellungen"
|
121 |
+
msgid "Thank you for choosing Ecwid to build your online store."
|
122 |
+
msgstr "Vielen Dank, dass Sie Ecwid zur Erstellung Ihres Onlineshops gewählt haben."
|
123 |
+
msgid "The first step towards opening your online business: <br />Let’s get started and add a store to your WordPress website in <strong>3</strong> simple steps."
|
124 |
+
msgstr "Der erste Schritt auf dem Weg zur Eröffnung Ihres Onlineshops: <br />Legen Sie jetzt los und stellen Sie in <strong>3</strong> einfachen Schritten einen Onlineshop auf Ihre WordPress-Website."
|
125 |
+
msgid "Register at Ecwid"
|
126 |
+
msgstr "Bei Ecwid anmelden"
|
127 |
+
msgid "Create a new Ecwid account which you will use to manage your store and inventory. The registration is free."
|
128 |
+
msgstr "Erstellen Sie ein neues Ecwid-Konto, mit dem Sie Ihren Shop und Ihren Warenbestand verwalten. Die Anmeldung ist kostenlos."
|
129 |
+
msgid "Create new Ecwid account"
|
130 |
+
msgstr "Neues Ecwid-Konto erstellen"
|
131 |
+
msgid "I already have Ecwid account, sign in"
|
132 |
+
msgstr "Ich habe bereits ein Ecwid-Konto, bitte einloggen"
|
133 |
+
msgid "You will be able to sign up through your exising Google, Facebook or PayPal profiles as well."
|
134 |
+
msgstr "Sie können sich auch über Ihre vorhandenen Google-, Facebook- oder PayPal-Konten anmelden."
|
135 |
+
msgid "Find your Store ID"
|
136 |
+
msgstr "Shop-ID suchen"
|
137 |
+
msgid "Store ID is a unique identifier of any Ecwid store, it consists of several digits. You can find it on the \"Dashboard\" page of Ecwid control panel. Also the Store ID will be sent in the Welcome email after the registration."
|
138 |
+
msgstr "Die Shop-ID ist ein eindeutiges Kennzeichen jedes Ecwid-Onlineshops und besteht aus mehreren Ziffern. Sie finden sie im Hauptmenü des Ecwid-Steuermenüs. Die Shop-ID wird außerdem mit der Begrüßungs-E-Mail nach der Anmeldung versendet."
|
139 |
+
msgid "Enter your Store ID"
|
140 |
+
msgstr "Shop-ID eingeben"
|
141 |
+
msgid "Enter your Store ID here:"
|
142 |
+
msgstr "Geben Sie hier Ihre Shop-ID ein:"
|
143 |
+
msgid "Store ID"
|
144 |
+
msgstr "Shop-ID"
|
145 |
+
msgid "Save and connect your Ecwid store to the site"
|
146 |
+
msgstr "Speichern Sie und verbinden Sie Ihren Ecwid-Onlineshop mit Ihrer Website"
|
147 |
+
msgid "Questions? Visit <a href=\"http://help.ecwid.com/?source=wporg\">Ecwid support center</a>."
|
148 |
+
msgstr "Fragen? Wechseln Sie zum <a href=\"http://help.ecwid.com/?source=wporg\">Ecwid-Supportcenter</a>."
|
149 |
+
msgid "Congratulations!"
|
150 |
+
msgstr "Herzlichen Glückwunsch!"
|
151 |
+
msgid "Your Ecwid store is now connected to your WordPress website."
|
152 |
+
msgstr "Ihr Ecwid-Onlineshop ist jetzt mit Ihrer WordPress-Website verbunden."
|
153 |
+
msgid "Greetings!"
|
154 |
+
msgstr "Hallo!"
|
155 |
+
msgid "Your Ecwid store is connected to your WordPress website."
|
156 |
+
msgstr "Ihr Ecwid-Onlineshop ist mit Ihrer WordPress-Website verbunden."
|
157 |
+
msgid "Control panel"
|
158 |
+
msgstr "Steuermenü"
|
159 |
+
msgid "Account status"
|
160 |
+
msgstr "Kontostatus"
|
161 |
+
msgid "Paid"
|
162 |
+
msgstr "Bezahlpaket"
|
163 |
+
msgid "Free"
|
164 |
+
msgstr "Kostenloses Paket"
|
165 |
+
msgid "Thank you for supporting Ecwid!"
|
166 |
+
msgstr "Vielen Dank, dass Sie Ecwid nutzen!"
|
167 |
+
msgid "Upgrade to get access to cool premium features."
|
168 |
+
msgstr "Holen Sie sich jetzt tolle Premiumfunktionen mit einem Upgrade."
|
169 |
+
msgid "Billing and plans"
|
170 |
+
msgstr ""
|
171 |
+
msgid "Upgrade"
|
172 |
+
msgstr ""
|
173 |
+
msgid "If you want to connect another Ecwid store, you can <a %s>disconnect the current one and change Store ID</a>."
|
174 |
+
msgstr ""
|
languages/ecwid-shopping-cart-es_ES.mo
ADDED
Binary file
|
languages/ecwid-shopping-cart-es_ES.po
ADDED
@@ -0,0 +1,174 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid "Ecwid Shopping Cart"
|
2 |
+
msgstr ""
|
3 |
+
msgid "Ecwid is a free full-featured shopping cart. It can be easily integrated with any Wordpress blog and takes less than 5 minutes to set up."
|
4 |
+
msgstr ""
|
5 |
+
msgid "Ecwid Team"
|
6 |
+
msgstr ""
|
7 |
+
msgid "Get help"
|
8 |
+
msgstr "Obtener ayuda"
|
9 |
+
msgid "Go to Ecwid site"
|
10 |
+
msgstr "Ir al sitio Ecwid"
|
11 |
+
msgid "Visit storefront"
|
12 |
+
msgstr "Visitar escaparate"
|
13 |
+
msgid "Manage my store"
|
14 |
+
msgstr "Gestionar mi tienda"
|
15 |
+
msgid "Manage plugin settings"
|
16 |
+
msgstr "Administrar la configuración de conexión"
|
17 |
+
msgid "→ Sell on Facebook"
|
18 |
+
msgstr "→ Vender en Facebook"
|
19 |
+
msgid "Online store powered by <a %s>Ecwid</a>"
|
20 |
+
msgstr ""
|
21 |
+
msgid "Store"
|
22 |
+
msgstr "Tienda"
|
23 |
+
msgid "<strong>Ecwid shopping cart is almost ready</strong>. Please visit <a target=\"_blank\" href=\"%s\">the created page</a> to see your store with demo products. In order to finish the installation, please go to the <a href=\"admin.php?page=ecwid\"><strong>Ecwid settings</strong></a> and configure the plugin."
|
24 |
+
msgstr "<strong>Ecwid la tarjeta de compras Ecwid está casi lista </strong>. Por favor visite <a target=\"_blank\" href=\"%s\">la página creada </a> para ver su tienda con productos de demostración. Para finalizar la instalación, por favor vaya a <a href=\"admin.php?page=ecwid\"><strong>ajustes Ecwid</strong></a> y configure la conexión."
|
25 |
+
msgid "Do you like your Ecwid online store? We'd appreciate it if you <a %s>add your review and vote</a> for the plugin on Wordpress site. (<a id=\"hide-vote-message\">Close</a> and do not show this message anymore)"
|
26 |
+
msgstr ""
|
27 |
+
msgid "Ecwid shopping cart settings"
|
28 |
+
msgstr ""
|
29 |
+
msgid "Ecwid Store"
|
30 |
+
msgstr "Tienda Ecwid"
|
31 |
+
msgid "General settings"
|
32 |
+
msgstr "Configuración general"
|
33 |
+
msgid "General"
|
34 |
+
msgstr "General"
|
35 |
+
msgid "Appearance settings"
|
36 |
+
msgstr "Opciones de aspecto"
|
37 |
+
msgid "Appearance"
|
38 |
+
msgstr "Aspecto"
|
39 |
+
msgid "Advanced settings"
|
40 |
+
msgstr "Opciones avanzadas"
|
41 |
+
msgid "Advanced"
|
42 |
+
msgstr "Avanzadas"
|
43 |
+
msgid "Setup"
|
44 |
+
msgstr ""
|
45 |
+
msgid "Your store's minicart"
|
46 |
+
msgstr "Mini carro de su tienda"
|
47 |
+
msgid "Ecwid Shopping Bag (Normal)"
|
48 |
+
msgstr "Bolsa de compras Ecwid (Normal)"
|
49 |
+
msgid "Ecwid Shopping Bag (Mini view)"
|
50 |
+
msgstr "Bolsa de compras Ecwid (Mini vista)"
|
51 |
+
msgid "Your store's search box"
|
52 |
+
msgstr "Caja de búsqueda de tu tienda"
|
53 |
+
msgid "Ecwid Search Box"
|
54 |
+
msgstr "Caja de búsqueda Ecwid"
|
55 |
+
msgid "Vertical menu of categories"
|
56 |
+
msgstr "Menú vertical de categorías"
|
57 |
+
msgid "Ecwid Vertical Categories"
|
58 |
+
msgstr "Categorías verticales Ecwid"
|
59 |
+
msgid "Price"
|
60 |
+
msgstr ""
|
61 |
+
msgid "Ecwid Shopping Cart - Advanced settings"
|
62 |
+
msgstr "Carro de compras Ecwid - Opciones avanzadas"
|
63 |
+
msgid "Category shown by default"
|
64 |
+
msgstr "Categoría mostrada por defecto"
|
65 |
+
msgid "Store root category"
|
66 |
+
msgstr "Categoría raíz de la tienda"
|
67 |
+
msgid "Default category ID"
|
68 |
+
msgstr "Identificación de categoría estandar"
|
69 |
+
msgid "By default, the storefront shows a list of root categories. You can override this behavior and show a different category when customers open your store for the first time. This is useful if you only have one category or want to display a specific set of items (e.g. \"Featured Products\") to new visitors."
|
70 |
+
msgstr "Por defecto, la entrada principal muestra una lista de categorías de raíz. Puede anular este comportamiento y mostrar una categoría diferente cuando los clientes abren su tienda por primera vez. Es útil si usted tiene una sola categoría o quiere mostrar un conjunto específico de elementos (por ejemplo, \"productos destacados\") para todos los nuevos visitantes."
|
71 |
+
msgid "In order to set this option, <a %s>find an ID of the necessary category</a> and save it here."
|
72 |
+
msgstr "Para fijar esta opción, <a %s> encuentre una identificación de la categoría necesaria </a> y guárdela aquí."
|
73 |
+
msgid "Single Sign-On Secret Key"
|
74 |
+
msgstr "Clave única secreta de registro"
|
75 |
+
msgid "Single Sign-On Secret Key is an option that allows your customers access to your WordPress site as well as the Ecwid shopping cart. When customers log in to your site, they will automatically be logged in to your Ecwid store as well. It makes sense to enable this feature if your visitors actually create accounts in your WordPress website."
|
76 |
+
msgstr "Esta característica opcional le permite activar la inscripción única: cuando los clientes han iniciado sesión en su página, también inician sesión automáticamente en su tienda Ecwid, incluso si antes no tenían una cuenta en la tienda. Tiene sentido activar esta característica, si sus visitantes en efecto crean cuentas en su página WordPress."
|
77 |
+
msgid "In order to enable this feature, opt to use a secret key. You will find this key in your Ecwid control panel, at \"System Settings > API > Single Sign-On API\" page. This feature is available for <a href=\"http://www.ecwid.com/compare-plans.html\" target=\"_blank\">paid users</a> only."
|
78 |
+
msgstr "Para activar esta característica usted debería enviar una clave secreta. Encontrará esta clave en su panel de control Ecwid, en la página \"Configuración del sistema > API > Single Sign-on API\" . Esta característica está disponible sólo para <a href=\"http://www.ecwid.com/compare-plans.html\" target=\"_blank\">utilizadores de pago</a>."
|
79 |
+
msgid "Save changes"
|
80 |
+
msgstr "Guardar los cambios"
|
81 |
+
msgid "Ecwid Shopping Cart - Appearance settings"
|
82 |
+
msgstr "Tarjeta de Compras Ecwid - Ajustes de apariencia"
|
83 |
+
msgid "Display search box above products"
|
84 |
+
msgstr "Mostrar caja de búsqueda de productos de arriba"
|
85 |
+
msgid "Or you can add search box to your website's toolbar using <a href=\"widgets.php\">WordPress native widgets</a>."
|
86 |
+
msgstr "O puede añadir una caja de búsqueda a la barra de herramientas de su página web utilizando <a href=\"widgets.php\">WordPress native widgets</a>."
|
87 |
+
msgid "Display horizontal categories above products"
|
88 |
+
msgstr "Mostrar categorías horizontales sobre los productos"
|
89 |
+
msgid "Or you can add vertical categories to your website's toolbar using <a href=\"widgets.php\">WordPress native widgets</a>."
|
90 |
+
msgstr "O puede añadir categorías verticales a la barra de herramientas de su página utilizando <a href=\"widgets.php\">WordPress native widgets</a>."
|
91 |
+
msgid "Enable minicart attached to horizontal categories"
|
92 |
+
msgstr "Active minicarrito unido a las categorías horizontales "
|
93 |
+
msgid "You should disable this option, if you added minicart to your website's sidebar."
|
94 |
+
msgstr "Debería desabilitar esta opción, si añade un minicarro a su página web barra lateral."
|
95 |
+
msgid "Number of categories per row"
|
96 |
+
msgstr "Número de categorías por fila"
|
97 |
+
msgid "Number of products per page"
|
98 |
+
msgstr "Número dde productos por página"
|
99 |
+
msgid "Grid view"
|
100 |
+
msgstr "Vista de cuadro"
|
101 |
+
msgid "List view"
|
102 |
+
msgstr "Vista de lista"
|
103 |
+
msgid "Table view"
|
104 |
+
msgstr "Vista de tabla"
|
105 |
+
msgid "Here you can control how many products will be displayed per page. These options define maximum values. If there is not enough space to show all product columns, Ecwid will adapt the number of columns to hold all products."
|
106 |
+
msgstr "Aquí usted puede controlar cuantos productos serán mostrados por página. Estas opciones definen valores maximos. Si no hay suficiente espacio para mostrar todas las cdolumnas de produtos, Ecwid adaptará el número de columnas para contener todos los productos."
|
107 |
+
msgid "Default view mode on product pages"
|
108 |
+
msgstr "Vista del modo predefinido en páginas de productos"
|
109 |
+
msgid "Grid"
|
110 |
+
msgstr "Cuadro"
|
111 |
+
msgid "List"
|
112 |
+
msgstr "Lista"
|
113 |
+
msgid "Table"
|
114 |
+
msgstr "Tabla"
|
115 |
+
msgid "Default view mode on search results"
|
116 |
+
msgstr "Vista del modo predefinido en búsqueda de resultados"
|
117 |
+
msgid "Store powered by Ecwid"
|
118 |
+
msgstr ""
|
119 |
+
msgid "Ecwid Shopping Cart - General settings"
|
120 |
+
msgstr "Carro de Compras Ecwid- Configuración general"
|
121 |
+
msgid "Thank you for choosing Ecwid to build your online store."
|
122 |
+
msgstr "Gracias por elegir Ecwid para cosntruir su tienda online."
|
123 |
+
msgid "The first step towards opening your online business: <br />Let’s get started and add a store to your WordPress website in <strong>3</strong> simple steps."
|
124 |
+
msgstr "El primer paso para abrir su negocio online: <br /> Vamos a empezar y añadir una tienda a su página web WordPress en <strong>3</strong> simples pasos."
|
125 |
+
msgid "Register at Ecwid"
|
126 |
+
msgstr "Registrarse en Ecwid"
|
127 |
+
msgid "Create a new Ecwid account which you will use to manage your store and inventory. The registration is free."
|
128 |
+
msgstr "Crear una nueva cuenta Ecwid que utilizará para gestionar su tienda e inventario. El registro es gratuíto."
|
129 |
+
msgid "Create new Ecwid account"
|
130 |
+
msgstr "Crear una nueva cuenta Ecwid"
|
131 |
+
msgid "I already have Ecwid account, sign in"
|
132 |
+
msgstr "Ya tengo una cuenta Ecwid, registrar"
|
133 |
+
msgid "You will be able to sign up through your exising Google, Facebook or PayPal profiles as well."
|
134 |
+
msgstr "Será además capaz de inscribirse a través de su perfil Google, Facebook o PayPal."
|
135 |
+
msgid "Find your Store ID"
|
136 |
+
msgstr "Encuentre la Identificación de su tienda"
|
137 |
+
msgid "Store ID is a unique identifier of any Ecwid store, it consists of several digits. You can find it on the \"Dashboard\" page of Ecwid control panel. Also the Store ID will be sent in the Welcome email after the registration."
|
138 |
+
msgstr "El Identificador de su tienda es un Identificador único de cualquier tienda Ecwid, consiste en varios dígitos. Puede encontrarlo en la página \"Dashboard\" del panel de control Ecwid. Además la Identificación de la Tienda le será enviada en el e-mail de bienvenida después del registro."
|
139 |
+
msgid "Enter your Store ID"
|
140 |
+
msgstr "Introduzca la Identificación de su tienda "
|
141 |
+
msgid "Enter your Store ID here:"
|
142 |
+
msgstr "Introduzca la Identificación de su tienda aquí:"
|
143 |
+
msgid "Store ID"
|
144 |
+
msgstr "Identificación de tienda"
|
145 |
+
msgid "Save and connect your Ecwid store to the site"
|
146 |
+
msgstr "Guarde y conecte su tienda Ecwid al site"
|
147 |
+
msgid "Questions? Visit <a href=\"http://help.ecwid.com/?source=wporg\">Ecwid support center</a>."
|
148 |
+
msgstr "Preguntas? Visite <a href=\"http://help.ecwid.com/?source=wporg\">el centro de ayuda Ecwid</a>."
|
149 |
+
msgid "Congratulations!"
|
150 |
+
msgstr "Enhorabuena!"
|
151 |
+
msgid "Your Ecwid store is now connected to your WordPress website."
|
152 |
+
msgstr "Su tienda Ecwid está conectada a su página web WordPress."
|
153 |
+
msgid "Greetings!"
|
154 |
+
msgstr "Saludos!"
|
155 |
+
msgid "Your Ecwid store is connected to your WordPress website."
|
156 |
+
msgstr "Su tienda Ecwid está conectadaa su página web WordPress."
|
157 |
+
msgid "Control panel"
|
158 |
+
msgstr "Panel de control"
|
159 |
+
msgid "Account status"
|
160 |
+
msgstr "Estado de cuenta"
|
161 |
+
msgid "Paid"
|
162 |
+
msgstr "Pagado"
|
163 |
+
msgid "Free"
|
164 |
+
msgstr "Gratis"
|
165 |
+
msgid "Thank you for supporting Ecwid!"
|
166 |
+
msgstr "Gracias por apoyar a Ecwid!"
|
167 |
+
msgid "Upgrade to get access to cool premium features."
|
168 |
+
msgstr "Actualice para obtener acceso a interesantes funciones avanzadas."
|
169 |
+
msgid "Billing and plans"
|
170 |
+
msgstr ""
|
171 |
+
msgid "Upgrade"
|
172 |
+
msgstr ""
|
173 |
+
msgid "If you want to connect another Ecwid store, you can <a %s>disconnect the current one and change Store ID</a>."
|
174 |
+
msgstr ""
|
languages/ecwid-shopping-cart-fr_FR.mo
ADDED
Binary file
|
languages/ecwid-shopping-cart-fr_FR.po
ADDED
@@ -0,0 +1,174 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid "Ecwid Shopping Cart"
|
2 |
+
msgstr ""
|
3 |
+
msgid "Ecwid is a free full-featured shopping cart. It can be easily integrated with any Wordpress blog and takes less than 5 minutes to set up."
|
4 |
+
msgstr ""
|
5 |
+
msgid "Ecwid Team"
|
6 |
+
msgstr ""
|
7 |
+
msgid "Get help"
|
8 |
+
msgstr "Obtenir de l'assistance"
|
9 |
+
msgid "Go to Ecwid site"
|
10 |
+
msgstr "Aller au site Ecwid"
|
11 |
+
msgid "Visit storefront"
|
12 |
+
msgstr "Visiter la vitrine"
|
13 |
+
msgid "Manage my store"
|
14 |
+
msgstr "Gérer ma boutique"
|
15 |
+
msgid "Manage plugin settings"
|
16 |
+
msgstr "Gérer mes paramètres de plugin"
|
17 |
+
msgid "→ Sell on Facebook"
|
18 |
+
msgstr "→ Vendre sur Facebook"
|
19 |
+
msgid "Online store powered by <a %s>Ecwid</a>"
|
20 |
+
msgstr ""
|
21 |
+
msgid "Store"
|
22 |
+
msgstr "Boutique"
|
23 |
+
msgid "<strong>Ecwid shopping cart is almost ready</strong>. Please visit <a target=\"_blank\" href=\"%s\">the created page</a> to see your store with demo products. In order to finish the installation, please go to the <a href=\"admin.php?page=ecwid\"><strong>Ecwid settings</strong></a> and configure the plugin."
|
24 |
+
msgstr "<strong>Le panier virtuel Ecwid est quasiment prêt</strong>. Veuillez visiter <a target=\"_blank\" href=\"%s\">la page créée</a> pour voir votre boutique et des produits de démonstration. Afin de terminer l'installation, veuillez naviguer vers les <a href=\"admin.php?page=ecwid\"><strong>réglages Ecwid</strong></a> et configurer le plugin."
|
25 |
+
msgid "Do you like your Ecwid online store? We'd appreciate it if you <a %s>add your review and vote</a> for the plugin on Wordpress site. (<a id=\"hide-vote-message\">Close</a> and do not show this message anymore)"
|
26 |
+
msgstr ""
|
27 |
+
msgid "Ecwid shopping cart settings"
|
28 |
+
msgstr ""
|
29 |
+
msgid "Ecwid Store"
|
30 |
+
msgstr "Boutique Ecwid"
|
31 |
+
msgid "General settings"
|
32 |
+
msgstr "Réglages généraux"
|
33 |
+
msgid "General"
|
34 |
+
msgstr "Général"
|
35 |
+
msgid "Appearance settings"
|
36 |
+
msgstr "Réglages d'apparence"
|
37 |
+
msgid "Appearance"
|
38 |
+
msgstr "Apparence"
|
39 |
+
msgid "Advanced settings"
|
40 |
+
msgstr "Réglages avancés"
|
41 |
+
msgid "Advanced"
|
42 |
+
msgstr "Avancés"
|
43 |
+
msgid "Setup"
|
44 |
+
msgstr ""
|
45 |
+
msgid "Your store's minicart"
|
46 |
+
msgstr "Le mini-panier de votre boutique"
|
47 |
+
msgid "Ecwid Shopping Bag (Normal)"
|
48 |
+
msgstr "Le Panier Ecwid (Normal)"
|
49 |
+
msgid "Ecwid Shopping Bag (Mini view)"
|
50 |
+
msgstr "Le Panier Ecwid (Mini-vue)"
|
51 |
+
msgid "Your store's search box"
|
52 |
+
msgstr "La boîte de recherche de votre boutique"
|
53 |
+
msgid "Ecwid Search Box"
|
54 |
+
msgstr "Boîte de Recherche Ecwid"
|
55 |
+
msgid "Vertical menu of categories"
|
56 |
+
msgstr "Menu vertical de catégories"
|
57 |
+
msgid "Ecwid Vertical Categories"
|
58 |
+
msgstr "Catégories Verticales Ecwid"
|
59 |
+
msgid "Price"
|
60 |
+
msgstr ""
|
61 |
+
msgid "Ecwid Shopping Cart - Advanced settings"
|
62 |
+
msgstr "Panier Ecwid - Réglages avancés"
|
63 |
+
msgid "Category shown by default"
|
64 |
+
msgstr "Catégorie affichée par défaut"
|
65 |
+
msgid "Store root category"
|
66 |
+
msgstr "Catégorie racine de la boutique"
|
67 |
+
msgid "Default category ID"
|
68 |
+
msgstr "Numéro de la catégorie par défaut"
|
69 |
+
msgid "By default, the storefront shows a list of root categories. You can override this behavior and show a different category when customers open your store for the first time. This is useful if you only have one category or want to display a specific set of items (e.g. \"Featured Products\") to new visitors."
|
70 |
+
msgstr "Par défaut, la vitrine présente une liste de catégories racines. Vous pouvez changer ce comportement et afficher une catégorie différente lorsque les clients accèdent à votre boutique pour la première fois. Cette fonction est pratique lorsque vous n'avez qu'une seule catégorie ou si vous souhaitez afficher une gamme spécifique d'articles (par ex. \"Produits Phares\") à tous vos clients."
|
71 |
+
msgid "In order to set this option, <a %s>find an ID of the necessary category</a> and save it here."
|
72 |
+
msgstr "Afin de régler cette option, <a %s>trouvez le numéro de catégorie nécessaire</a> puis sauvegardez-le ici."
|
73 |
+
msgid "Single Sign-On Secret Key"
|
74 |
+
msgstr "Clé Secrète Single Sign-on"
|
75 |
+
msgid "Single Sign-On Secret Key is an option that allows your customers access to your WordPress site as well as the Ecwid shopping cart. When customers log in to your site, they will automatically be logged in to your Ecwid store as well. It makes sense to enable this feature if your visitors actually create accounts in your WordPress website."
|
76 |
+
msgstr "Cette fonction optionnelle permet d'activer Single Sign-on : lorsque les clients sont authentifiés sur votre site, ils sont automatiquement connectés à votre boutique Ecwid, même s'ils n'avaient pas auparavant de compte dans la boutique. Il est logique d'activer cette fonction lorsque vos visiteurs créent typiquement un compte sur votre site WordPress."
|
77 |
+
msgid "In order to enable this feature, opt to use a secret key. You will find this key in your Ecwid control panel, at \"System Settings > API > Single Sign-On API\" page. This feature is available for <a href=\"http://www.ecwid.com/compare-plans.html\" target=\"_blank\">paid users</a> only."
|
78 |
+
msgstr "Afin d'activer cette fonction vous devez soumettre une clé secrète. Vous trouverez cette clé dans votre panneau de contrôle Ecwid, sur la page \"Paramètres Système > API > Single Sign-on API\". Cette fonction n'est disponible que pour les <a href=\"http://www.ecwid.com/compare-plans.html\" target=\"_blank\">utilisateurs payants</a>."
|
79 |
+
msgid "Save changes"
|
80 |
+
msgstr "Sauvegarder les modifications"
|
81 |
+
msgid "Ecwid Shopping Cart - Appearance settings"
|
82 |
+
msgstr "Panier Ecwid - Réglages d'apparence"
|
83 |
+
msgid "Display search box above products"
|
84 |
+
msgstr "Afficher la boîte de recherche au-dessus des produits"
|
85 |
+
msgid "Or you can add search box to your website's toolbar using <a href=\"widgets.php\">WordPress native widgets</a>."
|
86 |
+
msgstr "Vous pouvez aussi ajouter une boîte de recherche à la barre d'outils de votre site via les <a href=\"widgets.php\">widgets natifs de WordPress</a>."
|
87 |
+
msgid "Display horizontal categories above products"
|
88 |
+
msgstr "Afficher les catégories horizontales au-dessus des produits"
|
89 |
+
msgid "Or you can add vertical categories to your website's toolbar using <a href=\"widgets.php\">WordPress native widgets</a>."
|
90 |
+
msgstr "Vous pouvez aussi ajouter des catégories verticales à la barre d'outils de votre site via les <a href=\"widgets.php\">widgets natifs de WordPress</a>."
|
91 |
+
msgid "Enable minicart attached to horizontal categories"
|
92 |
+
msgstr "Activer le mini-panier attaché aux catégories horizontales"
|
93 |
+
msgid "You should disable this option, if you added minicart to your website's sidebar."
|
94 |
+
msgstr "Cette option devrait être désactivée si vous avez ajouté un mini-panier à la barre latérale de votre site."
|
95 |
+
msgid "Number of categories per row"
|
96 |
+
msgstr "Nombre de catégories par rangée"
|
97 |
+
msgid "Number of products per page"
|
98 |
+
msgstr "Nombre de produits par page"
|
99 |
+
msgid "Grid view"
|
100 |
+
msgstr "Affichage Vignettes"
|
101 |
+
msgid "List view"
|
102 |
+
msgstr "Affichage Liste"
|
103 |
+
msgid "Table view"
|
104 |
+
msgstr "Affichage Tableau"
|
105 |
+
msgid "Here you can control how many products will be displayed per page. These options define maximum values. If there is not enough space to show all product columns, Ecwid will adapt the number of columns to hold all products."
|
106 |
+
msgstr "Vous pouvez contrôler ici le nombre de produits affichés par page. Ces options définissent des valeurs maximales. S'il n'y pas assez de place pour afficher toutes les colonnes de produits, Ecwid modifiera le nombre de colonnes pour conserver tous les produits."
|
107 |
+
msgid "Default view mode on product pages"
|
108 |
+
msgstr "Mode d'affichage par défaut des pages de produits"
|
109 |
+
msgid "Grid"
|
110 |
+
msgstr "Vignettes"
|
111 |
+
msgid "List"
|
112 |
+
msgstr "Liste"
|
113 |
+
msgid "Table"
|
114 |
+
msgstr "Tableau"
|
115 |
+
msgid "Default view mode on search results"
|
116 |
+
msgstr "Mode d'affichage par défaut des résultats de recherche"
|
117 |
+
msgid "Store powered by Ecwid"
|
118 |
+
msgstr ""
|
119 |
+
msgid "Ecwid Shopping Cart - General settings"
|
120 |
+
msgstr "Panier Ecwid - Réglages généraux"
|
121 |
+
msgid "Thank you for choosing Ecwid to build your online store."
|
122 |
+
msgstr "Merci d'avoir choisi Ecwid pour construire votre boutique en ligne."
|
123 |
+
msgid "The first step towards opening your online business: <br />Let’s get started and add a store to your WordPress website in <strong>3</strong> simple steps."
|
124 |
+
msgstr "La première étape vers l'ouverture de votre commerce en ligne : <br />Lançons-nous et ajoutons une boutique à votre site WordPress en <strong>3</strong> étapes faciles."
|
125 |
+
msgid "Register at Ecwid"
|
126 |
+
msgstr "Inscrivez-vous chez Ecwid"
|
127 |
+
msgid "Create a new Ecwid account which you will use to manage your store and inventory. The registration is free."
|
128 |
+
msgstr "Créez un nouveau compte Ecwid afin de pouvoir gérer votre boutique et votre inventaire. L'inscription est gratuite."
|
129 |
+
msgid "Create new Ecwid account"
|
130 |
+
msgstr "Créer un nouveau compte Ecwid"
|
131 |
+
msgid "I already have Ecwid account, sign in"
|
132 |
+
msgstr "J'ai déjà un compte Ecwid, se connecter"
|
133 |
+
msgid "You will be able to sign up through your exising Google, Facebook or PayPal profiles as well."
|
134 |
+
msgstr "Vous pourrez aussi vous connecter avec vos comptes Google, Facebook ou PayPal existants."
|
135 |
+
msgid "Find your Store ID"
|
136 |
+
msgstr "Trouver votre Numéro de Boutique."
|
137 |
+
msgid "Store ID is a unique identifier of any Ecwid store, it consists of several digits. You can find it on the \"Dashboard\" page of Ecwid control panel. Also the Store ID will be sent in the Welcome email after the registration."
|
138 |
+
msgstr "Le Numéro de Boutique est le code unique de votre boutique Ecwid, il est constitué de plusieurs chiffres. Vous pouvez le trouver sur la page \"Tableau de Bord\" du panneau de contrôle d'Ecwid. Le Numéro de Boutique sera aussi envoyé dans l'email de bienvenu après l'inscription."
|
139 |
+
msgid "Enter your Store ID"
|
140 |
+
msgstr "Entrer votre Numéro de Boutique"
|
141 |
+
msgid "Enter your Store ID here:"
|
142 |
+
msgstr "Entrez votre Numéro de Boutique ici :"
|
143 |
+
msgid "Store ID"
|
144 |
+
msgstr "Numéro de Boutique"
|
145 |
+
msgid "Save and connect your Ecwid store to the site"
|
146 |
+
msgstr "Sauvegardez et connectez votre boutique Ecwid au site."
|
147 |
+
msgid "Questions? Visit <a href=\"http://help.ecwid.com/?source=wporg\">Ecwid support center</a>."
|
148 |
+
msgstr "Des questions? Visitez le <a href=\"http://help.ecwid.com/?source=wporg\">centre d'assistance Ecwid</a>."
|
149 |
+
msgid "Congratulations!"
|
150 |
+
msgstr "Félicitations !"
|
151 |
+
msgid "Your Ecwid store is now connected to your WordPress website."
|
152 |
+
msgstr "Votre boutique Ecwid est maintenant connectée à votre site WordPress."
|
153 |
+
msgid "Greetings!"
|
154 |
+
msgstr "Salutations !"
|
155 |
+
msgid "Your Ecwid store is connected to your WordPress website."
|
156 |
+
msgstr "Votre boutique Ecwid est connectée à votre site WordPress."
|
157 |
+
msgid "Control panel"
|
158 |
+
msgstr "Panneau de contrôle"
|
159 |
+
msgid "Account status"
|
160 |
+
msgstr "Statut du compte"
|
161 |
+
msgid "Paid"
|
162 |
+
msgstr "Payant"
|
163 |
+
msgid "Free"
|
164 |
+
msgstr "Gratuit"
|
165 |
+
msgid "Thank you for supporting Ecwid!"
|
166 |
+
msgstr "Merci pour le soutien apporté à Ecwid !"
|
167 |
+
msgid "Upgrade to get access to cool premium features."
|
168 |
+
msgstr "Surclassez votre compte pour accéder à de super fonctionnalités premium."
|
169 |
+
msgid "Billing and plans"
|
170 |
+
msgstr ""
|
171 |
+
msgid "Upgrade"
|
172 |
+
msgstr ""
|
173 |
+
msgid "If you want to connect another Ecwid store, you can <a %s>disconnect the current one and change Store ID</a>."
|
174 |
+
msgstr ""
|
languages/ecwid-shopping-cart-pt_BR.mo
ADDED
Binary file
|
languages/ecwid-shopping-cart-pt_BR.po
ADDED
@@ -0,0 +1,182 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# This file was generated by Easy Translator Lite -- a WordPress plugin translator
|
2 |
+
# Your Name:
|
3 |
+
# Your Email: test@example.com
|
4 |
+
# Your Website: wordpress36
|
5 |
+
# Your URL: http://localhost/wordpress36
|
6 |
+
# Your Locale: ru_RU (MO: /languages/ecwid-shopping-cart-ru_RU.mo)
|
7 |
+
# Your Language: ru-RU
|
8 |
+
#, fuzzy
|
9 |
+
msgid "Ecwid Shopping Cart"
|
10 |
+
msgstr ""
|
11 |
+
msgid "Ecwid is a free full-featured shopping cart. It can be easily integrated with any Wordpress blog and takes less than 5 minutes to set up."
|
12 |
+
msgstr ""
|
13 |
+
msgid "Ecwid Team"
|
14 |
+
msgstr ""
|
15 |
+
msgid "Get help"
|
16 |
+
msgstr "Obter Ajuda"
|
17 |
+
msgid "Go to Ecwid site"
|
18 |
+
msgstr "Ir para o sítio Ecwid"
|
19 |
+
msgid "Visit storefront"
|
20 |
+
msgstr "Visitar frente da loja"
|
21 |
+
msgid "Manage my store"
|
22 |
+
msgstr "Gerir a minha loja"
|
23 |
+
msgid "Manage plugin settings"
|
24 |
+
msgstr "Gerir definições de plugin"
|
25 |
+
msgid "→ Sell on Facebook"
|
26 |
+
msgstr "→ Vender no Facebook"
|
27 |
+
msgid "Online store powered by <a %s>Ecwid</a>"
|
28 |
+
msgstr ""
|
29 |
+
msgid "Store"
|
30 |
+
msgstr "Loja"
|
31 |
+
msgid "<strong>Ecwid shopping cart is almost ready</strong>. Please visit <a target=\"_blank\" href=\"%s\">the created page</a> to see your store with demo products. In order to finish the installation, please go to the <a href=\"admin.php?page=ecwid\"><strong>Ecwid settings</strong></a> and configure the plugin."
|
32 |
+
msgstr "<strong> O carrinho de compras Ecwid está quase pronto </strong> Por favor visite <a target=\"_blank\" href=\"%s\">a página criada</a> para ver os produtos demonstração na sua loja. De modo a terminar a instalação, por favor vá a <a href=\"admin.php?page=ecwid\"><strong>definições Ecwid </strong></a> e configure o plugin."
|
33 |
+
msgid "Do you like your Ecwid online store? We'd appreciate it if you <a %s>add your review and vote</a> for the plugin on Wordpress site. (<a id=\"hide-vote-message\">Close</a> and do not show this message anymore)"
|
34 |
+
msgstr ""
|
35 |
+
msgid "Ecwid shopping cart settings"
|
36 |
+
msgstr ""
|
37 |
+
msgid "Ecwid Store"
|
38 |
+
msgstr "Loja Ecwid"
|
39 |
+
msgid "General settings"
|
40 |
+
msgstr "Definições Gerais"
|
41 |
+
msgid "General"
|
42 |
+
msgstr "Geral"
|
43 |
+
msgid "Appearance settings"
|
44 |
+
msgstr "Definições de Aparência"
|
45 |
+
msgid "Appearance"
|
46 |
+
msgstr "Aparência"
|
47 |
+
msgid "Advanced settings"
|
48 |
+
msgstr "Definições Avançadas"
|
49 |
+
msgid "Advanced"
|
50 |
+
msgstr "Avançadas"
|
51 |
+
msgid "Setup"
|
52 |
+
msgstr ""
|
53 |
+
msgid "Your store's minicart"
|
54 |
+
msgstr "O minicart da sua loja"
|
55 |
+
msgid "Ecwid Shopping Bag (Normal)"
|
56 |
+
msgstr "Saco de compras Ecwid (Normal)"
|
57 |
+
msgid "Ecwid Shopping Bag (Mini view)"
|
58 |
+
msgstr "Saco de compras Ecwid (Vista mini)"
|
59 |
+
msgid "Your store's search box"
|
60 |
+
msgstr "A barra de pesquisa da sua loja"
|
61 |
+
msgid "Ecwid Search Box"
|
62 |
+
msgstr "Barra de pesquisa Ecwid"
|
63 |
+
msgid "Vertical menu of categories"
|
64 |
+
msgstr "Menu vertical de categorias"
|
65 |
+
msgid "Ecwid Vertical Categories"
|
66 |
+
msgstr "Categorias verticais Ecwid"
|
67 |
+
msgid "Price"
|
68 |
+
msgstr ""
|
69 |
+
msgid "Ecwid Shopping Cart - Advanced settings"
|
70 |
+
msgstr "Carrinho de compras Ecwid - Definições Avançadas"
|
71 |
+
msgid "Category shown by default"
|
72 |
+
msgstr "Categoria mostrada por defeito"
|
73 |
+
msgid "Store root category"
|
74 |
+
msgstr "Categoria de raiz de loja"
|
75 |
+
msgid "Default category ID"
|
76 |
+
msgstr "Identificação de categoria por defeito"
|
77 |
+
msgid "By default, the storefront shows a list of root categories. You can override this behavior and show a different category when customers open your store for the first time. This is useful if you only have one category or want to display a specific set of items (e.g. \"Featured Products\") to new visitors."
|
78 |
+
msgstr "Por defeito, a frente de loja mostra uma lista de categorias de raiz. Você pode ignorar este comportamento e mostrar uma categoria diferente quando os clientes abrirem a sua loja pela primeira vez. É util se você tem apenas uma categoria ou quer mostrar produtos especifícos (e.g. \"Produtos em Destaque\") para todos os novos visitantes."
|
79 |
+
msgid "In order to set this option, <a %s>find an ID of the necessary category</a> and save it here."
|
80 |
+
msgstr "De modo a configurar esta opção, <a %s> encontra um ID da categoria necessária</a>, salvando-a."
|
81 |
+
msgid "Single Sign-On Secret Key"
|
82 |
+
msgstr "Chave Secreta e Iniciar Sessão Único"
|
83 |
+
msgid "Single Sign-On Secret Key is an option that allows your customers access to your WordPress site as well as the Ecwid shopping cart. When customers log in to your site, they will automatically be logged in to your Ecwid store as well. It makes sense to enable this feature if your visitors actually create accounts in your WordPress website."
|
84 |
+
msgstr "Esta característica opcional permite ativar o Iniciar Sessão Único: Quando os clientes estão inscritos no seu sítio, eles automaticamente se ligam na sua loja Ecwid, mesmo que eles não tenham conta na loja antes. Faz sentido ativar esta característica, se os seus visitantes realmente criarem contas no seu sítio WordPress."
|
85 |
+
msgid "In order to enable this feature, opt to use a secret key. You will find this key in your Ecwid control panel, at \"System Settings > API > Single Sign-On API\" page. This feature is available for <a href=\"http://www.ecwid.com/compare-plans.html\" target=\"_blank\">paid users</a> only."
|
86 |
+
msgstr "De modo a ativar esta caracterísitca você deverá submeter uma chave secreta. Você encontrará essa chave no painel de controle Ecwid, nas \"Definições de Sistema\" > API > Iniciar Sessão Único na página API. Esta característica está disponível para <a href=\"http://www.ecwid.com/compare-plans.html\" target=\"_blank\">usuários pagos</a> apenas."
|
87 |
+
msgid "Save changes"
|
88 |
+
msgstr "Salvar alterações"
|
89 |
+
msgid "Ecwid Shopping Cart - Appearance settings"
|
90 |
+
msgstr "Carrinho de compras Ecwid - Definições Aparência"
|
91 |
+
msgid "Display search box above products"
|
92 |
+
msgstr "Mostrar barra de pesquisa acima dos produtos"
|
93 |
+
msgid "Or you can add search box to your website's toolbar using <a href=\"widgets.php\">WordPress native widgets</a>."
|
94 |
+
msgstr "Ou você pode adicionar uma barra de pesquisa no seu sítio usando <a href=\"widgets.php\">widgets nativos do WordPress</a>."
|
95 |
+
msgid "Display horizontal categories above products"
|
96 |
+
msgstr "Mostrar categorias horizontais acima dos produtos"
|
97 |
+
msgid "Or you can add vertical categories to your website's toolbar using <a href=\"widgets.php\">WordPress native widgets</a>."
|
98 |
+
msgstr "Ou você pode adicionar categorias verticais na barra de ferramentas do seu sítio através de <a href=\"widgets.php\">widgets nativos do WordPress</a>."
|
99 |
+
msgid "Enable minicart attached to horizontal categories"
|
100 |
+
msgstr "Ativar minicart anexado às categorias horizontais"
|
101 |
+
msgid "You should disable this option, if you added minicart to your website's sidebar."
|
102 |
+
msgstr "Deverá desativar esta opção se você adicionou o minicart à barra lateral do seu sítio."
|
103 |
+
msgid "Number of categories per row"
|
104 |
+
msgstr "Número de categorias por fila"
|
105 |
+
msgid "Number of products per page"
|
106 |
+
msgstr "Número de produtos por página"
|
107 |
+
msgid "Grid view"
|
108 |
+
msgstr "Vista Grelha"
|
109 |
+
msgid "List view"
|
110 |
+
msgstr "Vista Lista"
|
111 |
+
msgid "Table view"
|
112 |
+
msgstr "Vista Tabela"
|
113 |
+
msgid "Here you can control how many products will be displayed per page. These options define maximum values. If there is not enough space to show all product columns, Ecwid will adapt the number of columns to hold all products."
|
114 |
+
msgstr "Aqui você poderá controlar quando produtos quer que sejam mostrados por página. Estas opções definem valores máximos. Se não houver espaço suficiente para mostrar todas as colunas de produtos, a Ecwid irá adaptar o número de colunas a mostrar todos os produtos."
|
115 |
+
msgid "Default view mode on product pages"
|
116 |
+
msgstr "Vista padrão nas páginas de produtos"
|
117 |
+
msgid "Grid"
|
118 |
+
msgstr "Grelha"
|
119 |
+
msgid "List"
|
120 |
+
msgstr "Lista"
|
121 |
+
msgid "Table"
|
122 |
+
msgstr "Tabela"
|
123 |
+
msgid "Default view mode on search results"
|
124 |
+
msgstr "Vista Padrão nos resultados de pesquisa"
|
125 |
+
msgid "Store powered by Ecwid"
|
126 |
+
msgstr ""
|
127 |
+
msgid "Ecwid Shopping Cart - General settings"
|
128 |
+
msgstr "Carrinho de Compras Ecwid - Definições Gerais"
|
129 |
+
msgid "Thank you for choosing Ecwid to build your online store."
|
130 |
+
msgstr "Obrigado por escolher Ecwid para construir a sua loja online"
|
131 |
+
msgid "The first step towards opening your online business: <br />Let’s get started and add a store to your WordPress website in <strong>3</strong> simple steps."
|
132 |
+
msgstr "Os primeiros passos para abrir o seu negócio online<br />Vamos começar e adicionar uma loja no seu sítio WordPress em <strong>3</strong> passos simples."
|
133 |
+
msgid "Register at Ecwid"
|
134 |
+
msgstr "Registe-se na Ecwid"
|
135 |
+
msgid "Create a new Ecwid account which you will use to manage your store and inventory. The registration is free."
|
136 |
+
msgstr "Crie uma nova conta Ecwid que você utilizará para gerir a sua loja e inventário. O registo é grátis."
|
137 |
+
msgid "Create new Ecwid account"
|
138 |
+
msgstr "Crie uma nova conta Ecwid"
|
139 |
+
msgid "I already have Ecwid account, sign in"
|
140 |
+
msgstr "Já tenho uma conta Ecwid, iniciar sessão"
|
141 |
+
msgid "You will be able to sign up through your exising Google, Facebook or PayPal profiles as well."
|
142 |
+
msgstr "Você conseguirá iniciar sessão atráves dos seus perfis existentes do Google, Facebook ou PayPal."
|
143 |
+
msgid "Find your Store ID"
|
144 |
+
msgstr "Obtenha a sua ID de loja"
|
145 |
+
msgid "Store ID is a unique identifier of any Ecwid store, it consists of several digits. You can find it on the \"Dashboard\" page of Ecwid control panel. Also the Store ID will be sent in the Welcome email after the registration."
|
146 |
+
msgstr "ID de loja é um identificador único de qualquer loja Ecwid, consiste em vários digitos. Poderá encontrá-lo no \"Painel\" da página \"Painel de Controle\" da Ecwid. Mais, a ID de loja será enviada na mensagem de correio eletrônico de boas-vindas após o registo. "
|
147 |
+
msgid "Enter your Store ID"
|
148 |
+
msgstr "Insira a sua ID de Loja"
|
149 |
+
msgid "Enter your Store ID here:"
|
150 |
+
msgstr "Insira a sua ID de Loja aqui:"
|
151 |
+
msgid "Store ID"
|
152 |
+
msgstr "ID de Loja "
|
153 |
+
msgid "Save and connect your Ecwid store to the site"
|
154 |
+
msgstr "Salve e conete a sua loja Ecwid ao sítio"
|
155 |
+
msgid "Questions? Visit <a href=\"http://help.ecwid.com/?source=wporg\">Ecwid support center</a>."
|
156 |
+
msgstr "Questões? Visite <a href=\"http://help.ecwid.com/?source=wporg\"> Centro de Apoio Ecwid</a>."
|
157 |
+
msgid "Congratulations!"
|
158 |
+
msgstr "Parabéns!"
|
159 |
+
msgid "Your Ecwid store is now connected to your WordPress website."
|
160 |
+
msgstr "A sua loja Ecwid está agora conetada ao seu sítio WorkPress."
|
161 |
+
msgid "Greetings!"
|
162 |
+
msgstr "Saudações!"
|
163 |
+
msgid "Your Ecwid store is connected to your WordPress website."
|
164 |
+
msgstr "A sua loja Ecwid está agora conetada ao seu sítio WorkPress."
|
165 |
+
msgid "Control panel"
|
166 |
+
msgstr "Painel de Controle"
|
167 |
+
msgid "Account status"
|
168 |
+
msgstr "Estado de Conta"
|
169 |
+
msgid "Paid"
|
170 |
+
msgstr "Pago"
|
171 |
+
msgid "Free"
|
172 |
+
msgstr "Grátis"
|
173 |
+
msgid "Thank you for supporting Ecwid!"
|
174 |
+
msgstr "Obrigado por apoiar Ecwid!"
|
175 |
+
msgid "Upgrade to get access to cool premium features."
|
176 |
+
msgstr "Atualize para ter acesso a características premium convenientes."
|
177 |
+
msgid "Billing and plans"
|
178 |
+
msgstr ""
|
179 |
+
msgid "Upgrade"
|
180 |
+
msgstr ""
|
181 |
+
msgid "If you want to connect another Ecwid store, you can <a %s>disconnect the current one and change Store ID</a>."
|
182 |
+
msgstr ""
|
languages/ecwid-shopping-cart-ru_RU.mo
CHANGED
Binary file
|
languages/ecwid-shopping-cart-ru_RU.po
CHANGED
@@ -15,6 +15,15 @@ msgstr ""
|
|
15 |
"Content-Type: text/plain; charset=UTF-8\n"
|
16 |
"Content-Transfer-Encoding: 8bit\n"
|
17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
msgid "Get help"
|
19 |
msgstr "Получить помощь"
|
20 |
|
@@ -43,7 +52,7 @@ msgid "<strong>Ecwid shopping cart is almost ready</strong>. Please visit <a tar
|
|
43 |
msgstr "<strong>Магазин Ecwid почти готов к использованию</strong>. Пройдите по <a target=\"_blank\" href=\"%s\">ссылке</a>, чтобы посмотреть ваш магазин с демонстрационными продуктами. Чтобы закончить установку, пожалуйста, откройте страницу <a href=\"admin.php?page=ecwid\"><strong>настроек Ecwid</strong></a> и настройте плагин."
|
44 |
|
45 |
msgid "Do you like your Ecwid online store? We'd appreciate it if you <a %s>add your review and vote</a> for the plugin on Wordpress site. (<a id=\"hide-vote-message\">Close</a> and do not show this message anymore)"
|
46 |
-
msgstr "Вам нравится ваш магазин Ecwid? Будем благодарны, если вы <a %s>оставите отзыв и проголосуете</a> за этот плагин на сайте WordPress. (<a id=\"hide-vote-message\"
|
47 |
|
48 |
msgid "Ecwid shopping cart settings"
|
49 |
msgstr "Настройки Ecwid"
|
@@ -120,7 +129,7 @@ msgstr "Секретный ключ системы единой авториза
|
|
120 |
msgid "Single Sign-On Secret Key is an option that allows your customers access to your WordPress site as well as the Ecwid shopping cart. When customers log in to your site, they will automatically be logged in to your Ecwid store as well. It makes sense to enable this feature if your visitors actually create accounts in your WordPress website."
|
121 |
msgstr "Эта функция позволяет включить систему единой авторизации: когда покупатели вошли в свой аккаунт на вашем сайте, они автоматически входят в свой аккаунт Ecwid, даже если раньше у них его не было. Эта функция может быть полезна в случае, если ваши посетители создают свои аккаунты на вашем сайте."
|
122 |
|
123 |
-
msgid "In order to enable this feature, opt to use a secret key. You will find this key in your Ecwid control panel,
|
124 |
msgstr "Чтобы включить эту функцию, вам необходимо ввести секретный ключ. Его можно найти в панели управления Ecwid в секции \"Настройки > API > Single Sign-on API\". Эта функция доступна только пользователям с <a href=\"http://www.ecwid.com/compare-plans.html\" target=\"_blank\">платным аккаунтом</a>."
|
125 |
|
126 |
msgid "Save changes"
|
@@ -265,4 +274,4 @@ msgid "Upgrade"
|
|
265 |
msgstr "Апгрейд"
|
266 |
|
267 |
msgid "If you want to connect another Ecwid store, you can <a %s>disconnect the current one and change Store ID</a>."
|
268 |
-
msgstr "Если вы хотите подключить другой магазин Ecwid, вы можете <a %s>отключить этот и ввести другой ID Магазина</a>."
|
15 |
"Content-Type: text/plain; charset=UTF-8\n"
|
16 |
"Content-Transfer-Encoding: 8bit\n"
|
17 |
|
18 |
+
msgid "Ecwid Shopping Cart"
|
19 |
+
msgstr "Интернет-магазин Ecwid"
|
20 |
+
|
21 |
+
msgid "Ecwid is a free full-featured shopping cart. It can be easily integrated with any Wordpress blog and takes less than 5 minutes to set up."
|
22 |
+
msgstr "Ecwid - это бесплатный полнофункциональный интернет магазин. Его можно добавить к любому сайту, построенному на WordPress, и он требует не более 5 минут на настройку."
|
23 |
+
|
24 |
+
msgid "Ecwid Team"
|
25 |
+
msgstr "Команда Ecwid"
|
26 |
+
|
27 |
msgid "Get help"
|
28 |
msgstr "Получить помощь"
|
29 |
|
52 |
msgstr "<strong>Магазин Ecwid почти готов к использованию</strong>. Пройдите по <a target=\"_blank\" href=\"%s\">ссылке</a>, чтобы посмотреть ваш магазин с демонстрационными продуктами. Чтобы закончить установку, пожалуйста, откройте страницу <a href=\"admin.php?page=ecwid\"><strong>настроек Ecwid</strong></a> и настройте плагин."
|
53 |
|
54 |
msgid "Do you like your Ecwid online store? We'd appreciate it if you <a %s>add your review and vote</a> for the plugin on Wordpress site. (<a id=\"hide-vote-message\">Close</a> and do not show this message anymore)"
|
55 |
+
msgstr "Вам нравится ваш магазин Ecwid? Будем благодарны, если вы <a %s>оставите отзыв и проголосуете</a> за этот плагин на сайте WordPress. (<a id=\"hide-vote-message\">Закрыть</a> и больше не показывать это сообщение)"
|
56 |
|
57 |
msgid "Ecwid shopping cart settings"
|
58 |
msgstr "Настройки Ecwid"
|
129 |
msgid "Single Sign-On Secret Key is an option that allows your customers access to your WordPress site as well as the Ecwid shopping cart. When customers log in to your site, they will automatically be logged in to your Ecwid store as well. It makes sense to enable this feature if your visitors actually create accounts in your WordPress website."
|
130 |
msgstr "Эта функция позволяет включить систему единой авторизации: когда покупатели вошли в свой аккаунт на вашем сайте, они автоматически входят в свой аккаунт Ecwid, даже если раньше у них его не было. Эта функция может быть полезна в случае, если ваши посетители создают свои аккаунты на вашем сайте."
|
131 |
|
132 |
+
msgid "In order to enable this feature, opt to use a secret key. You will find this key in your Ecwid control panel, at \"System Settings > API > Single Sign-On API\" page. This feature is available for <a href=\"http://www.ecwid.com/compare-plans.html\" target=\"_blank\">paid users</a> only."
|
133 |
msgstr "Чтобы включить эту функцию, вам необходимо ввести секретный ключ. Его можно найти в панели управления Ecwid в секции \"Настройки > API > Single Sign-on API\". Эта функция доступна только пользователям с <a href=\"http://www.ecwid.com/compare-plans.html\" target=\"_blank\">платным аккаунтом</a>."
|
134 |
|
135 |
msgid "Save changes"
|
274 |
msgstr "Апгрейд"
|
275 |
|
276 |
msgid "If you want to connect another Ecwid store, you can <a %s>disconnect the current one and change Store ID</a>."
|
277 |
+
msgstr "Если вы хотите подключить другой магазин Ecwid, вы можете <a %s>отключить этот и ввести другой ID Магазина</a>."
|
languages/ecwid-shopping-cart.pot
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
-
msgid ""
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
msgstr ""
|
3 |
-
"Project-Id-Version: Ecwid Shopping Cart\n"
|
4 |
-
"PO-Revision-Date: 2013-11-25 17:38:21\n"
|
5 |
-
"Last-Translator: <test@example.com>\n"
|
6 |
-
"MIME-Version: 1.0\n"
|
7 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
8 |
-
"Content-Transfer-Encoding: 8bit\n"
|
9 |
|
10 |
msgid "Get help"
|
11 |
msgstr ""
|
@@ -112,7 +112,7 @@ msgstr ""
|
|
112 |
msgid "Single Sign-On Secret Key is an option that allows your customers access to your WordPress site as well as the Ecwid shopping cart. When customers log in to your site, they will automatically be logged in to your Ecwid store as well. It makes sense to enable this feature if your visitors actually create accounts in your WordPress website."
|
113 |
msgstr ""
|
114 |
|
115 |
-
msgid "In order to enable this feature, opt to use a secret key. You will find this key in your Ecwid control panel,
|
116 |
msgstr ""
|
117 |
|
118 |
msgid "Save changes"
|
1 |
+
msgid "Ecwid Shopping Cart"
|
2 |
+
msgstr ""
|
3 |
+
|
4 |
+
msgid "Ecwid is a free full-featured shopping cart. It can be easily integrated with any Wordpress blog and takes less than 5 minutes to set up."
|
5 |
+
msgstr ""
|
6 |
+
|
7 |
+
msgid "Ecwid Team"
|
8 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
|
10 |
msgid "Get help"
|
11 |
msgstr ""
|
112 |
msgid "Single Sign-On Secret Key is an option that allows your customers access to your WordPress site as well as the Ecwid shopping cart. When customers log in to your site, they will automatically be logged in to your Ecwid store as well. It makes sense to enable this feature if your visitors actually create accounts in your WordPress website."
|
113 |
msgstr ""
|
114 |
|
115 |
+
msgid "In order to enable this feature, opt to use a secret key. You will find this key in your Ecwid control panel, at \"System Settings > API > Single Sign-On API\" page. This feature is available for <a href=\"http://www.ecwid.com/compare-plans.html\" target=\"_blank\">paid users</a> only."
|
116 |
msgstr ""
|
117 |
|
118 |
msgid "Save changes"
|
readme.txt
CHANGED
@@ -2,8 +2,8 @@
|
|
2 |
Contributors: Ecwid Team
|
3 |
Tags: ecwid, shopping cart, ecommerce, wordpress ecommerce, wp e-commerce, paypal, e-commerce, online store, store, shop, cart, online shop, shopping, digital goods, downloadable products, product catalog, ecomerce, products, facebook, f-commerce
|
4 |
Requires at least: 2.8
|
5 |
-
Tested up to: 3.
|
6 |
-
Stable tag: 2.
|
7 |
|
8 |
Ecwid is a free full-featured shopping cart that can easily be added to any blog
|
9 |
and takes less than 5 minutes to set up.
|
@@ -78,6 +78,11 @@ http://codex.wordpress.org/Managing_Plugins#Installing_Plugins
|
|
78 |
- Knowledge Base: [http://kb.ecwid.com](http://kb.ecwid.com)
|
79 |
|
80 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
81 |
= 2.1 =
|
82 |
- Our plugin backend is now available in Italian, Russian and English. Thanks to Luciano Del Fico for the great help with the Italian translation.
|
83 |
|
2 |
Contributors: Ecwid Team
|
3 |
Tags: ecwid, shopping cart, ecommerce, wordpress ecommerce, wp e-commerce, paypal, e-commerce, online store, store, shop, cart, online shop, shopping, digital goods, downloadable products, product catalog, ecomerce, products, facebook, f-commerce
|
4 |
Requires at least: 2.8
|
5 |
+
Tested up to: 3.8
|
6 |
+
Stable tag: 2.2
|
7 |
|
8 |
Ecwid is a free full-featured shopping cart that can easily be added to any blog
|
9 |
and takes less than 5 minutes to set up.
|
78 |
- Knowledge Base: [http://kb.ecwid.com](http://kb.ecwid.com)
|
79 |
|
80 |
== Changelog ==
|
81 |
+
= 2.2 =
|
82 |
+
- Improved compatibility with the new Wordpress version 3.8 which brings great features like brand new responsive theme, revamped admin backend and other improvements. Ecwid plugin is now ready for that, so your store will work perfectly with the new Wordpress version
|
83 |
+
- The plugin settings pages are now available in seven languages: English, Italian, Russian, French, German, Spanish, Brazilian Portuguese. Ecwid itself is available in 45 languages, so customers from all over the world can purchase from your store
|
84 |
+
- Design improvements of the plugin settings pages including Retina-ready icons
|
85 |
+
|
86 |
= 2.1 =
|
87 |
- Our plugin backend is now available in Italian, Russian and English. Thanks to Luciano Del Fico for the great help with the Italian translation.
|
88 |
|
templates/advanced-settings.php
CHANGED
@@ -1,92 +1,92 @@
|
|
1 |
-
<form class="wrap pure-form pure-form-aligned ecwid-settings advanced-settings" method="POST" action="options.php">
|
2 |
-
|
3 |
-
<h2><?php _e('Ecwid Shopping Cart - Advanced settings', 'ecwid-shopping-cart'); ?></h2>
|
4 |
-
|
5 |
-
<?php settings_fields('ecwid_options_page'); ?>
|
6 |
-
<input type="hidden" name="settings_section" value="advanced" />
|
7 |
-
|
8 |
-
<fieldset>
|
9 |
-
|
10 |
-
<div class="pure-control-group">
|
11 |
-
|
12 |
-
<?php if (ecwid_is_paid_account()): ?>
|
13 |
-
<label for="ecwid_default_category_id">
|
14 |
-
<?php _e('Category shown by default', 'ecwid-shopping-cart'); ?>
|
15 |
-
</label>
|
16 |
-
|
17 |
-
<select name="ecwid_default_category_id" id="ecwid_default_category_id">
|
18 |
-
<option value=""><?php _e('Store root category', 'ecwid-shopping-cart'); ?></option>
|
19 |
-
<?php foreach ($categories as $category): ?>
|
20 |
-
<option
|
21 |
-
value="<?php echo esc_attr($category['id']); ?>"
|
22 |
-
<?php if ($category['id'] == get_option('ecwid_default_category_id')): ?>
|
23 |
-
selected="selected"
|
24 |
-
<?php endif; ?>
|
25 |
-
>
|
26 |
-
<?php echo esc_html($category['path_str']); ?>
|
27 |
-
</option>
|
28 |
-
<?php endforeach; ?>
|
29 |
-
</select>
|
30 |
-
<?php else: ?>
|
31 |
-
|
32 |
-
<label for="ecwid_default_category_id">
|
33 |
-
<?php _e('Default category ID', 'ecwid-shopping-cart'); ?>
|
34 |
-
</label>
|
35 |
-
|
36 |
-
<input
|
37 |
-
id="ecwid_default_category_id"
|
38 |
-
name="ecwid_default_category_id"
|
39 |
-
type="text"
|
40 |
-
placeholder="<?php _e('Default category ID', 'ecwid-shopping-cart'); ?>"
|
41 |
-
value="<?php echo esc_attr(get_option('ecwid_default_category_id')) ?>"
|
42 |
-
/>
|
43 |
-
<?php endif; ?>
|
44 |
-
<div class="note">
|
45 |
-
<?php _e('By default, the storefront shows a list of root categories. You can override this behavior and show a different category when customers open your store for the first time. This is useful if you only have one category or want to display a specific set of items (e.g. "Featured Products") to new visitors.', 'ecwid-shopping-cart'); ?>
|
46 |
-
</div>
|
47 |
-
<div class="note">
|
48 |
-
<?php if (!ecwid_is_paid_account()): ?>
|
49 |
-
<?php echo sprintf(
|
50 |
-
__('In order to set this option, <a %s>find an ID of the necessary category</a> and save it here.', 'ecwid-shopping-cart'),
|
51 |
-
'target="_blank" href="http://kb.ecwid.com/w/page/23947812/How%20to%20get%20ID%20of%20your%20product%20or%20category"'
|
52 |
-
);
|
53 |
-
?>
|
54 |
-
<?php endif; ?>
|
55 |
-
</div>
|
56 |
-
</div>
|
57 |
-
|
58 |
-
<hr />
|
59 |
-
|
60 |
-
<div class="pure-control-group last">
|
61 |
-
<label for="ecwid_sso_secret_key">
|
62 |
-
<?php _e('Single Sign-On Secret Key', 'ecwid-shopping-cart'); ?>
|
63 |
-
</label>
|
64 |
-
|
65 |
-
<input
|
66 |
-
id="ecwid_sso_secret_key"
|
67 |
-
type="text"
|
68 |
-
name="ecwid_sso_secret_key"
|
69 |
-
placeholder="<?php _e('Single Sign-On Secret Key', 'ecwid-shopping-cart'); ?>"
|
70 |
-
value="<?php echo esc_attr(get_option('ecwid_sso_secret_key')); ?>"
|
71 |
-
/>
|
72 |
-
|
73 |
-
<div class="note">
|
74 |
-
<?php _e('Single Sign-On Secret Key is an option that allows your customers access to your WordPress site as well as the Ecwid shopping cart. When customers log in to your site, they will automatically be logged in to your Ecwid store as well. It makes sense to enable this feature if your visitors actually create accounts in your WordPress website.', 'ecwid-shopping-cart'); ?>
|
75 |
-
</div>
|
76 |
-
<div class="note grayed-links">
|
77 |
-
<?php _e('In order to enable this feature, opt to use a secret key. You will find this key in your Ecwid control panel,
|
78 |
-
</div>
|
79 |
-
</div>
|
80 |
-
|
81 |
-
</fieldset>
|
82 |
-
|
83 |
-
<fieldset>
|
84 |
-
<hr />
|
85 |
-
|
86 |
-
<div class="pure-control-group">
|
87 |
-
<button type="submit" class="
|
88 |
-
<?php _e('Save changes', 'ecwid-shopping-cart'); ?>
|
89 |
-
</button>
|
90 |
-
</div>
|
91 |
-
</fieldset>
|
92 |
</form>
|
1 |
+
<form class="wrap pure-form pure-form-aligned ecwid-settings advanced-settings" method="POST" action="options.php">
|
2 |
+
|
3 |
+
<h2><?php _e('Ecwid Shopping Cart - Advanced settings', 'ecwid-shopping-cart'); ?></h2>
|
4 |
+
|
5 |
+
<?php settings_fields('ecwid_options_page'); ?>
|
6 |
+
<input type="hidden" name="settings_section" value="advanced" />
|
7 |
+
|
8 |
+
<fieldset>
|
9 |
+
|
10 |
+
<div class="pure-control-group">
|
11 |
+
|
12 |
+
<?php if (ecwid_is_paid_account()): ?>
|
13 |
+
<label for="ecwid_default_category_id">
|
14 |
+
<?php _e('Category shown by default', 'ecwid-shopping-cart'); ?>
|
15 |
+
</label>
|
16 |
+
|
17 |
+
<select name="ecwid_default_category_id" id="ecwid_default_category_id">
|
18 |
+
<option value=""><?php _e('Store root category', 'ecwid-shopping-cart'); ?></option>
|
19 |
+
<?php foreach ($categories as $category): ?>
|
20 |
+
<option
|
21 |
+
value="<?php echo esc_attr($category['id']); ?>"
|
22 |
+
<?php if ($category['id'] == get_option('ecwid_default_category_id')): ?>
|
23 |
+
selected="selected"
|
24 |
+
<?php endif; ?>
|
25 |
+
>
|
26 |
+
<?php echo esc_html($category['path_str']); ?>
|
27 |
+
</option>
|
28 |
+
<?php endforeach; ?>
|
29 |
+
</select>
|
30 |
+
<?php else: ?>
|
31 |
+
|
32 |
+
<label for="ecwid_default_category_id">
|
33 |
+
<?php _e('Default category ID', 'ecwid-shopping-cart'); ?>
|
34 |
+
</label>
|
35 |
+
|
36 |
+
<input
|
37 |
+
id="ecwid_default_category_id"
|
38 |
+
name="ecwid_default_category_id"
|
39 |
+
type="text"
|
40 |
+
placeholder="<?php _e('Default category ID', 'ecwid-shopping-cart'); ?>"
|
41 |
+
value="<?php echo esc_attr(get_option('ecwid_default_category_id')) ?>"
|
42 |
+
/>
|
43 |
+
<?php endif; ?>
|
44 |
+
<div class="note">
|
45 |
+
<?php _e('By default, the storefront shows a list of root categories. You can override this behavior and show a different category when customers open your store for the first time. This is useful if you only have one category or want to display a specific set of items (e.g. "Featured Products") to new visitors.', 'ecwid-shopping-cart'); ?>
|
46 |
+
</div>
|
47 |
+
<div class="note">
|
48 |
+
<?php if (!ecwid_is_paid_account()): ?>
|
49 |
+
<?php echo sprintf(
|
50 |
+
__('In order to set this option, <a %s>find an ID of the necessary category</a> and save it here.', 'ecwid-shopping-cart'),
|
51 |
+
'target="_blank" href="http://kb.ecwid.com/w/page/23947812/How%20to%20get%20ID%20of%20your%20product%20or%20category"'
|
52 |
+
);
|
53 |
+
?>
|
54 |
+
<?php endif; ?>
|
55 |
+
</div>
|
56 |
+
</div>
|
57 |
+
|
58 |
+
<hr />
|
59 |
+
|
60 |
+
<div class="pure-control-group last">
|
61 |
+
<label for="ecwid_sso_secret_key">
|
62 |
+
<?php _e('Single Sign-On Secret Key', 'ecwid-shopping-cart'); ?>
|
63 |
+
</label>
|
64 |
+
|
65 |
+
<input
|
66 |
+
id="ecwid_sso_secret_key"
|
67 |
+
type="text"
|
68 |
+
name="ecwid_sso_secret_key"
|
69 |
+
placeholder="<?php _e('Single Sign-On Secret Key', 'ecwid-shopping-cart'); ?>"
|
70 |
+
value="<?php echo esc_attr(get_option('ecwid_sso_secret_key')); ?>"
|
71 |
+
/>
|
72 |
+
|
73 |
+
<div class="note">
|
74 |
+
<?php _e('Single Sign-On Secret Key is an option that allows your customers access to your WordPress site as well as the Ecwid shopping cart. When customers log in to your site, they will automatically be logged in to your Ecwid store as well. It makes sense to enable this feature if your visitors actually create accounts in your WordPress website.', 'ecwid-shopping-cart'); ?>
|
75 |
+
</div>
|
76 |
+
<div class="note grayed-links">
|
77 |
+
<?php _e('In order to enable this feature, opt to use a secret key. You will find this key in your Ecwid control panel, at "System Settings > API > Single Sign-On API" page. This feature is available for <a href="http://www.ecwid.com/compare-plans.html" target="_blank">paid users</a> only.', 'ecwid-shopping-cart'); ?>
|
78 |
+
</div>
|
79 |
+
</div>
|
80 |
+
|
81 |
+
</fieldset>
|
82 |
+
|
83 |
+
<fieldset>
|
84 |
+
<hr />
|
85 |
+
|
86 |
+
<div class="pure-control-group">
|
87 |
+
<button type="submit" class="<?php echo ECWID_MAIN_BUTTON_CLASS; ?>">
|
88 |
+
<?php _e('Save changes', 'ecwid-shopping-cart'); ?>
|
89 |
+
</button>
|
90 |
+
</div>
|
91 |
+
</fieldset>
|
92 |
</form>
|
templates/appearance-settings.php
CHANGED
@@ -1,190 +1,205 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
<
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
<?php
|
41 |
-
|
42 |
-
|
43 |
-
<
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
<
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
<
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
<div class="
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
</
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
<option value="
|
171 |
-
<?php _e('
|
172 |
-
</option>
|
173 |
-
<option value="
|
174 |
-
<?php _e('
|
175 |
-
</option>
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
190 |
</form>
|
1 |
+
<?php
|
2 |
+
function ecwid_embed_svg($name) {
|
3 |
+
$code = file_get_contents(ECWID_PLUGIN_DIR . '/images/' . $name . '.svg');
|
4 |
+
|
5 |
+
echo $code;
|
6 |
+
}
|
7 |
+
|
8 |
+
?>
|
9 |
+
|
10 |
+
<form class="wrap pure-form pure-form-aligned ecwid-settings appearance-settings" method="POST" action="options.php">
|
11 |
+
|
12 |
+
<h2><?php _e('Ecwid Shopping Cart - Appearance settings', 'ecwid-shopping-cart'); ?></h2>
|
13 |
+
|
14 |
+
<?php settings_fields('ecwid_options_page'); ?>
|
15 |
+
<input type="hidden" name="settings_section" value="appearance" />
|
16 |
+
|
17 |
+
<fieldset>
|
18 |
+
|
19 |
+
<div class="pure-control-group">
|
20 |
+
<label for="ecwid_show_search_box">
|
21 |
+
<?php _e('Display search box above products', 'ecwid-shopping-cart'); ?>
|
22 |
+
</label>
|
23 |
+
|
24 |
+
<input
|
25 |
+
id="ecwid_show_search_box"
|
26 |
+
name="ecwid_show_search_box"
|
27 |
+
type="checkbox"
|
28 |
+
<?php if (get_option('ecwid_show_search_box')): ?>
|
29 |
+
checked="checked"
|
30 |
+
<?php endif; ?>
|
31 |
+
$disabled_str
|
32 |
+
/>
|
33 |
+
<span class="note inline-note">
|
34 |
+
<?php _e('Or you can add search box to your website\'s toolbar using <a href="widgets.php">WordPress native widgets</a>.', 'ecwid-shopping-cart'); ?>
|
35 |
+
</span>
|
36 |
+
</div>
|
37 |
+
|
38 |
+
<div class="pure-control-group">
|
39 |
+
<label for="ecwid_show_categories">
|
40 |
+
<?php _e('Display horizontal categories above products', 'ecwid-shopping-cart'); ?>
|
41 |
+
</label>
|
42 |
+
|
43 |
+
<input
|
44 |
+
id="ecwid_show_categories"
|
45 |
+
name="ecwid_show_categories"
|
46 |
+
type="checkbox"
|
47 |
+
<?php if (get_option('ecwid_show_categories')): ?>
|
48 |
+
checked="checked"
|
49 |
+
<?php endif; ?>
|
50 |
+
$disabled_str
|
51 |
+
/>
|
52 |
+
<span class="note inline-note">
|
53 |
+
<?php _e('Or you can add vertical categories to your website\'s toolbar using <a href="widgets.php">WordPress native widgets</a>.', 'ecwid-shopping-cart'); ?>
|
54 |
+
</span>
|
55 |
+
</div>
|
56 |
+
|
57 |
+
<div class="pure-control-group">
|
58 |
+
<label for="ecwid_enable_minicart">
|
59 |
+
<?php _e('Enable minicart attached to horizontal categories', 'ecwid-shopping-cart'); ?>
|
60 |
+
</label>
|
61 |
+
|
62 |
+
<input
|
63 |
+
id="ecwid_enable_minicart"
|
64 |
+
name="ecwid_enable_minicart"
|
65 |
+
type="checkbox"
|
66 |
+
<?php if (get_option('ecwid_enable_minicart')): ?>
|
67 |
+
checked="checked"
|
68 |
+
<?php endif; ?>
|
69 |
+
$disabled_str
|
70 |
+
/>
|
71 |
+
<span class="note inline-note">
|
72 |
+
<?php _e("You should disable this option, if you added minicart to your website's sidebar.", 'ecwid-shopping-cart'); ?>
|
73 |
+
</span>
|
74 |
+
</div>
|
75 |
+
|
76 |
+
<div class="pure-control-group">
|
77 |
+
<label for="ecwid_pb_categoriesperrow">
|
78 |
+
<?php _e('Number of categories per row', 'ecwid-shopping-cart'); ?>
|
79 |
+
</label>
|
80 |
+
|
81 |
+
<input
|
82 |
+
id="ecwid_pb_categoriesperrow"
|
83 |
+
name="ecwid_pb_categoriesperrow"
|
84 |
+
type="text"
|
85 |
+
class="number"
|
86 |
+
value="<?php echo esc_attr(get_option('ecwid_pb_categoriesperrow')); ?>"
|
87 |
+
$disabled_str
|
88 |
+
/>
|
89 |
+
</div>
|
90 |
+
|
91 |
+
<hr />
|
92 |
+
|
93 |
+
|
94 |
+
<div class="pure-control-group">
|
95 |
+
<label class="products-per-page-label"><?php _e('Number of products per page', 'ecwid-shopping-cart'); ?></label>
|
96 |
+
<div class="ecwid-pb-view-size grid active" tabindex="1">
|
97 |
+
<div class="title"><?php _e('Grid view', 'ecwid-shopping-cart'); ?></div>
|
98 |
+
<div class="main-area">
|
99 |
+
<?php ecwid_embed_svg('grid'); ?>
|
100 |
+
</div>
|
101 |
+
<div class="right">
|
102 |
+
<div class="ruler"></div>
|
103 |
+
<input
|
104 |
+
type="text"
|
105 |
+
size="2"
|
106 |
+
name="ecwid_pb_productsperrow_grid"
|
107 |
+
class="number"
|
108 |
+
value="<?php echo esc_attr(get_option('ecwid_pb_productsperrow_grid')); ?>"
|
109 |
+
/>
|
110 |
+
</div>
|
111 |
+
<div class="bottom">
|
112 |
+
<div class="ruler"></div>
|
113 |
+
<input
|
114 |
+
type="text"
|
115 |
+
size="2"
|
116 |
+
name="ecwid_pb_productspercolumn_grid"
|
117 |
+
class="number"
|
118 |
+
value="<?php echo esc_attr(get_option('ecwid_pb_productspercolumn_grid')); ?>"
|
119 |
+
/>
|
120 |
+
</div>
|
121 |
+
</div>
|
122 |
+
|
123 |
+
<div class="ecwid-pb-view-size list" tabindex="1">
|
124 |
+
<div class="title"><?php _e('List view', 'ecwid-shopping-cart'); ?></div>
|
125 |
+
<div class="main-area">
|
126 |
+
<?php ecwid_embed_svg('list'); ?>
|
127 |
+
</div>
|
128 |
+
<div class="right">
|
129 |
+
<div class="ruler"></div>
|
130 |
+
<input
|
131 |
+
type="text"
|
132 |
+
size="2"
|
133 |
+
name="ecwid_pb_productsperpage_list"
|
134 |
+
class="number"
|
135 |
+
value="<?php echo esc_attr(get_option('ecwid_pb_productsperpage_list')); ?>" />
|
136 |
+
</div>
|
137 |
+
</div>
|
138 |
+
|
139 |
+
|
140 |
+
<div class="ecwid-pb-view-size table" tabindex="1">
|
141 |
+
<div class="title"><?php _e('Table view', 'ecwid-shopping-cart'); ?></div>
|
142 |
+
<div class="main-area">
|
143 |
+
<?php ecwid_embed_svg('table'); ?>
|
144 |
+
</div>
|
145 |
+
<div class="right">
|
146 |
+
<div class="ruler"></div>
|
147 |
+
<input
|
148 |
+
type="text"
|
149 |
+
size="2"
|
150 |
+
name="ecwid_pb_productsperpage_table"
|
151 |
+
class="number"
|
152 |
+
value="<?php echo esc_attr(get_option('ecwid_pb_productsperpage_table')); ?>"
|
153 |
+
/>
|
154 |
+
</div>
|
155 |
+
</div>
|
156 |
+
<p class="note pb-note"><?php _e('Here you can control how many products will be displayed per page. These options define maximum values. If there is not enough space to show all product columns, Ecwid will adapt the number of columns to hold all products.', 'ecwid-shopping-cart'); ?></p>
|
157 |
+
</div>
|
158 |
+
|
159 |
+
<hr />
|
160 |
+
|
161 |
+
<div class="pure-control-group">
|
162 |
+
<label for="ecwid_pb_defaultview">
|
163 |
+
<?php _e('Default view mode on product pages', 'ecwid-shopping-cart'); ?>
|
164 |
+
</label>
|
165 |
+
|
166 |
+
<select id="ecwid_pb_defaultview" name="ecwid_pb_defaultview" $disabled_str>
|
167 |
+
<option value="grid" <?php if(get_option('ecwid_pb_defaultview') == 'grid') echo 'selected="selected"' ?> >
|
168 |
+
<?php _e('Grid', 'ecwid-shopping-cart'); ?>
|
169 |
+
</option>
|
170 |
+
<option value="list" <?php if(get_option('ecwid_pb_defaultview') == 'list') echo 'selected="selected"' ?> >
|
171 |
+
<?php _e('List', 'ecwid-shopping-cart'); ?>
|
172 |
+
</option>
|
173 |
+
<option value="table" <?php if(get_option('ecwid_pb_defaultview') == 'table') echo 'selected="selected"' ?> >
|
174 |
+
<?php _e('Table', 'ecwid-shopping-cart'); ?>
|
175 |
+
</option>
|
176 |
+
</select>
|
177 |
+
</div>
|
178 |
+
|
179 |
+
<div class="pure-control-group">
|
180 |
+
<label for="ecwid_pb_searchview">
|
181 |
+
<?php _e('Default view mode on search results', 'ecwid-shopping-cart'); ?>
|
182 |
+
</label>
|
183 |
+
|
184 |
+
<select id="ecwid_pb_searchview" name="ecwid_pb_searchview" $disabled_str>
|
185 |
+
<option value="grid" <?php if(get_option('ecwid_pb_searchview') == 'grid') echo 'selected="selected"' ?> >
|
186 |
+
<?php _e('Grid', 'ecwid-shopping-cart'); ?>
|
187 |
+
</option>
|
188 |
+
<option value="list" <?php if(get_option('ecwid_pb_searchview') == 'list') echo 'selected="selected"' ?> >
|
189 |
+
<?php _e('List', 'ecwid-shopping-cart'); ?>
|
190 |
+
</option>
|
191 |
+
<option value="table" <?php if(get_option('ecwid_pb_searchview') == 'table') echo 'selected="selected"' ?> >
|
192 |
+
<?php _e('Table', 'ecwid-shopping-cart'); ?>
|
193 |
+
</option>
|
194 |
+
</select>
|
195 |
+
</div>
|
196 |
+
|
197 |
+
</fieldset>
|
198 |
+
|
199 |
+
<fieldset>
|
200 |
+
<hr />
|
201 |
+
<div class="pure-control-group">
|
202 |
+
<button type="submit" class="<?php echo ECWID_MAIN_BUTTON_CLASS; ?>"><?php _e('Save changes', 'ecwid-shopping-cart'); ?></button>
|
203 |
+
</div>
|
204 |
+
</fieldset>
|
205 |
</form>
|
templates/general-settings-initial.php
CHANGED
@@ -1,67 +1,70 @@
|
|
1 |
-
<div class="wrap pure-form ecwid-settings general-settings">
|
2 |
-
|
3 |
-
<h2><?php _e('Ecwid Shopping Cart - General settings', 'ecwid-shopping-cart'); ?></h2>
|
4 |
-
|
5 |
-
<form method="POST" action="options.php">
|
6 |
-
<?php settings_fields('ecwid_options_page'); ?>
|
7 |
-
<fieldset>
|
8 |
-
|
9 |
-
<input type="hidden" name="settings_section" value="general" />
|
10 |
-
|
11 |
-
<div class="greeting-box">
|
12 |
-
<div class="main-message">
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
<div
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
<a class="pure-button pure-button-secondary" target="_blank" href="https://my.ecwid.com/cp/?source=wporg#
|
32 |
-
<?php _e('
|
33 |
-
</a>
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
</div>
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
<
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
|
|
|
|
|
|
67 |
</div>
|
1 |
+
<div class="wrap pure-form ecwid-settings general-settings">
|
2 |
+
|
3 |
+
<h2><?php _e('Ecwid Shopping Cart - General settings', 'ecwid-shopping-cart'); ?></h2>
|
4 |
+
|
5 |
+
<form method="POST" action="options.php">
|
6 |
+
<?php settings_fields('ecwid_options_page'); ?>
|
7 |
+
<fieldset>
|
8 |
+
|
9 |
+
<input type="hidden" name="settings_section" value="general" />
|
10 |
+
|
11 |
+
<div class="greeting-box" style="position: relative">
|
12 |
+
<div class="main-message">
|
13 |
+
|
14 |
+
<?php _e('Thank you for choosing Ecwid to build your online store.', 'ecwid-shopping-cart'); ?>
|
15 |
+
</div>
|
16 |
+
<div class="secondary-message">
|
17 |
+
<?php _e('The first step towards opening your online business: <br />Let’s get started and add a store to your WordPress website in <strong>3</strong> simple steps.', 'ecwid-shopping-cart'); ?>
|
18 |
+
</div>
|
19 |
+
|
20 |
+
<img class="greeting-image" src="<?php echo(esc_attr(ECWID_PLUGIN_URL)); ?>/images/store_inprogress.png" width="142" />
|
21 |
+
</div>
|
22 |
+
<hr />
|
23 |
+
|
24 |
+
<ol>
|
25 |
+
<li>
|
26 |
+
<h4><?php _e('Register at Ecwid', 'ecwid-shopping-cart'); ?></h4>
|
27 |
+
<div>
|
28 |
+
<?php _e('Create a new Ecwid account which you will use to manage your store and inventory. The registration is free.', 'ecwid-shopping-cart'); ?>
|
29 |
+
</div>
|
30 |
+
<div class="ecwid-account-buttons">
|
31 |
+
<a class="pure-button pure-button-secondary" target="_blank" href="https://my.ecwid.com/cp/?source=wporg#register">
|
32 |
+
<?php _e('Create new Ecwid account', 'ecwid-shopping-cart'); ?>
|
33 |
+
</a>
|
34 |
+
<a class="pure-button pure-button-secondary" target="_blank" href="https://my.ecwid.com/cp/?source=wporg#t1=&t2=Dashboard">
|
35 |
+
<?php _e('I already have Ecwid account, sign in', 'ecwid-shopping-cart'); ?>
|
36 |
+
</a>
|
37 |
+
</div>
|
38 |
+
<div class="note">
|
39 |
+
<?php _e('You will be able to sign up through your exising Google, Facebook or PayPal profiles as well.', 'ecwid-shopping-cart'); ?>
|
40 |
+
</div>
|
41 |
+
</li>
|
42 |
+
<li>
|
43 |
+
<h4><?php _e('Find your Store ID', 'ecwid-shopping-cart'); ?></h4>
|
44 |
+
<div>
|
45 |
+
<?php _e('Store ID is a unique identifier of any Ecwid store, it consists of several digits. You can find it on the "Dashboard" page of Ecwid control panel. Also the Store ID will be sent in the Welcome email after the registration.', 'ecwid-shopping-cart'); ?>
|
46 |
+
</div>
|
47 |
+
</li>
|
48 |
+
<li>
|
49 |
+
<h4>
|
50 |
+
<?php _e('Enter your Store ID', 'ecwid-shopping-cart'); ?>
|
51 |
+
</h4>
|
52 |
+
<div><label for="ecwid_store_id"><?php _e('Enter your Store ID here:', 'ecwid-shopping-cart'); ?></label></div>
|
53 |
+
<div class="pure-control-group store-id">
|
54 |
+
<input
|
55 |
+
id="ecwid_store_id"
|
56 |
+
name="ecwid_store_id"
|
57 |
+
type="text"
|
58 |
+
placeholder="<?php _e('Store ID', 'ecwid-shopping-cart'); ?>"
|
59 |
+
value="<?php if (get_ecwid_store_id() != 1003) echo esc_attr(get_ecwid_store_id()); ?>"
|
60 |
+
/>
|
61 |
+
<button type="submit" class="<?php echo ECWID_MAIN_BUTTON_CLASS; ?>"><?php _e('Save and connect your Ecwid store to the site', 'ecwid-shopping-cart'); ?></button>
|
62 |
+
</div>
|
63 |
+
|
64 |
+
</li>
|
65 |
+
</ol>
|
66 |
+
<hr />
|
67 |
+
<p><?php _e('Questions? Visit <a href="http://help.ecwid.com/?source=wporg">Ecwid support center</a>.', 'ecwid-shopping-cart'); ?></p>
|
68 |
+
</fieldset>
|
69 |
+
</form>
|
70 |
</div>
|
templates/general-settings.php
CHANGED
@@ -1,91 +1,92 @@
|
|
1 |
-
<div class="wrap pure-form ecwid-settings general-settings">
|
2 |
-
<h2><?php _e('Ecwid Shopping Cart - General settings', 'ecwid-shopping-cart'); ?></h2>
|
3 |
-
|
4 |
-
|
5 |
-
<form method="POST" action="options.php" name="settings">
|
6 |
-
<?php settings_fields('ecwid_options_page'); ?>
|
7 |
-
<fieldset>
|
8 |
-
|
9 |
-
<input type="hidden" name="settings_section" value="general" />
|
10 |
-
|
11 |
-
<div class="greeting-box complete">
|
12 |
-
<?php if ($_GET['settings-updated']): ?>
|
13 |
-
|
14 |
-
<div class="main-message"><?php _e('Congratulations!', 'ecwid-shopping-cart'); ?></div>
|
15 |
-
<div class="secondary-message"?><?php _e('Your Ecwid store is now connected to your WordPress website.', 'ecwid-shopping-cart'); ?></div>
|
16 |
-
|
17 |
-
<?php else: ?>
|
18 |
-
|
19 |
-
<div class="main-message"><?php _e('Greetings!', 'ecwid-shopping-cart'); ?></div>
|
20 |
-
<div class="secondary-message"?><?php _e('Your Ecwid store is connected to your WordPress website.', 'ecwid-shopping-cart'); ?></div>
|
21 |
-
<?php endif; ?>
|
22 |
-
|
23 |
-
|
24 |
-
<
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
'
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
<
|
89 |
-
|
90 |
-
|
|
|
91 |
</div>
|
1 |
+
<div class="wrap pure-form ecwid-settings general-settings">
|
2 |
+
<h2><?php _e('Ecwid Shopping Cart - General settings', 'ecwid-shopping-cart'); ?></h2>
|
3 |
+
|
4 |
+
|
5 |
+
<form method="POST" action="options.php" name="settings">
|
6 |
+
<?php settings_fields('ecwid_options_page'); ?>
|
7 |
+
<fieldset>
|
8 |
+
|
9 |
+
<input type="hidden" name="settings_section" value="general" />
|
10 |
+
|
11 |
+
<div class="greeting-box complete">
|
12 |
+
<?php if ($_GET['settings-updated']): ?>
|
13 |
+
|
14 |
+
<div class="main-message"><?php _e('Congratulations!', 'ecwid-shopping-cart'); ?></div>
|
15 |
+
<div class="secondary-message"?><?php _e('Your Ecwid store is now connected to your WordPress website.', 'ecwid-shopping-cart'); ?></div>
|
16 |
+
|
17 |
+
<?php else: ?>
|
18 |
+
|
19 |
+
<div class="main-message"><?php _e('Greetings!', 'ecwid-shopping-cart'); ?></div>
|
20 |
+
<div class="secondary-message"?><?php _e('Your Ecwid store is connected to your WordPress website.', 'ecwid-shopping-cart'); ?></div>
|
21 |
+
<?php endif; ?>
|
22 |
+
<img class="greeting-image" src="<?php echo(esc_attr(ECWID_PLUGIN_URL)); ?>/images/store_ready.png" width="142" />
|
23 |
+
</div>
|
24 |
+
<hr />
|
25 |
+
<div class="section">
|
26 |
+
<div class="left">
|
27 |
+
<span class="main-info">
|
28 |
+
<?php _e('Store ID', 'ecwid-shopping-cart'); ?>: <strong><? echo esc_attr(get_ecwid_store_id()); ?></strong>
|
29 |
+
</span>
|
30 |
+
</div>
|
31 |
+
<div class="right"">
|
32 |
+
<a class="pure-button" target="_blank" href="https://my.ecwid.com/cp/?source=wporg#t1=&t2=Dashboard">
|
33 |
+
<?php _e('Control panel', 'ecwid-shopping-cart'); ?>
|
34 |
+
</a>
|
35 |
+
<a class="pure-button" target="_blank" href="<?php echo esc_attr(get_page_link(get_option('ecwid_store_page_id'))); ?>">
|
36 |
+
<?php _e('Visit storefront', 'ecwid-shopping-cart'); ?>
|
37 |
+
</a>
|
38 |
+
</div>
|
39 |
+
</div>
|
40 |
+
|
41 |
+
<div class="section">
|
42 |
+
<div class="left">
|
43 |
+
<span class="main-info">
|
44 |
+
<?php _e('Account status', 'ecwid-shopping-cart'); ?>:
|
45 |
+
<strong>
|
46 |
+
<?php
|
47 |
+
if (ecwid_is_paid_account()) {
|
48 |
+
_e('Paid', 'ecwid-shopping-cart');
|
49 |
+
} else {
|
50 |
+
_e('Free', 'ecwid-shopping-cart');
|
51 |
+
}
|
52 |
+
?>
|
53 |
+
</strong>
|
54 |
+
</span>
|
55 |
+
<div class="secondary-info">
|
56 |
+
<?php
|
57 |
+
if (ecwid_is_paid_account())
|
58 |
+
_e('Thank you for supporting Ecwid!', 'ecwid-shopping-cart');
|
59 |
+
else
|
60 |
+
_e('Upgrade to get access to cool premium features.', 'ecwid-shopping-cart');
|
61 |
+
?>
|
62 |
+
</div>
|
63 |
+
</div>
|
64 |
+
|
65 |
+
<div class="right">
|
66 |
+
<?php if (ecwid_is_api_enabled()): ?>
|
67 |
+
<a class="pure-button" target="_blank" href="https://my.ecwid.com/cp/CP.html#profile=Billing&t2=My_Profile">
|
68 |
+
<?php _e('Billing and plans', 'ecwid-shopping-cart'); ?>
|
69 |
+
</a>
|
70 |
+
<?php else: ?>
|
71 |
+
<a class="<?php echo ECWID_MAIN_BUTTON_CLASS; ?>" target="_blank" href="http://www.ecwid.com/plans-and-pricing.html">
|
72 |
+
<?php _e('Upgrade', 'ecwid-shopping-cart'); ?>
|
73 |
+
</a>
|
74 |
+
<?php endif; ?>
|
75 |
+
</div>
|
76 |
+
</div>
|
77 |
+
|
78 |
+
<div class="note grayed-links">
|
79 |
+
<?php
|
80 |
+
echo sprintf(
|
81 |
+
__('If you want to connect another Ecwid store, you can <a %s>disconnect the current one and change Store ID</a>.', 'ecwid-shopping-cart'),
|
82 |
+
'href="#" onClick="javascript:document.forms[\'settings\'].submit(); return false;"'
|
83 |
+
);
|
84 |
+
?>
|
85 |
+
|
86 |
+
</div>
|
87 |
+
|
88 |
+
<hr />
|
89 |
+
<p><?php _e('Questions? Visit <a href="http://help.ecwid.com/?source=wporg">Ecwid support center</a>.', 'ecwid-shopping-cart'); ?></p>
|
90 |
+
</fieldset>
|
91 |
+
</form>
|
92 |
</div>
|