Ecwid Ecommerce Shopping Cart - Version 2.7.3

Version Description

  • Several bug fixes and minor improvements for the new "Add Store" button in WordPress Editor
Download this release

Release Info

Developer Ecwid
Plugin Icon 128x128 Ecwid Ecommerce Shopping Cart
Version 2.7.3
Comparing to
See all releases

Code changes from version 2.7.2 to 2.7.3

css/themes/2015.css CHANGED
@@ -1,12 +1,12 @@
1
- html#ecwid_html body#ecwid_body .ecwid-SearchPanel-field {
2
- width: inherit;
3
- }
4
-
5
- html#ecwid_html body#ecwid_body p+.ecwid-shopping-cart-search {
6
- position: relative;
7
- top: -1.6842em;
8
- }
9
-
10
- html#ecwid_html body.ecwid-shopping-cart h1.entry-title {
11
- margin-bottom: 1.1em;
12
  }
1
+ html#ecwid_html body#ecwid_body .ecwid-SearchPanel-field {
2
+ width: inherit;
3
+ }
4
+
5
+ html#ecwid_html body#ecwid_body p+.ecwid-shopping-cart-search {
6
+ position: relative;
7
+ top: -1.6842em;
8
+ }
9
+
10
+ html#ecwid_html body.ecwid-shopping-cart h1.entry-title {
11
+ margin-bottom: 1.1em;
12
  }
ecwid-shopping-cart.php CHANGED
@@ -5,7 +5,7 @@ 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.7.2
9
  Author URI: http://www.ecwid.com?source=wporg
10
  */
11
 
@@ -669,10 +669,10 @@ function ecwid_content_started($content)
669
 
670
  function ecwid_wrap_shortcode_content($content, $name)
671
  {
672
- return "<!-- Ecwid shopping cart plugin v 2.7.2 -->"
673
  . ecwid_get_scriptjs_code()
674
  . "<div class=\"ecwid-shopping-cart-$name\">$content</div>"
675
- . "<!-- END Ecwid Shopping Cart v 2.7.2 -->";
676
  }
677
 
678
  function ecwid_get_scriptjs_code($force_lang = null) {
@@ -1093,6 +1093,7 @@ EOT;
1093
  wp_update_post( $my_post );
1094
 
1095
  } else {
 
1096
  $my_post['post_title'] = __('Store', 'ecwid-shopping-cart');
1097
  $my_post['post_content'] = $content;
1098
  $my_post['post_status'] = 'publish';
@@ -1824,6 +1825,7 @@ class EcwidStoreLinkWidget extends WP_Widget {
1824
 
1825
  }
1826
 
 
1827
  function ecwid_send_stats()
1828
  {
1829
  $storeid = get_ecwid_store_id();
@@ -1883,7 +1885,8 @@ function ecwid_gather_stats()
1883
  'google_xml_sitemaps_used',
1884
  'ecwid_product_advisor_used',
1885
  'ecwid_single_product_used',
1886
- 'ecwid_store_shortcode_used'
 
1887
  );
1888
 
1889
  $usage_stats = ecwid_gather_usage_stats();
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.7.3
9
  Author URI: http://www.ecwid.com?source=wporg
10
  */
11
 
669
 
670
  function ecwid_wrap_shortcode_content($content, $name)
671
  {
672
+ return "<!-- Ecwid shopping cart plugin v 2.7.3 -->"
673
  . ecwid_get_scriptjs_code()
674
  . "<div class=\"ecwid-shopping-cart-$name\">$content</div>"
675
+ . "<!-- END Ecwid Shopping Cart v 2.7.3 -->";
676
  }
677
 
678
  function ecwid_get_scriptjs_code($force_lang = null) {
1093
  wp_update_post( $my_post );
1094
 
1095
  } else {
1096
+ ecwid_load_textdomain();
1097
  $my_post['post_title'] = __('Store', 'ecwid-shopping-cart');
1098
  $my_post['post_content'] = $content;
1099
  $my_post['post_status'] = 'publish';
1825
 
1826
  }
1827
 
1828
+
1829
  function ecwid_send_stats()
1830
  {
1831
  $storeid = get_ecwid_store_id();
1885
  'google_xml_sitemaps_used',
1886
  'ecwid_product_advisor_used',
1887
  'ecwid_single_product_used',
1888
+ 'ecwid_store_shortcode_used',
1889
+ 'store_link_widget'
1890
  );
1891
 
1892
  $usage_stats = ecwid_gather_usage_stats();
includes/class-ecwid-message-manager.php CHANGED
@@ -128,7 +128,7 @@ class Ecwid_Message_Manager
128
 
129
  if ($name == 'on_storeid_set') {
130
  $params['primary_url'] = ecwid_get_store_page_url();
131
- $params['secondary_url'] = 'post.php?post=' . ecwid_get_current_store_page_id() . '&action=edit';
132
  }
133
 
134
  if ($name == 'on_appearance_widgets') {
128
 
129
  if ($name == 'on_storeid_set') {
130
  $params['primary_url'] = ecwid_get_store_page_url();
131
+ $params['secondary_url'] = 'post.php?post=' . ecwid_get_current_store_page_id() . '&action=edit&show-ecwid=true';
132
  }
133
 
134
  if ($name == 'on_appearance_widgets') {
includes/themes.php CHANGED
@@ -1,53 +1,53 @@
1
- <?php
2
-
3
- define( 'ECWID_THEMES_DIR', ECWID_PLUGIN_DIR . '/includes/themes' );
4
-
5
- add_action('after_switch_theme', 'ecwid_after_switch_theme');
6
-
7
- function ecwid_get_theme_name()
8
- {
9
- $version = get_bloginfo('version');
10
-
11
- if (version_compare( $version, '3.4' ) < 0) {
12
- $theme_name = get_template();
13
- } else {
14
- $theme = wp_get_theme();
15
- $theme_name = $theme->template;
16
- }
17
-
18
- return $theme_name;
19
- }
20
-
21
- function ecwid_apply_theme($theme_name = null)
22
- {
23
- $themes = array('bretheon', 'responsive', 'twentyfourteen', 'pagelines', 'envision', 'twentyfifteen');
24
-
25
- if (empty($theme_name)) {
26
- $theme_name = ecwid_get_theme_name();
27
- }
28
-
29
- $theme_file = '';
30
-
31
- if (in_array($theme_name, $themes)) {
32
-
33
- $theme_file = ECWID_THEMES_DIR . '/class-ecwid-theme-' . $theme_name . '.php';
34
- }
35
-
36
- $theme_file = apply_filters( 'ecwid_get_theme_file', $theme_file );
37
-
38
- if ( !empty( $theme_file ) && is_file( $theme_file ) && is_readable( $theme_file ) ) {
39
- require_once( $theme_file );
40
- }
41
- }
42
-
43
- function ecwid_after_switch_theme()
44
- {
45
- ecwid_apply_theme();
46
-
47
- global $ecwid_current_theme;
48
-
49
- update_option(
50
- 'ecwid_advanced_theme_layout',
51
- isset($ecwid_current_theme) && $ecwid_current_theme->has_advanced_layout ? 'Y' : 'N'
52
- );
53
  }
1
+ <?php
2
+
3
+ define( 'ECWID_THEMES_DIR', ECWID_PLUGIN_DIR . '/includes/themes' );
4
+
5
+ add_action('after_switch_theme', 'ecwid_after_switch_theme');
6
+
7
+ function ecwid_get_theme_name()
8
+ {
9
+ $version = get_bloginfo('version');
10
+
11
+ if (version_compare( $version, '3.4' ) < 0) {
12
+ $theme_name = get_template();
13
+ } else {
14
+ $theme = wp_get_theme();
15
+ $theme_name = $theme->template;
16
+ }
17
+
18
+ return $theme_name;
19
+ }
20
+
21
+ function ecwid_apply_theme($theme_name = null)
22
+ {
23
+ $themes = array('bretheon', 'responsive', 'twentyfourteen', 'pagelines', 'envision', 'twentyfifteen');
24
+
25
+ if (empty($theme_name)) {
26
+ $theme_name = ecwid_get_theme_name();
27
+ }
28
+
29
+ $theme_file = '';
30
+
31
+ if (in_array($theme_name, $themes)) {
32
+
33
+ $theme_file = ECWID_THEMES_DIR . '/class-ecwid-theme-' . $theme_name . '.php';
34
+ }
35
+
36
+ $theme_file = apply_filters( 'ecwid_get_theme_file', $theme_file );
37
+
38
+ if ( !empty( $theme_file ) && is_file( $theme_file ) && is_readable( $theme_file ) ) {
39
+ require_once( $theme_file );
40
+ }
41
+ }
42
+
43
+ function ecwid_after_switch_theme()
44
+ {
45
+ ecwid_apply_theme();
46
+
47
+ global $ecwid_current_theme;
48
+
49
+ update_option(
50
+ 'ecwid_advanced_theme_layout',
51
+ isset($ecwid_current_theme) && $ecwid_current_theme->has_advanced_layout ? 'Y' : 'N'
52
+ );
53
  }
includes/themes/class-ecwid-theme-twentyfifteen.php CHANGED
@@ -1,43 +1,43 @@
1
- <?php
2
-
3
- require_once ECWID_THEMES_DIR . '/class-ecwid-theme-base.php';
4
-
5
- class Ecwid_Theme_2015 extends Ecwid_Theme_Base
6
- {
7
- protected $name = 'Twenty Fifteen';
8
-
9
- public function __construct()
10
- {
11
- parent::__construct();
12
-
13
- if (ecwid_page_has_productbrowser()) {
14
- wp_enqueue_style( 'ecwid-theme', plugins_url( 'ecwid-shopping-cart/css/themes/2015.css' ), array('twentyfifteen-style') );
15
- }
16
-
17
- add_action('ecwid_plugin_installed', array($this, 'on_ecwid_plugin_installed'));
18
- }
19
-
20
- public function on_ecwid_plugin_installed()
21
- {
22
- $widgets = get_option('sidebars_widgets');
23
-
24
- if (strpos(implode(' ', $widgets['sidebar-1']), 'ecwidstorelink') === false) {
25
- array_unshift($widgets['sidebar-1'], 'ecwidstorelink-2');
26
- wp_set_sidebars_widgets($widgets);
27
-
28
- $options = get_option('widget_ecwidstorelink');
29
- if (!$options) {
30
- $options = array(
31
- 2 => array(
32
- 'label' => __('Shop', 'ecwid-shopping-cart')
33
- ),
34
- '_multiwidget' => 1
35
- );
36
- }
37
-
38
- update_option('widget_ecwidstorelink', $options);
39
- }
40
- }
41
- }
42
-
43
  $ecwid_current_theme = new Ecwid_Theme_2015();
1
+ <?php
2
+
3
+ require_once ECWID_THEMES_DIR . '/class-ecwid-theme-base.php';
4
+
5
+ class Ecwid_Theme_2015 extends Ecwid_Theme_Base
6
+ {
7
+ protected $name = 'Twenty Fifteen';
8
+
9
+ public function __construct()
10
+ {
11
+ parent::__construct();
12
+
13
+ if (ecwid_page_has_productbrowser()) {
14
+ wp_enqueue_style( 'ecwid-theme', plugins_url( 'ecwid-shopping-cart/css/themes/2015.css' ), array('twentyfifteen-style') );
15
+ }
16
+
17
+ add_action('ecwid_plugin_installed', array($this, 'on_ecwid_plugin_installed'));
18
+ }
19
+
20
+ public function on_ecwid_plugin_installed()
21
+ {
22
+ $widgets = get_option('sidebars_widgets');
23
+
24
+ if (strpos(implode(' ', $widgets['sidebar-1']), 'ecwidstorelink') === false) {
25
+ array_unshift($widgets['sidebar-1'], 'ecwidstorelink-2');
26
+ wp_set_sidebars_widgets($widgets);
27
+
28
+ $options = get_option('widget_ecwidstorelink');
29
+ if (!$options) {
30
+ $options = array(
31
+ 2 => array(
32
+ 'label' => __('Shop', 'ecwid-shopping-cart')
33
+ ),
34
+ '_multiwidget' => 1
35
+ );
36
+ }
37
+
38
+ update_option('widget_ecwidstorelink', $options);
39
+ }
40
+ }
41
+ }
42
+
43
  $ecwid_current_theme = new Ecwid_Theme_2015();
js/admin.js CHANGED
@@ -1,29 +1,29 @@
1
- jQuery(document).ready(function() {
2
- jQuery('#hide-vote-message').click(function() {
3
- jQuery('#hide-vote-message').addClass('hiding');
4
- jQuery.getJSON(
5
- 'admin-ajax.php',
6
- { action:'ecwid_hide_vote_message' },
7
- function(data) {
8
- jQuery('#hide-vote-message').removeClass('hiding')
9
- .closest('div.update-nag, div.updated.fade').fadeOut();
10
- }
11
- );
12
- });
13
-
14
- jQuery('a.ecwid-message-hide').click(function() {
15
-
16
- var a = this;
17
- jQuery(a).css('cursor', 'wait');
18
- jQuery.getJSON(
19
- 'admin-ajax.php',
20
- {
21
- action: 'ecwid_hide_message',
22
- message: a.name
23
- },
24
- function(data) {
25
- jQuery(a).closest('.ecwid-message').fadeOut();
26
- }
27
- );
28
- });
29
- });
1
+ jQuery(document).ready(function() {
2
+ jQuery('#hide-vote-message').click(function() {
3
+ jQuery('#hide-vote-message').addClass('hiding');
4
+ jQuery.getJSON(
5
+ 'admin-ajax.php',
6
+ { action:'ecwid_hide_vote_message' },
7
+ function(data) {
8
+ jQuery('#hide-vote-message').removeClass('hiding')
9
+ .closest('div.update-nag, div.updated.fade').fadeOut();
10
+ }
11
+ );
12
+ });
13
+
14
+ jQuery('a.ecwid-message-hide').click(function() {
15
+
16
+ var a = this;
17
+ jQuery(a).css('cursor', 'wait');
18
+ jQuery.getJSON(
19
+ 'admin-ajax.php',
20
+ {
21
+ action: 'ecwid_hide_message',
22
+ message: a.name
23
+ },
24
+ function(data) {
25
+ jQuery(a).closest('.ecwid-message').fadeOut();
26
+ }
27
+ );
28
+ });
29
+ });
js/create_scroller.js CHANGED
@@ -1,5 +1,5 @@
1
- jQuery(document).ready(function() {
2
- if (jQuery('#ecwid_product_browser_scroller').length == 0) {
3
- jQuery('div[id^="ecwid-store-"]').before('<div id="ecwid_product_browser_scroller" class="ecwid-scroller-adjustment"></div>');
4
- }
5
  });
1
+ jQuery(document).ready(function() {
2
+ if (jQuery('#ecwid_product_browser_scroller').length == 0) {
3
+ jQuery('div[id^="ecwid-store-"]').before('<div id="ecwid_product_browser_scroller" class="ecwid-scroller-adjustment"></div>');
4
+ }
5
  });
js/store-editor-common.js CHANGED
@@ -1,6 +1,7 @@
1
  function ecwid_get_store_shortcode(content) {
2
  var found = false;
3
  var index = 0;
 
4
  while (found = wp.shortcode.next('ecwid', content, index)) {
5
 
6
  if (found && (!found.shortcode.attrs.named.widgets || found.shortcode.attrs.named.widgets.toLowerCase().indexOf('productbrowser') != -1)) {
@@ -13,5 +14,12 @@ function ecwid_get_store_shortcode(content) {
13
  found = false;
14
  }
15
 
 
 
 
 
 
 
 
16
  return found;
17
  }
1
  function ecwid_get_store_shortcode(content) {
2
  var found = false;
3
  var index = 0;
4
+
5
  while (found = wp.shortcode.next('ecwid', content, index)) {
6
 
7
  if (found && (!found.shortcode.attrs.named.widgets || found.shortcode.attrs.named.widgets.toLowerCase().indexOf('productbrowser') != -1)) {
14
  found = false;
15
  }
16
 
17
+ // Workaround for the caching bug that does allow to have properly parsed attributes
18
+ if (found) {
19
+ var tmpfound = wp.shortcode.next('ecwid', found.content.replace('[ecwid', '[ecwid timestamp="' + (new Date()).getMilliseconds() + '"'));
20
+ found.shortcode.attrs = tmpfound.shortcode.attrs;
21
+ delete found.shortcode.attrs.named.timestamp;
22
+ }
23
+
24
  return found;
25
  }
js/store-editor-mce.js CHANGED
@@ -421,6 +421,12 @@ tinymce.PluginManager.add( 'ecwid', function( editor ) {
421
  toolbarActive = true;
422
  }
423
 
 
 
 
 
 
 
424
  function removeToolbar(parentNode) {
425
 
426
  if (parentNode && editor.dom.getAttrib( parentNode, 'class') == 'ecwid-store-editor' ) {
@@ -549,15 +555,7 @@ tinymce.PluginManager.add( 'ecwid', function( editor ) {
549
  }
550
  });
551
 
552
- /*
553
- editor.onCut.add( function() {
554
- removeToolbar();
555
-
556
- editor.dom.remove(editor.dom.select('#ecwid-edit-store-button'));
557
- });
558
- */
559
-
560
- // Replace Read More/Next Page tags with images
561
  editor.onBeforeSetContent.add( function( editor, e ) {
562
  if ( e.content ) {
563
 
@@ -580,7 +578,7 @@ tinymce.PluginManager.add( 'ecwid', function( editor ) {
580
 
581
  return e.content = e.content.replace( /(<img [^>]*data-ecwid-shortcode=[^>]+>)/g, function( match, image ) {
582
 
583
- var data = window.decodeURIComponent($(image).attr('data-ecwid-shortcode'));
584
 
585
  if ( data ) {
586
  return data;
421
  toolbarActive = true;
422
  }
423
 
424
+ this.addToolbar = function() {
425
+ addToolbar(
426
+ jQuery(editor.dom.doc.body).find('.ecwid-store-editor').get(0)
427
+ );
428
+ }
429
+
430
  function removeToolbar(parentNode) {
431
 
432
  if (parentNode && editor.dom.getAttrib( parentNode, 'class') == 'ecwid-store-editor' ) {
555
  }
556
  });
557
 
558
+ // Replace Read More/Next Page tags with images
 
 
 
 
 
 
 
 
559
  editor.onBeforeSetContent.add( function( editor, e ) {
560
  if ( e.content ) {
561
 
578
 
579
  return e.content = e.content.replace( /(<img [^>]*data-ecwid-shortcode=[^>]+>)/g, function( match, image ) {
580
 
581
+ var data = window.decodeURIComponent(jQuery(image).attr('data-ecwid-shortcode'));
582
 
583
  if ( data ) {
584
  return data;
js/store-editor-page.js CHANGED
@@ -1,17 +1,15 @@
1
  jQuery(document).ready(function() {
2
- $ = jQuery;
3
-
4
- $popup = $('#ecwid-store-popup-content');
5
 
6
  /*
7
  * Media buttons handlers
8
  */
9
- $('#update-ecwid-button,#insert-ecwid-button').click(ecwid_open_store_popup);
10
 
11
  /*
12
  * Close button handler
13
  */
14
- $('.media-modal-close', $popup).click(function() {
15
  $popup.removeClass('open');
16
  return false;
17
  });
@@ -26,13 +24,13 @@ jQuery(document).ready(function() {
26
  buildParams = function(shortcode) {
27
  if (!shortcode) return {};
28
 
29
- var attributes = $.extend({}, shortcode.shortcode.attrs.named);
30
 
31
- if ($.inArray(attributes.category_view, ['grid', 'list', 'table']) == -1) {
32
  attributes.category_view = undefined;
33
  }
34
 
35
- if (!$.inArray(attributes.search_view, ['grid', 'list', 'table']) == -1) {
36
  attributes.search_view = undefined;
37
  }
38
 
@@ -40,7 +38,7 @@ jQuery(document).ready(function() {
40
  attributes.grid = '3,3';
41
  }
42
 
43
- var grid = attributes.grid.match(/^(\d+),(\d+)$/);
44
  attributes.grid_rows = grid[1];
45
  attributes.grid_columns = grid[2];
46
 
@@ -54,9 +52,9 @@ jQuery(document).ready(function() {
54
  var widgets = attributes.widgets.split(/[^a-z^A-Z^0-9^-^_]/);
55
 
56
  return {
57
- 'show_search': $.inArray('search', widgets) != -1,
58
- 'show_categories': $.inArray('categories', widgets) != -1,
59
- 'show_minicart': $.inArray('minicart', widgets) != -1,
60
  'categories_per_row': attributes.categories_per_row,
61
  'category_view': attributes.category_view,
62
  'search_view': attributes.search_view,
@@ -100,15 +98,15 @@ jQuery(document).ready(function() {
100
  if (tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden()) {
101
  content = tinyMCE.activeEditor.getBody();
102
 
103
- hasEcwid = $(content).find('.ecwid-store-editor').length > 0;
104
  } else {
105
  hasEcwid = ecwid_get_store_shortcode(jQuery('#content').val());
106
  }
107
 
108
  if (hasEcwid) {
109
- $('.wp-media-buttons').addClass('has-ecwid');
110
  } else {
111
- $('.wp-media-buttons').removeClass('has-ecwid');
112
  }
113
 
114
  if (tinymce.activeEditor && !tinymce.activeEditor.isHidden()) {
@@ -116,7 +114,7 @@ jQuery(document).ready(function() {
116
  var button = tinymce.activeEditor.dom.select('#ecwid-edit-store-button');
117
 
118
  if (hasEcwid && button.length == 0) {
119
- var button = $('<input type="button" id="ecwid-edit-store-button" contenteditable="false" data-mce-bogus="true" value="' + ecwid_i18n.edit_store_appearance + '" />')
120
  .appendTo(body);
121
 
122
  button.click(ecwid_open_store_popup);
@@ -125,8 +123,8 @@ jQuery(document).ready(function() {
125
  }
126
 
127
  if (hasEcwid) {
128
- var store = $(body).find('.ecwid-store-editor');
129
- var button = $('#ecwid-edit-store-button', body);
130
  button.css({
131
  'position': 'absolute',
132
  'top': '' + (store.offset().top + 168) + 'px',
@@ -136,45 +134,55 @@ jQuery(document).ready(function() {
136
 
137
  jQuery('#wp_editbtns').css('display', 'none !important');
138
  }
 
 
 
 
 
 
 
 
 
 
139
  }
140
 
141
  setInterval(checkEcwid, 1000);
142
 
143
- $('#content-tmce').click(function() {
144
  checkEcwid()
145
  });
146
  /*
147
  * Handles media modal menus
148
  */
149
- $('.media-menu-item', $popup).click(function() {
150
- $('.media-menu .media-menu-item', $popup).removeClass('active');
151
- $(this).addClass('active');
152
 
153
- $('.media-modal-content', $popup).attr('data-active-dialog', $(this).attr('data-content'));
154
- $('.media-menu').removeClass('visible');
155
  return false;
156
  });
157
 
158
- $('h1', $popup).click(function() {
159
- $('.media-menu').toggleClass('visible');
160
  })
161
 
162
  /*
163
  * Main button click
164
  */
165
- $('.button-primary', $popup).click(function() {
166
 
167
  var result = {}, defaults = getDefaultParams();
168
 
169
  result.widgets = 'productbrowser';
170
  for (var i in {search:1, categories:1, minicart:1}) {
171
- if ($('input[name=show_' + i + ']').prop('checked')) {
172
  result.widgets += ' ' + i;
173
  }
174
  }
175
 
176
  getNumber = function(name, fallback) {
177
- var value = parseInt($('[name=' + name + ']', $popup).val());
178
 
179
  if (isNaN(value) || value < 0) {
180
  value = fallback;
@@ -184,9 +192,9 @@ jQuery(document).ready(function() {
184
  }
185
 
186
  getString = function(name, values, fallback) {
187
- var value = $('[name=' + name + ']', $popup).val();
188
 
189
- if ($.inArray(value, values) == -1) {
190
  value = fallback;
191
  }
192
 
@@ -218,11 +226,11 @@ jQuery(document).ready(function() {
218
  }
219
 
220
  if (existingShortcode) {
221
- $('#content').val(
222
- $('#content').val().replace(existingShortcode.content, shortcode.shortcode.string())
223
  );
224
  if (tinyMCE.activeEditor) {
225
- $(tinymce.activeEditor.getBody()).find('.ecwid-store-editor').attr('data-ecwid-shortcode', shortcode.shortcode.string());
226
  }
227
  } else {
228
 
@@ -245,7 +253,7 @@ jQuery(document).ready(function() {
245
  return pos;
246
  }
247
 
248
- var el = $('#content');
249
  var cursorPosition = getCursorPosition(el.get(0));
250
 
251
  el.val(el.val().substr(0, cursorPosition) + shortcode.shortcode.string() + el.val().substr(cursorPosition));
@@ -254,31 +262,31 @@ jQuery(document).ready(function() {
254
  }
255
 
256
 
257
- $('#ecwid-store-popup-content').removeClass('open');
258
  });
259
 
260
  updatePreview = function() {
261
- $('.store-settings input[type=checkbox]', $popup).each(function(idx, el) {
262
- var widget = $(el).parent().attr('data-ecwid-widget');
263
- var preview = $('.store-settings-preview svg path.' + widget, $popup);
264
- if ($(el).prop('checked')) {
265
- $('.store-settings-wrapper').addClass('ecwid-' + widget);
266
  } else {
267
- $('.store-settings-wrapper').removeClass('ecwid-' + widget);
268
  }
269
  });
270
  }
271
 
272
- $('.store-settings-wrapper label', $popup).hover(
273
  function() {
274
- $('.store-settings-wrapper').attr('data-ecwid-widget-hover', $(this).attr('data-ecwid-widget'));
275
  },
276
  function() {
277
- $('.store-settings-wrapper').attr('data-ecwid-widget-hover', '');
278
  }
279
  );
280
 
281
- $('.store-settings input[type=checkbox]', $popup).change(updatePreview);
282
  });
283
 
284
  ecwid_open_store_popup = function() {
@@ -288,7 +296,7 @@ ecwid_open_store_popup = function() {
288
  if (tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden()) {
289
  tinyMCE.activeEditor.save();
290
 
291
- var content = $(tinyMCE.activeEditor.getBody())
292
  .find('.ecwid-store-editor')
293
  .attr('data-ecwid-shortcode');
294
 
@@ -300,10 +308,10 @@ ecwid_open_store_popup = function() {
300
  $popup.addClass('open');
301
 
302
  params = {};
303
- $.extend(params, getDefaultParams(), buildParams(shortcode));
304
 
305
  for (var i in params) {
306
- var el = $('[name=' + i + ']', $popup);
307
  if (el.attr('type') == 'checkbox') {
308
  el.prop('checked', params[i]);
309
  } else {
@@ -315,9 +323,9 @@ ecwid_open_store_popup = function() {
315
  // in other words, mode = [add-store,store-settings] and active dialog is [add-store|store-settings, appearance]
316
  // buttons and menu items are for mode, current title and content are for dialog
317
  var current = !shortcode ? 'add-store' : 'store-settings';
318
- $('.media-modal-content', $popup).attr('data-mode', current);
319
- $('.media-modal-content', $popup).attr('data-active-dialog', current);
320
- $('.media-menu-item')
321
  .removeClass('active')
322
  .filter('[data-content=' + current + ']').addClass('active');
323
 
@@ -325,7 +333,7 @@ ecwid_open_store_popup = function() {
325
  updatePreview();
326
 
327
 
328
- if (tinyMCE.activeEditor) {
329
  tinyMCE.activeEditor.execCommand('SelectAll');
330
  tinyMCE.activeEditor.selection.collapse();
331
  }
1
  jQuery(document).ready(function() {
2
+ $popup = jQuery('#ecwid-store-popup-content');
 
 
3
 
4
  /*
5
  * Media buttons handlers
6
  */
7
+ jQuery('#update-ecwid-button,#insert-ecwid-button').click(ecwid_open_store_popup);
8
 
9
  /*
10
  * Close button handler
11
  */
12
+ jQuery('.media-modal-close', $popup).click(function() {
13
  $popup.removeClass('open');
14
  return false;
15
  });
24
  buildParams = function(shortcode) {
25
  if (!shortcode) return {};
26
 
27
+ var attributes = jQuery.extend({}, shortcode.shortcode.attrs.named);
28
 
29
+ if (jQuery.inArray(attributes.category_view, ['grid', 'list', 'table']) == -1) {
30
  attributes.category_view = undefined;
31
  }
32
 
33
+ if (!jQuery.inArray(attributes.search_view, ['grid', 'list', 'table']) == -1) {
34
  attributes.search_view = undefined;
35
  }
36
 
38
  attributes.grid = '3,3';
39
  }
40
 
41
+ var grid = attributes.grid.match(/^(\d+),(\d+)/);
42
  attributes.grid_rows = grid[1];
43
  attributes.grid_columns = grid[2];
44
 
52
  var widgets = attributes.widgets.split(/[^a-z^A-Z^0-9^-^_]/);
53
 
54
  return {
55
+ 'show_search': jQuery.inArray('search', widgets) != -1,
56
+ 'show_categories': jQuery.inArray('categories', widgets) != -1,
57
+ 'show_minicart': jQuery.inArray('minicart', widgets) != -1,
58
  'categories_per_row': attributes.categories_per_row,
59
  'category_view': attributes.category_view,
60
  'search_view': attributes.search_view,
98
  if (tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden()) {
99
  content = tinyMCE.activeEditor.getBody();
100
 
101
+ hasEcwid = jQuery(content).find('.ecwid-store-editor').length > 0;
102
  } else {
103
  hasEcwid = ecwid_get_store_shortcode(jQuery('#content').val());
104
  }
105
 
106
  if (hasEcwid) {
107
+ jQuery('.wp-media-buttons').addClass('has-ecwid');
108
  } else {
109
+ jQuery('.wp-media-buttons').removeClass('has-ecwid');
110
  }
111
 
112
  if (tinymce.activeEditor && !tinymce.activeEditor.isHidden()) {
114
  var button = tinymce.activeEditor.dom.select('#ecwid-edit-store-button');
115
 
116
  if (hasEcwid && button.length == 0) {
117
+ var button = jQuery('<input type="button" id="ecwid-edit-store-button" contenteditable="false" data-mce-bogus="true" value="' + ecwid_i18n.edit_store_appearance + '" />')
118
  .appendTo(body);
119
 
120
  button.click(ecwid_open_store_popup);
123
  }
124
 
125
  if (hasEcwid) {
126
+ var store = jQuery(body).find('.ecwid-store-editor');
127
+ var button = jQuery('#ecwid-edit-store-button', body);
128
  button.css({
129
  'position': 'absolute',
130
  'top': '' + (store.offset().top + 168) + 'px',
134
 
135
  jQuery('#wp_editbtns').css('display', 'none !important');
136
  }
137
+
138
+
139
+ if (window.location.search.indexOf('show-ecwid=true') != -1 && typeof this.show_ecwid_processed == 'undefined') {
140
+ ecwid_open_store_popup();
141
+ this.show_ecwid_processed = true;
142
+
143
+ if (tinymce.activeEditor) {
144
+ tinymce.activeEditor.plugins.ecwid.addToolbar();
145
+ }
146
+ }
147
  }
148
 
149
  setInterval(checkEcwid, 1000);
150
 
151
+ jQuery('#content-tmce').click(function() {
152
  checkEcwid()
153
  });
154
  /*
155
  * Handles media modal menus
156
  */
157
+ jQuery('.media-menu-item', $popup).click(function() {
158
+ jQuery('.media-menu .media-menu-item', $popup).removeClass('active');
159
+ jQuery(this).addClass('active');
160
 
161
+ jQuery('.media-modal-content', $popup).attr('data-active-dialog', jQuery(this).attr('data-content'));
162
+ jQuery('.media-menu').removeClass('visible');
163
  return false;
164
  });
165
 
166
+ jQuery('h1', $popup).click(function() {
167
+ jQuery('.media-menu').toggleClass('visible');
168
  })
169
 
170
  /*
171
  * Main button click
172
  */
173
+ jQuery('.button-primary', $popup).click(function() {
174
 
175
  var result = {}, defaults = getDefaultParams();
176
 
177
  result.widgets = 'productbrowser';
178
  for (var i in {search:1, categories:1, minicart:1}) {
179
+ if (jQuery('input[name=show_' + i + ']').prop('checked')) {
180
  result.widgets += ' ' + i;
181
  }
182
  }
183
 
184
  getNumber = function(name, fallback) {
185
+ var value = parseInt(jQuery('[name=' + name + ']', $popup).val());
186
 
187
  if (isNaN(value) || value < 0) {
188
  value = fallback;
192
  }
193
 
194
  getString = function(name, values, fallback) {
195
+ var value = jQuery('[name=' + name + ']', $popup).val();
196
 
197
+ if (jQuery.inArray(value, values) == -1) {
198
  value = fallback;
199
  }
200
 
226
  }
227
 
228
  if (existingShortcode) {
229
+ jQuery('#content').val(
230
+ jQuery('#content').val().replace(existingShortcode.content, shortcode.shortcode.string())
231
  );
232
  if (tinyMCE.activeEditor) {
233
+ jQuery(tinymce.activeEditor.getBody()).find('.ecwid-store-editor').attr('data-ecwid-shortcode', shortcode.shortcode.string());
234
  }
235
  } else {
236
 
253
  return pos;
254
  }
255
 
256
+ var el = jQuery('#content');
257
  var cursorPosition = getCursorPosition(el.get(0));
258
 
259
  el.val(el.val().substr(0, cursorPosition) + shortcode.shortcode.string() + el.val().substr(cursorPosition));
262
  }
263
 
264
 
265
+ jQuery('#ecwid-store-popup-content').removeClass('open');
266
  });
267
 
268
  updatePreview = function() {
269
+ jQuery('.store-settings input[type=checkbox]', $popup).each(function(idx, el) {
270
+ var widget = jQuery(el).parent().attr('data-ecwid-widget');
271
+ var preview = jQuery('.store-settings-preview svg path.' + widget, $popup);
272
+ if (jQuery(el).prop('checked')) {
273
+ jQuery('.store-settings-wrapper').addClass('ecwid-' + widget);
274
  } else {
275
+ jQuery('.store-settings-wrapper').removeClass('ecwid-' + widget);
276
  }
277
  });
278
  }
279
 
280
+ jQuery('.store-settings-wrapper label', $popup).hover(
281
  function() {
282
+ jQuery('.store-settings-wrapper').attr('data-ecwid-widget-hover', jQuery(this).attr('data-ecwid-widget'));
283
  },
284
  function() {
285
+ jQuery('.store-settings-wrapper').attr('data-ecwid-widget-hover', '');
286
  }
287
  );
288
 
289
+ jQuery('.store-settings input[type=checkbox]', $popup).change(updatePreview);
290
  });
291
 
292
  ecwid_open_store_popup = function() {
296
  if (tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden()) {
297
  tinyMCE.activeEditor.save();
298
 
299
+ var content = jQuery(tinyMCE.activeEditor.getBody())
300
  .find('.ecwid-store-editor')
301
  .attr('data-ecwid-shortcode');
302
 
308
  $popup.addClass('open');
309
 
310
  params = {};
311
+ jQuery.extend(params, getDefaultParams(), buildParams(shortcode));
312
 
313
  for (var i in params) {
314
+ var el = jQuery('[name=' + i + ']', $popup);
315
  if (el.attr('type') == 'checkbox') {
316
  el.prop('checked', params[i]);
317
  } else {
323
  // in other words, mode = [add-store,store-settings] and active dialog is [add-store|store-settings, appearance]
324
  // buttons and menu items are for mode, current title and content are for dialog
325
  var current = !shortcode ? 'add-store' : 'store-settings';
326
+ jQuery('.media-modal-content', $popup).attr('data-mode', current);
327
+ jQuery('.media-modal-content', $popup).attr('data-active-dialog', current);
328
+ jQuery('.media-menu-item')
329
  .removeClass('active')
330
  .filter('[data-content=' + current + ']').addClass('active');
331
 
333
  updatePreview();
334
 
335
 
336
+ if (tinymce.activeEditor && !tinymce.activeEditor.isHidden()) {
337
  tinyMCE.activeEditor.execCommand('SelectAll');
338
  tinyMCE.activeEditor.selection.collapse();
339
  }
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: ecwid
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: 4.1
6
- Stable tag: 2.7.2
7
 
8
  Ecwid is a full-featured shopping cart that can be added to any Wordpress site in less than 5 minutes. Start using Ecwid for free today.
9
 
@@ -110,6 +110,9 @@ http://codex.wordpress.org/Managing_Plugins#Installing_Plugins
110
  * [Ecwid site](http://www.ecwid.com/?source=wporg-plugin-site "Ecwid Site")
111
 
112
  == Changelog ==
 
 
 
113
  = 2.7.2 =
114
  - **A new sidebar widget: Ecwid Store Page Link.** The widget adds your store page link to the site's sidebar. You may want to use it with blog-focused WordPress themes that don't have a navigation menu, e.g. the upcoming "Twenty Fifteen" theme. Also, you can consider adding the widget to your sidebar to make your store page more visible to your visitors.
115
  - **Wordpress 4.1 and Twenty Fifteen theme compatibility.** The new WordPress version is coming soon and bringing a brand new 'Twenty Fifteen' theme. Ecwid plugin is now totally ready for the upcoming changes and will work OK in the new environment. Feel free to upgrade your site to Wordpress 4.1 as soon as it's released.
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: 4.1
6
+ Stable tag: 2.7.3
7
 
8
  Ecwid is a full-featured shopping cart that can be added to any Wordpress site in less than 5 minutes. Start using Ecwid for free today.
9
 
110
  * [Ecwid site](http://www.ecwid.com/?source=wporg-plugin-site "Ecwid Site")
111
 
112
  == Changelog ==
113
+ = 2.7.3 =
114
+ - Several bug fixes and minor improvements for the new "Add Store" button in WordPress Editor
115
+
116
  = 2.7.2 =
117
  - **A new sidebar widget: Ecwid Store Page Link.** The widget adds your store page link to the site's sidebar. You may want to use it with blog-focused WordPress themes that don't have a navigation menu, e.g. the upcoming "Twenty Fifteen" theme. Also, you can consider adding the widget to your sidebar to make your store page more visible to your visitors.
118
  - **Wordpress 4.1 and Twenty Fifteen theme compatibility.** The new WordPress version is coming soon and bringing a brand new 'Twenty Fifteen' theme. Ecwid plugin is now totally ready for the upcoming changes and will work OK in the new environment. Feel free to upgrade your site to Wordpress 4.1 as soon as it's released.
templates/store-popup.php CHANGED
@@ -70,7 +70,7 @@
70
  <div class="note">
71
  <?php echo sprintf(
72
  __('Additionally, you can add store controls to your website\'s toolbar using <a %s>WordPress native widgets</a>', 'ecwid-shopping-cart'),
73
- 'href="widgets.php?from-ecwid=' . (isset($_GET['post']) ? $_GET['post'] : 'new') . '"'
74
  );
75
  ?>
76
  </div>
70
  <div class="note">
71
  <?php echo sprintf(
72
  __('Additionally, you can add store controls to your website\'s toolbar using <a %s>WordPress native widgets</a>', 'ecwid-shopping-cart'),
73
+ ' target="_blank" href="widgets.php?from-ecwid=' . (isset($_GET['post']) ? $_GET['post'] : 'new') . '"'
74
  );
75
  ?>
76
  </div>
templates/store-svg.php CHANGED
@@ -1,36 +1,36 @@
1
- <?php
2
- echo '<?xml version="1.0" encoding="utf-8"?>' . "\n";
3
- echo '<?xml-stylesheet type="text/css" href="http://fonts.googleapis.com/css?family=Open+Sans%3A300italic%2C400italic%2C600italic%2C300%2C400%2C600&subset=latin%2Clatin-ext&ver=3.9.2" ?>';
4
- echo '<?xml-stylesheet type="text/css" href="http://localhost/2.css" ?>';
5
- ?><!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
6
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
7
- <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
8
- viewBox="0 0 500 220" enable-background="new 0 0 500 220" xml:space="preserve">
9
-
10
- <text x="245" y="115" text-anchor="middle" fill="#050303" font-family="Open Sans,Helvetica Neue,sans-serif" font-size="20"><?php _e('Your store will be shown here!', 'ecwid-shopping-cart'); ?></text>
11
- <text x="245" y="137" text-anchor="middle" fill="#999999" font-family="Open Sans,Helvetica Neue,sans-serif" font-size="14">
12
- <?php if (get_ecwid_store_id() == ECWID_DEMO_STORE_ID): ?>
13
- <?php _e('Demo Store', 'ecwid-shopping-cart'); ?>
14
- <?php else: ?>
15
- <?php _e('Store ID', 'ecwid-shopping-cart'); ?>: <?php echo esc_attr(get_ecwid_store_id()); ?>
16
- <?php endif; ?>
17
- </text>
18
-
19
- <g>
20
- <path fill="#77B644" d="M225.7,82.3c0-0.4,0.3-0.8,0.8-0.8h41.1c0.4,0,0.8,0.3,0.8,0.8v1.6c0,0.4-0.3,0.8-0.8,0.8h-41.1
21
- c-0.4,0-0.8-0.3-0.8-0.8V82.3z"/>
22
- <path fill="#77B644" d="M268.4,56.6c-1.6-3.3-2.4-6.5-3.3-11.9c0-0.3-0.7-1.3-1.6-1.3h-33c-0.9,0-1.6,1-1.6,1.3
23
- c0,0-1.6,10.2-3.3,11.9c0,1.7,0,5,0,5s0,0.1,0.1,0.1h-0.1c0,0,0.1,0.8,1.2,1.3c0.1,0.1,0.3,0.2,0.5,0.2v0v14.9
24
- c0,0.9,0.9,1.5,1.8,1.5h13V66c0-0.9,0.9-1.6,1.8-1.6h6.6c0.9,0,1.6,0.7,1.6,1.6v13.7h13.1c0.9,0,1.6-0.6,1.6-1.5V63.3v-0.1
25
- c1.3-0.2,1.6-1.5,1.6-1.5h0c0-0.1,0-0.1,0-0.1S268.4,58.3,268.4,56.6z M238.5,73.1c0,0.9-0.4,1.6-1.3,1.6h-3.4
26
- c-0.9,0-1.3-0.7-1.3-1.6v-6.6c0-0.9,0.4-1.6,1.3-1.6h3.4c0.9,0,1.3,0.7,1.3,1.6V73.1z M261.5,73.1c0,0.9-0.4,1.6-1.3,1.6h-3.4
27
- c-0.9,0-1.3-0.7-1.3-1.6v-6.6c0-0.9,0.4-1.6,1.3-1.6h3.4c0.9,0,1.3,0.7,1.3,1.6V73.1z M261.8,46.4c0,0,1.8,8.4,2.8,10.2
28
- c-1.6,0-4.5,0-4.5,0l-1.6-10.2H261.8z M264.8,58.3l0,1.3c-0.2,1.1-1.1,2-2.3,2c-1.3,0-2.3-0.8-2.3-2.1c0,0,0.1-1.2,0.1-1.2H264.8z
29
- M252.3,59.1l0-0.9h4.7l0,1.3c-0.2,1.1-1.1,2-2.3,2c-1.3,0-2.3-1-2.3-2.3C252.4,59.2,252.4,59.2,252.3,59.1L252.3,59.1z
30
- M255.2,46.4c0,0,1.2,8.2,1.8,10.2c0.5,0-4.6,0-4.6,0l-0.5-10.2H255.2z M245.3,46.4h3.4l0.6,10.2h-4.5L245.3,46.4z M244.7,58.3h4.6
31
- l0,1.2c-0.1,1.2-1.1,2.1-2.3,2.1c-1.2,0-2.2-0.9-2.3-2.1L244.7,58.3z M238.7,46.4h3.3l-0.5,10.2c0,0-3.2,0-4.4,0
32
- C237.6,54.8,238.7,46.4,238.7,46.4z M236.9,58.3h4.6l0,0.9h0c0,0,0,0.1,0,0.1c0,1.3-1,2.3-2.3,2.3c-1.2,0-2.1-0.9-2.3-2L236.9,58.3
33
- z M232.1,46.4h3.2L234,56.6c0,0-3.3,0-4.5,0C230.8,54.3,232.1,46.4,232.1,46.4z M229.2,58.3h4.6c0,0,0,0.9,0,1c0,1.3-1,2.3-2.3,2.3
34
- c-1.1,0-2.1-0.8-2.3-1.9L229.2,58.3z"/>
35
- </g>
36
- </svg>
1
+ <?php
2
+ echo '<?xml version="1.0" encoding="utf-8"?>' . "\n";
3
+ echo '<?xml-stylesheet type="text/css" href="http://fonts.googleapis.com/css?family=Open+Sans%3A300italic%2C400italic%2C600italic%2C300%2C400%2C600&subset=latin%2Clatin-ext&ver=3.9.2" ?>';
4
+ echo '<?xml-stylesheet type="text/css" href="http://localhost/2.css" ?>';
5
+ ?><!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
6
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
7
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
8
+ viewBox="0 0 500 220" enable-background="new 0 0 500 220" xml:space="preserve">
9
+
10
+ <text x="245" y="115" text-anchor="middle" fill="#050303" font-family="Open Sans,Helvetica Neue,sans-serif" font-size="20"><?php _e('Your store will be shown here!', 'ecwid-shopping-cart'); ?></text>
11
+ <text x="245" y="137" text-anchor="middle" fill="#999999" font-family="Open Sans,Helvetica Neue,sans-serif" font-size="14">
12
+ <?php if (get_ecwid_store_id() == ECWID_DEMO_STORE_ID): ?>
13
+ <?php _e('Demo Store', 'ecwid-shopping-cart'); ?>
14
+ <?php else: ?>
15
+ <?php _e('Store ID', 'ecwid-shopping-cart'); ?>: <?php echo esc_attr(get_ecwid_store_id()); ?>
16
+ <?php endif; ?>
17
+ </text>
18
+
19
+ <g>
20
+ <path fill="#77B644" d="M225.7,82.3c0-0.4,0.3-0.8,0.8-0.8h41.1c0.4,0,0.8,0.3,0.8,0.8v1.6c0,0.4-0.3,0.8-0.8,0.8h-41.1
21
+ c-0.4,0-0.8-0.3-0.8-0.8V82.3z"/>
22
+ <path fill="#77B644" d="M268.4,56.6c-1.6-3.3-2.4-6.5-3.3-11.9c0-0.3-0.7-1.3-1.6-1.3h-33c-0.9,0-1.6,1-1.6,1.3
23
+ c0,0-1.6,10.2-3.3,11.9c0,1.7,0,5,0,5s0,0.1,0.1,0.1h-0.1c0,0,0.1,0.8,1.2,1.3c0.1,0.1,0.3,0.2,0.5,0.2v0v14.9
24
+ c0,0.9,0.9,1.5,1.8,1.5h13V66c0-0.9,0.9-1.6,1.8-1.6h6.6c0.9,0,1.6,0.7,1.6,1.6v13.7h13.1c0.9,0,1.6-0.6,1.6-1.5V63.3v-0.1
25
+ c1.3-0.2,1.6-1.5,1.6-1.5h0c0-0.1,0-0.1,0-0.1S268.4,58.3,268.4,56.6z M238.5,73.1c0,0.9-0.4,1.6-1.3,1.6h-3.4
26
+ c-0.9,0-1.3-0.7-1.3-1.6v-6.6c0-0.9,0.4-1.6,1.3-1.6h3.4c0.9,0,1.3,0.7,1.3,1.6V73.1z M261.5,73.1c0,0.9-0.4,1.6-1.3,1.6h-3.4
27
+ c-0.9,0-1.3-0.7-1.3-1.6v-6.6c0-0.9,0.4-1.6,1.3-1.6h3.4c0.9,0,1.3,0.7,1.3,1.6V73.1z M261.8,46.4c0,0,1.8,8.4,2.8,10.2
28
+ c-1.6,0-4.5,0-4.5,0l-1.6-10.2H261.8z M264.8,58.3l0,1.3c-0.2,1.1-1.1,2-2.3,2c-1.3,0-2.3-0.8-2.3-2.1c0,0,0.1-1.2,0.1-1.2H264.8z
29
+ M252.3,59.1l0-0.9h4.7l0,1.3c-0.2,1.1-1.1,2-2.3,2c-1.3,0-2.3-1-2.3-2.3C252.4,59.2,252.4,59.2,252.3,59.1L252.3,59.1z
30
+ M255.2,46.4c0,0,1.2,8.2,1.8,10.2c0.5,0-4.6,0-4.6,0l-0.5-10.2H255.2z M245.3,46.4h3.4l0.6,10.2h-4.5L245.3,46.4z M244.7,58.3h4.6
31
+ l0,1.2c-0.1,1.2-1.1,2.1-2.3,2.1c-1.2,0-2.2-0.9-2.3-2.1L244.7,58.3z M238.7,46.4h3.3l-0.5,10.2c0,0-3.2,0-4.4,0
32
+ C237.6,54.8,238.7,46.4,238.7,46.4z M236.9,58.3h4.6l0,0.9h0c0,0,0,0.1,0,0.1c0,1.3-1,2.3-2.3,2.3c-1.2,0-2.1-0.9-2.3-2L236.9,58.3
33
+ z M232.1,46.4h3.2L234,56.6c0,0-3.3,0-4.5,0C230.8,54.3,232.1,46.4,232.1,46.4z M229.2,58.3h4.6c0,0,0,0.9,0,1c0,1.3-1,2.3-2.3,2.3
34
+ c-1.1,0-2.1-0.8-2.3-1.9L229.2,58.3z"/>
35
+ </g>
36
+ </svg>